PyOpenGL-3.0.2/0000755000175000001440000000000012032640120014103 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/metadata.py0000644000175000001440000000166312025001653016247 0ustar mcfletchusers00000000000000"""Provides the common meta-data for the various setup scripts""" import os metadata = dict( version = [ (line.split('=')[1]).strip().strip('"').strip("'") for line in open(os.path.join('OpenGL','version.py')) if line.startswith( '__version__' ) ][0], author = 'Mike C. Fletcher', author_email = 'mcfletch@vrplumber.com', url = 'http://pyopengl.sourceforge.net', license = 'BSD', download_url = "http://sourceforge.net/projects/pyopengl/files/PyOpenGL/", keywords = 'Graphics,3D,OpenGL,GLU,GLUT,GLE,GLX,EXT,ARB,Mesa,ctypes', classifiers = [ """License :: OSI Approved :: BSD License""", """Programming Language :: Python""", """Programming Language :: Python :: 3""", """Topic :: Multimedia :: Graphics :: 3D Rendering""", """Topic :: Software Development :: Libraries :: Python Modules""", """Intended Audience :: Developers""", ], ) PyOpenGL-3.0.2/license.txt0000644000175000001440000002155412025001653016301 0ustar mcfletchusers00000000000000NOTE: THIS SOFTWARE IS NOT FAULT TOLERANT AND SHOULD NOT BE USED IN ANY SITUATION ENDANGERING HUMAN LIFE OR PROPERTY. OpenGL-ctypes License Copyright (c) 2005-2009, Michael C. Fletcher and Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Michael C. Fletcher, or the name of any Contributor, may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. OpenGL-ctypes includes code from the PyOpenGL 2.x series licensed under version 3 of the PyOpenGL License (BSD-style): PyOpenGL License (v3) PyOpenGL is based on PyOpenGL 1.5.5, Copyright © 1997-1998 by James Hugunin, Cambridge MA, USA, Thomas Schwaller, Munich, Germany and David Ascher, San Francisco CA, USA. Contributors to the PyOpenGL project in addition to those listed above include: * David Konerding * Soren Renner * Rene Liebscher * Randall Hopper * Michael Fletcher * Thomas Malik * Thomas Hamelryck * Jack Jansen * Michel Sanner * Tarn Weisner Burton * Andrew Cox * Rene Dudfield PyOpenGL is Copyright (c) 1997-1998, 2000-2006 by the contributors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. OpenGL-ctypes includes code from the Pyglet project, licensed under the Pyglet License (BSD Style): Copyright (c) 2006-2008 Alex Holkner All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of pyglet nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. OpenGL-ctypes may include source code from the GLE (GL Tubing and Extrusion) library, which is licensed under the license declared in OpenGL/DLLS/gle_COPYING.src if GLE is included in this distribution. Copyright notice follows: This software is owned by International Business Machines Corporation ("IBM"), or its subsidiaries or IBM's suppliers, and is copyrighted and licensed, not sold. IBM retains title to the software, and grants you a nonexclusive license for the software. OpenGL-ctypes may include source code from the GLUT (GL Utility Toolkit) library, which is licensed under the following license/copyright notice (available in OpenGL/DLLS/glut_README.txt if GLUT is included in this distribution: The OpenGL Utility Toolkit distribution for Win32 (Windows NT & Windows 95) contains source code modified from the original source code for GLUT version 3.3 which was developed by Mark J. Kilgard. The original source code for GLUT is Copyright 1997 by Mark J. Kilgard. GLUT for Win32 is Copyright 1997 by Nate Robins and is not in the public domain, but it is freely distributable without licensing fees. It is provided without guarantee or warrantee expressed or implied. It was ported with the permission of Mark J. Kilgard by Nate Robins. THIS SOURCE CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OR MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. OpenGL (R) is a registered trademark of Silicon Graphics, Inc. OpenGL-ctypes may include binary distributions of the Tk Togl widget, which is licensed under the following license/copyright notice (available in OpenGL/Tk/*/LICENSE if Togl is included). This software is copyrighted by Brian Paul (brian@mesa3d.org), Benjamin Bederson (bederson@cs.umd.edu), and Greg Couch (gregcouch@users.sourceforge.net). The following terms apply to all files associated with the software unless explicitly disclaimed in individual files. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. OpenGL-ctypes includes an OS-Mesa platform driver which is (MIT Licensed), Copyright (c) 2012 Xu, Yuan : https://github.com/xuyuan/PyOSMesa http://opensource.org/licenses/MIT PyOpenGL-3.0.2/setup.cfg0000644000175000001440000000007312032640120015724 0ustar mcfletchusers00000000000000[egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 PyOpenGL-3.0.2/tests/0000755000175000001440000000000012032640120015245 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/tests/test_core.py0000755000175000001440000010761412025001653017626 0ustar mcfletchusers00000000000000#! /usr/bin/env python import unittest, pygame, pygame.display, time, traceback, os, sys import logging logging.basicConfig() try: from numpy import * except ImportError as err: try: from Numeric import * except ImportError as err: array = None pygame.display.init() import OpenGL OpenGL.CONTEXT_CHECKING = True OpenGL.FORWARD_COMPATIBLE_ONLY = False from OpenGL._bytes import bytes, _NULL_8_BYTE from OpenGL.GL import * try: glGetError() except error.NoContext as err: # good, should have got this error pass else: raise RuntimeError( """Did not catch invalid context!""" ) from OpenGL import constants, error from OpenGL.GLU import * from OpenGL.arrays import arraydatatype import OpenGL from OpenGL.extensions import alternate import ctypes from OpenGL.GL.framebufferobjects import * from OpenGL.GL.EXT.multi_draw_arrays import * from OpenGL.GL.ARB.imaging import * glMultiDrawElements = alternate( glMultiDrawElementsEXT, glMultiDrawElements, ) class Tests( unittest.TestCase ): evaluator_ctrlpoints = [[[ -1.5, -1.5, 4.0], [-0.5, -1.5, 2.0], [0.5, -1.5, -1.0], [1.5, -1.5, 2.0]], [[-1.5, -0.5, 1.0], [-0.5, -0.5, 3.0], [0.5, -0.5, 0.0], [1.5, -0.5, -1.0]], [[-1.5, 0.5, 4.0], [-0.5, 0.5, 0.0], [0.5, 0.5, 3.0], [1.5, 0.5, 4.0]], [[-1.5, 1.5, -2.0], [-0.5, 1.5, -2.0], [0.5, 1.5, 0.0], [1.5, 1.5, -1.0]]] width = height = 300 def setUp( self ): """Set up the operation""" self.screen = pygame.display.set_mode( (self.width,self.height), pygame.OPENGL | pygame.DOUBLEBUF, ) pygame.display.set_caption('Testing system') pygame.key.set_repeat(500,30) glMatrixMode (GL_PROJECTION) glLoadIdentity() gluPerspective(40.0, 300/300., 1.0, 20.0) glMatrixMode(GL_MODELVIEW) glLoadIdentity() gluLookAt( -2,0,3, # eyepoint 0,0,0, # center-of-view 0,1,0, # up-vector ) glClearColor( 0,0,.25, 0 ) glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ) def tearDown( self ): glFlush() pygame.display.flip() time.sleep( .25 ) #raw_input( 'Okay? ' ) def test_arrayPointer( self ): dt = arraydatatype.GLuintArray d = dt.zeros( (3,)) dp = dt.typedPointer( d ) assert dp[0] == 0 assert dp[1] == 0 assert dp[2] == 0 dp[1] = 1 assert dp[1] == 1 assert d[1] == 1 def test_ctypes_array( self ): color = (GLfloat * 3)( 0,1,0 ) glColor3fv( color ) if (not OpenGL.ERROR_ON_COPY) or array: def test_evaluator( self ): """Test whether the evaluator functions work""" glDisable(GL_CULL_FACE) glEnable(GL_MAP2_VERTEX_3) glEnable(GL_DEPTH_TEST) glEnable(GL_NORMALIZE) if array: ctrl_points = array( self.evaluator_ctrlpoints,'f') else: ctrl_points = self.evaluator_ctrlpoints glMap2f(GL_MAP2_VERTEX_3, 0, 1, 0, 1, ctrl_points) glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0) glShadeModel(GL_FLAT) glEvalMesh2(GL_FILL, 0, 20, 0, 20) glTranslatef( 0,0.001, 0 ) glEvalMesh2(GL_POINT, 0, 20, 0, 20) def test_nurbs_raw( self ): """Test nurbs rendering using raw API calls""" from OpenGL.raw import GLU knots = (constants.GLfloat* 8) ( 0,0,0,0,1,1,1,1 ) ctlpoints = (constants.GLfloat*(3*4*4))( -3., -3., -3., -3., -1., -3., -3., 1., -3., -3., 3., -3., -1., -3., -3., -1., -1., 3., -1., 1., 3., -1., 3., -3., 1., -3., -3., 1., -1., 3., 1., 1., 3., 1., 3., -3., 3., -3., -3., 3., -1., -3., 3., 1., -3., 3., 3., -3. ) theNurb = gluNewNurbsRenderer() GLU.gluBeginSurface(theNurb) GLU.gluNurbsSurface( theNurb, 8, ctypes.byref(knots), 8, ctypes.byref(knots), 4 * 3, 3, ctypes.byref( ctlpoints ), 4, 4, GL_MAP2_VERTEX_3 ) GLU.gluEndSurface(theNurb) if array: def test_nurbs_raw_arrays( self ): """Test nurbs rendering using raw API calls with arrays""" from OpenGL.raw import GLU import numpy knots = numpy.array( ( 0,0,0,0,1,1,1,1 ), 'f' ) ctlpoints = numpy.array( [[[-3., -3., -3.], [-3., -1., -3.], [-3., 1., -3.], [-3., 3., -3.]], [[-1., -3., -3.], [-1., -1., 3.], [-1., 1., 3.], [-1., 3., -3.]], [[ 1., -3., -3.], [ 1., -1., 3.], [ 1., 1., 3.], [ 1., 3., -3.]], [[ 3., -3., -3.], [ 3., -1., -3.], [ 3., 1., -3.], [ 3., 3., -3.]]], 'f' ) theNurb = GLU.gluNewNurbsRenderer() GLU.gluBeginSurface(theNurb) GLU.gluNurbsSurface( theNurb, 8, knots, 8, knots, 4 * 3, 3, ctlpoints , 4, 4, GL_MAP2_VERTEX_3 ) GLU.gluEndSurface(theNurb) def test_nurbs( self ): """Test nurbs rendering""" from OpenGL.raw import GLU def buildControlPoints( ): ctlpoints = zeros( (4,4,3), 'd') for u in range( 4 ): for v in range( 4): ctlpoints[u][v][0] = 2.0*(u - 1.5) ctlpoints[u][v][1] = 2.0*(v - 1.5); if (u == 1 or u ==2) and (v == 1 or v == 2): ctlpoints[u][v][2] = 3.0; else: ctlpoints[u][v][2] = -3.0; return ctlpoints controlPoints = buildControlPoints() theNurb = GLU.gluNewNurbsRenderer()[0] #theNurb = gluNewNurbsRenderer(); gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 25.0); gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL); knots= array ([0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0], "d") glPushMatrix(); try: glRotatef(330.0, 1.,0.,0.); glScalef (0.5, 0.5, 0.5); gluBeginSurface(theNurb); try: gluNurbsSurface( theNurb, knots, knots, controlPoints, GL_MAP2_VERTEX_3 ); finally: gluEndSurface(theNurb); finally: glPopMatrix(); def test_errors( self ): """Test for error catching/checking""" try: glClear( GL_INVALID_VALUE ) except Exception as err: assert err.err == 1281, ("""Expected invalid value (1281)""", err.err) else: raise RuntimeError( """No error on invalid glClear""" ) try: glColorPointer(GL_INVALID_VALUE,GL_BYTE,0,None) except Exception as err: assert err.err == 1281, ("""Expected invalid value (1281)""", err.err) assert err.baseOperation, err.baseOperation assert err.pyArgs == (GL_INVALID_VALUE, GL_BYTE, 0, None), err.pyArgs assert err.cArgs == (GL_INVALID_VALUE, GL_BYTE, 0, None), err.cArgs else: raise RuntimeError( """No error on invalid glColorPointer""" ) try: glBitmap(-1,-1,0,0,0,0,"") except Exception as err: assert err.err in (1281,1282), ("""Expected invalid value (1281) or invalid operation (1282)""", err.err) else: raise RuntimeError( """No error on invalid glBitmap""" ) def test_quadrics( self ): """Test for rendering quadric objects""" quad = gluNewQuadric() glColor3f( 1,0, 0 ) gluSphere( quad, 1.0, 16, 16 ) if not OpenGL.ERROR_ON_COPY: def test_simple( self ): """Test for simple vertex-based drawing""" glDisable( GL_LIGHTING ) glBegin( GL_TRIANGLES ) try: try: glVertex3f( 0.,1.,0. ) except Exception as err: traceback.print_exc() glVertex3fv( [-1,0,0] ) glVertex3dv( [1,0,0] ) try: glVertex3dv( [1,0] ) except ValueError as err: #Got expected value error (good) pass else: raise RuntimeError( """Should have raised a value error on passing 2-element array to 3-element function!""", ) finally: glEnd() a = glGenTextures( 1 ) assert a b = glGenTextures( 2 ) assert len(b) == 2 def test_arbwindowpos( self ): """Test the ARB window_pos extension will load if available""" from OpenGL.GL.ARB.window_pos import glWindowPos2dARB if glWindowPos2dARB: glWindowPos2dARB( 0.0, 3.0 ) def test_getstring( self ): assert glGetString( GL_EXTENSIONS ) if not OpenGL.ERROR_ON_COPY: def test_pointers( self ): """Test that basic pointer functions work""" vertex = constants.GLdouble * 3 vArray = vertex * 2 glVertexPointerd( [[2,3,4,5],[2,3,4,5]] ) glVertexPointeri( ([2,3,4,5],[2,3,4,5]) ) glVertexPointers( [[2,3,4,5],[2,3,4,5]] ) glVertexPointerd( vArray( vertex(2,3,4),vertex(2,3,4) ) ) myVector = vArray( vertex(2,3,4),vertex(2,3,4) ) glVertexPointer( 3, GL_DOUBLE, 0, ctypes.cast( myVector, ctypes.POINTER(constants.GLdouble)) ) repr(glVertexPointerb( [[2,3],[4,5]] )) glVertexPointerf( [[2,3],[4,5]] ) assert arrays.ArrayDatatype.dataPointer( None ) == None glVertexPointerf( None ) glNormalPointerd( [[2,3,4],[2,3,4]] ) glNormalPointerd( None ) glTexCoordPointerd( [[2,3,4],[2,3,4]] ) glTexCoordPointerd( None ) glColorPointerd( [[2,3,4],[2,3,4]] ) glColorPointerd( None ) glEdgeFlagPointerb( [0,1,0,0,1,0] ) glEdgeFlagPointerb( None ) glIndexPointerd( [0,1,0,0,1,0] ) glIndexPointerd( None ) glColor4fv( [0,0,0,1] ) # string data-types... import struct s = struct.pack( '>iiii', 2,3,4,5 ) * 2 result = glVertexPointer( 4,GL_INT,0,s ) TESS_TEST_SHAPE = [ [191, 0], [ 191, 1480], [ 191, 1480], [ 401, 1480], [ 401, 1480], [401, 856], [401, 856], [1105, 856], [1105, 856], [1105, 1480], [1105, 1480], [1315, 1480], [1315, 1480], [1315, 0], [1315, 0], [1105, 0], [1105, 0], [1105, 699], [1105, 699], [401, 699], [401, 699], [401, 0], [401, 0], [191, 0], [191, 0], [191, 0], ] def test_tess(self ): """Test that tessellation works""" glDisable( GL_LIGHTING ) glColor3f( 1,1,1 ) glNormal3f( 0,0,1 ) def begin( *args ): return glBegin( *args ) def vertex( *args ): return glVertex3dv( *args ) def end( *args ): return glEnd( *args ) def combine( coords, vertex_data, weight): return coords tobj = gluNewTess() gluTessCallback(tobj, GLU_TESS_BEGIN, begin); gluTessCallback(tobj, GLU_TESS_VERTEX, vertex); gluTessCallback(tobj, GLU_TESS_END, end); gluTessCallback(tobj, GLU_TESS_COMBINE, combine); gluTessBeginPolygon(tobj, None); gluTessBeginContour(tobj); for (x,y) in self.TESS_TEST_SHAPE: vert = (x,y,0.0) gluTessVertex(tobj, vert, vert); gluTessEndContour(tobj); gluTessEndPolygon(tobj); def test_texture( self ): """Test texture (requires OpenGLContext and PIL)""" try: from OpenGLContext import texture import Image from OpenGL.GLUT import glutSolidTeapot except ImportError as err: pass else: glEnable( GL_TEXTURE_2D ) ourTexture = texture.Texture( Image.open( 'yingyang.png' ) ) ourTexture() glEnable( GL_LIGHTING ) glEnable( GL_LIGHT0 ) glBegin( GL_TRIANGLES ) try: try: glTexCoord2f( .5, 1 ) glVertex3f( 0.,1.,0. ) except Exception as err: traceback.print_exc() glTexCoord2f( 0, 0 ) glVertex3fv( [-1,0,0] ) glTexCoord2f( 1, 0 ) glVertex3dv( [1,0,0] ) try: glVertex3dv( [1,0] ) except ValueError as err: #Got expected value error (good) pass else: raise RuntimeError( """Should have raised a value error on passing 2-element array to 3-element function!""", ) finally: glEnd() if array: def test_numpyConversion( self ): """Test that we can run a numpy conversion from double to float for glColorArray""" import numpy a = numpy.arange( 0,1.2, .1, 'd' ).reshape( (-1,3 )) glEnableClientState(GL_VERTEX_ARRAY) try: glColorPointerf( a ) glColorPointerd( a ) finally: glDisableClientState( GL_VERTEX_ARRAY ) def test_constantPickle( self ): """Test that our constants can be pickled/unpickled properly""" import pickle, cPickle for p in pickle,cPickle: v = p.loads( p.dumps( GL_VERTEX_ARRAY )) assert v == GL_VERTEX_ARRAY, (v,GL_VERTEX_ARRAY) assert v.name == GL_VERTEX_ARRAY.name, v.name if not OpenGL.ERROR_ON_COPY: def test_copyNonContiguous( self ): """Test that a non-contiguous (transposed) array gets applied as a copy""" glMatrixMode(GL_MODELVIEW) glPushMatrix( ) try: import numpy transf = numpy.identity(4, dtype=numpy.float32) # some arbitrary transformation... transf[0,3] = 2.5 transf[2,3] = -80 # what do we get with the un-transposed version... glMatrixMode(GL_MODELVIEW) glLoadIdentity() glMultMatrixf(transf) untransposed = glGetFloatv(GL_MODELVIEW_MATRIX) # now transposed... # with a copy it works... t2 = transf.transpose().copy() # This doesn't work: glLoadIdentity() glMultMatrixf(t2) # This does work: #glMultMatrixf(transf.transpose().copy()) transposed = glGetFloatv(GL_MODELVIEW_MATRIX) assert not numpy.allclose( transposed, untransposed ), (transposed, untransposed) t2 = transf.transpose() # This doesn't work: glLoadIdentity() glMultMatrixf(t2) # This does work: #glMultMatrixf(transf.transpose().copy()) transposed = glGetFloatv(GL_MODELVIEW_MATRIX) assert not numpy.allclose( transposed, untransposed ), (transposed, untransposed) finally: glMatrixMode(GL_MODELVIEW) glPopMatrix() def test_nullTexture( self ): """Test that we can create null textures""" glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, 512, 512, 0, GL_RGB, GL_INT, None) def test_nonFloatColor( self ): """Test that we handle non-floating-point colour inputs""" for notFloat,shouldWork in ((0,True), (object(),False), (object,False)): try: glColor4f( 0,1,1,notFloat ) except Exception as err: if shouldWork: raise else: if not shouldWork: raise RuntimeError( """Expected failure for non-float value %s, succeeded"""%( notFloat, )) someData = [ (0,255,0)] def test_glAreTexturesResident( self ): """Test that PyOpenGL api for glAreTexturesResident is working Note: not currently working on AMD64 Linux for some reason """ import numpy textures = glGenTextures(2) residents = [] data = numpy.array( self.someData,'i' ) for texture in textures: glBindTexture( GL_TEXTURE_2D,int(texture) ) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, 1, 1, 0, GL_RGB, GL_INT, data) residents.append( glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_RESIDENT ) ) error.glCheckError(None) result = glAreTexturesResident( textures) assert len(result) == 2 for (tex,expected,found) in zip( textures, residents, result ): if expected != found: print('Warning: texture %s residence expected %s got %s'%( tex, expected, found )) if OpenGL.ALLOW_NUMPY_SCALARS: def test_passBackResults( self ): """Test ALLOW_NUMPY_SCALARS to allow numpy scalars to be passed in""" textures = glGenTextures(2) glBindTexture( GL_TEXTURE_2D, textures[0] ) if array: def test_arrayTranspose( self ): import numpy m = glGetFloatv( GL_MODELVIEW_MATRIX ) glMatrixMode( GL_MODELVIEW ) glLoadIdentity() t = eye(4) t[3,0] = 20.0 # the following glMultMatrixf call ignored this transpose t = t.T glMultMatrixf( t ) m = glGetFloatv( GL_MODELVIEW_MATRIX ) assert numpy.allclose( m[-1], [0,0,0,1] ), m def test_glreadpixelsf( self ): """Issue #1979002 crash due to mis-calculation of resulting array size""" width,height = self.width, self.height readback_image1 = glReadPixelsub(0,0,width,height,GL_RGB) readback_image2 = glReadPixelsf(0,0,width,height,GL_RGB) def test_glreadpixels_is_string( self ): """Issue #1959860 incompatable change to returning arrays reversed""" width,height = self.width, self.height readback_image1 = glReadPixels(0,0,width,height,GL_RGB, GL_UNSIGNED_BYTE) assert isinstance( readback_image1, str ), type( readback_image1 ) readback_image1 = glReadPixels(0,0,width,height,GL_RGB, GL_BYTE) assert not isinstance( readback_image1, str ), type(readback_image2) if array: def test_glreadpixels_warray( self ): """SF#1311265 allow passing in the array object""" width,height = self.width, self.height data = zeros( (width,height,3), 'B' ) image1 = glReadPixelsub(0,0,width,height,GL_RGB,array=data) def test_mmap_data( self ): """Test that we can use mmap data array If we had a reasonable lib that dumped raw image data to a shared-mem file we might be able to use this for movie display :) """ fh = open( 'mmap-test-data.dat', 'wb+' ) fh.write( _NULL_8_BYTE*(32*32*3+1)) fh.flush() fh.close() # using numpy.memmap here... data = memmap( 'mmap-test-data.dat' ) for i in range( 0,255,2 ): glDrawPixels( 32,32, GL_RGB, GL_UNSIGNED_BYTE, data, ) glFlush() pygame.display.flip() data[::2] = i time.sleep( 0.001 ) if array: def test_vbo( self ): """Test utility vbo wrapper""" import numpy from OpenGL.arrays import vbo assert vbo.get_implementation() dt = arraydatatype.GLdoubleArray array = numpy.array( [ [0,0,0], [0,1,0], [1,.5,0], [1,0,0], [1.5,.5,0], [1.5,0,0], ], dtype='d') indices = numpy.array( range(len(array)), 'i', ) d = vbo.VBO(array) glDisable( GL_CULL_FACE ) glNormal3f( 0,0,1 ) glColor3f( 1,1,1 ) glEnableClientState(GL_VERTEX_ARRAY) try: for x in range( 1, 255, 10 ): d.bind() try: glVertexPointerd( d ) glDrawElements( GL_LINE_LOOP, len(indices), GL_UNSIGNED_INT, indices ) finally: d.unbind() lastPoint = numpy.array( [[1.5,(1/255.) * float(x),0]] ) d[-2:-1] = lastPoint glFlush() pygame.display.flip() glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ) time.sleep( 0.001 ) finally: glDisableClientState( GL_VERTEX_ARRAY ) # bug report from Dan Helfman, delete shouldn't cause # errors if called explicitly d.delete() def test_fbo( self ): """Test that we support framebuffer objects http://www.gamedev.net/reference/articles/article2331.asp """ if not glGenFramebuffers: return False width = height = 128 fbo = glGenFramebuffers(1) glBindFramebuffer(GL_FRAMEBUFFER, fbo) depthbuffer = glGenRenderbuffers(1 ) glBindRenderbuffer(GL_RENDERBUFFER, depthbuffer) glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height) glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthbuffer ) img = glGenTextures(1) glBindTexture(GL_TEXTURE_2D, img) # NOTE: these lines are *key*, without them you'll likely get an unsupported format error, # ie. GL_FRAMEBUFFER_UNSUPPORTED glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB8, width, height, 0, GL_RGB, GL_INT, None # no data transferred ) glFramebufferTexture2D( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, img, 0 # mipmap level, normally 0 ) status = glCheckFramebufferStatus(GL_FRAMEBUFFER) assert status == GL_FRAMEBUFFER_COMPLETE, status glBindFramebuffer(GL_FRAMEBUFFER, fbo) glPushAttrib(GL_VIEWPORT_BIT) # viewport is shared with the main context try: glViewport(0,0,width, height) # rendering to the texture here... glColor3f( 1,0,0 ) glNormal3f( 0,0,1 ) glBegin( GL_QUADS ) for v in [[0,0,0],[0,1,0],[1,1,0],[1,0,0]]: glColor3f( *v ) glVertex3d( *v ) glEnd() finally: glPopAttrib(); # restore viewport glBindFramebuffer(GL_FRAMEBUFFER, 0) # unbind glBindTexture(GL_TEXTURE_2D, img) glEnable( GL_TEXTURE_2D ) # rendering with the texture here... glColor3f( 1,1,1 ) glNormal3f( 0,0,1 ) glDisable( GL_LIGHTING ) glBegin( GL_QUADS ) try: for v in [[0,0,0],[0,1,0],[1,1,0],[1,0,0]]: glTexCoord2f( *v[:2] ) glVertex3d( *v ) finally: glEnd() def test_gl_1_2_support( self ): if glBlendColor: glBlendColor( .3, .4, 1.0, .3 ) print('OpenGL 1.2 support') if array: def test_glmultidraw( self ): """Test that glMultiDrawElements works, uses glDrawElements""" if glMultiDrawElements: points = array([ (i,0,0) for i in range( 8 ) ] + [ (i,1,0) for i in range( 8 ) ], 'd') indices = array([ [0,8,9,1, 2,10,11,3,], [4,12,13,5,6,14,15,7], ],'B') index_pointers = arrays.GLvoidpArray.zeros( (2,)) index_pointers[0] = arrays.GLbyteArray.dataPointer( indices ) index_pointers[1] = arrays.GLbyteArray.dataPointer( indices[1] ) counts = [ len(x) for x in indices ] glEnableClientState( GL_VERTEX_ARRAY ) glDisableClientState( GL_COLOR_ARRAY ) glDisableClientState( GL_NORMAL_ARRAY ) try: glVertexPointerd( points ) glDisable( GL_LIGHTING ) try: glMultiDrawElements(GL_QUAD_STRIP, counts, GL_UNSIGNED_BYTE, index_pointers, 2) finally: glEnable( GL_LIGHTING ) finally: glDisableClientState( GL_VERTEX_ARRAY ) else: print('No multi_draw_arrays support') def test_glDrawBuffers_list( self ): """Test that glDrawBuffers with list argument doesn't crash""" a_type = constants.GLenum*2 args = a_type( GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, ) try: glDrawBuffers( 2, args ) except GLError as err: assert err.err == GL_INVALID_OPERATION, err def test_glDrawBuffers_list_valid( self ): """Test that glDrawBuffers with list argument where value is set""" previous = glGetIntegerv( GL_READ_BUFFER ) fbo = glGenFramebuffers(1) glBindFramebuffer(GL_FRAMEBUFFER, fbo) try: img1,img2 = glGenTextures(2) for img in img1,img2: glBindTexture( GL_TEXTURE_2D, img ) glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB8, 300, 300, 0, GL_RGB, GL_INT, None # no data transferred ) glFramebufferTexture2D( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, img1, 0 ) glFramebufferTexture2D( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D, img2, 0 ) a_type = constants.GLenum*2 drawingBuffers = a_type( GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, ) glDrawBuffers(2, drawingBuffers ) try: checkFramebufferStatus() except error.GLError as err: pass else: glReadBuffer( GL_COLOR_ATTACHMENT1 ) pixels = glReadPixels( 0,0, 10,10, GL_RGB, GL_UNSIGNED_BYTE ) assert len(pixels) == 300, len(pixels) finally: glBindFramebuffer( GL_FRAMEBUFFER, 0 ) glReadBuffer( previous ) def test_enable_histogram( self ): if glInitImagingARB(): glHistogram(GL_HISTOGRAM, 256, GL_LUMINANCE, GL_FALSE) glEnable( GL_HISTOGRAM ) glDisable( GL_HISTOGRAM ) else: print('No ARB imaging extension') if not OpenGL.ERROR_ON_COPY: def test_gluNurbsCurve( self ): """Test that gluNurbsCurve raises error on invalid arguments""" nurb = gluNewNurbsRenderer() gluBeginCurve( nurb ) self.failUnlessRaises( error.GLUerror, gluNurbsCurve, nurb, [0, 1.0], [[0,0,0],[1,0,0],[1,1,0]], GL_MAP1_VERTEX_3, ) self.failUnlessRaises( error.GLUerror, gluNurbsCurve, nurb, [], [[0,0,0],[1,0,0],[1,1,0]], GL_MAP1_VERTEX_3, ) self.failUnlessRaises( error.GLUerror, gluNurbsCurve, nurb, [], [], GL_MAP1_VERTEX_3, ) def test_get_version( self ): from OpenGL.extensions import getGLVersion version = getGLVersion() if version >= [2,0]: assert glShaderSource assert glUniform1f else: assert not glShaderSource assert not glUniform1f def test_tess_collection( self ): """SF#2354596 tessellation combine results collected""" all_vertices = [] combinations = [] def start(*args): pass def stop(*args): pass def tessvertex(vertex_data, polygon_data=None): # polygon data *should* be collected here #assert polygon_data is all_vertices, polygon_data all_vertices.append(vertex_data) #collected.append( vertex_data ) return polygon_data def tesscombine(coords, vertex_data, weights,_=None): new = (True,coords) combinations.append( coords ) return new def tessedge(flag,*args,**named): pass # dummy def tesserr( enum ): raise RuntimeError( gluErrorString( enum ) ) # set up tessellator in CSG intersection mode tess=gluNewTess() gluTessProperty(tess, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ABS_GEQ_TWO) gluTessCallback(tess, GLU_TESS_BEGIN, start) gluTessCallback(tess, GLU_TESS_END, stop) gluTessCallback(tess, GLU_TESS_COMBINE, tesscombine) gluTessCallback(tess, GLU_TESS_EDGE_FLAG, tessedge) # no strips gluTessCallback(tess, GLU_TESS_VERTEX, tessvertex) gluTessCallback(tess, GLU_TESS_ERROR, tesserr ) gluTessBeginPolygon(tess, all_vertices) try: for contour in [ # first square [(-1,0,-1),(1,0,-1),(1,0,1),(-1,0,1)], # second intersects the first [(.5,0,-.5),(1.5,0,-.5),(1.5,0,.5),(.5,0,.5)], ]: gluTessBeginContour(tess) try: for point in contour: point = array( point, 'f' ) gluTessVertex( tess, point, (False,point)) finally: gluTessEndContour(tess) finally: result = gluTessEndPolygon(tess) # Show collected triangle vertices :- # Original input vertices are marked as False. # Vertices generated in combine callback are marked as True. assert all_vertices, "Nothing collected" combined,original = [x for x in all_vertices if x[0]], [x for x in all_vertices if not x[0]] assert combined, ("No combined vertices", all_vertices ) assert original, ("No original vertices", all_vertices ) assert len(combinations) == 2, combinations def test_tess_cb_traditional( self ): outline = [ [191, 0], [ 191, 1480], [ 191, 1480], [ 401, 1480], [ 401, 1480], [401, 856], [401, 856], [1105, 856], [1105, 856], [1105, 1480], [1105, 1480], [1315, 1480], [1315, 1480], [1315, 0], [1315, 0], [1105, 0], [1105, 0], [1105, 699], [1105, 699], [401, 699], [401, 699], [401, 0], [401, 0], [191, 0], [191, 0], [191, 0], ] scale = 1200. self.tess = gluNewTess() gluTessCallback(self.tess, GLU_TESS_BEGIN, glBegin) def test( t, polyData=None ): glNormal( 0,0, -1 ) glColor3f( t[0],t[1],t[2] ) return glVertex3f( t[0],t[1],t[2]) gluTessCallback(self.tess, GLU_TESS_VERTEX_DATA, test) gluTessCallback(self.tess, GLU_TESS_END, glEnd); combined = [] def combine( points, vertices, weights ): #print 'combine called', points, vertices, weights combined.append( points ) return points gluTessCallback(self.tess, GLU_TESS_COMBINE, combine) gluTessBeginPolygon( self.tess, None ) try: gluTessBeginContour( self.tess ) try: for (x,y) in outline: vertex = array((x/scale,y/scale,0.0),'d') gluTessVertex(self.tess, vertex, vertex) finally: gluTessEndContour( self.tess ) finally: gluTessEndPolygon(self.tess) def test_get_boolean_bitmap( self ): # should not raise error value = glGetBoolean(GL_TEXTURE_2D) if array: def test_draw_bitmap_pixels( self ): """SF#2152623 Drawing pixels as bitmaps (bits)""" pixels = array([0,0,0,0,0,0,0,0],'B') glDrawPixels( 8,8, GL_COLOR_INDEX, GL_BITMAP, pixels ) def test_glCallLists_twice2( self ): """SF#2829309 report that glCallLists doubles operation""" glRenderMode (GL_RENDER) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(40.0, 1.0, 1.0, 10.0) glMatrixMode (GL_MODELVIEW) glLoadIdentity () glTranslatef (0, 0, -3) first = glGenLists( 2 ) second = first+1 glNewList(first, GL_COMPILE_AND_EXECUTE) glInitNames () glCallLists([second]) # replace with gCallList(2) #glCallList(second) glEndList () glNewList(second, GL_COMPILE) glPushName (1) glBegin (GL_POINTS) glVertex3f (0, 0, 0) glEnd () glEndList () glCallList( second ) glPopName() depth = glGetIntegerv( GL_NAME_STACK_DEPTH ) assert depth == (0,), depth # have popped, but even then, were' not in the mode... glSelectBuffer (100) glRenderMode (GL_SELECT) glCallList(1) depth = glGetIntegerv( GL_NAME_STACK_DEPTH ) assert depth == (1,), depth # should have a single record glPopName() records = glRenderMode (GL_RENDER) # reporter says sees two records, Linux sees none, Win32 sees 1 :( assert len(records) == 1, records def test_get_max_tex_units( self ): """SF#2895081 glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS )""" units = glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS ) if __name__ == "__main__": unittest.main() pygame.display.quit() pygame.quit() PyOpenGL-3.0.2/tests/test_glutinit_simplest.py0000644000175000001440000000010212025001653022432 0ustar mcfletchusers00000000000000from OpenGL.GLUT import * glutInit() glutInitDisplayMode(GLUT_RGB)PyOpenGL-3.0.2/tests/test_glutinit_0args.py0000644000175000001440000000040612025001653021615 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Test that GLUT.glutInit accepts 0 arguments""" from OpenGL import GLUT if __name__ == "__main__": try: GLUT.glutInit() except Exception, err: raise else: print 'accepted 0 arguments, as desired' PyOpenGL-3.0.2/tests/test_glreadpixels_uint8888.py0000644000175000001440000000130212025001653022740 0ustar mcfletchusers00000000000000import OpenGL.GL as gl import OpenGL.images as images def test_createTargetArray(): size = (640,480) array1 = images.createTargetArray( gl.GL_BGRA, size, gl.GL_UNSIGNED_INT_8_8_8_8_REV) array2 = images.createTargetArray( gl.GL_RGBA, size, gl.GL_UNSIGNED_BYTE) array3 = images.createTargetArray( gl.GL_RGBA, size, gl.GL_UNSIGNED_INT_8_8_8_8_REV) assert array1.nbytes == array3.nbytes assert array1.nbytes == array2.nbytes try: images.createTargetArray( gl.GL_RGBA, size, gl.GL_UNSIGNED_BYTE_3_3_2 ) except ValueError, err: pass else: raise RuntimeError( """Should have failed with insufficient components in the type to hold the format""" )PyOpenGL-3.0.2/tests/test_glgetfloat_leak.py0000644000175000001440000000140212025001653022003 0ustar mcfletchusers00000000000000#!/usr/bin/python import pygame from pygame.locals import * from OpenGL.GL import * from OpenGL.GLU import * def main(): pygame.init() pygame.display.set_mode((800,600), pygame.OPENGL| pygame.DOUBLEBUF) glClearColor(1.0, 0.0, 0.0, 1.0) glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) done = False while not done: for i in range(0,50000): modelview_matrix = glGetFloatv(GL_MODELVIEW_MATRIX) if not i % 500: print '.', print pygame.display.flip() eventlist = pygame.event.get() for event in eventlist: if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE: done = True if __name__ == '__main__': main()PyOpenGL-3.0.2/tests/test_glut_fc.py0000644000175000001440000000565212025001653020315 0ustar mcfletchusers00000000000000"""Test GLUT forward-compatible mode...""" import OpenGL OpenGL.FORWARD_COMPATIBLE_ONLY = True OpenGL.ERROR_CHECKING = True OpenGL.USE_ACCELERATE = False from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * from OpenGL.GL import shaders import time start = time.time() window = None def display(): try: glutSetWindow(window); glClearColor (0.0, 0.0, (time.time()%1.0)/1.0, 0.0) glClear (GL_COLOR_BUFFER_BIT) try: glGetString( GL_EXTENSIONS ) except GLError, err: pass else: print 'Egads, glGetString should not have worked!' assert bool( glGenVertexArrays ), "Should have vertex array support in 3.2" glFlush () glutSwapBuffers() except Exception, err: glutDestroyWindow( window ) raise size = (250,250) def reshape( *args ): global size size = args glViewport( *( (0,0)+args) ) display() def ontimer( *args ): # print 'timer', args, '@time', time.time()-start glutTimerFunc( 1000, ontimer, 24 ) def idle(): delta = time.time()-start if delta < 10: global size x,y = size if delta < 5: change = +1 else: change = -1 x = x-change y = y+change if x < 1: x = 1 if y < 1: y = 1 glutReshapeWindow( x, y ) size = (x,y) glutSetWindow(window) glutPostRedisplay() else: glutDestroyWindow( window ) print 'window destroyed' import sys sys.exit( 0 ) def printFunction( name ): def onevent( *args ): print '%s -> %s'%(name, ", ".join( [str(a) for a in args ])) return onevent if __name__ == "__main__": import sys newArgv = glutInit(sys.argv) glutInitContextVersion(3, 2) glutInitContextFlags(GLUT_FORWARD_COMPATIBLE) glutInitContextProfile(GLUT_CORE_PROFILE) glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH ) glutSetOption( GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS ); print glGetString( GL_EXTENSIONS ) glutInitWindowSize(250, 250) glutInitWindowPosition(100, 100) window = glutCreateWindow("hello") print 'window', repr(window) glutDisplayFunc(display) glutReshapeFunc(reshape) glutMouseFunc(printFunction( 'Mouse' )) glutEntryFunc(printFunction( 'Entry' )) glutKeyboardFunc( printFunction( 'Keyboard' )) glutKeyboardUpFunc( printFunction( 'KeyboardUp' )) glutMotionFunc( printFunction( 'Motion' )) glutPassiveMotionFunc( printFunction( 'PassiveMotion' )) glutVisibilityFunc( printFunction( 'Visibility' )) glutWindowStatusFunc( printFunction( 'WindowStatus' )) glutSpecialFunc( printFunction( 'Special' )) glutSpecialUpFunc( printFunction( 'SpecialUp' )) glutTimerFunc( 1000, ontimer, 23 ) glutIdleFunc( idle ) glutMainLoop() PyOpenGL-3.0.2/tests/test_glutinit_single.py0000644000175000001440000000020612025001653022060 0ustar mcfletchusers00000000000000from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * glutInit(['']) glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB)PyOpenGL-3.0.2/tests/test_glgetactiveuniform.py0000644000175000001440000000132212025001653022556 0ustar mcfletchusers00000000000000import sys, pygame from math import sin from pygame.locals import * from OpenGL.GL import * from OpenGL.GL.shaders import * from OpenGL.GL.ARB.shader_objects import glGetActiveUniformARB vertex_shader = """ uniform float scale; void main(void) { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex * scale; } """ pygame.init() disp = pygame.display.set_mode((1024, 768), OPENGL | DOUBLEBUF) program = compileProgram( compileShader( vertex_shader, GL_VERTEX_SHADER ) ) nu = glGetProgramiv(program, GL_ACTIVE_UNIFORMS) for i in range(nu): name, size, type = glGetActiveUniform(program, i) print 'CORE - ', name, size, type glGetActiveUniformARB( program, i ) print 'ARB - ', name, size, type PyOpenGL-3.0.2/tests/test_glutwindow.py0000644000175000001440000000641712025001653021075 0ustar mcfletchusers00000000000000"""Test simple functions (i.e. no pointers involved)""" from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * import time start = time.time() window = None def drawText( value, x,y, windowHeight, windowWidth, step = 18 ): """Draw the given text at given 2D position in window """ glMatrixMode(GL_PROJECTION); # For some reason the GL_PROJECTION_MATRIX is overflowing with a single push! # glPushMatrix() matrix = glGetDouble( GL_PROJECTION_MATRIX ) glLoadIdentity(); glOrtho(0.0, windowHeight or 32, 0.0, windowWidth or 32, -1.0, 1.0) glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glRasterPos2i(x, y); lines = 0 for character in value: if character == '\n': glRasterPos2i(x, y-(lines*18)) else: glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, ord(character)); glPopMatrix(); glMatrixMode(GL_PROJECTION); # For some reason the GL_PROJECTION_MATRIX is overflowing with a single push! # glPopMatrix(); glLoadMatrixd( matrix ) # should have un-decorated alias for this... glMatrixMode(GL_MODELVIEW); def display(): glutSetWindow(window); glClearColor (0.0, 0.0, (time.time()%1.0)/1.0, 0.0) glClear (GL_COLOR_BUFFER_BIT) drawText( 'hello', 20,20, size[0],size[1] ) #glutBitmapCharacter( GLUT_BITMAP_8_BY_13, ord('a')) glutSolidTeapot( .2 ) glFlush () glutSwapBuffers() size = (250,250) def reshape( *args ): global size size = args glViewport( *( (0,0)+args) ) display() def ontimer( *args ): print 'timer', args, '@time', time.time()-start glutTimerFunc( 1000, ontimer, 24 ) def idle(): delta = time.time()-start if delta < 10: global size x,y = size if delta < 5: change = +1 else: change = -1 x = x-change y = y+change if x < 1: x = 1 if y < 1: y = 1 glutReshapeWindow( x, y ) size = (x,y) glutSetWindow(window) glutPostRedisplay() else: glutDestroyWindow( window ) print 'window destroyed' import sys sys.exit( 0 ) def printFunction( name ): def onevent( *args ): print '%s -> %s'%(name, ", ".join( [str(a) for a in args ])) return onevent if __name__ == "__main__": import sys newArgv = glutInit(sys.argv) print 'newArguments', newArgv glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB ) glutInitWindowSize(250, 250) glutInitWindowPosition(100, 100) window = glutCreateWindow("hello") print 'window', repr(window) glutDisplayFunc(display) glutReshapeFunc(reshape) glutMouseFunc(printFunction( 'Mouse' )) glutEntryFunc(printFunction( 'Entry' )) glutKeyboardFunc( printFunction( 'Keyboard' )) glutKeyboardUpFunc( printFunction( 'KeyboardUp' )) glutMotionFunc( printFunction( 'Motion' )) glutPassiveMotionFunc( printFunction( 'PassiveMotion' )) glutVisibilityFunc( printFunction( 'Visibility' )) glutWindowStatusFunc( printFunction( 'WindowStatus' )) glutSpecialFunc( printFunction( 'Special' )) glutSpecialUpFunc( printFunction( 'SpecialUp' )) glutTimerFunc( 1000, ontimer, 23 ) glutIdleFunc( idle ) glutMainLoop()PyOpenGL-3.0.2/tests/timerleak.py0000755000175000001440000000072712025001653017611 0ustar mcfletchusers00000000000000#! /usr/bin/env python from OpenGL.GLUT import * delay = 1 count = 0 def timerCallback(value): global count count += 1 if count % 2000 == 0: print count glutTimerFunc( delay, timerCallback, value+1 ) if __name__ == "__main__": glutInit( sys.argv ) glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH ) glutInitWindowSize( 100, 100 ) glutCreateWindow( "testtimer" ) glutTimerFunc( delay, timerCallback, 0 ) glutMainLoop()PyOpenGL-3.0.2/tests/deprecations.py0000644000175000001440000000041212025001653020300 0ustar mcfletchusers00000000000000#! /usr/bin/env python import unittest class TestFCO( unittest.TestCase ): def test_fco_import( self ): import OpenGL OpenGL.FORWARD_COMPATIBLE_ONLY = True from OpenGL import GL, GLU, GLUT if __name__ == "__main__": unittest.main() PyOpenGL-3.0.2/tests/test_crash_on_glutinit.py0000644000175000001440000000036312025001653022377 0ustar mcfletchusers00000000000000 if __name__ == "__main__": from OpenGL.GLUT import * from OpenGL.GL import * glutInit( ' ' ) glutInitDisplayMode( GLUT_SINGLE ) window = glutCreateWindow("hello") glutDisplayFunc( lambda *args: 1 ) #glutMainLoop() PyOpenGL-3.0.2/tests/test_fbdel.py0000644000175000001440000000133712025001653017742 0ustar mcfletchusers00000000000000from OpenGL.GL import * from OpenGL.GLUT import * import sys import OpenGL.GL.EXT.framebuffer_object as EXT import OpenGL.GL.ARB.framebuffer_object as ARB def main(): glutInit(sys.argv) glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glutInitWindowSize(640, 480) glutInitWindowPosition(0, 0) window = glutCreateWindow("Framebuffer bug demo") for i in range( 200 ): fbo = EXT.glGenFramebuffersEXT(1) print "FBO = ", fbo EXT.glDeleteFramebuffersEXT (int(fbo)) fbo = ARB.glGenFramebuffers(1) print "FBO = ", fbo ARB.glDeleteFramebuffers(int(fbo)) glFlush() # Print message to console, and kick off the main to get it rolling. main() PyOpenGL-3.0.2/tests/yingyang.png0000644000175000001440000002277612025001653017622 0ustar mcfletchusers00000000000000‰PNG  IHDR@@% æ‰gAMAœ@ äË cHRMn•tñ…Fdï÷†IäX*ÍL„%‰IDATxœbüÿÿ?‰à201Aé? l@Á¿?~xû÷æÇ—.1_¿úûÑÓï?¼xútÏEÅþóòÊIKjhè0Š s²²020° ûÇð—áß/&F†ß Ì ŒÌ$9 €Éðÿÿ L@]L@Ö›×_·í¼ròäÞ«W$o]Ó{óáöï_Ü Z œ  gŽ1020h20202 ÖÔü¨©ùÃÒ’ËßONHˆ,ÿ™A~`d'É-D–@à÷‘c×7oþµaÈ­;{f00ø30¤10œc`øÌÉlô—í;Û'6vá¿Ùÿþfúûëï_Öÿ _¾ÑO°!?55Xü޽…,­ÎdøÿÔ BJ2 ã`Œ32‚H†c§îõt/Ý´ñÌßß – +™Ws ªˆê: )}TüÌ.ÏÉ!ÄÌÌÇÈÊÉò÷Ãﯬ^þøùöÿ·§ _îyvFøí3ó?¿F €-øÆÊòÅÃãuQ‰ƒ½Ã/00e2ö@Œ yYŒ÷¾inº³råï_30è30Ä ËüÖó9+cüAXY’ÿ7çïÿ~ÿþÉôŸ‰‘˜ÖX€‰†á?ËÊò—çÿ7ößþ|ûþæÉïçW…nîb¼yšéÏ~PÒgxÎÊúÃßO¤¼ÚÄÄPì±`q €zà?Ã?F¦Oþ²­Yû¦¾îþ­›WN33~VÐ TuÔsâ’&ˆ_¿ÿüúõûïÏŒßþþùûÿ? 3 ãÆÿþ1þûÏüÿ?û¿_¬ ?YÙþ0³ýàbùÍÎúƒáãÿ‡ŸÝÅzñ0ßûçJ ¼ ß¿”V0geèóó‰A~Á$ô“‘õãçÏY/,yÍÀp‚ႚ»E¬¢…"'÷Ï??3|þû—“áÿÆ?ÿ¾1ýûòÿ׿?¿™™™YYÙ˜ ûßF`IÃô‡‹áÓOÖ?¬ÿÿ²2übeüÌÎÈÀÊþŸ‰ùß§·ß¬Þ·”ÿëÇÛ ×î:Ø™Î_T© / DÜÞ \ø DP’ÿwúÜ“¬´ßgξd`8,(yß+ÉXÏU……‡ýË÷Ÿÿÿ²ücüÿ˜K€ðïÿ? ¿˜˜¿ÿûÿïÿ_fæŒL@³Ù˜ø;Ã`©ÄÀôûû÷7'ãW&æ_ ,@e@Á¿ ÌÀØúõüÚ×} oÛü—ÁœAOZNvú__` .ñ±ú eˆ„0CÑ$í.e†Ac1<ÃpL 7à"4žÔÒAq‰aPÀl™Ýì†TƒÊû?yÿ´{œŽ÷jý¾^ÔÐu9½-7³Ñdì\ËF&ðQ€E˜”ÌxÔ“ï t‘¡‚\‘b?0‚GhñC–ÙFcrBQtŸ²Ü`ÚæÐ«÷ó×£xç펪ÕBŸAº òßU¿·þíÙó2*ìÃë÷Ÿ6:ºr¥˜ÿaûñ›XØýc†ßŸÿ,Œ¿ÿ2üþÃüç?Ó¯ÿÿ˜þgfbýà òÈ¿þü&@F €Žz€íÿ ÇXþ03þeà`üÍ Š`ø—XV1ýûÃÂô“‘…íÇ“k «zx^¿ÈÀðž‘é_ß„è‚\/p<°b: €<ŠŸ`d<|ôiß×7ï€!³1$”ÁÞÃè/;ó·ÿ,… Ë`h³°þcá`üûöÀ\ÊôXìüþÏÄÈ Tð—é(…€<úŸ™å/+Ó/`ºç€z™¿Yÿý¦*6P ÅL|ÀœLÿ~ýúöïï_FŽ__Y7óÞ…£Â JÌL‚Ógꥦ(1üc%%T€ª2¶Aˆ¡èùH:j$¶`*¨1b6 dB™¥`„øÌ¿Tи±\ØÏÏþ%Ð_LÊKv«ÛMÛ4³*\Vk[,§’ò§&<}â!†PÀÀ« iŒáM$æà ¡c™Üf».£³¨ ẫOò°®³ªJŒ hüyùó¡º_áÃ$„çñdûݼwàï¶~ઌQˆ(º“É$X;KlÅroaã™<ˆ—±Q´“­l-EpW2IÖŸv00ÿÏFPÞŸîÛ7Íír]‹iwÛûr5ysOÖ3It6À²‚¼Jbh¬aG%4(O-Ânvà8eÉØP’ÑÇX1È ø¡B†¨¸îMr˜$ý}<ÔQvY ƒêa?{œÁó®_ÇÓf1ŸŽ.ð€É2ÆA †`ÎNˆ—P!Q# :þÿ€ ñ€«!ÅIH@ìÄlH²»ãÿ"’JÑ÷ûÝõtžx[..óé¨ïEŸ\’¢ì“e5Ü]ļ‚ à*†‹[¦!zÁ·UrÓ&§:+„ èd < ðÏ8‹«ÅË ©u’L½ex¸ÚÆñìà\£lÖÇ{|ü ÿúþ€Ê*¶Aˆöû!OJÁT° S0bJ$Ä ŠØ€&À'ùøŸ{„ܸ³Ïw>ûñùr;ž¢j½¼oVEóÖðŠ©O¯¾Õ®E½gE ƒq›¬±ÑÉP`üPQ¤tœ¤d-cpêá7x2qо Ol[¶0r™S&&ï1…C üÈSÅUÓín1›{4]×ýáúíþà#“厃0 Ñø³¶ ‹(RÑpŽçà ˆ Pp î5¢¢ ŽBgí5ã‰z¥•v43oÿÐêñ|öÈ~³lî›õ+uy@]"W‰#ÇÄÜOŸ–Û^†IEü8Á$еt=”‡TÕ}‡T²xɳ*Ì€c\«À6òdÑÎOŽ2ÙàìHf$U(X¥€–Â’TlÖżXÕÛ· ªOÇëùr+øÏù_˜,cb ŠÎd'™ A;o`-x„ïde!ÞÌÖÖJÏ (ÙÝl'â~õßûÿŸj<Ÿ.»v]úÝ}|ÏK× ,õ‹ŠÑ̆vÔŸ&'ª‰²nSmúj¥u&‹.ªp¹2&…+pB+OH­D®o1X$!¿ä°’°p, V#±Î“t EB3|Üôëí^ŸEŒƒ×azýí#€X@•.+{ýú£ kŸ›òŽ:·ud~}þ -`l `Îdeø,;ÕP˜wí# Óÿÿaú l,3ço`è+1`6fæ`ÙÈĬuÏvæ?™ÉXBÓ°“Lìlœ|ì>|ûóàÞ¿Gwÿ>øõë·o_?ÿ`ae•þ+¦À*(Ë"ÌÃúëÛ/`KŠñÇ~ý@™§.|z.tòôÇ…‹§'»B<@,ÀÂŽØ`øÝÓ{öÝG qnXXXÙ@é/0+'6é€)˜Xæ0311±00±ÓÅßÿ¿µ0F53¨íÁ*š˜AíoP2ebU@ žÊ`År<+;;˫׿/ž·oóÍ«Z?¾Ê10¼``xÆÀðXû›®Ì쥔8t¬$å yø•Ø€uÊÿ_¹ØLÂ÷OþøÿwÛõPK!`'Ž €XÀ•.ÓÕÏW¬xÇÀ f¡þF€ƒå3°n#°¤da¶¼€Iá?### 3+¨Võ €-MP#˜“ùö?30ÁcƒèxV €-4o€J€õñ?`œÂ èk`Qõ÷ø©‡ó¦<|þXœAÜ%àcbfÞÿ@?0¾&Çß?%^gyx›ƒÿ¿ŽË/‹@.6éßßþýRr¼°•ãÝÞ›÷înÛu=&Êè€öLU#ûŽ-ï¿}àå2ÖºúXcK}`ÄÂJ®¬À –8Œ ¤ÁÀÎ,¤A)X€‚j`þÆ0"XþK¬À4ÄlßÓÚ/PYÁ*jI(ÊÅÊúýß×ýwwl{ñï/°Jfüÿö?ã9f†·ÿÿKÿcúDT2~gWWÀ.ÄÏlgÖ¾»yä©}êw7žÿ•l™ÞÝ‘d`Ð]»òmdÔg`V  Ø~þøºzõseõ'¢¢,~±0°Ó0,±™Ý`u ¬æ€-1`¬v•° 9°‰ÅÊÆàbTƒ œ«ŽfþÇÄÎÈô0é°2³MŸveÛægà>0A}–1 ŒOÿýÌÀÀÏÀäcüÇÃêéÿÏøõÐ' 5?>¿ü³£ç‡Õ~õHmi'–këÏû °g×çsç¸L¸¨šq÷Þg§Nq31(*ªýÅÌúX²:ÌÀÀ‚þ(¹³‹fPès<;0g1[ –Ç_ èü? V?(°@%ê?2`ÃŒ‘…˜ €&±3/XrqÝúw Œü ÀÜj™ý|ýÏð‚T®ÿePâüÊPÀ^%°PƒðÙþÿ`8<õË_¾*þ&J¶·®lÞþåÃê•.¦Fqh.{c §à÷#ÒIPAñžÃ z½„ètÜÁ]-¢mâÓ‚± )yûæ)=|¶ ͆ýËx ð®4­Y'’ÝRPÃÜÅ5¿.„)A=Â"B$_L(¦¨Qk¤Ãä5g€¥ùUWd¥Öëîp_®BÉãOŽ@ÑSì•©BlÏY¿%ĵb„/ý³¦9é~ü4Œæ“óúš4œŽ7³÷OÌ a(¢I´Ú‚‚ ¸«¸RÐ+y¯â®7Q¡à tQ Rl~ýqR<Â$?3ó>l\/7DM³Y§ú ÄRXddë”>[âKI ¬¯pþþ^… í FQò ]2úÍgPL‡‰d¡j¹(Ú KâŠV•%_oCk¡qmA<xZ̘Õ춇F@«P÷¦Óñ¾=Èx¾ožùµ¬ë—þàÀÜy ‚(<³»® “ˆD‰hTþ¿Uèj…D(¨UW67Ä#ÂÍîŽ3ÛNu2“ÝÃùTùÁЇV÷G)Áy\]C‚³c ¢FöHM]¬,õ =¢ó=bÊ`ir|·p0´a!®‹Ns¹zì¶Sæ«PIzôSEýs, Í…&º$Ê1_áGˆ©…(Û”'ƒÛÀNúý¸¿‰½Y}Y|ù9ßH.›„ 'Ó0µè^Pô ]yϬàR‚‚¸R-WE™vâËxƒü¼÷¾DNçgÛÔ£ü¾X—/»©ó9ˆñ•¾‚«è-á!lÿ«ÇzP¼ˆw–§ibèÍ  e± ý~‹Äœ*¿ðd·F ^+mbœ+h¸UJW¢Z酻ޠzh‰&„xœ|_À{HƒÇNg%|x髟—± Â0Eó¨1F µˆ.âàÖÁÝ¿pòÜ… U(¢VP,¨ÔbÍ‹÷ù7ÉËy÷´6iÉ>‹z¥í'pU÷ÏÔ€ãXfˆPŽèf$nÅNßol4ÇCgMÔÀe@¤rc©Ý,kSbË¡PØtèp|mS!ŒâDÑuLjF~îh„/¤ü2ŒWƒñ' ×óé’ëCLVÑÛû§L?äN”O,~«œêéÄt‹º*ö»ÅO±\»|ØÚæbûÏ ,ÄY€qT ìmüvš˜þýu·8˜ÿs³±1={ñwÏšï÷. ó†´êGÿøOªÚ,ÿ~ƒ:,À¨~VdÀdjÕ*n`sš“íØþ‡Ÿ>gd”fõ¾r-0Büÿ1È2þ:q™®ýµ°"3&~n ¶ÿ_ÿZþeïR%Põ JýßþÿÿŸá#Ã{PÅÌÏ_ßþ¿¿ÈýŸU”AçÁ#A€b¹{}¯yÅ€ÎöŽøÏò”…€–Ö¿Ù€y’‰ëÕµS¢ë§‹}y'ôüïÒçé Ÿ“ ¿Yر v`OÔÛ6ùþ‚ÊOPe l;a¿ï\šo@ÍF`£ë ¨ µûϨ ,Žþÿßdâ|5¡Éê7믿ÿþgeãbuÍbùøóù‰ÒL |ÿxþ3HÞ_H{ç/°úc`yÿèþÿ¿ÀŠOúÕë×Äòý30s¾eaaäVLßéØîbå^ €ÍbP)ó÷/ïM¢_Þ)€ÆtÝG`1lŸ|–Þ¸è®Ñ?~A`7“”mÁþ, Z ÀöÔïß¿ïÞü*õÁµ#°I,ÃÀà ®ü˜•y—iˆ3?ãŸw?€ý£~ƒ:L̿͂Þ\Þõæû;>FP`ñƒ3°x`uÆí`åúãÀ.ÐÏ/_ßàÀlR†(<¥6©èBðgåθѵ§ví7­„*íÆPŠJm’ñ%È0ófæ}“AU—D‰œ¬y[ýã¨wÒ¹¬­»Ðc-d¬²î™5D¯€ÇäÔA4Ô»ÜgE^ì©m„”áËìŒQõ©ÆTuê¿rÑïMGâeÀWæ“•«Í®ûÂmpj‚Ùí~‡É\,¶ÃÛ®Ö2)¯­t †½…ט€}€º|ZÕü ÁŒm†(úÏŽ ¢¡CHˆ±+0;"±Ð JBB;>þ… lùüÞýŸ n¤lRY„PXËUÞäÊ ó÷殜¶ß*…+°l Ž*ÇÑP­³w5È\ VÙ„´²zˆI„ú°ŠÈÝŸý't‚½Oè/’NÀZ«œ·ˆ%±ë|ÓQ%L}<ó×iC\[Å R¦ôÿŒÃ膱_‘œ²ëCü I·÷Œ¿ü8õéó`Ô«c†ý&–,À¶°C&!/Å/²æÃ«Ëÿ$@µ ¨&6˜™™e”Ý~“°W,rAíR`£èsF`@ýcÿñäÑçÀ¢qï_ÆsŒÿü˜¼ÿSãš û5~} |zç™”ò¯ïÀ&9°Rv‚€šù±Íû⚃À?Ð\°» ò°tµ;ÿƒBX “7÷[€b¶ÂOüøøœé7¨25CAã; 3 ¨qö“AH\ÀÐEiÿ²] ÿAòXü3ÿgÿËð×*ÀQÅ\öû?`³˜jþCz F°ìý l=ð€áÊFAF&_濾 ÿ3¬dü¿‹™á¿;Ã_µË+¯ýå¤#LH`dIA‹õECߤàPoË&ŽÂɺiþ3›Î,ÔC6^rèOšÈãÖ·íž„ŠÂ”… f@b´S¹KùN†Ã#XòÏkç7Ì`ÌGøP¨áb%i«ÿGá˜9ºØoVX2ƒ†aŠÊDPH¡Ðc¯…\sÉ"Ù öžÒ%:BzshBÜ÷`…d½'{{¿›÷<ûôüôòÇè 9HáÚÄçªEUD9Ïå!:—1zÇói÷j•ûºÞAÆžmÈ­ÿ!ˆG¥M`Á¦˜x LX™Ìõn`óÕÂÅ„kßòR'åøÿË”KµÏhR¤C– I]wú 1).UõG§NüyzýÛ¥}|FáÒL¿€íož¿àdÁj÷½ N3#°Qô܉VnÀ‚XÙKNVpO 4>õ—ñ/¨ÿËÈÁÊqúàíc{[ÈþÿÇþoP ò°UOÿA¥;×`Oä¬?ŒÀâ•áÓ_Ðào@ † ì\`»ˆ¬†<3ËjÕýg|jg- @ ñm-¡S'€ÄöÍþ®bô_ù/Ã'`5 Aó+ þ0G0 Ðd(UÃ4fΦp`Ån± q oÙ~ÿµb*ÃÏoº €%PÌî ‚›Ç ž3¨ÑÆð•ñßÏ Ÿ¾Ó7¸³ö¬Ôœfµ)„Á?82As>Ààý¨¤úGRò7@Ì a ¢¿ùjTðž@*.\y;o#ÞÀ½pß­ *. ÒÒ4ùÎxƒägòçÍwû5\CÜæÑNÇ%„3Y ÄèÀ¾èÉ qàÕ c2®Œ¾„’fyœ¦Qsb™ÜÞ]ÎÍíÊϽ1¼ ž19BhGTFä•¶È'ËÓä.ö`[¿æ0þާ·(†u­Z”jŽ›óÿî¿g’a_oߪá'€€øáã-*"ö„áß[fÆG·Ž,ÏùÄöí§¨Ð/v`{˜Ô9Ö”ÿm©À õÀÔÂúç/ëï¿LÀ34¿Aï>^îûÍí“úÏ(öŸ‘„€iQð#ï?&`jÆÏ&†G ÿï02Üd`¶b^ÚyÀf30åüû6›Œ Iê¬`.¨7ÅÀø”y€jþÿdfz” FP–g`HI»2w6hd”Ç™õ߯ÖþÓüüñ7#° ùÅìèüefgbv\X¹˜Ø˜€‰TÀ1f€Þcdcfåãd¾pðN_ͱ7Ï~ûEàhÐX`]!Àø_ó?¨Â/ÿ@MѯL _€mpz`‚ð ž ¸Èv_€yƒó¸Cì"Ý*^€r9Ãë{öû°±2 xR€) @zîl`öj¿€Þ¸´_²åê“À¢GAÜ"ìß¿þýõ“kÛ¯?e+°ûÆö–†ÀÜ)ÊJ üLŒ>ÿõÿÿ“fdâcöl€ þ¿¥™ÿwC38­3C§¦A\ðäÐÐÔ¸_z&:Æ‚• ˜ØÛù,é>}ûæârðôqNÐŒ#hã+(Ÿ2|R1¼ní%eá¦% -ò›ñÛOöŸ¿8Ø@Å+33/;;;Ó¿¯¯ß?pfÿºC—N»¼L 6ÙÓÿŒwA}`Ð e`R–gø'òŸQ”Ô5–¡ÌÿÿeøÂÀ,X?‚û™Ù-Fh²auíA}e`sZè?h|Ø|üù—é#ÿ«bb'.\(•”MÂÐW úXNlÙq<ÀghÆ— Ô¢fdú*€AcC?D9LíÍätå…äÙ¸EøYÿsûh?¿±¾}úîÙí'vŸzr÷!8É*0e?v ˜þË3þ6f€Ávç?([ýcúÎø×œÿå˜AÕ0_=ÿÌÄ ?Áå¤èg†Lª‚@û¢ÿEXê32üøËø†áÿÁÚZ±¦¦0H|пÁkD€¥ì/_Ÿ¦-[¯1»ÿas~ìàq¨oà¾ö –·¬ìÿ1ûÚ¼ÿÿðÿúɶ ØüÁÄðì/ÓpŽª—abкþãgptÜÉŒbŒ jàÑžÈÿõ€‘/a|À4ù?+(–þƒ»P !Mp± ŒN~Ѐƒ°+ÇÄðíÃ3u•cÇOE C<@,àÕ!i3Îúº„J¾|ý )§þƒœõ \ê»mŸ€Ü?˜ÿƒ’á X ¸–Üß¿Œß@V»ÞL@ï 2üçÍt3~ä ¤ú—”–@=иé ,?3þgg`ùlƒê/pfü#?3üûÄô?¨=Š o9…Æ`×C'½ˆiîû¿‰™zq‘]csõP÷:âNaÿÁãŒà24$)ønlÁ§H@U3¨7ùTQ€ÆõØþ1Hÿgøõ—ù° dù/lk0‚çÄAu0ã·ÿŒ€eÂ`kÜäü®­ÿÛÀJ X }¥1PXˆýùÏëîÁž”¬ˆ4)Ã@ˆYJˆ^¾|îììvõê`ƒ†£!ù ´æWàÊ»üš˜û4É é׃0r[8ÿAC¶@¯ùS t0°aóþ?ÈŸ@Ôéþ Ž`Àídü¯È,=@ã§?þ›bæLÿ|AµÃcp+ó—èh`êú®s~CKEÀTÊጠ¡8`3N ˜“~̘)ÁÆÂ V€²b €py´Ì¬ªja{ûjPB›i ‚eÙÀ‰ ¨æ¨“Îð<”ùÜ–6îU˜þ+‚ÛŒo˜þ[Î.À^åFa`W”„@#ž 1P`Õñ49ÂÀûŸAì/#°°—‡ ñ¯Ÿ ÿ?2Bçý¿ÿœ>¾ò+Všps²þWÌhëm@u{W÷ŠÊò9ÿ@#¬ÀÔ™®c÷Pe0'ÓÆ3`@2ý² 6Ó`Êfúÿí¨LTgd°güoʘŒ/@i“Aœï=À*vøÿ 12ð‚‹òŸàRõ+x†F@ ®ÃíØxöiS\xx8°&  ,+pÀ€ R,••F p•Ìüôé xT ´¼‰B‹ Ü“b§] –bü¯ ê‚Úg6Lÿ<å-gÆÿÀRˆ‹ ä¬×ÿ€F§ACÍÀÒ›Þ·®1þùŸ˜Þ1þúGçß-`nÉÉSíîQä`ÅåH \1i™€Šy`è  ôL`À6Œhé ãcFP¢¶‡-"é ’ôÁ†ãÿ® 88@`‡“á« €BOoqR’¨'ð4%cÕ@áò¬lý^=ÃÀôäñ«ÖŽ)3¦-w½%€-­ÿÊT^füÿ˜‘Qò“Óß L* ÿSxþþÉÈĬÎþƒÊòÇÿAYØ»vÞ¹ÿ3¾``8øŸá Ó`{Ná?“ÐL¦òAÕÎÿ‡U–ffà¶ #¸Ò`Æå€"máë²åz{¦;w` 5²€i&Ah”©Ñõˆ˜/jŠ ’à!hHK˜‰àŠQ ²×NCÀ¿‹n­\¹áÄ©7np?Ì1`ÇA:ïW€¥°º^ zTc€V·ZŠ y(«êjèýóòýäá,ÊÍ%B¶ ˆ|€ ²ÿ¾y÷úÌ©GgγݹËòøþ¯7ïnÿÁññ=°Ð]&,ð•“›SXD@NFYQYQKKÇÔX^B4z.˜ÀÍ©+0gÒFfbIEND®B`‚PyOpenGL-3.0.2/tests/test_glu_crash_under_pygame.py0000644000175000001440000000031212025001653023364 0ustar mcfletchusers00000000000000if __name__ == "__main__": import pygame pygame.init() screen = pygame.display.set_mode([800, 600], pygame.OPENGL | pygame.DOUBLEBUF) from OpenGL.GL import * from OpenGL.GLU import *PyOpenGL-3.0.2/tests/test_loadglut.py0000644000175000001440000000100312025001653020467 0ustar mcfletchusers00000000000000import ctypes try: from ctypes.util import find_library except ImportError, err: from ctypes.util import findLib def find_library( string ): return findLib( string )[0] GL = OpenGL = ctypes.CDLL( find_library('GL'), mode=ctypes.RTLD_GLOBAL ) GLU = ctypes.CDLL( find_library('GLU'), mode=ctypes.RTLD_GLOBAL ) # glut shouldn't need to be global IIUC GLUT = ctypes.CDLL( find_library('glut'), mode=ctypes.RTLD_GLOBAL ) print 'GL', GL print 'GLU', GLU print 'GLUT', GLUT print GLUT.glutSolidTeapotPyOpenGL-3.0.2/tests/test_genframebuffers_twice.py0000644000175000001440000000114712025001653023221 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Test for glGenFramebuffersEXT multiple-call failure reported by Joshua Davis""" from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * # adapted from http://www.pygame.org/wiki/GLSLExample from OpenGL.GL.EXT.framebuffer_object import * def main(): glutInit(0) glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH) glutCreateWindow('test') framebuffer = glGenFramebuffersEXT(1) print type(framebuffer) cow = glGenFramebuffersEXT(1) print cow glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer) if __name__ == "__main__": main() PyOpenGL-3.0.2/tests/test_glutinit3x.py0000644000175000001440000000140612025001653020775 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Tests initializing a GLUT 3.x context (freeglut extension apis)""" from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * import time resX,resY = (400,300 ) def display( ): glutSetWindow(window); glClearColor (0.0, 0.0, (time.time()%1.0)/1.0, 0.0) glClear (GL_COLOR_BUFFER_BIT) glFlush () glutSwapBuffers() if __name__ == "__main__": glutInit([]) glutInitContextVersion(3, 2) glutInitContextFlags(GLUT_FORWARD_COMPATIBLE) glutInitContextProfile(GLUT_CORE_PROFILE) glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glutInitWindowSize(resX, resY) glutInitWindowPosition(0, 0) window = glutCreateWindow("hello") glutDisplayFunc(display) glutMainLoop() PyOpenGL-3.0.2/tests/test_glutinit.py0000644000175000001440000000124512025001653020523 0ustar mcfletchusers00000000000000from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * import time resX,resY = (400,300 ) def display( ): glutSetWindow(window); glClearColor (0.0, 0.0, (time.time()%1.0)/1.0, 0.0) glClear (GL_COLOR_BUFFER_BIT) glFlush () glutSwapBuffers() if __name__ == "__main__": glutInit([]) glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glutInitWindowSize(resX, resY) glutInitWindowPosition(0, 0) window = glutCreateWindow("hello") glutDisplayFunc(display) for name in (GL_VENDOR,GL_RENDERER,GL_SHADING_LANGUAGE_VERSION,GL_EXTENSIONS): print name,glGetString(name) glutMainLoop() PyOpenGL-3.0.2/tests/test_accel_leak.py0000644000175000001440000000047412025001653020732 0ustar mcfletchusers00000000000000#! /usr/bin/env python # Test SF#2980896 def test_sf_2980896(): from OpenGL.arrays import vbo import numpy as np data = np.arange(1000).astype(np.float32) for i in range(1000000): new_vbo = vbo.VBO(data) # optional: new_vbo.delete if __name__ == "__main__": test_sf_2980896() PyOpenGL-3.0.2/tests/test_gldouble_ctypes.py0000644000175000001440000000512712025001653022053 0ustar mcfletchusers00000000000000"""Test simple functions (i.e. no pointers involved)""" from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * from OpenGL.constants import GLdouble from OpenGL.arrays import arraydatatype from OpenGL.constants import GLdouble handler = arraydatatype.ArrayDatatype.getHandler( GLdouble * 16 ) handler.registerReturn( ) import time start = time.time() window = None def display(): glutSetWindow(window); glClearColor (0.0, 0.0, (time.time()%1.0)/1.0, 0.0) glClear (GL_COLOR_BUFFER_BIT) glMatrixMode(GL_PROJECTION); # For some reason the GL_PROJECTION_MATRIX is overflowing with a single push! # glPushMatrix() matrix = glGetDoublev( GL_PROJECTION_MATRIX) print 'matrix', type(matrix), matrix glutSwapBuffers() size = (250,250) def reshape( *args ): global size size = args glViewport( *( (0,0)+args) ) display() def ontimer( *args ): print 'timer', args, '@time', time.time()-start glutTimerFunc( 1000, ontimer, 24 ) def idle(): delta = time.time()-start if delta < 10: global size x,y = size if delta < 5: change = +1 else: change = -1 x = x-change y = y+change if x < 1: x = 1 if y < 1: y = 1 glutReshapeWindow( x, y ) size = (x,y) glutSetWindow(window) glutPostRedisplay() else: glutDestroyWindow( window ) print 'window destroyed' import sys sys.exit( 0 ) def printFunction( name ): def onevent( *args ): print '%s -> %s'%(name, ", ".join( [str(a) for a in args ])) return onevent if __name__ == "__main__": import sys newArgv = glutInit(sys.argv) print 'newArguments', newArgv glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB ) glutInitWindowSize(250, 250) glutInitWindowPosition(100, 100) window = glutCreateWindow("hello") print 'window', repr(window) glutDisplayFunc(display) glutReshapeFunc(reshape) glutMouseFunc(printFunction( 'Mouse' )) glutEntryFunc(printFunction( 'Entry' )) glutKeyboardFunc( printFunction( 'Keyboard' )) glutKeyboardUpFunc( printFunction( 'KeyboardUp' )) glutMotionFunc( printFunction( 'Motion' )) glutPassiveMotionFunc( printFunction( 'PassiveMotion' )) glutVisibilityFunc( printFunction( 'Visibility' )) glutWindowStatusFunc( printFunction( 'WindowStatus' )) glutSpecialFunc( printFunction( 'Special' )) glutSpecialUpFunc( printFunction( 'SpecialUp' )) glutTimerFunc( 1000, ontimer, 23 ) glutIdleFunc( idle ) glutMainLoop() PyOpenGL-3.0.2/tests/performance.py0000755000175000001440000000500112025001653020123 0ustar mcfletchusers00000000000000#! /usr/bin/env python """This script is intended to give me an idea of current performance with various drawing strategies""" from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * from OpenGL.arrays import vbo import cProfile, time, os PROFILER = cProfile.Profile() import numpy def dump( ): def newfile( base ): new = base count = 0 while os.path.isfile( new ): new = '%s-%s%s'%( os.path.splitext(base)[0], count, os.path.splitext(base)[1] ) count += 1 return new PROFILER.dump_stats( newfile( 'performance.profile' ) ) def init_vbo( size = 1000000 ): """Create VBO with vertices of count size""" a = numpy.zeros( (size,3), dtype='d') xes = numpy.arange(-5,5,float(10)/size, dtype='d' ) a[:len(xes),0] = xes a[:len(xes),1] = numpy.sin( xes ) a[:len(xes),2] = numpy.cos( xes ) v = a v = vbo.VBO( a ) v.bind() glEnableClientState(GL_VERTEX_ARRAY); glEnable( GL_LIGHTING ) glEnable( GL_LIGHT0 ) glDisable( GL_CULL_FACE ) glColor3f( 1.0,1.0,1.0) glNormal3f( 0.0, 0.0, 1.0 ) return v def draw_with_array( a , count): glDrawArrays( GL_TRIANGLES, 0, (count) ) glFlush() glutSwapBuffers() def init(): glMatrixMode (GL_PROJECTION) glLoadIdentity() gluPerspective(40.0, 300/300, 1.0, 20.0) glMatrixMode(GL_MODELVIEW) glLoadIdentity() gluLookAt( 20,0,0, # eyepoint 0,0,0, # center-of-view 0,1,0, # up-vector ) glClearColor( 0,0,.25, 0 ) glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ) def display( ): init() repeat = range(100) for count in [(2**i) for i in range(8,19)]: v = init_vbo( count ) def x( ): t1 = time.time() for i in repeat: glVertexPointer( 3, GL_DOUBLE, 0, v ) draw_with_array( v, count ) t2 = time.time() print 'Count: %s Total Time for %s iterations: %s MTri/s: %s'%( count, len(repeat), t2-t1, (count*len(repeat)/(t2-t1)/1000000) ) PROFILER.runcall( x ) dump() import sys sys.exit(1) print 'should not get here' if __name__ == "__main__": import sys newArgv = glutInit(sys.argv) glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB ) glutInitWindowSize(250, 250) glutInitWindowPosition(100, 100) window = glutCreateWindow("hello") glutDisplayFunc(display) glutMainLoop()PyOpenGL-3.0.2/tests/test_sf2946226.py0000644000175000001440000000174412025001653020057 0ustar mcfletchusers00000000000000import pygame, sys from pygame.locals import * import OpenGL OpenGL.USE_ACCELERATE = False from OpenGL.GL import * from OpenGL.GL.EXT.framebuffer_object import * from OpenGL.platform import safeGetError from OpenGL import error def draw (): glClearColor(0.0,0.0,0.0,0.0) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) #draw stuff here pygame.display.flip() pygame.init() pygame.display.set_mode((512,512),OPENGL | DOUBLEBUF) #setup a texture tex = glGenTextures(1); glBindTexture(GL_TEXTURE_2D, tex); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, None); glBindTexture(GL_TEXTURE_2D, 0); #setup teh fbo fbo = glGenFramebuffersEXT(1) glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo) glBindTexture(GL_TEXTURE_2D, tex) #this call produces an error! glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D, tex, 0) while 1: event=pygame.event.poll () if event.type is QUIT: sys.exit(0) draw() PyOpenGL-3.0.2/tests/testing_context.py0000644000175000001440000000125112025001653021043 0ustar mcfletchusers00000000000000import pygame from pygame.locals import * import pygame.key import pygame.display from OpenGL.GLUT import * def createPyGameContext(): """Setup a minimal PyGame context for testing""" pygame.display.init() screen = pygame.display.set_mode( (300,300), OPENGL | DOUBLEBUF, ) pygame.display.set_caption("testing") pygame.key.set_repeat(500,30) return pygame.display def createGLUTContext(): """Setup a minimal GLUT context for testing""" glutInit( [] ) glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB ) glutInitWindowSize(250, 250) glutInitWindowPosition(100, 100) window = glutCreateWindow("hello") return windowPyOpenGL-3.0.2/OpenGL/0000755000175000001440000000000012032640120015227 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/DLLS/0000755000175000001440000000000012032640120015765 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/DLLS/gle_AUTHORS0000644000175000001440000000044212025001653017670 0ustar mcfletchusers00000000000000 Original Author & Maintainer: Linas Vepstas wrote virtually all of this Contributors: Mark Kilgard formatted the man pages Jonas Lindemann MS Visual C project files John A. Boyd Jr. fix to gle.spec PyOpenGL-3.0.2/OpenGL/DLLS/gle_COPYING0000644000175000001440000004526512025001653017667 0ustar mcfletchusers00000000000000 The different parts of this distribution have two different software licenses that govern thier use. Both licenses pass the common definition of 'open source license' as commonly defined (e.g. at http://www.opensource.org). The licenses, although different, are compatible with each other. The applicable licenses are: examples, man pages, documentation: Artistic License A copy of this license is in COPYING.artistic source code: IBM standard example source code license (free use, free distribution, free modification, disclaimer of warrenty) A copy of this license is in COPYING.src The file CERTOR.script ('certificate of originality') documents the provenance of this code. -------------------------------------------------------------------- Alternately, at your choosing, you may choose to accept the source code and the man pages/documentation under the GPL: the GNU General Public License version 2, as given below. If you use this code, you must accept either the licenses above, or the GPL. -------------------------------------------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. PyOpenGL-3.0.2/OpenGL/DLLS/glut64.dll0000755000175000001440000102500012025001653017614 0ustar mcfletchusers00000000000000MZÿÿ¸@øº´ Í!¸LÍ!This program cannot be run in DOS mode. $õ/3]”A`]”A`]”A`àÛ×`\”A`TìÅ`}”A`TìÔ`W”A`zR:`P”A`]”@`™”A`TìÂ`þ”A`TìÓ`\”A`CÆÕ`\”A`TìÐ`\”A`Rich]”A`PEd†¹Ið"  ¤‚퀀ÏÀ l­Œ@¼ ü`ÐÀð.textÚ£¤ `.rdata À¨@@.dataèNÐ,¶@À.pdataü â@@.rsrc¼@ø@@.reloc&` @B@SHƒìPHcÚèRœHcP ;ÚŒg‹HD A;ØWH‹@H‹ÊH‹ÓH+ÑH‹ÐH…Û„=HT$h¹ð ÿ̲HT$p¹ñ ÿ¼²HT$x¹ò ÿ¬²HT$@¹ó ÿœ²HT$D¹ô ÿŒ²HT$H¹õ ÿ|²3Ò¹ð ÿg³3Ò¹ñ ÿZ³3Ò¹ò ÿM³3Ò¹ó ÿ@³3Ò¹ô ÿ3³º¹õ ÿ#³L‹[‹SWÀóKó[ ‹ L‰\$0óSóD$(óL$ ÿñ±‹T$h¹ð ÿⲋT$p¹ñ ÿÓ²‹T$x¹ò ÿIJ‹T$@¹ó ÿµ²‹T$D¹ô ÿ¦²‹T$H¹õ ÿ—²HƒÄP[ÃÌÌÌÌÌÌÌÌÌ@SHƒì HcÚèšHcP ;Ú|-‹HD A;Ø}!H‹@H‹ÊH‹ÓH+ÑH‹ ÐH…Ét ó,AHƒÄ [Ã3ÀHƒÄ [ÃÌÌÌÌÌ@SHƒì H‹Úèrš¶ E3ÉL‹Ø„ÉtHLc@ ¶ÑA;Ð|1A‹KA;Ð}%I‹CH‹ÊI+ÈH‹ÈH…ÒtfAnÁ[ÀóXBóD,ÈŠKHÿÄÉu½A‹ÁHƒÄ [ÃÌÌÌÌ@VATHìˆD)D$PD)L$@LcáH‹ wëD)T$0D(ËD(ÁH‹AD(ÒH9APuH‹q8H‹I H…öu/H èJué.H‹A@H‹p8H‹H D;`HuØH ¬éAüÿ‡ôL‰¬$€)t$pWöE3íƒ~)|$`ó=rŽ¢H‰œ$ H‰¬$¨è‹‹^ÿNH‹èƒëHcÈ H‰¼$°H<@HÁçfDA;Ü„ÕH‹F ó/Æ‚É\$ H‹F H‹M ‹‰H‹F óóYÇóH,Àf‰D$$H‹F H‹M ‹D‰DH‹F óDóYÇóH,Àf‰D$&H‹F H‹M ‹D‰DH‹F H‹ !êóDÆD$*óYÇóH,Àf‰D$(H‹Iÿ®°…ÀtH‹óéH‹HH‰ @øëL‰-7øH‹UH‹ DèLD$ 袭Hƒï ƒë‰ÿÿÿH‹¼$°H‹ ®éH‹œ$ H‹õH‹AH9APuH‰i8H‹ŽéH‹MH‰H0ëH‹A@H‰h8H‹uéH‹H@H‹EH‰A0H‹béL‹EH‹ ÇçH‹RP覭H‹¬$¨ó¾ò ®fWÒD‰d$ D/Ãvf(ÁëA/ðvf(ÂëEÀAZÀD/ÓH‹F òZÀK dóˆóYÇóH,Àf‰D$$vf(ÁëA/òvf(ÂëEÒAZÂD/ËH‹F òZÀóDˆóYÇóH,Àf‰D$&wA/ñvf(ÊëEÉAZÉH‹F òZÁóDˆH‹ ƒèóYÇÆD$*óH,Àf‰D$(H‹Iÿ¯(|$`(t$p…ÀtH‹QèH‹HH‰ žöëL‰-•öH‹VH‹ ¢æLD$ è¬L‹¬$€ëH gA‹ÔèrD(D$PD(L$@D(T$0HĈA\^ÃÌÌÌÌÌÌÌÌÌÌHƒì(L‹ÝçI‹@I9@Pu"M‹H8M…ÉuAH èÆqóHƒÄ(ÃI‹@@L‹H8;HHuÕ‹ÑH ³èžqóÞHƒÄ(ÃùÿwHcÁH @HcÂHÈI‹A óˆHƒÄ(ËÑH Mè`qó HƒÄ(ÃÌÌÌ@SHƒì H‹CçLcÁH‹ 1çJ‹\ÀøH‹AH9APuH‹I8H‹[8H…Éu6H HƒÄ [é qH‹A@H‹[@H‹H8H…ÛuÕH ¼A‹ÐHƒÄ [éçpH…ÛuH [A‹ÐHƒÄ [éÎpH;Ùtdè¤ÿCH‹ ²æH‹AH9APuH‰Y8H‹æH‹KH‰H0ëH‹A@H‰X8H‹„æH‹H@H‹CH‰A0H‹qæL‹CH‹ ÖäH‹RP赪HƒÄ [ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌH‰\$WHƒì H‹ù¹0詯H‹ØH…Àu H bèåp¹ HÇÇCÇCèv¯H‰C H…Àu H .è±p‹CƒèHcЈýLBIƒøŒ´H RIÁèI‹ÀHÁáH÷ØH‚H‹C Hƒé0IƒèÇD0€¿H‹C ÇD4€¿H‹C ÇD8€¿H‹C ÇD$€¿H‹C ÇD(€¿H‹C ÇD,€¿H‹C ÇD€¿H‹C ÇD€¿H‹C ÇD €¿H‹C ÇD €¿H‹C ÇD€¿H‹C ÇD€¿…bÿÿÿH…Òx6H RHÁáH‹C Hƒé HƒêÇD €¿H‹C ÇD€¿H‹C ÇD€¿yÒH‹ FãH‹×趃øÿt ;C}E3ÉE3Àë L‹A¹H‹4óH‹ ã踦H‰CH‹MâH‰C(H‰BâH‹ÃH‹\$0HƒÄ _ÃÌÌÌÌé+þÿÿÌÌÌÌÌÌÌÌÌÌÌH‰\$WHƒì öA€I‹ØH‹úu€yt3ÀH‰I‰H‹\$0HƒÄ _Ãè¼ÿÿÿH‰H‹@H‰H‹\$0HƒÄ _ÃÌÌÌÌÌÌÌ@SHƒì ƒAÿH‹ÙuIH‹ºáH ³áH…ÀtH;ÃtHH(H‹@(H…ÀuîëH‹C(H‰H‹Kÿ¦H‹K èø­H‹Ëèð­HƒÄ [ÃÌÌHƒì(‹Qh…Òxƒúr&ƒêd…š€H‹‰ˆH…ÉtW‹QhƒúdtìëÑH‰\$8H‰|$ HcÚH=†µHÛHƒ|ßuH‹ß3Éÿ÷©H‰DßH‹DßH‹|$ H‹\$8H‹ÈHƒÄ(Hÿ%Ý©H‹NµH…Àu^H‹:µ3Éÿº©H‹ÈH‰0µHƒÄ(Hÿ%­©ƒêt3ƒútH‹D$0H‹ÈHƒÄ(Hÿ%©º3Éÿ{©H‹ÈHƒÄ(Hÿ%u©3ÀH‹ÈHƒÄ(Hÿ%e©ÌÌÌÌÌHƒì(H‹­â‰HhHL$8ÿ/©H‹L$8ÿ,©H‹ âH9AuèÊþÿÿHƒÄ(ÃÌÌÌÌÌH‹q⺠H‰ˆHH‹ ^âHoH‰èðéóÌÌÌH‹A⺠H‰ˆPH‹ .âHßnH‰¸ðéÃÌÌÌ3ÀÃÌÌÌÌÌÌÌÌÌÌÌÌÌH‰\$H‰l$H‰t$WATAUHì€L‹á¹€èX«H‹èH…Àu H  è”lE3íH‹ýA‹õA‹Ý„ÇD$ ÇD$$ÇD$(ÇD$, ÇD$0ÇD$4 ÇD$8¹öÃtÇD$< ÇD$@¹ öÃtHcÁÿÁÇD„ HcÁÿÁÇD„ ‹ÓƒâtNHcÁÿÁÇD„ HcÁÿÁÇD„ HcÁÿÁÇD„ HcÁÿÁÇD„ HcÁÿÁÇD„ HcÁÿÁÇD„ öÃt8HcÁÿÁÇD„ HcÁÿÁÇD„ …ÒtHcÁÿÁÇD„ HcÁÿÁÇD„ öÃt HcÁÿÁÇD„ ‹,ïHcÁH‹ þÞLD$ D‰l„ ègH…Àt H‰ÿÆHƒÇÿÃû Œ®þÿÿHcÆA‹ÝH|ÅA‹ÍI‹ÅöÃt¹ÇD$ ÇD$$H‹ÁöÃtÇD„ ƒÁÇD„$HƒÀöÃt ÇD„ ÿÁHÿÀöÃtÇD„ ƒÁÇD„$‹}îHcÁH‹ OÞLD$ D‰l„ 踀H…Àt H‰ÿÆHƒÇÿÃûŒ_ÿÿÿLœ$€A‰4$H‹ÅI‹[ I‹k(I‹s0I‹ãA]A\_ÃÌÌÌÌÌÌÌÌÌÌÌH‰L$SUVWHƒìxH‹éè[ýÿÿ‰³…Àt$HŒ$¨èTýÿÿ‹”$¨H‹ðH‰„$¸éŽH‹ ®ÝLŒ$¨LD$(3Òè‚ H‹ØH…Àu3ÿ‰}HƒÄx_^][ÃHcŒ$¨HÁáè{¨H‹ðH‰„$¸H…Àu H ,è¯i‹”$¨…Ò~%H‹ÆH‹Êffffff„H‰HƒÀHƒÃ(HƒéuïHcÊHkÉxè#¨H‰D$ H…ÀuÇEÿÿÿÿHƒÄx_^][Ã3ÿL‰l$h9¼$¨D‹ïŽôL‰d$pL‰t$`L‰|$XL‹þHXM‹7LŒ$°A¸L‰søH‹ ¸ÜI‹ÖèÈ}…À…€9¼$°twÇH5z±HkD`fD‹H‹ ~ÜL‹ÍI‹Öè‹}…Àt‰;HƒÅHƒÆIƒìu×H‹ @ìI‹Öÿ ‰{P‰{T‰{X‰{\‰{`‰CD‰{d‰{hÇCl‰{H‰{Lë‰;AÿÅHƒÃxIƒÇD;¬$¨Œ9ÿÿÿH‹¬$ L‹|$XL‹t$`L‹d$pH‹Œ$¸è©§D‹œ$¨H‹D$ L‹l$hD‰]HƒÄx_^][ÃÌÌH‹ÄL‰@H‰HUHì€H‰X H‰pðH‰xèL‰`àMcá3íH‹ùL‰hØL‰pÐJ4¥‹ÚH‰l$0H‹ÎDu肦L‹èH‰D$HH…Àu H 6è¹gM…ä~I‹ýHÇÀ€ÿÿI‹Ìó«H‹¼$H‹ÎèE¦H‹ÐH‰D$ H…ÀuH ùè|gH‹T$ …ÛŽX‹´$˜HGH‹ÏL‰|$PH‰L$(L‹ÃH‰D$8E3ÿH‰\$@ë DH‹T$ ƒ8„å3í3ÛE3ÛM…䎫L‹”$ L‹ÊIƒÂL+êIczüE‹BƒÿuA‹ÖëH‹Œ$I?‹T A‹ÿȃø‡“H˜H 'Þÿÿ‹Œì#HÞÿÿHÈÿá3öD;ÂAÇ@”Æëe3öD;ÂAÇ@•ÆëS3öA;Ð@œÆA+ÐA‰ëB3öA;Ð@ŸÆA+ÐA‰ë13öA;Ð@žÆA+ÐA‰ë 3öA;Ð@ÆA+ÐA‰ë3öA;Ð@ÆD+ÂE‰…öt9…Ûu.A‹C‹L ;Á";Át1H‹D$8H‹L$(H‹|$ L‹D$@H‹l$0éÏ»ë ƒÿ…ŸoæIÿÃIƒÂ IƒÁM;ÜŒàþÿÿ…ÛtW…íu5H‹|$ H‹l$(H‹L$HM‹ÄH‹×H‰l$0IÁàè…¥H‹D$8L‹D$@H‹ÍAÿÆëkH‹D$8H‹L$(H‹|$ L‹D$@H‹l$0AÿÆëMH‹D$8H‹L$(H‹|$ L‹D$@H‹l$0AÿÆë/H‹|$ H‹l$0AÿÆë H‹D$8H‹L$(H‹|$ L‹D$@H‹l$0ëH‹|$ L‹l$HHƒÁxHƒÀxIƒÇIƒèH‰L$(L‰D$@H‰D$8…ÞýÿÿL‹|$PëH‹|$ I‹Íèr¤H‹Ïèj¤L‹t$XL‹l$`L‹d$hH‹|$pH‹t$xH‹œ$¨H…ít H‹EHÄ€]Ã3ÀHÄ€]Ãì!þ!2"C"!""T"ÌÌÌÌÌÌÌÌH‰\$H‰l$H‰t$WATAUAVAWHƒì0H‹ÚH¾M‹ùM‹àL‹éèÀªE3ÀH‹ðEpH…À„˜¾ƒê!tZƒêt?ƒêt/ƒêtƒú@….jÇHxëL€x=Hxu½ë7½ë4½Hxë)€x=HxuA‹îë½ë€x=…â½HxHT$ H‹Ïèû©D‹ØH9|$ „¾ÆE3ÀëD‹\$ A‹èA¾EƒÀŸƒø‡H ñÚÿÿH˜‹”È+HÑÿâH=ÈI‹õ¹ó¦uAÇ…íuÇCÇCA $EéP‰kD‰[A $¸é7H=lI‹õ¹ó¦H=WI‹õ¹A‹À”Àó¦tV…ÀuRH=2I‹õ¹ó¦…ïÇ…íuÇCÇCAƒ $Eé͉kD‰[Aƒ $¸é·Ç ÇC ÇC ÇC$…ÀtA¾ë ÇC(D‰C,…íu ½D]IcÎE…ö~HƒÃ@‰küD‰HƒÃ HƒéuðA $¸éFH=cI‹õ¹ó¦uAÇ…íuÇCÇCA $Eé ‰kD‰[A $¸éòH=I‹õ¹ó¦…ØÇ…í…¼ÇCÇCEé·H=ÀI‹õ¹ ó¦…Ç…íuÇCÇCA $Eéx‰kD‰[A $¸é_H=\I‹õ¹ó¦uAÇ …íuÇCÇC A $Eé$‰kD‰[A $¸é H=I‹õ¹ó¦…ñÇ…íuÇCÇCAƒ $EéωkD‰[Aƒ $¸é¹H=¦ÿI‹õ¹ó¦…ŸÇéjþÿÿH=|ÿI‹õ¹ó¦…}D‰ÇCD‰CA $ ÇC …íuÇCÇCEéI‰kD‰[¸é8H=ÿI‹õ¹ ó¦…D‰ÇCÇCÇC …íuÇCÇCë‰kD‰[ÇCÇCD‰C ÇC$ÇC(D‰C,A $P¸é¸H=‰þI‹õ¹ó¦…žÇ…턉kD‰[¸é‚H=OþI‹õ¹ó¦u Çé7ýÿÿH=)þI‹õ¹ó¦H=þI‹õ¹A‹À”Àó¦t…À„/D‰ÇCÇCÇC ÇCÇC$ÇC0…Àt¸ë¸ÇC4D‰C8…íu ½D]ýH˜Hƒø~HƒÃHÿÈfD‰küD‰HƒÃ HƒèuðA $¸é¦H=_ýI‹õ¹ó¦uAÇ …íuÇCÇCA $Eék‰kD‰[A $¸éRH=ýI‹õ¹ó¦u-Ç…í….ÇCD‰CAÇAƒ $EéH=»üI‹õ¹ó¦u8D‰3…íuÇCÇCAƒ $Eé݉kD‰[Aƒ $¸éÇH=hüI‹õ¹ó¦u;Ç…íuD‰sÇCA $Eé‰kD‰[A $¸ëyH=üI‹õ¹ó¦ucÇ…íuÇCD‰CA $EëD‰kD‰[A $¸ë.H=·ûI‹õ¹ ó¦uÇ…ít‰kD‰[¸ëƒÈÿH‹\$`H‹l$hH‹t$pHƒÄ0A_A^A]A\_Ã%b&ñ&I'¥+¥+ï'¥+(¥+¥+p(¥+ð(¥+¥+¥+&)*¥+¥+¥+z+ÌÌÌÌÌÌÌÌÌÌÌÌH‰\$H‰l$H‰t$ H‰T$WATAUAVAWHƒì E3íM‹áM‹ðE‰(H‹ñè+[HÈûH‹ÈA‹ýL‹øèú£H…ÀtH­û3ÉÿÇèä£H…ÀuëHc\$pD»HcÈH IHÁá貚H‹øH…Àu H kúèî[I‹ÏH+΄¶HÿƈD1ÿ„Àuò‹l$xH‹Ó‰l$p…Û~4H‹ÏL+çfffff„A‹ HƒÁ Hƒê‰AôA‹D ø‰AøA‹D ü‰AüußH ûI‹ÏèD£H‹ðH…ÀtT„HcËLD$pM‹ÎHIH‹ÎH—èµöÿÿ…ÀxØëH –úH‹Öè~ZH»ú3Éèô¢H‹ðH…Àu¸‹l$pºå riHc˃ÃHILJ ÇD‡D‰l‡HDILJ ÇD‡D‰l‡HDILJ ÇD‡D‰l‡HDI LJÇD‡D‰l‡@öÅuHcÃÿÃH @ÇÇDD‰l@öÅ…Hc˃úíHID‰,‡ÇD‡ÇD‡HDILJÇD‡ÇD‡HDILJÇD‡ÇD‡HDI LJÇD‡ÇD‡HDI LJÇD‡D‰l‡@öÅuHcÃÿÃH @ÇÇDD‰l@öÅu$HcÃÿÃH @ÇÇDD‰lAǺå rHcÃÿÃH @Ç ÇDD‰lºå rHcÃÿÃH @Ç ÇDD‰lºårHcÃÿÃH @ÇÇDD‰lH‹Ï…Ût&HcÃH@HÁâè L‹èH…ÀuH •÷èYëèy˜I‹Ïèq˜L‹\$XH‹l$`H‹t$hA‰H‹\$PI‹ÅHƒÄ A_A^A]A\_ÃÌH‰\$H‰l$VWAUHƒì@H‹ñH‹ ¼ËE3íA‹ÙI‹øH‹êH…Étè˜L‰-ŸËD‰- ËH ™ËèDîÿÿLD$4HT$0H‰{Ë‹„$€L‹Ï‰D$(H‹Î‰\$ èéûÿÿH‹ðH…Àu!H â÷è•W3ÀH‹\$hH‹l$pHƒÄ@A]_^Ë|$0‹6ËH‹ 'ËL‰d$`L‹¤$ˆD‹ÏL‹ÀL‰d$ èòïÿÿH‹ØH…ÀtD‰mëaD9l$4tZ…ÿ~*HFH‹Ïfƒxøuƒxüu D9(uÇHƒÀ Hƒéuß‹ÉÊH‹ ºÊD‹ÏL‹ÆL‰d$ è’ïÿÿH‹ØH…ÀtÇEH‹Îè—L‹d$`H…Û„8ÿÿÿöCIDÝH‹Ãé*ÿÿÿÌÌÌÌÌÌÌÌÌÌÌÌÌ@SHƒì H‹Ùÿ“H‹Èÿ“H‹ ËH‰ÚÚHcþÿÿH‰”ÌH…Étèš–H…Ût%H‹ËèVH‰ÎÊH…ÀuH ŠõHƒÄ [éWHÇ­ÊHƒÄ [ÃÌÌÌÌÌÌÌH‰ ÊÃÌÌÌÌÌÌÌÌH…Ò„7H‰l$H‰t$ WHƒì H‰\$0H‹ÌÉA‹èH‹ú‹ñH…Ût H‹H‰µÉë¹(èI•H‹ØH…Àu H õè…V¸ÓMbH‰{‰kHÇ÷îÁú¸ÓMb‹ÊÁéÑHL$8‰S÷æÁêiÒè+ò3Òiöè‰s èHƒÉÿ3ÀH‹þò®H÷ÑHÿÉIËL;ÛtA€{ÿ u ¶< t)„Àt%H‹ÖH‹Ùè°˜L‹ØH…ÀuÂH‹|$8H‹\$03ÀHƒÄ ^ÃH‹|$8H‹\$0¸HƒÄ ^Ã3ÀHƒÄ ^Ã̃ùf‡sL0ÃÿÿHcÁA¶„ >A‹Œ€@>IÈÿáH‹øÀH‰ÃH‹éÀH‰˜ÃH‹ÚÀH‰ ÃH‹ËÀH‰¨ÃH‹¼ÀH‰°ÃH‹­ÀH‰¸ÃH‹žÀH‰ÀÃH‹ÀH‰ÈÃH‹€ÀH‰ÐÃH‹qÀH‰ØÃH‹bÀH‰àÃH‹SÀH‰èÃH‹DÀH‰ðÃH‹5ÀH‰øÃH‹&ÀH‰ÃH‹ÀH‰ÃH‹ÀH‰ÃH‹ù¿H‰ÃH‹ê¿H‰ ÃH‹Û¿H‰(ÃH‹Ì¿H‹H@H‰QXÃH‹´½H‰PHÃH‹XÎH‰P óÃfé<ø<==%=4=C=R=a=p==Ž==¬=»=Ê=Ù=è=÷=>>%>1><> ÌÌÌÌÌÌÌÌ̃ùf‡rHàÀÿÿHcÁ¶„ð@‹Œ‚@HÊÿáH‹ª¾H‹€ÃH‹›¾H‹€˜ÃH‹Œ¾H‹€ ÃH‹}¾H‹€¨ÃH‹n¾H‹€°ÃH‹_¾H‹€¸ÃH‹P¾H‹€ÀÃH‹A¾H‹€ÈÃH‹2¾H‹€ÐÃH‹#¾H‹€ØÃH‹¾H‹€àÃH‹¾H‹€èÃH‹ö½H‹€ðÃH‹ç½H‹€øÃH‹ؽH‹€ÃH‹ɽH‹€ÃH‹º½H‹€ÃH‹«½H‹€ÃH‹œ½H‹€ ÃH‹½H‹€(ÃH‹~½H‹@@H‹@XÃH‹f»H‹@HÃH‹J»H‹@ Ã3ÀÃf7?F?U?d?s?‚?‘? ?¯?¾?Í?Ü?ë?ú? @@'@6@E@T@c@s@@‹@ ÌÌÌÌÌÌÌÌÌHƒì(Hƒ=´ºuaH‹s¼3ɺ‰ˆÔH‹_¼‰ˆØ‹ÓÊH‹ L¼‰ÜH‹ ?¼‹ÉʉàH‹,¼ƒˆÐH‹ ¼èÁñÿÿHƒÄ(ÃÌÌÌÌÌÌÌÌÌÌÌÌHƒì(ƒ=%ºt 3Ò3ÉÿÁ‚E3ÛD‰ºL‰ºHƒÄ(ÃE3ÛL‰ ºHƒÄ(ÃÌÌÌÌHƒì(H‹ õ¹H…ÉuH QæHƒÄ(é°EH‹ÑèTHÇ͹HƒÄ(ÃÌÌÌÌÌÌÌÌL‹ÜHìØH‹'œH3ÄH‰„$Àƒ=eI‰[I‰{ø3ÿLD$ 3Ò3ɉ=掋ßÿ‚…Àt:f¼$Œr‹„$˜…Àtƒøƒ="¯H‹¯Ç ¯‹¸ ‹°¤u"H Èôÿÿ蟊Çí®ë 3Ò3Éÿ…wD‹ÏE3À3Ò3ÉÇD$(‰t$ èDºƒˆÐH‹ÈH‹ØÇ€Ôǀ؉¸Ü‰°àè æÿÿH‹t$HH‰®‹H‹\$@ÿÀHƒÄ0_Ãù‡‚HP²ÿÿ‹Á‹Œ‚0NHÊÿá3ÀH9Y®•ÀÃ3ÀH9D®•ÀÃH‹9®H…ÀtG‹€ ÃH‹&®H…Àt4‹€¤ÃH‹®H…Àt!‹€¨ÃH‹®H…Àt‹€¬Ã‹æ­ÃÈÿþMËMØMëMþMN$NÌÌÌÌH옋Ñù‡¯ù„Aœ=ȇh Lz±ÿÿA¶„xXA‹Œ€XIÈÿáL‹ͽH‹ ®­3ÒHD$pE3ÉH‰D$8H„$¨H‰D$0H„$°H‰D$(‰T$ H‹ ¯H‹Rè™s‹„$°HĘÃL‹s½H‹ T­3ÒHD$pE3ÉH‰D$8H„$¨H‰D$0H„$°H‰D$(‰T$ H‹°®H‹Rè?s‹„$¨HĘÃH‹‘®Hƒ¸ðudH‹PHL$lLŒ$°H‰L$@HL$hLD$xH‰L$8HL$XH‰L$0HŒ$¸H‰L$(HŒ$¨H‰L$ H‹ §¬è s‹„$¸HĘË@`HĘÃH‹®Hƒ¸ðuaH‹PHL$lLŒ$°H‰L$@HL$hLD$xH‰L$8HL$XH‰L$0HŒ$¸H‰L$(HŒ$¨H‰L$ H‹ '¬èŠr‹D$XHĘË@dHĘÃH‹”­H‹BH9BPu-H‹R H‹ ï«LŒ$ A¸èôL‹„$ HĘÃH‹R@LŒ$ A¸H‹R H‹ °«èÃL‹„$ HĘÃH‹%­H‹BH9BPu-H‹R H‹ €«LŒ$ A¸ è…L‹„$ HĘÃH‹R@LŒ$ A¸ ëH‹Ó¬H‹BH9BPu-H‹R H‹ .«LŒ$ A¸ è3L‹„$ HĘÃH‹R@LŒ$ A¸ é:ÿÿÿH‹~¬H‹BH9BPu-H‹R H‹ ÙªLŒ$ A¸èÞK‹„$ HĘÃH‹R@LŒ$ A¸éåþÿÿH‹)¬H‹BH9BPu-H‹R H‹ „ªLŒ$ A¸ è‰K‹„$ HĘÃH‹R@LŒ$ A¸ éþÿÿH‹Ô«H‹BH9BPu-H‹R H‹ /ªLŒ$ A¸ è4K‹„$ HĘÃH‹R@LŒ$ A¸ é;þÿÿH‹«H‹BH9BPu-H‹R H‹ Ú©LŒ$ A¸ èßJ‹„$ HĘÃH‹R@LŒ$ A¸ éæýÿÿH‹*«H‹BH9BPu-H‹R H‹ …©LŒ$ A¸èŠJ‹„$ HĘÃH‹R@LŒ$ A¸é‘ýÿÿH‹ÕªH‹BH9BPu-H‹R H‹ 0©LŒ$ A¸è5J‹„$ HĘÃH‹R@LŒ$ A¸é<ýÿÿH‹€ªH‹BH9BPu-H‹R H‹ Û¨LŒ$ A¸èàI‹„$ HĘÃH‹R@LŒ$ A¸éçüÿÿH‹+ªH‹BH9BPu-H‹R H‹ †¨LŒ$ A¸è‹I‹„$ HĘÃH‹R@LŒ$ A¸é’üÿÿH‹Ö©H‹BH9BPu-H‹R H‹ 1¨LŒ$ A¸è6I‹„$ HĘÃH‹R@LŒ$ A¸é=üÿÿH‹©H‹BH9BPu-H‹R H‹ ܧLŒ$ A¸èáH‹„$ HĘÃH‹R@LŒ$ A¸éèûÿÿH‹,©H‹BH9BPu7H‹R H‹ ‡§LŒ$ A¸èŒH3Ò¸9”$ EÂHĘÃH‹R@H‹ P§LŒ$ H‹R A¸èQH3Ò¸9”$ EÂHĘÃH‹©¨Hƒ¸ˆtH‹€ˆ‹ÿ‹ÂHĘÃ3Ò‹ÂHĘÃH‹ w¨3ÒH‹H…ÀtH‹€˜ÿÂH…Àuò‹ÂHĘÃ3ÀHĘÃH‹?¨H‹BH9BPu-H‹R H‹ š¦LŒ$ A¸èŸG‹„$ HĘÃH‹R@LŒ$ A¸é¦úÿÿH‹ê§‹@hHĘÃ3Éÿ¿nHĘùÿ¬nHĘËJ¶H‹ ¦èmHĘË0¶H‹ ¦èHmHĘÃH‹y¥‹@ HĘÃH‹ o§H‹Iÿ•iHĘÃH‰œ$ÿÏmH‹ÈÿÎmL„$€HT$PHL$`H‰…µè :H‹ØÿŸmH‹pµH‹ÈÿïmH…Ût$ƒ|$PtH‹Ëè+q¸H‹œ$HĘÃ3ÀH‹œ$HĘà þÿÿ=ȇÂLÔ¨ÿÿA¶„`YA‹Œ€DYIÈÿá‹PzHĘËFzHĘË,zHĘË"zHĘË zHĘÃHL$PèîHL$`3ÒèTD‹\$dD+\$Ty‹L$`AÃ@B+L$PÿÉë‹L$`+L$PiÉè¸ÓMbA÷ëÁú‹ÂÑÁèÂHĘÃH ZÑèý/ƒÈÿHĘÃfœNöNPOÐOMP¼PQcQ¸Q RbR·R SaS¶S T`T8UjUµT˜U¢U÷UrV VV,VFV`VçW BWPW^WlWzWˆWçWÌÌÌÌÌÌÌ@SHƒìp3ÉÿgHƒ=â¡H‹Ø… H†OHsOH‹ËH‰Á¡3ÀH‰D$ H‰D$(H‰D$8H‰D$0H‰D$@H‰D$HH‰D$PH‰D$XH‰D$`H£`ÇD$ H‰\$8H‰D$(ÿ+jºH‹ËH‰D$@ÿÀi3ÛH‰D$HH‹R¡H‰\$PH‰\$XH‰D$`H9\$@u0H ÍNÿOfH…Àu º3Éë HÂNH‹ÈÿÉiH‰D$@HL$ ÿ±if…Àu H MNèx-3Éÿi¹‰±ÿiH‰±HÇõ ‰±‰ ±HƒÄp[ÃÌÌÌÌÌÌÌÌÌÌÌ@SHƒì ƒ=û H‹Ùu(H — 3ÒèPH‹‰ Ç× H‰HƒÄ [ÃH‹o H‰HƒÄ [ÃÌÌÌÌÌÌIcÀE3ÛL9ÂtL‹ÂL‹ÊHÿÀM‰AÿÃL‹ÂIƒÁM…ÒuêIcÃHÇÂD)ÃÌÌÌÌÌÌÌ̉ ‚u‰€u…Éx…Òxƒ = ‰ ; ‰9 Ã%) þÉ Ju‰Hu…É~…Ò~ƒ  ‰  ‰ Ã%ùŸýÉ uÃÌÌÌÌÌÌÌÌÌ@SAUAVAWHƒìXE3öE3ÿH‹ÚL‹éL95¹ŸtH øNHƒÄXA_A^A][é8+H‹ º/H‰¬$€H‰t$Pè{H…Àu H‹H‰WŸë HÿÀH‰KŸIcEH‹È‰FŸHÁáè]jH‰>ŸH…Àu H Êè•+3öH‰|$H95Ÿ~A3ÿ@H‹ èW*H‹ ŸH‰H‹ýžL94u H ÐÉèS+ÿÆHƒÇ;5מ|ÅH‹ Öžº/H‹ èUzH‹žH…Àu H‹H‰£žë HÿÀH‰—žD‹˜ž½D;ÅŽ#L‰d$@A¼fffffff„I‹H=µM¹ H‹ðó¦uHH rMèý)ÿÅIƒÄ;-Až| H (Mè£*H‹4žHSA¸M‹<I‹Íè¦ýÿÿé‡H=êLH‹ð¹ ó¦u9ÿÅIƒÄA;è|H ”LèW*H‹èM‹4HSA¸I‹ÍèZýÿÿé;H=^LH‹ð¹ó¦u?H LèV)€=ÿru H ÎKè*HSA¸I‹ÍƃèýÿÿééH=”KH‹ð¹ ó¦u?H QKè)€=St H |Kè¯)HSA¸I‹ÍÆ‹rè¶üÿÿé—H= KH‹ð¹ó¦uHSA¸I‹ÍÆþœè…üÿÿëiH=ÌJH‹ð¹ ó¦uHSA¸I‹ÍÆÑœèWüÿÿë;H=’JH‹ð¹ó¦uFH SJèV(HSA¸I‹ÍÇËœèüÿÿD‹ƒœÿÅIƒÄA;è} H‹yœéüýÿÿL‹d$@I‹ÏèOúÿÿH‹¬$€M…ö„HD$0LŒ$˜LD$4H”$I‹ÎÇ„$˜H‰D$ ÇD$0è¤d‹ø¨t‹Œ$˜‹5Qq…ÉOñ‰5Fqë‹5>q¨t‹D$0‹4q…ÀOЉ)që‹!q‹ÎèÆûÿÿ@öÇt>@öÇt 3ÉÿBd‹Œ$+Ù›ȉŒ$닌$‹åp…ÉIÁ‰Úp@öÇt6@öÇ t¹ÿûc‹L$4+™›Èë‹L$4‹¯p…ÉIщ¤p닜p‹ ’pèûÿÿHŒ$èhúÿÿH‹|$HH‹t$PHƒÄXA_A^A][ÃÌÌL‰I›éDûÿÿÌÌÌÌHìH‹J}H3ÄH‰„$HT$ 3Éÿrd…ÀtSHT$`A¸”3ÉÇ#›ÿYd‹„$ÈD‹œ$œ‰(›3ÀD‰›H‹Œ$H3Ìè›tHÄÃ3À‰ßš‰õš‰óšH‹Œ$H3ÌèotHÄÃÌÌÌÌÌÌÌHƒì(ƒ=Ñšt ‹šHƒÄ(ÃH‰\$ »K*‰±šÿ¯bHƒ=š‰youHƒ=wšu Hƒ=ušu3Û‰Cš‹ÃH‹\$ HƒÄ(ÃÌÌÌÌÌÌÌ@SHƒì ‹ÙèƒÿÿÿD›¨ýÿÿAƒû‡ÛH {ÿÿB‹”™pcHÑÿâ¸HƒÄ [Ã3ÀH9š•ÀHƒÄ [Ã3ÀH9ø™•ÀHƒÄ [Ã3ÀH9Þ™•ÀHƒÄ [ËÏnHƒÄ [˳™HƒÄ [Ë«™HƒÄ [Ë—™HƒÄ [Ë—™HƒÄ [ÃH‹Òš‹€ÌHƒÄ [ÃH‹¿š‹€ˆHƒÄ [Ëi™HƒÄ [Ëy™HƒÄ [Ëq™HƒÄ [ÃH hH‹Óè‰$ƒÈÿHƒÄ [Ã’b’bb¯bÁbÓbßbëb÷bcc’b5cYcAcMc"cÌÌÌÌÌÌÌÌÌÌÌÌH‰\$WHƒì ‹ÚH‹ùH…ÉtC…Ò~?H‹ šƒxtu*H‹HA¹E3À3ÒÿÆa…Àu ‹Ó3ÉÿÀaH‹Ù™‰˜ˆë9H‹Ê™Hƒ¸€tƒ¸ˆ~ƒxtu3Éÿ‘aH‹¢™Ç€ˆH‹‘™H‹\$0H‰¸€HƒÄ _ÃÌÌÌÌÌÌÌHƒìhH‹m™Hƒ¸€„‡HT$ 3ÉÇD$ 4ÇD$$ÿÿ2a…Àufò >G‹D$0‹L$@€ÿÿfnÀ‹D$,€ÿÿóæÀò^ÁòD,ÈfnÀ‹D$(€ÿÿóæÀò^ÁòD,ÀfnÀH‹ê˜óæÀò^Áò,Ðÿ€HƒÄhÃÌÌÌÌÌÌÌÌÌÌÌ@SHƒì H‹ÙH…ÉuH‹³˜H9ˆ8u3Ò뺹è2L‹˜I‰›HƒÄ [ÃÌÌÌÌÌÌÌÌÌÌÌ@SHƒì H‹ÙH…ÉuH‹c˜H9ˆu3Ò뺹è/2L‹@˜I‰›8HƒÄ [ÃÌÌÌÌÌÌÌÌÌÌÌH‹!˜‰ˆÌÃÌÌ@SHƒì H‹ÙH…ÉuH‹˜H9ˆ@u3Ò뺹èÏ1L‹à—I‰› HƒÄ [ÃÌÌÌÌÌÌÌÌÌÌÌ@SHƒì H‹ÙH…ÉuH‹³—H9ˆ u3Ò뺹è1L‹—I‰›@HƒÄ [ÃÌÌÌÌÌÌÌÌÌÌÌHƒì(ƒ=Y–…™H ˜EèßrH…Àt~¶HƒÄ(ÃÌÌÌÌÌÌÌÌ@SHƒì HcÚèÂ*…Ûx!;X}H‹@H[H ÐH…Ét ó,AHƒÄ [Ã3ÀHƒÄ [ÃÌÌÌÌÌ@SHƒì H‹Úè‚*¶ 3ÒL‹Ø„Ét?fD¶É…Éx(A;K}"I‹CH ILÈM…ÀtfnÂ[ÀóAX@ó,ЊKHÿÄÉuÇ‹ÂHƒÄ [ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ@SHƒì H‹›{H‹Ùº H‰ˆpH‹ …{H6H‰Šè±ÿÿH…Ûu"H‹f{Ç€´ÿÿÿÿH‹U{Ç€¸ÿÿÿÿHƒÄ [ÃÌÌÌÌÌÌÌÌÌÌÌÌÌH‹1{º H‰ˆxH‹ {HÏH‰¨‰é³°ÿÿÌÌÌH‹ÄH‰X D‰@‰HUVWATAUAVAWHì€)p¸)x¨¹ f(ñD)@˜ÿt@¹€ ÿ¹@¹¡ ÿ®@¹· ÿ£@¹´ ÿ˜@ÿŠ@WÿóD¢óÞž(ß(×A(Èÿ^@òY5¾žòZÆ(Ð(Èÿ>@óžž(Ï(Çÿú?ò5‚žE3íL‰¬$ÈHäQ„E3ÉL‹ãL5CT3ÒL-FSff„I|$ôI‹ô½Hc3ÉL@HcL@I L óA†I óB”„óA †óBŒ„Hƒùufn„”ZÀòYÆòZÀó„”I;Ý}róBŒ„ÐH…ÉufBn„ ÐZÀòYÆòZÀóB„ ÐóBT„PH…ÉufBnD PZÀòYÆòZÀóBD PëHƒùufnD”TZÀòYÆòZÀóD”THÿÁHƒùŒ-ÿÿÿHƒÇIƒÁ HƒÂHƒîHƒí…ÿÿÿIƒÄHƒú0ŒåþÿÿHYDMA(ÐH‰D$HÇD$@ÇD$8(ÏóDD$0ó|$(¹´ ÇD$ ÿ~>Lœ$DMA(Ð(ÏL‰\$HÇD$@ÇD$8 óDD$0ó|$(¹· ÇD$ ÿ6>D‹´$ÀA(Ð(ÏóDD$(E‹ÎA‹Îó|$ ÿ>D‹¼$ÐE3ÉE‹Æ3ÒA‹ÏD‰t$ ÿà=Lœ$A(Ð(ÏL‰\$HÇD$@ÇD$8 óDD$0ó|$(DM¹· ÇD$ ÿ¨=E3ÉE‹Æ3ÒA‹ÏD‰t$ ÿ‚=L‹¬$ÈIƒý¹H„$ÐDMA(ÐH‰D$HÇD$@ÇD$8 (ÏóDD$0ó|$(¹· ÇD$ ÿ8=E3ÉE‹Æ3ÒA‹ÏD‰t$ ÿ=L\$PDMA(Ð(ÏL‰\$HÇD$@ÇD$8 óDD$0ó|$(¹· ÇD$ ÿÝ<E3ÉE‹Æ3ÒA‹ÏD‰t$ ÿ·<IÿÅHQHƒÃ@H;ØL‰¬$ÈŒ¨üÿÿÿŠ<ÿ\<Lœ$€I‹[XA(sðA({àE(CÐI‹ãA_A^A]A\_^]ÃÌÌf(ÈA¸¹é|ûÿÿÌÌÌÌÌÌÌÌÌÌÌÌf(ÈA¸¹ é\ûÿÿÌÌÌÌÌÌÌÌÌÌÌÌH‰\$WHƒì H‹ÙHƒÉÿ3ÀH‹ûò®H÷Ñè°?H‹ÐH…Àu H‹\$0HƒÄ _ÃH‹ÈH+Ë€¶HÿÈDÿ„ÀuòH‹ÂH‹\$0HƒÄ _ÃÌÌÌÌH‰L$H‰T$L‰D$L‰L$ SWHƒì(H‹'tH˜øH|$HH…ÀHEØèÃ^HhøHH`L‹Ãè8]è«^H‹T$@HH`L‹Çèþ\è•^¹ HP`è'ZHƒÄ(_[ÃÌÌÌÌHƒì(ÿn;…Àt"f‹ÈèA>H 2øH‹ÐèZÿÿÿÿL;…ÀuàHƒÄ(ÃÌÌÌÌÌÌÌÌÌÌÌH‰L$H‰T$L‰D$L‰L$ SWHƒì(H‹gsHØ÷H|$HH…ÀHEØè^Hà÷HH`L‹Ãèx\èë]H‹T$@HH`L‹Çè>\èÕ]¹ HP`ègYH‹TsH…Àt¹ÿйèfKÌÌÌÌÌÌÌÌÌÌÌÌÌÌH‰L$H‰T$L‰D$L‰L$ SWHƒì(H‹ÇrH8÷H|$HH…ÀHEØèc]H`÷HH`L‹ÃèØ[èK]H‹T$@HH`L‹Çèž[è5]¹ HP`èÇXèF_HƒÄ(_[ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌHƒì(|üÿÿƒø wVL vÿÿA‹”€\ŠIÐÿâ‹ÓsHƒÄ(ËÌsHƒÄ(Ë THƒÄ(ËTHƒÄ(ËûSHƒÄ(ËôSHƒÄ(ËÑH ÂöèýÿÿƒÈÿHƒÄ(ÃŠŠŠ$Š/Š:ŠSŠSŠSŠSŠÌÌÌÌÌÌÌÌÌÌÌÌH ©öéþÿÿÌÌÌÌÂÌÌÌÌÌÌÌÌÌÌÌÌÌHƒìXL‹-s‰T$@‰L$8H‹ ŽqM‹@3À‰D$0‰D$(E3É3Ò‰D$ è9HƒÄXÃÌÌÌÌÌH‹ápHÚpH…Àt H;ÁtHÀH‹H…ÀuìóÃH‹€ÀH‰óÃÌÌÌÌÌÌÌÌÌÌÌH‹ÙrL‹ÁH…ÀtH;HtVH‹H@H…ÉtL;AtGD‹r3ÉE…Ò~7L‹‡rI‹Ã@Hƒ8tH‹L;BtL‹J@M…ÉtM;AtÿÁHƒÀA;Ê|×3ÀóÃHcÁI‹ÃH‰erÃÌÌÌÌH‹1rH…Àt‹ÿÀÃ3ÀÃÌÌÌÌÌÌÌÌÌÌÌÌ@SHƒì H‰ rÿ8H‹Øÿ 8H‹ õqH;YXuH;AHtH‹QXH‹IHÿã7H‹ Ôq€=*pt º€èi§ÿÿHƒÄ [ÃÌÌ̃ù|!; ½qH‹¬qHcÉH‹LÈøH…ÉtézÿÿÿH #õéŽûÿÿÌÌÌÌÌÌÌÌÌÌÌÌÌÌHƒì(‹~qL‹oq3À…Ò~I‹ÈfDHƒ9tlÿÀHƒÁ;Â|ðÿ‰PqM…ÀtHcÒI‹ÈHÁâèäBë ¹è˜:H‰!qL‹ØH…ÀuH JšèÍûÿÿL‹qHcqIÇDÃø‹øpÿÈHƒÄ(ÃÌÌÌÌÌÌÌÌÌ@SHì ºÇD$$‰T$ „Êt ÇD$(ººás HcÂÿÂÇD„ öÁtHcÂÿÂÇD„ HcÂÿÂÇD„ öÁ tHcÂÿÂÇD„ HcÂÿÂÇD„ 3ÛHcÂH‰¼$°‰\„ 9µPt:H=¬PH‹Ç‹‹Ä~H‹ ™nLD$ ‰D$$èH…ÀuHÿÃ<ŸHŸuÑ3ÀH‹¼$°HÄ [ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌH‹ÄHì¨ÇD$ ÇD$$D‹ÁAƒàÇ@€Ç@„ Ç@ˆÇ@Œ Ç@ºtÇ@” Ç@˜º öÁt HcÂÿÂÇD„ ºás HcÂÿÂÇD„ öÁtHcÂÿÂÇD„ HcÂÿÂÇD„ öÁ tHcÂÿÂÇD„ HcÂÿÂÇD„ öÁtmHcÂÿÂÇD„ HcÂÿÂÇD„ HcÂÿÂÇD„ HcÂÿÂÇD„ HcÂÿÂÇD„ HcÂÿÂÇD„ E…ÀtHcÂÿÂÇD„ HcÂÿÂÇD„ H‹ mHc‹9}LD$ ÇD„ è{HĨÃÌÌ̺á s3ÀÃöÁuéþÿÿé˜ýÿÿÌÌÌÌÌÌÌÌH‰\$H‰t$WHƒì ‹ÁI‹øH‹òÑè‹Ù÷Ѓà‰ÿ×H…Àu#öÃuƒË‹Ëÿ×ÇH…Àu „Ûyºó‹Ëÿ×H‹\$0H‹t$8HƒÄ _ÃÌÌÌÌHƒì(H òèøÿÿL‹ñmH ²ñA‹ÿÂHƒÄ(餸ÿÿÌÌÌÌH‰\$H‰t$WHƒì ‹ú‹ñÿ×3H‹ØÿÆ3H‹ ¯mH;YuH;AtH‹QH‹Iÿ3D‹ÏD‹Æ3Ò3Éÿ¥3L‹~mI‹K@H…ÉtH‹QH‹Iÿo3D‹ÏD‹Æ3Ò3Éÿw3ÿi3H‹ØÿX3H‹ AmH;YXuH;AHtH‹QXH‹IHÿ/3H‹\$0H‹t$8HƒÄ _ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌHƒì83ÀH9skt7D‹ ZM‰I‰‹SML‰D$(H‹ÑH‹ PkL!M‰D$ ÿçlHƒÄ8ÃÇI‰H‹Ñ‹ T@L!þÿÿHƒÄ8é8þÿÿÌÌÌÌÌÌÌÌD‰L$ D‰D$‰T$SUVWAUAVAWHì°H‹ñ3ÉÿÖ/LD$`HVH‹Èÿq3…Àu3Éè–ÈÿÿHƒ=~jt H ñè÷ÿÿè»úÿÿ¹0Lcøèž5H‹øH…Àu H W•èÚöÿÿ3ÒD‰?LJ¬€H‰W0‹Œ$½‰O`‹„$‰¯¤‰—̉GdH…ötH‹NëH‹ÊH„$LŒ$L„$H”$øH‰D$ èêH…öt L‹v»@냼$L‹5 z»Ï¸EØ3ÉÿÖ.3ÉËH‰L$XH‰D$P‹„$H‰L$HL‰t$@‰D$8‹„$L-H&‰D$0‹„$D‹Ë‰D$(‹„$ø‰D$ ÿ2H‹ÈH‰GÿŠ1HW(L„$ðH‰GH H‰H‹ ºhè½ H‰GH…Àu H }îèøôÿÿH‹G3ÉH‰·ˆH‰GXH…ötH‹†H‰‡˜H‰¾ëH‰˜ƒ¼$‰¯¼H‰O@H‰H‰øH‰H‰H‰H‰H‰ H‰(H‰0H‰8H‰@H‰HH‰PH‰XH‰`H‰hH‰pH‰xH‰€‰ˆ‰Op‰Ð‰°Ç‡´ÿÿÿÿLJ¸ÿÿÿÿÇGlÿÿÿÿÇGtÿÿÿÿÇGhdHûÿÿH‰‡èH:ûÿÿH‰‡ð¸E良ÈH‹æfH‰‡ÀH‰=ØfH‰Ox‰€H‹ßhH‹ÏJ‰<øè³öÿÿèNÑÿÿƒ¿ t¹ÿ.¹ÿÿ-ƒ¼$tè¬ÿÿH‹ÇHİA_A^A]_^][ÃÌÌÌÌÌÌÌÌÌÌÌH‰\$WHƒì0Hƒ=žfH‹ùt H :íèóÿÿ‹û;D‹ ð;D‹Éf‹¿f3ÉÇD$(‰D$ èûÿÿH‹×H‹HH‹Øÿ8/€=mft ǃÈ‹H‹\$@Ç€HÿÀHƒÄ0_ÃÌÌÌÌH‰yfédÿÿÿÌÌÌÌHƒì8‹D$`LcÑH‹ ÎgJ‹LÑøÇD$(‰D$ èûÿÿ‹ÿÀHƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌH‰\$H‰t$WHƒì H‹ùH‹‰H‹òH…ÉtH‹™˜H‹ÖèÐÿÿÿH‹ËH…ÛuéH‹ˆH…Ét¼€¾    {½á½€¾½¾€¾¿½¾€¾€¾€¾€¾€¾€¾€¾€¾>¾H¾ÌÌÌÌÌÌÌÌÌÌÌÌH‰\$H‰l$WATAUHƒì H‹ æLE3äM‹éAT$E3ÉE3ÀI‹ìÿ”Hcø…À~ H¿HÁãH‹ËèÕL‹Ã3ÒH‹ÈH‹èè5*…ÿ~>H‰t$@H‹õf„H‹ ‰LA\$L‹Î‹ÓA¸(ÿ;HƒÆ(;ßD‹ã|ØH‹t$@H‹\$HH‹ÅH‹l$PA‰}HƒÄ A]A\_ÃÌÌÌÌÌÌÌÌHƒìXH‹ 5L3ÀH‰D$ H‰D$(H‰D$0H‰D$8H‰D$@ÿìÿH‹ LLL$ A¸(‹ÐÿÂÿöD$$€u€|$(t3ÀHƒÄXöL$)H‰\$`H‰l$hH‰t$pH‰|$P¿‹ïÓåHcÅH…H‹ËèÐL‹Ã3ÒH‹ÈH‹ðè0)A»f‰nfD‰H‹ ‹KLN3ÒA¸ÿ‰ÿ€|$(…¶L$*D‹ÇD‹ÏAÓà¶L$,E3ÛAÓá¶L$.AÿÈÓçAÿÉÿÏ…í~dLV¶L$+A‹ÃIƒÂÓøA#ÀiÀÿ™A÷øAˆBû¶L$-A‹ÃÓøA#ÁiÀÿ™A÷ùAˆBü¶L$/A‹ÃÓøAÿÃAÆBþ#ÇiÀÿ™÷ÿD;ÝAˆBý| H‹ÎÿÝþH‹ÎH‹Øè¢H‹ ÃJE3ÀH‹Óÿ¯þH‹ °JÿjþH‹|$PH‹t$pH‹l$hH‹ÃH‹\$`HƒÄXÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌ@SHƒì A¶@M‹ÐH‹ÚA‹ˆD$@A¶@ˆD$AA¶@ LL$@A¸H‹ËÆD$CˆD$BÿUþHƒ=5Jt)H‹Ëÿ*þH‹ #JE3ÀH‹ÓÿþH‹ JÿÊýHƒÄ [ÃÌÌÌÌH‰\$WHƒì H‹ÊI‹øÿE3ÀH‹×H‹ÈH‹ØÿÐýH‹ËH‹\$0HƒÄ _Hÿ%„ýÌÌÌÌHƒì8‹D$`H‹ÊHT$ ‰D$$D‰L$ ÿ‰‹D$ L‹\$hH‹L$pA‰‹D$$‰¸HƒÄ8ÃH‰\$WHƒì0H‹ÚHT$ I‹ùH‹ËÿRE3ÛHT$XH‹ËD‰\$XD‰\$\ÿ/H‹L$`‹D$\D‹\$XH‹\$@D‰‰H‹L$h‹D$(‰‹D$,H‹L$p‰¸HƒÄ0_ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌH‰\$H‰t$WHƒì ÿH‹ÈH‹ðÿºH‹ÈH‹øÿîüH‹×H‹Î‹ØÿHH‹t$8‹ÃH‹\$0HƒÄ _ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌH‰\$H‰t$WHƒì ÿ³H‹ÈH‹ðÿ¯ºH‹ÈH‹øÿŽüH‹×H‹Î‹ØÿèH‹t$8‹ÃH‹\$0HƒÄ _ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌHƒì8‹D$xHT$ I‹È‰D$ ‹„$€‰D$$ÿ‹T$$‹L$ ÿeHƒÄ8ÃÌÌÌÌÌÌÌÌHƒìhHL$0E3ÉE3À3ÒÇD$ ÿñÿHƒÄhÃÌÌÌÌÌÌÌÌÌÌÌÌL‹Á3ÉA¶DI<+uIÿÀë <-uIÿÀAƒÉÿA¶<0|€<9¾ÀIÿÀ ‰LHÐAŠ<0}èL‰E…Éy÷Ù‹ÁÃÌÌÌÌÌÌÌÌÌÌÌ@SATAUAVHƒì(3ÛM‹áM‹èL‹òL‹ÙH…É„©¶„À„ž<=uIÿÃA¶H‰l$X<+t><-t:öÃtA‰EöÃtA‰,$öÃtH‹L$p‰1‹Ãë»3ÀHƒÄ(A^A]A\[Ãÿ%Èùÿ%êùÿ%Äùÿ%Æùÿ%Èùÿ%ÊùÌÌH(H 4H‰£Hà'H‰ H‰–HÓ'H‰  H‰‰HZ'H‰ƒH@3H‰…HV'H‰H&H‰yH&H‰sÃÌÌésÿÿÿÌÌÌH‰\$H‰t$WHƒì H‹ÙHƒùàw|¿H…ÉHEùH‹ -:H…Éu èë5¹è¹3¹ÿè# H‹ :L‹Ç3ÒÿÕúH‹ðH…Àu,9ÿ9tH‹Ëè57…Àt ë«èš6Ç è6Ç H‹Æëè7èz6Ç 3ÀH‹\$0H‹t$8HƒÄ _ÃÌÌH…Ét7SHƒì L‹ÁH‹ Œ93ÒÿLú…Àuè;6H‹ØÿBú‹Èèã5‰HƒÄ [ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌff„L‹ÙH+Ñ‚žIƒøraöÁt6öÁt Š IÿȈHÿÁöÁtf‹ Iƒèf‰HƒÁöÁt ‹ Iƒè‰HƒÁM‹ÈIÁéuQM‹ÈIÁétH‹ H‰HƒÁIÿÉuðIƒàM…ÀuI‹ÃÃ@Š ˆHÿÁIÿÈuóI‹ÃÃfffffff„fffffIù sBH‹ L‹T HƒÁ H‰AàL‰QèH‹D ðL‹T øIÿÉH‰AðL‰QøuÔIƒàéqÿÿÿfff„fHúrµ¸  D @HÁ€ÿÈuìHé¸@L‹ L‹T Là LÃQL‹L L‹T LÃILÃQL‹L L‹T (HƒÁ@LÃIàLÃQèL‹L ðL‹T øÿÈLÃIðLÃQøuªIèIøƒqÿÿÿð€ $é¹þÿÿffff„fffffffIÈIƒøraöÁt6öÁt HÿÉŠ IÿȈöÁtHƒéf‹ Iƒèf‰öÁt Hƒé‹ Iƒè‰M‹ÈIÁéuPM‹ÈIÁétHƒéH‹ IÿÉH‰uðIƒàM…ÀuI‹ÃÃHÿÉŠ IÿȈuóI‹ÃÃfffffff„fffffIù sBH‹D øL‹T ðHƒé H‰AL‰QH‹D L‹ IÿÉH‰AL‰uÕIƒàésÿÿÿffff„fHúðÿÿwµ¸ Hé€ D @ÿÈuìHÁ¸@L‹L øL‹T ðLÃIøLÃQðL‹L èL‹T àLÃIèLÃQàL‹L ØL‹T ÐHƒé@LÃILÃQL‹L L‹ ÿÈLÃILÃuªIèIøƒqÿÿÿð€ $éºþÿÿ@SHƒì H‹ÙÆAH…Ò…‚èá@H‰CH‹ÀH‰H‹ˆ¸H‰KH‹ ‘ H;Ñt‹€È…uèµ>H‰H‹ïH9CtH‹C‹ˆÈ… áu è–5H‰CH‹Cö€ÈuƒˆÈÆCëóoóH‹ÃHƒÄ [ÃÌÌÌH‹ÄH‰XH‰hH‰pH‰x ATAUAVHƒìPL‹òH‹ÑHHÈE‹áM‹èè"ÿÿÿM…ítM‰uM…öu*èã1Hƒd$ E3ÉE3À3Ò3ÉÇèLD€|$HééE…ät Aƒü|ËAƒü$ÅAŠ.L‹D$03ÿI^Aƒ¸ ~LD$0@¶ÍºèÊAL‹D$0ëI‹€@@¶Í·Hƒà…Àt@Š+HÿÃ뾋´$@€ý-uƒÎë@€ý+u@Š+HÿÃE…äˆSAƒü„IAƒü$?E…äu(@€ý0tA¼ ë8€;xt €;XtA¼ë&A¼ë Aƒüu@€ý0u€;xt€;Xu@ŠkHƒÃM‹@3ÒƒÈÿA÷ôD‹È@¶ÍE·JAöÀt @¾Íƒé0ëA÷Àt,EŸ@¾Í<wƒé ƒÁÉA;ÌsƒÎA;ùr"u;ÊvƒÎM…íuHÿË@öÆuM…íIEÞ3ÿëYA¯üù@Š+HÿÃ둽ÿÿÿ@öÆu@öÆu:‹Æƒàtÿ€w…Àu';ýv#è)0Ç"@öÆtƒÏÿë @ŠÆ$öØÿ÷ßýM…ítI‰]@öÆt÷߀|$Ht H‹L$@ƒ¡Èý‹ÇëM…ítM‰u@8|$Ht H‹D$@ƒ Èý3ÀL\$PI‹[ I‹k(I‹s0I‹{8I‹ãA^A]A\ÃÌÌHƒì83ÀE‹ÈL‹Â‰D$ H‹Ñ93u H Šë3ÉèQýÿÿHƒÄ8ÃHƒì8H‹‰H3ÄH‰D$ ŠE3ÛL‹ÒL‰$L‰\$L‰\$L‰\$L‹Éë!D¶À¶ÀºƒàIÁèŠÈÒâBIÿÂAŠA:ÃuÚëA¶ÈA¶ÀºƒáHÁèÓâ„uIÿÁEŠE:ÃuÚ3ÀH‹L$ H3Ìè¼HƒÄ8ÃI‹ÁëéÌÌH‰\$H‰t$WHƒì H‹ÚH‹ùH…Éu H‹Êèž÷ÿÿëjH…ÒuèJøÿÿë\HƒúàwCH‹ Û1¸H…ÛHDØL‹Ç3ÒL‹ËÿòH‹ðH…Àuo9Ã1tPH‹Ëèù.…Àt+Hƒûàv½H‹Ëèç.èR.Ç 3ÀH‹\$0H‹t$8HƒÄ _Ãè5.H‹Øÿ<ò‹ÈèÝ-‰ëÕè.H‹Øÿ#ò‹ÈèÄ-‰H‹Æë»ÌH‰\$WHƒìPH‹H3ÄH‰D$@H‹úH‹Ùè<E3ÒL‹ØL‰T$ L‰T$(L‰T$0L‰T$8D¶ºHÿÇA‹ÉM‹ÁƒáIÁèÒâBT E:ÊuÛI;ÚuH‹X ëE:Ât!HÿÃD¶ºA‹ÈI‹ÀƒáHÁèÓâ„T uÚL‹ËëD¶ºA‹ÈIÁèƒáÓâB„T u HÿÃD8uÜëDˆHÿÃL;ËI‰[ MDÊI‹ÁH‹L$@H3ÌèüH‹\$pHƒÄP_ÃÌ@SHƒì ‹Ùè,‹Ëèä)H‹  è¸9¹ÿHƒÄ [HÿàÌÌÌ@SHƒì ‹ÙH ù²ÿËðH…ÀtHײH‹Èÿ¦ðH…Àt‹ËÿÐHƒÄ [ÃÌÌÌ@SHƒì ‹Ùè·ÿÿÿ‹ËÿwðÌÌ̹é¦AÌ̹éš@ÌÌH;Ês-H‰\$WHƒì H‹úH‹ÙH‹H…ÀtÿÐHƒÃH;ßríH‹\$0HƒÄ _ÃÌH‰\$WHƒì 3ÀH‹úH‹ÙH;Ês…ÀuH‹ H…ÉtÿÑHƒÃH;ßréH‹\$0HƒÄ _ÃÌÌÌH‰\$WHƒì Hƒ=ò±‹ÙtH ç±èBB…Àt‹ËÿÖ±è(HzóH Sóè~ÿÿÿ…ÀuZH SAèúH'óH=(óëH‹H…ÀtÿÐHƒÃH;ßríHƒ=óKtH êKèÕA…ÀtE3À3ÉAPÿÒK3ÀH‹\$0HƒÄ _ÃÌH‰\$H‰t$D‰D$WATAUAVAWHƒì@E‹à‹ÚD‹ù¹èJ@ƒ=&+„üÇ+Dˆ%+…Û…ÏH‹ XKè»7H‹ðH‰D$0H…À„ŸH‹ 3Kèž7H‹øH‰D$ L‹öH‰t$(L‹èH‰D$8HƒïH‰|$ H;þr èg7H9uëæH;þr\H‹è_7H‹ØèK7H‰ÿÓH‹ ãJèF7H‹ØH‹ ÌJè77L;óuL;èt L‹óH‰\$(H‹óH‰\$0L‹èH‰D$8H‹øH‰D$ ë…H òH íñè¼ýÿÿH òH úñè©ýÿÿE…ät ¹è1>E…äu&Ç*AL$è>A‹Ïè ýÿÿA‹ÏÿËíÌH‹\$pH‹t$xHƒÄ@A_A^A]A\_ÃÌÌE3À3ÒéjþÿÿÌÌE3ÀAPé\þÿÿ3Ò3ÉDBéOþÿÿÌÌÌ@SHƒì èQ6H‹ÈH‹Øè*H‹Ëè®FH‹ËèÖ:H‹Ëè–FH‹Ëè†FH‹ËèÞCH‹ËèâAH‹Ëè¾AH ÿÿÿèú5H‰_ HƒÄ [ÃÌE3ÛL‹ÒL‹ÁD8uH‹ÁÊA:Ãt;L‹ÉL+ÊI‹ÒA:ÃtD8t+A¾ ¾;Èu HÿÂE8uæD8tIÿÀIÿÁAŠA:ÃuË3ÀÃI‹ÀÃÌë:Ât HÿÁŠ„Àuó:ÂuH‹ÁÃ3ÀÃÌÌ@SHƒì E‹H‹ÚL‹ÉAƒãøAöL‹ÑtA‹@McP÷ØLÑHcÈL#ÑIcÃJ‹H‹C‹HHKöAt ¶AƒàðH˜LÈL3ÊI‹ÉHƒÄ [é=ÌHƒì(M‹A8H‹ÊI‹Ñè‰ÿÿÿ¸HƒÄ(ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌff„H; AuHÁÁf÷ÁÿÿuóÃHÁÉémEÌ@SHƒì ºJèGH‹ÈH‹Øè–4H‰;HH‰,HH…ÛuCëHƒ#3ÀHƒÄ [ÃÌÌH‰\$H‰t$H‰|$ATAUAVHƒì L‹ñèûÿÿH‹ óGèV4L‹àH‹ ÜGèG4H‹ØI;Ä‚˜H‹øI+üLoIƒý‚„I‹ÌèHH‹ðI;ÅsTºH;ÂHBÐHÐH;ÐrI‹ÌèÛF3ÛH;Ãuë3ÛHV H;ÖrFI‹Ìè¿FH;Ãt9HÁÿHøH‹Èè¶3H‰[GI‹Îè§3H‰HKè›3H‰8GI‹Þë3ÛèTúÿÿH‹ÃH‹\$@H‹t$HH‹|$PHƒÄ A^A]A\ÃÌÌÌHƒì(èïþÿÿH÷ØÀ÷ØÿÈHƒÄ(ÃÌL‹ÉE3ÀŠHÿÁA:ÀuöHÿÉI;Ét8uô8LDÁI‹ÀÃÌÌÌÌÌÌÌÌÌÌÌÌff„M…ÀtuH+ÑL‹ÊI»öÁtŠBŠ HÿÁ:ÂuWIÿÈtN„ÀtJH÷ÁuáJ fâÿfúøwÑH‹J‹ H;ÂuÅHƒÁIƒèIºÿþþþþþþ~vHƒðÿLÒI3ÂI…ÃtÁë H3ÀÃHÀHƒØÿÄÒt'„öt#HÁê„Òt„ötHÁê„Òt„öt Áê„Òt„öuˆH3ÀÃÌÌÌH‰\$H‰t$WHƒì ƒ=æEH‹[%H‹ñtmH…ÛuH9Z%t_èKH…ÀuVH‹8%H…ÛtJH…ötEH‹Îè†GH‹øH‹ H…Ét2èvGH;ÇvH‹ €<9=uL‹ÇH‹Öè=G…ÀtHƒÃëÐH‹HD8ë3ÀH‹\$0H‹t$8HƒÄ _ÃÌÌÌ@SHƒì0H‹Ù3ÀH…É•À…Àu$èò$ÇHƒd$ E3ÉE3À3Ò3Éè[73Àë`ºÿèI3ÉH=ÿ’Á…Éu$èµ$ÇHƒd$ E3ÉE3À3Ò3Éè73Àë#¹è¨9H‹ËèÓþÿÿH‹Ø¹è’8H‹ÃHƒÄ0[ÃÌf. „«f(èf(àòYèf(Õf(ÝòY¨ªòYØò\T«òYÕòX€ªòYÕò\4«òYÕòXXªzuòYÕò\«òYÓòXÐf(ÂÃòYÓòY'ªf(ÁòY£Gò\ÂòYÅò\Áò\Ãò\àf(ÄÃÌÌHƒì(ò-¤Jf(Ø)t$)<$òYØf(øò'ªf(ñf(Íf(ÓòYêòYþ(t$f(ãò\ÂòY%2GòYÃò\Ìò\’ªò\éòYÃòXÊ©ò\ìòYÃò\jªò\ï(<$òYÃòYÛòX’©òYÃòXÅòXÁHƒÄ(ÃÌ@WHƒìpH¸ÿÿÿÿÿÿÿ)t$`ò„$ˆH‹Œ$ˆ)|$Pf(ðH‹ÑH#ÐH¸-DTû!é?H;ÐwcH¸ ?H;ÐsFH¸@>H;Ðs!H…Ò„ º3ÉD‹ÂèòFf(ÆéˆòYÆòYÆòY©ò\ðëáfWÉè þÿÿédI¸ðH‹ÁI#ÀI;ÀupfWÀÇD$@H¸ÿÿÿÿÿÿòD$8A¹òt$0ÇD$(!AQH…Èt#I¸L Áƒd$ H b©èõLéóÇD$ I¸øÿëÛò=,©3ÿH;Ñ@•Ç…ÿtfW÷ò ©f/Ɔ4L‹ÂH¸^8U)zj@IÁè4H;Ðw3ÉH¸Ò!3|Ù@H;ЗÁÿÁë>H¸»²Ì¾:F@H;Ðw3ÉH¸u§»é»ý@H;ЗÁƒÁëf(ÆòYû§òXEò,Èfnáóæäf(Äf(ÜòYß§òYß§ò\ðò´$ˆH‹„$ˆHÁè4%ÿL+ÀIƒøvnfWíf(Öf(ÌòY ¬§f(Åf(Üò\ÁòY §òXðò\Öò\Ñò\ÚIƒø0v0f(Îf(Äf(ÜòY~§òY~§ò\èòXõò\Îò\Èò\Ùf(ƃáò\Ãò\ðò\óë:LŒ$€L„$˜H”$f(Æè4E‹Œ$€ò„$ò´$˜f(Î…ÿt%ƒétƒé„Âýÿÿƒùt&èÇûÿÿfWÇë è`üÿÿëóƒétƒétäƒùtêé—ýÿÿèEüÿÿ(t$`(|$PHƒÄp_ÃÌHƒìxH¸ÿÿÿÿÿÿÿò„$ˆ)t$`L‹„$ˆ)|$Pf(ØI‹ÐH#ÐH¸-DTû!é?H;ÐwlH¸ ?H;ÐsOH¸@>H;Ðs#3ÉH;Ñu òuFé~ºD‹ÂèÏCëäòYFòYÛòY%Cò\ÃéRfWÉè‹ûÿÿéDH¹ðI‹ÀH#ÁH;ÁupfWÀÇD$@H¸ÿÿÿÿÿÿòD$8ºò\$0ÇD$(!DJïL…Àt$H¸L À3ɉL$ H C¦èÒIéÓÇD$ I¸øÿëÛò5 ¦I;ÐtfWÞòð¥f/Æ4L‹ÂH¸^8U)zj@IÁè4H;Ðw3ÉH¸Ò!3|Ù@H;ЗÁÿÁë>H¸»²Ì¾:F@H;Ðw3ÉH¸u§»é»ý@H;ЗÁƒÁëf(ÃòYà¤òXBò,Èfnéóæíf(Åf(åòYĤòY%Ĥò\Øòœ$ˆH‹„$ˆHÁè4%ÿL+ÀIƒøvnfWÿf(Óf(ÍòY ‘¤f(Çf(åò\ÁòY%…¤òXØò\Óò\Ñò\âIƒø0v0f(Ëf(Åf(åòYc¤òY%c¤ò\øòXßò\Ëò\Èò\áf(Ãáò\Äò\Øò\Üë:LŒ$€L„$˜H”$f(ÃèB‹Œ$€ò„$òœ$˜ƒéf(Ëtƒétƒù…Éýÿÿè°øÿÿëèMùÿÿëè¢øÿÿfWÆ(t$`(|$PHƒÄxÃÌÌÌòD$HƒìXHºðòD$hI¸€H‹L$hH‹ÁH#ÂH;Â…ŸH¸ÿÿÿÿÿÿH…ÈtNfWÀòL$`A¹D‰L$@I¸L ÁòD$8òL$0ÇD$(!ƒd$ H Ï£ºèUGëpI…ÈtQfWÀòL$`A¹D‰L$@I¸øÿòD$8òL$0ÇD$(!ÇD$ ë«I…ÈtH¸ÿÿÿÿÿÿÿH…Èë­òD$`fWÉòQÈòL$pòD$pHƒÄXÃÌÌH‰\$H‰t$H‰T$WHƒì0H‹Ú‹ñ3ÿ3ÀH…Ò•À…Àu'èÀÇH!|$ E3ÉE3À3Ò3Éè*.ƒÈÿéØH‹ÊèöC@…–H‹Ëè¯Lƒøÿt*ƒøþt%HcÐH‹ÊHÁùL)ƒâHkÒXIÈH ¾ëH µH‹ÑLk)öB8u%ƒøÿtƒøþtHcÈH‹ÁHÁøƒáHkÉXI ÀöA8€t#èÇHƒd$ E3ÉE3À3Ò3Éè|-ƒÏÿ…ÿu!ƒCÿxH‹@ˆ0@¶þHÿë H‹Ó‹ÎèG‹øH‹Ëèà‹ÇH‹\$@H‹t$PHƒÄ0_ÃÌÌH‹ÄH‰XH‰pH‰x H‰PATAUAVHƒì0M‹éM‹àH‹úL‹ñ3Û‹ó‹ÃH;Ó•À;Ãu'èvÇH‰\$ E3ÉE3À3Ò3Éèà,ƒÈÿé‹ÃL;ÕÀ;Ãu'èCÇH‰\$ E3ÉE3À3Ò3Éè­,ƒÈÿéÞH‹Êè¡öG@…•H‹Ïè2Kƒøÿt*ƒøþt%HcÐH‹ÊHÁùL(ƒâHkÒXIÈH AëH 8H‹ÑLî'öB8u%ƒøÿtƒøþtHcÈH‹ÁHÁøƒáHkÉXI ÀöA8€t"è–ÇH‰\$ E3ÉE3À3Ò3Éè,ƒÎÿ;óu(H‹ÏèÑJ‹ØL‹L$pM‹ÅI‹ÔH‹ÏAÿÖ‹ðH‹×‹Ëè†KH‹Ïè]‹ÆH‹\$PH‹t$`H‹|$hHƒÄ0A^A]A\ÃÌHƒì8L‰D$ L‹ÂH‹ÑH žLE3ÉèVþÿÿHƒÄ8ÃÌH‹ÄH‰PH‰HL‰@L‰H SVWATHƒì8H‹ù3Û‹ó‹ÃH;Ë•À;Ãu'èÐÇH‰\$ E3ÉE3À3Ò3Éè:+ƒÈÿé‹ÃH;Ó•À;Ãu'èÇH‰\$ E3ÉE3À3Ò3Éè+ƒÈÿéâLd$pèùöG@…•H‹ÏèŠIƒøÿt*ƒøþt%HcÐH‹ÊHÁùLk&ƒâHkÒXIÈH ™ ëH H‹ÑLF&öB8u%ƒøÿtƒøþtHcÈH‹ÁHÁøƒáHkÉXI ÀöA8€t"èîÇH‰\$ E3ÉE3À3Ò3ÉèX*ƒÎÿ;óu*H‹Ïè)I‹ØM‹ÌE3ÀH‹T$hH‹ÏèÙHƒÄ(ÃÌHì¨öRùt ¹ è.èÝ/H…Àt ¹èÚ/ö+ùt_HŒ$ÐÿÛØHL$03ÒA¸˜èiH‹„$¨3ÉH‰D$@HD$0ÇD$0@H‰D$ H„$ÐH‰D$(ÿØHL$ ÿšØ¹èëÿÿÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌff„H‹ÁIƒørS¶ÒI¹I¯ÑIƒø@rH÷ÙƒátL+ÁH‰HÈM‹ÈIƒà?IÁéu9M‹ÈIƒàIÁétfffH‰HƒÁIÿÉuôM…Àt ˆHÿÁIÿÈuöÃ@fffffIùs0H‰H‰QH‰QHƒÁ@H‰QØH‰QàIÿÉH‰QèH‰QðH‰QøuØë”fDHÃHÃQHÃQHƒÁ@HÃQØHÃQàIÿÉHÃQèHÃQðHÃQøuÐð€ $éTÿÿÿÌÌ@SHƒì I‹Øƒúu‹Êèó…Àu3Àéè[#…Àuè&ëéèç(ÿ!×H‰ª#èUXH‰~è9A…Àyè( ëËèAW…Àxè8T…Àx3Éè9çÿÿ…Àu ÿCé«èñCëÊ…Òu9‹-…ÀŽzÿÿÿÿȉ9 uèPéÿÿH…Ûuxè¾CèÁèŒëgƒúuVèp„ºÈ¹èõ1H‹ØH…À„*ÿÿÿ‹ ßH‹ÐÿfÖH‹Ë…Àt3Òè ÿZÖHƒKÿ‰ëè<Üÿÿéôþÿÿƒúu3Éè"¸HƒÄ [ÃH‰\$H‰t$H‰|$ATHƒì0I‹ð‹ÚL‹á¸…Òu9\u3Àé̓útƒúu0L‹ ¢™M…ÉtAÿщD$ …ÀtL‹Æ‹ÓI‹Ìèaþÿÿ‰D$ …À„“L‹Æ‹ÓI‹Ìè˜X‹ø‰D$ ƒûu5…Àu1L‹Æ3ÒI‹Ìè|XL‹Æ3ÒI‹ÌèþÿÿL‹<™M…Ût L‹Æ3ÒI‹ÌAÿÓ…Ûtƒûu7L‹Æ‹ÓI‹Ìèòýÿÿ÷ØÉ#Ï‹ù‰L$ tH‹™H…ÀtL‹Æ‹ÓI‹ÌÿЋø‰D$ ‹Çë3ÀH‹\$@H‹t$HH‹|$PHƒÄ0A\ÃH‰\$H‰t$WHƒì I‹ø‹ÚH‹ñƒúuèãWL‹Ç‹ÓH‹ÎH‹\$0H‹t$8HƒÄ _é«þÿÿÌÌÌ@SHƒì@H‹ÙHL$ èAÞÿÿ¾ èMZƒøetHÿö èMX…Àuñ¾ è1ZƒøxuHƒÃH‹D$ ŠH‹ˆ(H‹Šˆ HÿʈŠÐŠHÿÄÀuñ8D$8t H‹D$0ƒ ÈýHƒÄ@[ÃÌ@SHƒì@H‹ÙHL$ èÁÝÿÿDŠH‹L$ E„ÛtH‹(H‹ŠD:Øt HÿÃDŠE„ÛuðŠHÿÄÀt?ë $HÿÀHƒø LÓæH…ÀtLP‹Ëè;ÿÿÿA‰HƒÄ [ÃÌÌH‰ ¹Ã@SHƒì H‹ÙH‹ ¨è H…ÀtH‹ËÿÐ…Àt¸ë3ÀHƒÄ [ÃÌÌH‰\$H‰l$H‰t$WHƒì HYH‹é¾H‹ËL‹Æ3ÒègêÿÿE3ÛH}AKA·ÃD‰]D‰]D‰] fó«H=2æH+ýŠˆHÿÃHƒîuòHºŠ9ˆHÿÁHƒêuòH‹\$0H‹l$8H‹t$@HƒÄ _ÃÌÌH‰\$H‰t$WHì€H‹¯ÞH3ÄH‰„$pH‹ñ‹IHT$PÿÛÁ»…À„=3ÀHT$pˆÿÀHÿÂ;ÃrõŠD$VÆD$p H|$Vë)¶WD¶ÀD;ÂwA+ÐI‹ÀJLpDB² èyéÿÿHƒÇŠ„ÀuÓ‹F ƒd$8LD$p‰D$0‹FD‹Ë‰D$(H„$pº3ÉH‰D$ è¿Wƒd$@‹F‹V ‰D$8H„$p‰\$0H‰D$(LL$pD‹Ã3ɉ\$ èˆTƒd$@‹F‹V ‰D$8H„$p‰\$0H‰D$(LL$pA¸3ɉ\$ èRTLœ$pHN3ÒAöt € Š„pëAöt€ Š„pˆëÆHÿÁHÿÂIƒÃHƒëu¿ë?3ÒHNDBŸA@ ƒøw€ B ë Aƒøw€ BàˆëÆÿÂHÿÁ;ÓrÇH‹Œ$pH3Ìè²ÔÿÿLœ$€I‹[I‹s I‹ã_ÃÌH‰\$WHƒì èÝ H‹ø‹ˆÈ… &étHƒ¸Àt H‹˜¸ën¹ è£H‹Ÿ¸H‰\$0H;ëçtDH…ÛtðƒÿuH§ãH‹L$0H;ÈtèðÅÿÿH‹ÁçH‰‡¸H‹³çH‰D$0ðƒH‹\$0¹ è?H…ÛuK èþÎÿÿH‹ÃH‹\$8HƒÄ _Ã@SHƒì@‹ÙHL$ 3Òè Éÿÿƒ%Eÿƒûþu%Ç6ÿÿ0¿€|$8tSH‹L$0ƒ¡ÈýëEƒûýuÇ ÿÿ¿ëÔƒûüuH‹D$ Çðþ‹@뻀|$8t H‹D$0ƒ Èý‹ÃHƒÄ@[ÃH‰\$UVWATAUHƒì@H‹ÛH3ÄH‰D$8H‹òèIÿÿÿ3Û‹ø;Ãu H‹ÎèüÿÿéL-½æ‹ËH‹ëI‹ÅA¼98„'AÌIìHƒÀ0ƒùréÿèý„ÿéý„ø·Ïÿ?¾;ÄçHT$ ‹ÏÿB¾;ÄÆHN3ÒA¸èæÿÿ‰~‰^ D9d$ †HD$&8\$&t-8Xt(¶8¶H;ùw+ÏHT7AÌ€ IÔI+ÌuõHƒÀ8uÓHF¹þ€IÄI+Ìuõ‹Né¤t(ƒétƒé tA;Ìt‹Ãë¸ë¸ë ¸ë¸‰F D‰fë‰^H~·Ã¹fó«éà9^ý…·þÿÿƒÈÿéÖHN3ÒA¸è?åÿÿHlmL[åHíAºMDíI‹ÈA8t18Yt,¶¶A;ÐwLL2AŠAÔA¶AMÌ;ÐvìHƒÁ8uÏIƒÀMÜM+Ôu»‰~ï¤D‰ft$ƒïtƒï t A;üu»ë»ë »ë»‰^ HVI|í¹·HƒÇf‰HƒÂI+ÌuíH‹Îè|úÿÿ3ÀH‹L$8H3ÌèíÐÿÿH‹œ$€HƒÄ@A]A\_^]ÃÌH‹ÄH‰XH‰pH‰xL‰` AUHƒì0‹ùAƒÍÿèH‹ðèüÿÿH‹ž¸‹Ïè¾üÿÿD‹à;C„¹ è`H‹Ø3ÿH;Ç„|H‹–¸H‹ÈA¸ è…Âÿÿ‰;H‹ÓA‹ÌèýÿÿD‹è;Ç…$H‹Ž¸ðƒÿuH‹Ž¸L%¢ßI;ÌtèðÁÿÿëL%ßH‰ž¸ðƒö†È… ö¨ä…ü¹ è4 ‹C‰zû‹C‰uû‹C ‰pû‹×‰T$ Lwùþÿƒú}HcÊ·DKfA‰„HØÿ‰T$ ëâ‹×‰T$ ú}HcÊŠDBˆ„àçÿ‰T$ ëá‰|$ ÿ}HcÏŠ„Bˆ„ðèÿlj|$ ëÞH‹÷âðƒÿuH‹ êâI;ÌtèÁÿÿH‰Ùâðƒ¹ èo ë+ƒøÿu&L%ÞI;ÜtH‹ËèØÀÿÿè3÷ÿÿÇë3ÿD‹ïA‹ÅH‹\$@H‹t$HH‹|$PL‹d$XHƒÄ0A]ÃHƒì(ƒ=]u¹ýÿÿÿèñýÿÿÇG3ÀHƒÄ(ÃH‰\$H‰t$WHƒì H‹(H‹ÙH…ÀtyH #íH;ÁtmH‹ƒH…Àtaƒ8u\H‹‹ H…Étƒ9uè/ÀÿÿH‹‹(èSH‹‹H…Étƒ9uè ÀÿÿH‹‹(èµRH‹‹èõ¿ÿÿH‹‹(èé¿ÿÿH‹ƒ0H…ÀtGƒ8uBH‹‹8HéþèÅ¿ÿÿH‹‹H¿€H+Ï豿ÿÿH‹‹PH+Ï袿ÿÿH‹‹0è–¿ÿÿH‹‹XHÐêH;Ètƒ¹`uè=PH‹‹Xèi¿ÿÿH{X¾HAâH9GðtH‹H…Ét ƒ9uèA¿ÿÿHƒøtH‹OH…Ét ƒ9uè'¿ÿÿHƒÇ Hƒîu½H‹ËH‹\$0H‹t$8HƒÄ _é¿ÿÿÌÌðƒH‹H…ÀtðƒH‹ H…ÀtðƒH‹H…ÀtðƒH‹0H…ÀtðƒHAXA¸H—áH9Pðt H‹H…ÒtðƒHƒxøt H‹PH…ÒtðƒHƒÀ IƒèuÉH‹Xðƒ€`ÃÌÌÌH…É„˜AƒÉÿðD H‹H…ÀtðDH‹ H…ÀtðDH‹H…ÀtðDH‹0H…ÀtðDHAXA¸HòàH9Pðt H‹H…ÒtðD Hƒxøt H‹PH…ÒtðD HƒÀ IƒèuÉH‹XðDˆ`H‹ÁÃÌÌÌ@SHƒì H‹ÚH…ÒtAH…Ét†+H^ ‹CøL;à‚§‹CüL;àƒ›ƒ{„‘ƒ;t‹HL$0H‹ÕIÇÿÐ…Àˆ„~sA}csmàu(Hƒ=ãøtH Úøèÿÿÿ…ÀtºI‹ÍÿÃø‹KA¸H‹ÕIÏè/HI‹F@‹SMcMH‰D$(I‹F(I×M‹ÅH‹ÍH‰D$ ÿO«è2HÿÇHƒÃ;>sjé>ÿÿÿ3ÀëfI‹y 3íI+ÿ9.vTH^‹KôL;ár>‹CøL;às6H;ùr H;øsAöE u/ƒ;t ‹H;øt#ëH‹T$xIDZI‰D‹CüMÇAÿÐÿÅHƒÃ;.r°¸L\$@I‹[0I‹k@I‹sHI‹ãA_A^A]A\_ÃÌÌÌHƒì(èßõÿÿH‹ˆÐH…ÉtÿÑëè:ÒÿÿHƒÄ(ÃÌHƒì(H Ñÿÿÿè8ôÿÿH‰]íHƒÄ(ÃÂÌH‰\$H‰l$H‰t$WHƒì H‹ò‹ùèõÿÿE3ÛH‹ØI;ÄŠH‹ˆ Lcµ×H‹Ñ9:tI‹ÀHƒÂHÁàHÁH;ÐréI‹ÀHÁàHÁH;Ðs9:tI‹ÓI;Ó„CL‹BM;Ä6Iƒøu L‰ZA@üé%IƒøuƒÈÿéH‹«¨H‰³¨‹Jƒù…èLc!׋ ×AÊM‹ÊD;Ñ}*IÁáH‹ƒ AÿÂIƒÁM‰\ø‹ óÖ‹ñÖÈD;Ñ|Ú:ŽÀ‹»°u ǃ°ƒëv:Àu ǃ°ëb:‘Àu ǃ°„ëN:“Àu ǃ°…ë::Àu ǃ°‚ë&:Àu ǃ°†ë:’Àu ǃ°Š‹“°¹AÿЉ»°ëL‰ZAÿÐH‰«¨éãþÿÿ3ÀH‹\$0H‹l$8H‹t$@HƒÄ _ÃÌÌHƒì(¸csmà;Èu ‹Èèþÿÿë3ÀHƒÄ(ÃÌÌÌH‰ eëH‰ fëH‰ gëH‰ hëÃÌÌÌH‹ Uëé òÿÿH‰\$H‰t$WATAUAVAWHƒì@‹Ù3ÿ‰|$p3ö‹Ñƒê„ ƒê„¢ƒê„€ƒê„ƒê„‡ƒêtMƒêt,ƒút_èüäÿÿÇH!t$ E3ÉE3À3Ò3Éèf÷ÿÿƒÈÿéÑL%»êH‹ ´ê¿‰|$péªL%¯êH‹ ¨ê¿‰|$péŽL%‹êH‹ „꿉|$pëuè(òÿÿH‹ðH…ÀuƒÈÿékH‹ H‹ÊLc×Ô9YtHƒÁI‹ÀHÁàHÂH;ÈrèI‹ÀHÁàHÂH;Ès9Yt3ÉLaM‹,$ëL%êH‹ ý鿉|$pèÏðÿÿL‹èIƒýu3ÀéöM…íu AMè-ºÿÿÌ…ÿt3Éèùÿÿƒûtƒû tƒût L‹|$8D‹t$pë1L‹¾¨L‰|$8Hƒ¦¨ƒûuD‹¶°Ç†°ŒëD‹t$pƒûu9‹ õӋщL$0‹íÓÈ;Ñ}*HcÊHÉH‹† HƒdÈÿ‰T$0‹ ÄÓëÓè ðÿÿI‰$…ÿt3Éèb÷ÿÿ¿;ßu ‹–°‹ÏAÿÕë‹ËAÿÕ;ßt ƒû tƒûuL‰¾¨;ßuD‰¶°3ÀL\$@I‹[8I‹s@I‹ãA_A^A]A\_ÃÌÌÌH‰ íèÃH‰ õèÃH‰ õèÃHƒì8ÿ’¥D‹Ø‰D$ ë=Àu ¹ÿ×¥E3ÛD‰\$ A‹ÃHƒÄ8ÃÌÌÌH‰L$HìˆH Qéÿ;¦L‹<êL‰\$XE3ÀHT$`H‹L$XèW”H‰D$PHƒ|$PtAHÇD$8HD$HH‰D$0HD$@H‰D$(HüèH‰D$ L‹L$PL‹D$XH‹T$`3Éè”ë"H‹„$ˆH‰ÈéH„$ˆHƒÀH‰UéH‹®éH‰èH‹„$H‰ éÇöç ÀÇðçH‹ÝÁH‰D$hH‹ÙÁH‰D$pÿö¥‰`è¹èö@3ÉÿN¥H pÿI¥ƒ=:èu ¹èÎ@ÿx¤º ÀH‹Èÿr¤HĈÃÌÌH‰\$H‰l$H‰t$WHƒì 3ÿH‹ñƒÍÿH‹ÎèªÿÿH‹ØH…Àu(9¶ìv ‹Ïÿ¥DŸèD;žìA‹ûGý;ýuÈH‹l$8H‹t$@H‹ÃH‹\$0HƒÄ _ÃH‹ÄH‰XH‰hH‰pH‰x ATHƒì 3ÿH‹òH‹éAƒÌÿE3ÀH‹ÖH‹Íè@H‹ØH…Àu*9;ìv"‹Ïÿ‰¤DŸèD;#ìA‹ûAGüA;üuÀH‹l$8H‹t$@H‹|$HH‹ÃH‹\$0HƒÄ A\ÃÌH‹ÄH‰XH‰hH‰pH‰x ATHƒì 3öH‹úH‹éAƒÌÿH‹×H‹ÍèX±ÿÿH‹ØH…Àu/H…ÿt*9µëv"‹Îÿ¤DžèD;ëA‹óAGôA;ôu¾H‹l$8H‹t$@H‹|$HH‹ÃH‹\$0HƒÄ A\ÃÌÌÌH‰\$H‰l$H‰t$WATAUHƒì 3öI‹øH‹êAƒÍÿL‹áL‹ÇH‹ÕI‹Ìè/@H‹ØH…Àu/H…ÿt*9(ëv"‹Îÿv£DžèD;ëA‹óAGõA;õu»H‹l$HH‹t$PH‹ÃH‹\$@HƒÄ A]A\_ÃHƒì8H…Éu&èBßÿÿHƒd$ E3ÉE3À3Ò3ÉÇè«ñÿÿHƒÈÿëL‹ÁH‹ Wâ3ÒÿÏ¡HƒÄ8ÃÌÌH‹ÄH‰XH‰hH‰pWHƒì`H‹ñH‹úHHØI‹ÑI‹éI‹Øè¬ÿÿH…Ûu8\$Xt H‹D$Pƒ Èý3Àé¯H…öu:è´ÞÿÿHƒd$ E3ÉE3À3Ò3ÉÇèñÿÿ€|$Xt H‹D$Pƒ Èý¸ÿÿÿëpH…ÿtÁHûÿÿÿw¸H‹L$HƒyuL‹ÍL‹ÃH‹×H‹ÎèåDë1‹A‹Q HL$@‰D$8‰\$0L‹ÎA¸H‰|$(‰\$ è-D…ÀtŒƒÀþ€|$Xt H‹L$Pƒ¡ÈýL\$`I‹[I‹kI‹s I‹ã_ÃÌE3ÉéèþÿÿÌÌÌÌÌÌÌÌÌÌÌÌÌÌff„H‹ÁH÷ÙH©tfŠHÿÀ„Òt_¨uóI¸ÿþþþþþþ~I»H‹M‹ÈHƒÀLÊH÷ÒI3ÑI#ÓtèH‹Pø„ÒtQ„ötGHÁê„Òt9„öt/HÁê„Òt!„ötÁê„Òt „öu¹HDÿÃHDþÃHDýÃHDüÃHDûÃHDúÃHDùÃHDøÃH‰\$H‰l$WHƒì@Hƒd$PH‹ìÜH‹H…À„ªƒÍÿHƒd$8Hƒd$0ƒd$(Hƒd$ D‹ÍL‹À3Ò3Éÿ–ŸHcø…À„‘H‹ÏºèâûÿÿH‰D$PH…ÀtzHƒd$8Hƒd$0L‹D‹Í3Ò3ɉ|$(H‰D$ ÿOŸ…ÀtGHL$P3Òè/D…ÀyH‹L$PH…Ét è¦ÿÿHƒd$PHƒÃH‹H…À…Yÿÿÿ3ÀH‹\$XH‹l$`HƒÄ@_ÃH‹L$Pèâ¥ÿÿ‹ÅëâÌÌ@SHƒì0H…Ét H…ÒtM…Àu,DˆèÜÿÿ»Hƒd$ E3ÉE3À3Ò3ɉè‡îÿÿ‹ÃHƒÄ0[ÃL‹ÉAŠIÿÀAˆIÿÁ„ÀtHƒêuêH…ÒuˆèÖÛÿÿ»"ëµ3ÀëÊÌÌÌ3ÀH…Òt€9t HÿÀHÿÁH;ÂrðóÃÌÌÌ@SHƒì0Aºð‹ÂD‹ÊA#ÀH‹Ù©àüðüt5H…Ét 3Ò3ÉèÙF‰èzÛÿÿHƒd$ »E3ÉE3À3Ò3ɉèâíÿÿ‹ÃëH…ÉA‹ÐA‹Ét è¢F‰ëè™F3ÀHƒÄ0[ÃÌH‹ÄH‰XH‰hH‰p WATAUAVAWHìÐ)pÈ)x¸D)@¨L‹âA¾ÿH¸ò„$L‹”$Hƒ¤$˜M‹ÚI¿ÿÿÿÿÿÿI‹ùL @ËIÁë4M#×L ÐAãÿ¸gfffE+ÞI‹èA÷ëÁú‹ÂÁèÐ’ÀD+ØBLcÀK‹ ÁK‹TÁøI¯ÊI¯ÒH‹ÁHÁé HÑK‹LÁðI#ÆH‰„$H‹ÂHÁê I¯ÊHÊK‹TÁèI#ÆH‰„$ˆH‹ÁHÁé I¯ÒHÑK‹LÁàI#ÆH‰„$€H‹ÂHÁê I¯ÊHÊK‹TÁØI#ÆH‰D$xH‹ÁHÁé I¯ÒHÑK‹LÁÐI#ÆH‰D$pH‹ÂHÁê I¯ÊHÊK‹TÁÈI#ÆH‰D$hH‹ÁHÁé I¯ÒI#ÆHÑH‰D$`K‹LÁÀH‹ÂHÁê I#ÆH‰D$XI¯ÊHÊK‹TÁ¸H‹ÁHÁé I#ÆH‰D$PI¯ÒHÑK‹LÁ°H‹ÂHÁê I#ÆH‰D$HI¯ÊHÊK‹TÁ¨H‹ÁHÁé I#ÆH‰D$@I¯ÒHÑK‹LÁ H‹ÂHÁê I#ÆH‰D$8I¯ÊHÊK‹TÁ˜H‹ÁHÁé I#ÆH‰D$0I¯ÒHÑK‹LÁH‹ÂHÁê I#ÆH‰D$(I¯ÊHÊK‹TÁˆH‹ÁHÁé I#ÆH‰D$ I¯ÒHÑK‹LÁ€H‹ÂHÁê I#ÆH‰D$I¯ÊHÊK‹”ÁpÿÿÿH‹ÁHÁé I#ÆH‰D$K‹„ÁxÿÿÿI¯ÒI¯ÂHÁH‹ØHÁè HÐI#Þ¸ I#ÖH‰\$A+ÃH‰$HÁâ HÿA½H ÓE‹ÍIº HÓê‹Èƒâ‹òA#õtRÑúH÷ÓAÕƒâ‰I‹ÕHÓâI+ÕH#ÓI;Òs'LD$H‹ÂIƒÀEÍI‹HÁà H÷ÑI#ÎH‹ÑH ÐI;ÒrÞIcÁL‹DÄI÷Ðë5Ñú‰I‹ÕHÓâI+ÕH#ÓI;ÒsHD$HƒÀHÁâ EÍH I;ÒríIcÁL‹DÄC‰IÁà6ÀD+ØAƒÃ4ëI‹ÀH‹ÊEÝHÁá?HÑèL‹ÁL ÀHÑêI;ÒsâI#×IcËHÿHÁà4H Â…öt Hº€H ÂfWÀH‰„$IÁè òD„$HÊHÁà4H‰„$L ÀòŒ$L‰„$ò\Áò¼$òXø…öt òY=ÖeëòY=”úò ¬eò%œeòD„$H‹„$Lœ$ÐI‹[8I‹sHH%øòYüfA(ðfA(ØòDYueH‰„$òYôòDXÇA({àò”$ò\Úf(êòYéò\îf(ÃòYÁò .eòXèòYÑòYÙòXêòXëòAXèE(CÐf(ÅòXÆò\ðòA$òXõòuI‹k@A(sðI‹ãA_A^A]A\_ÃÌÌÌH‹ÄSHƒìPò„$€òŒ$ˆ‹Ù‰HÈH‹Œ$ºÀÿòXØò@àòHèL‰@Ðè°GHL$ ènG…Àu‹Ëè3GòD$@HƒÄP[ÃÌÌÌH‰\$H‰t$WHƒì ‹ÙH‹ò‹ùƒãöÁt„Òy¹èàGƒã÷ëW¹@„ùtHºâ s èÅGƒãûë<@öÇtHºâ s¹è©Gƒãþë @öÇtHºâ s@öÇt ¹è‡Gƒãý@öÇtHºæ s ¹ èmGƒãïH‹t$83À;ØH‹\$0”ÀHƒÄ _ÃÌÌÌH‹ÄSUVWHìø)pÈH‹µH3ÄH‰„$ЋòH‹éºÀÿ¹€A‹ùI‹Øè’F‹Œ$@H‰D$@H‰\$PòD$PH‹T$@òD$Hèßþÿÿò´$X…ÀuXƒ¼$`u‹„$ ò´$ƒàãƒÈ‰„$ D‹„$@HD$HHT$@H‰D$(H„$PHL$`D‹ÎH‰D$ èvEƒ=÷Ìu<…ÿt8H‹D$@òD$H‹”$Hòœ$PH‰D$0L‹Å‹ÏòD$(òt$ èÏýÿÿë‹ÏèREH‹L$@ºÀÿè«EòD$HH‹Œ$ÐH3Ìè­«ÿÿ(´$àHÄø_^][ÃÌH‹ÄH‰XH‰hH‰p ‰HWHƒì H‹ÊH‹ÚèÊ‹KHcðöÁ‚uèŽÓÿÿÇ ƒK ƒÈÿé4öÁ@t èrÓÿÿÇ"ëâ3ÿöÁt‰{öÁ„‰H‹CƒáþH‰‰K‹C‰{ƒàïƒÈ‰C© u/裻ÿÿHƒÀ0H;Øtè•»ÿÿHƒÀ`H;Øu ‹Îè)P;ÇuH‹ËèÉO÷C„‹+H‹S+kHBH‰‹C$ÿÈ;ï‰C~D‹Å‹ÎèbN‹øëWƒÉ ‰Ké?ÿÿÿƒþÿt#ƒþþtH‹ÎH‹ÆHÔàƒáHÁøHkÉXH ÂëH üÆöA t3Ò‹ÎDBèyEHƒøÿ„ïþÿÿH‹KŠD$0ˆë½HT$0‹ÎD‹ÅèçM‹ø;ý…Åþÿÿ¶D$0H‹\$8H‹l$@H‹t$HHƒÄ _ÃÌÌÌH‹ÄH‰XH‰pH‰xL‰` AUAVAWHìHL$ ÿ¥”ºXDbÈI‹ÌèñÿÿL‹ØE3ÿI;ÇuƒÈÿé{H‰àA‹Ì‰ ôßH L;ØsCEˆ{Iƒ ÿAÆC E‰{ Eˆ{8AÆC9 AÆC: E‰{PEˆ{LIƒÃXH‹»ßH L;ØrË ¦ßfD9|$b„IH‹D$hI;Ç„;LhHc0Iõ»9L¿;ËL5hߺXI‹ÌèOðÿÿL‹ØI;ÇtiI‰þ‹EßAĉ<ßI‹ L;ÙsAEˆ{Iƒ ÿAÆC E‰{ A€c8€AÆC9 AÆC: E‰{PEˆ{LIƒÃXI‹þH L;ØrÅ‹ïÞHÿÇ;Ã|„ë‹àÞëL5ÛÞA‹ÿA;ß~~Hƒ>ÿtkHƒ>þteAöEt^AöEuH‹ÿ0“A;ÇtILcçI‹ÄHÁøAƒäMkäXM$ÆH‹I‰$AŠEAˆD$IL$º èzíÿÿA;ÇtAÿD$ ëƒÈÿéÕÿÇIÿÅHƒÆ;û|‚E‹çI‹ÿH‹ßHkÛXHAÞHƒ;ÿt Hƒ;þt€K€ëÆCAD$ÿ÷ØɃÁõ¸öÿÿÿE;çDÈÿv“H‹ðHƒøÿtJI;ÇtEH‹Èÿw’A;Çt7H‰3¶Àƒøu€K@ë ƒøu€KHKº èÎìÿÿA;ÇtÿC ëƒÈÿë.€K@HÇþÿÿÿAÿÄHÿÇHƒÿŒQÿÿÿ‹ –Ýÿ’3ÀëƒÈÿLœ$I‹[ I‹s(I‹{0M‹c8I‹ãA_A^A]ÃÌÌÌH‰\$WHƒì HWÝH‹;H…ÿt7H‡ ëƒ t HOÿ–“H‹HƒÇXH H;ørÞH‹ 蔘ÿÿHƒ#HßHƒÃH;Ø|±H‹\$0HƒÄ _ÃÌHƒì8H…Éu%èÆÎÿÿHƒd$ E3ÉE3À3Ò3ÉÇè/áÿÿƒÈÿë‹AHƒÄ8ÃÌÌH‰\$H‰|$ATHƒì H‹Ùè°ÿÿÿ‹Èè•K…À„—èä¶ÿÿHƒÀ0H;Øu3ÀëèÒ¶ÿÿHƒÀ`H;Øuw¸ÿNÎ÷C ucL%ÚÙHcøIƒ<üu+¹èÖìÿÿI‰üH…ÀuHC H‰CH‰¸‰C$‰CëI‹ üÇC$ÇCH‰KH‰ K¸ë3ÀH‹\$0H‹|$8HƒÄ A\ÃÌÌÌ…Ét0SHƒì ºb H‹ÚsH‹ÊèÑ cÿîÿÿƒc$Hƒ#HƒcHƒÄ [ÃÌÌÌ@SHƒì öB@I‹Øt HƒzuAÿë&ƒBÿx H‹ˆHÿ¶Áë¾Éèšùÿÿƒøÿu ëÿHƒÄ [ÃÌ…Ò~LH‰\$H‰l$H‰t$WHƒì I‹ùI‹ð‹Ú@ŠéL‹ÇH‹Ö@ŠÍÿËè…ÿÿÿƒ?ÿt…ÛçH‹\$0H‹l$8H‹t$@HƒÄ _ÃÌÌÌH‰\$H‰l$H‰t$WHƒì Aö@@I‹ùI‹ð‹ÚH‹ét IƒxuAë7…Ò~3ŠML‹ÇH‹ÖÿËèÿÿÿHÿŃ?ÿuè¡Ìÿÿƒ8*uL‹ÇH‹Ö±?èÿþÿÿ…ÛÍH‹\$0H‹l$8H‹t$@HƒÄ _ÃÌÌH‰\$UVWATAUAVAWHìÐH‹v¬H3ÄH‰„$È3ÀH‹ÙH‰L$hH‹úHL$xI‹ÐM‹é‰D$`D‹à‰D$TD‹ð‰D$H‰D$X‰D$Pè@™ÿÿE3ÒI;ÚuAèÌÿÿ3ÛE3ÉE3À3Ò3ÉÇH‰\$ èoÞÿÿ8œ$tH‹„$ˆƒ ÈýƒÈÿéýAƒÏÿöC@L DÍþÿ…ºH‹ËèÚüÿÿHÀA;Çt(ƒøþt#LcÀL ÍþÿI‹ÈAƒàHÁùMkÀXM„É  ë L‹ÂL øÌþÿAö@8u)A;ÇtƒøþtHcÐH‹ÂƒâHÁøHkÒXI”Á  öB8€tAè;Ëÿÿ3ÛE3ÉE3À3Ò3ÉÇH‰\$ è£Ýÿÿ8œ$tH‹„$ˆƒ ÈýA‹Çé1E3ÒI;út·@Š/A‹òD‰T$@D‰T$DA‹ÒL‰”$˜A:ê„êH‹œ$¨A»HÿÇA;òH‰¼$°ŒÈEàÑKƒ$ãÿÉ\$ ë¹è Õÿÿ‹ÆH‹\$@H‹t$HHƒÄ0A\ÃH‰\$H‰t$WHƒì ‹A3öH‹Ù$<u?÷At6‹9+y…ÿ~-èÔñÿÿH‹SD‹Ç‹Èè*<;Çu‹C„Àyƒàý‰CëƒK ƒÎÿH‹Kƒc‹ÆH‹t$8H‰ H‹\$0HƒÄ _ÃÌÌÌ@SHƒì H‹ÙH…Éuè5ë,èjÿÿÿ…ÀtƒÈÿëºcsH‹ËèZñÿÿ‹Èèï@÷ØÀë3ÀHƒÄ [ÃÌH‰t$H‰|$L‰d$AUAVAWHƒì0D‹ñE3ä3öNè Õÿÿ3ÿ‰|$ AƒÏÿ;=&à†LcïH‹ÐJƒ<ètjJ‹èöBƒt`‹Ïèž©ÿÿH‹æÏJ‹ èöAƒt5Aƒþuè9ÿÿÿA;Çt%AÿÄD‰d$$ëE…öuöAtèÿÿÿA;ÇAD÷‰t$(H‹ ÏJ‹ê‹ÏèÍ©ÿÿÿlj|$ énÿÿÿ¹èdÓÿÿAƒþADô‹ÆH‹t$PH‹|$XL‹d$`HƒÄ0A_A^A]ùéÿÿÿÌÌH‰\$H‰l$H‰t$WHƒì0ƒ=]ßuèîÇÿÿH‹ÿ¾3ÿH…ÛuƒÈÿéÉ<=tÿÇH‹ËèúàÿÿH\Š„ÀuçGºHcÈèÓÝÿÿH‹øH‰u¾H…ÀtÀH‹±¾€;teH‹Ëè¼àÿÿ€;=ptCHcîºH‹Íè˜ÝÿÿH‰H…ÀtrL‹ÃH‹ÕH‹Èè*âÿÿ…ÀtHƒd$ E3ÉE3À3Ò3Éè©ÏÿÿHƒÇHcÆHØ€;u¢H‹G¾H‹ËèχÿÿHƒ%7¾Hƒ'ÇeÞ3ÀH‹\$@H‹l$HH‹t$PHƒÄ0_ÃH‹ ýè–‡ÿÿHƒ%¶½éÿÿÿÌH‹ÄH‰XH‰hH‰pH‰x ATAUAVHƒì L‹l$`M‹ñI‹øAƒeL‹âH‹ÙAÇH…ÒtL‰IƒÄ3í€;"u3À…í@¶"”ÀHÿËèë9AÿEH…ÿtŠˆHÿǶ3HÿËÎèÅ?…ÀtAÿEH…ÿtŠˆHÿÇHÿÃ@„öt…íu­@€þ t@€þ u¡H…ÿt ÆGÿëHÿË3ö€;„ã€; t€; uHÿÃëñ€;„ËM…ätI‰<$IƒÄAÿº3ÉëHÿÃÿÁ€;\tö€;"u6„Êu…ötHC€8"uH‹Øë 3À3Ò…ö”À‹ðÑéëÿÉH…ÿtÆ\HÿÇAÿE…Éu늄ÀtO…öu< tG< tC…Òt7¾Èèè>H…ÿt…ÀtŠHÿÈHÿÇAÿEŠˆHÿÇë …ÀtHÿÃAÿEAÿEHÿÃéYÿÿÿH…ÿtÆHÿÇAÿEéÿÿÿM…ätIƒ$$AÿH‹\$@H‹l$HH‹t$PH‹|$XHƒÄ A^A]A\ÃÌH‰\$H‰t$ WHƒì0ƒ=bÜuèóÄÿÿH=¬ÇA¸3ÉH‹×ÆžÈÿdH‹ÌH‰=¶»H…Ût€;uH‹ßHD$HLL$@E3À3ÒH‹ËH‰D$ è½ýÿÿHct$@H¹ÿÿÿÿÿÿÿH;ñs\HcL$HHƒùÿsQHñH;ÑrHH‹Êè%ÚÿÿH‹øH…Àt8LðHD$HLL$@H‹×H‹ËH‰D$ ègýÿÿD‹\$@H‰=ûºAÿË3ÀD‰ëºëƒÈÿH‹\$PH‹t$XHƒÄ0_ÃÌÌH‹ÄH‰XH‰hH‰pH‰x ATHƒì@‹ ÁÇE3äI‹ÜAt$A;Ìu2ÿk}H‹ØI;Ät Ç™Çë!ÿá~‹ ‹ÇƒøxDΉ ǃù…ºI;Üuÿ+}H‹ØI;Äu3ÀéH‹ûfD9#tHþfD9'u÷HþfD9'uîL‰d$8L‰d$0H+ûHÑÿL‹Ã3ÒDO3ÉD‰d$(L‰d$ ÿ}HcèA;ìtAH‹ÍèöØÿÿH‹ðI;Ät1L‰d$8L‰d$0DOL‹Ã3Ò3ɉl$(H‰D$ ÿÒ|A;Äu H‹Îè­ƒÿÿI‹ôH‹Ëÿ‰|H‹Æës;Ît A;Ì…Lÿÿÿÿy|H‹ØI;Ä„:ÿÿÿD8 tHÿÀD8 uøHÿÀD8 uð+ÃÿÀHcðH‹ÎèiØÿÿH‹øI;ÄuH‹Ëÿ@|éÿÿÿL‹ÆH‹ÓH‹ÈèƒÿÿH‹Ëÿ$|H‹ÇH‹\$PH‹l$XH‹t$`H‹|$hHƒÄ@A\ÃÌ̸ÃÌÌH‰\$WHƒì H‹s™Hƒd$0H¿2¢ß-™+H;Çt H÷ÐH‰\™ëvHL$0ÿ{H‹\$0ÿŒ{D‹ØI3ÛÿÀ|D‹ØI3Ûÿ|{HL$8D‹ØI3ÛÿÛ{L‹\$8L3ÛH¸ÿÿÿÿÿÿL#ØH¸3¢ß-™+L;ßLDØL‰æ˜I÷ÓL‰ä˜H‹\$@HƒÄ _ÃÌ@SHƒì@ƒ=¼HcÙuH‹o¦·XƒàëVHL$ 3Òè®…ÿÿH‹D$ ƒ¸ ~LD$ º‹Ëè«ÈÿÿD‹ØëH‹€@D·XAƒã€|$8t H‹D$0ƒ ÈýA‹ÃHƒÄ@[ÃÌÌH‰l$WHƒìpHcùHL$PèE…ÿÿÿsbH‹T$Pƒº ~LD$Pº‹Ïè:ÈÿÿH‹T$PëH‹‚@·xƒà…ÀtH‹‚H¶8éè€|$ht H‹D$`ƒ Èý‹ÇéáH‹D$Pƒ¸ ~6‹ïHT$PÁý@¶Íè^…Àt@ˆ¬$€@ˆ¼$Æ„$‚ºë èf·ÿÿºÇ*@ˆ¼$€Æ„$H‹L$PÇD$@LŒ$€‹AA¸‰D$8H„$ÇD$0H‰D$(‰T$ ‹QHL$PèÛ …À„2ÿÿÿƒø¶„$t ¶Œ$‘Áà Á€|$ht H‹L$`ƒ¡ÈýH‹¬$ˆHƒÄp_ÃHƒì(ƒ=-ºuA¿ƒøwƒÁ ‹Áë3ÒèmþÿÿHƒÄ(ÃH‰\$WHì€H‹¤–H3ÄH‰D$xH‹ùH‹ÚHL$@I‹Ð蕃ÿÿL\$@HT$`L‰\$8ƒd$0ƒd$(ƒd$ HL$hE3ÉL‹Ãè¯DHL$hH‹×‹Øè˜8º„Úu;ƒøu€|$Xt H‹L$Pƒ¡Èý‹ÂëSƒøu9€|$Xt H‹D$Pƒ Èý¸ë4öÃuáöÃt€|$XtÌH‹D$Pƒ Èýë¾€|$Xt H‹D$Pƒ Èý3ÀH‹L$xH3ÌèÿÿH‹œ$ HÄ€_ÃÌÌH‰\$WHì€H‹ •H3ÄH‰D$xH‹ùH‹ÚHL$@I‹Ðè‘‚ÿÿL\$@HT$`L‰\$8ƒd$0ƒd$(ƒd$ HL$hE3ÉL‹Ãè«CHL$hH‹×‹Øè˜=º„Úu;ƒøu€|$Xt H‹L$Pƒ¡Èý‹ÂëSƒøu9€|$Xt H‹D$Pƒ Èý¸ë4öÃuáöÃt€|$XtÌH‹D$Pƒ Èýë¾€|$Xt H‹D$Pƒ Èý3ÀH‹L$xH3Ìè{ŒÿÿH‹œ$ HÄ€_ÃÌÌH‰\$WHƒì0M‹QH‹ÙH…Éu(èu´ÿÿ»Hƒd$ E3ÉE3À3Ò3ɉèÝÆÿÿ‹ÃéH…ÒtÓ3ÀE…ÀÆAOÀÿÀH˜H;Ðw è3´ÿÿ»"ë¼Æ0HAëA€:t A¾ IÿÂë¹0ˆHÿÀAÿÈE…À߯xA€:5|ëÆ0HÿÈ€89tõþ€;1uAÿAëHKèüÕÿÿHSH‹ËL@è¼}ÿÿ3ÀH‹\$@HƒÄ0_ÃÌÌÌH‰\$H‰|$D·RD‹Z¸€fE‹ÂfD#пÿfAÁèAãÿÿL‹É‹ fD#Ç»€A·À…Àt;Çt ¸<fDÀë%A¸ÿëE…Ûu …Éu A!IA! ëV¸<fDÀ3Û‹ÁAÁã Áá ÁèA‰ A à úàA‰Ar)A‹ A‹QÒ‹ÁÁè Ð A‰¸ÿÿA‰QfDÀºâs×fE ÐH‹\$H‹|$fE‰QÃÌÌ@SVWHì€H‹ê’H3ÄH‰D$pH‹úH‰L$0HT$0HL$@I‹ÙI‹ðèñþÿÿHL$@L\$0H‹E3ÀLL$PI‰·AAPHL$0fA‰CèæILD$TH‹Ó‰G¾D$RH‹Î‰¿D$P‰GèÖÿÿ…ÀtHƒd$ E3ÉE3À3Ò3Éè—ÃÿÿH‰wH‹ÇH‹L$pH3Ìèÿ‰ÿÿHÄ€_^[ùéú„ÿÿÌÌH‰\$H‰l$VWATAUAVHƒì@A‹èL‹êL‹ñè ¾ÿÿ3ÛH‹øH9¨¾…ÐH ÛAÿtH‹ðH…À„ŒH²AH‹Èÿ™uH…À„sH‹ÈèL¾ÿÿHAH‹ÎH‰W¾ÿquH‹Èè-¾ÿÿHJAH‹ÎH‰@¾ÿRuH‹Èè¾ÿÿH AH‹ÎH‰)¾ÿ3uH‹Èèï½ÿÿL‹ØH‰!¾H…Àt!HÅ@H‹Îÿ uH‹ÈèȽÿÿH‰õ½ëH‹ì½ëH‹ã½L‹ä½H;ÇtcL;ßt^H‹È誽ÿÿH‹ ˽H‹ð蛽ÿÿL‹àH…öt?H…Àt:ÿÖH…Àt-HŒ$ˆA¹ LD$0H‰L$ AQõH‹ÈAÿÔ…ÀtöD$8uºíë>H‹ ]½H;Ït2èC½ÿÿH…Àt(ÿÐH‹ØH…ÀtH‹ E½H;Ïtè#½ÿÿH…ÀtH‹ËÿÐH‹ØH‹ ½è ½ÿÿH…ÀtD‹ÍM‹ÅI‹ÖH‹ËÿÐë3ÀH‹\$pH‹l$xHƒÄ@A^A]A\_^Ã@SHƒì0L‹ÉH…Ét H…ÒtM…Àu,Dˆèü¯ÿÿ»Hƒd$ E3ÉE3À3Ò3ɉèdÂÿÿ‹ÃHƒÄ0[À9t HÿÁHƒêuòH…ÒuAˆë¿AŠIÿÀˆHÿÁ„ÀtHƒêuëH…ÒuAˆ螯ÿÿ»"ë 3ÀëµÌÌÌ@SHƒì0M‹ØM…ÉuH…ÉuH…Òu 3Àë?H…ÉtH…ÒtM…ÉuDˆ ëèM…Àu,DˆèS¯ÿÿ»Hƒd$ E3ÉE3À3Ò3ɉè»Áÿÿ‹ÃHƒÄ0[ÃL‹ÑL‹ÂIƒùÿuAŠIÿÃAˆIÿ„Àt,Iƒèuêë$AŠIÿÃAˆIÿ„Àt IƒètIƒéuäM…ÉuEˆ M…À…fÿÿÿIƒùÿu DˆDÿA@Pë˜ÆèÅ®ÿÿ»"émÿÿÿÌÌÌHƒì8…Éx ƒù~ ƒùu‹¬®ë1‹¤®‰ ž®ë#è‹®ÿÿHƒd$ E3ÉE3À3Ò3ÉÇèôÀÿÿƒÈÿHƒÄ8Ã@UATAUAVAWHƒì`Hl$@H‰]PH‰uXH‰}`H‹bŽH3ÅH‰ED‹$»¾3ÿM‹ÙL‰MD‰ED‹ò‰UH‹ÙDnÿD;×uOL>E‹Íº3ɉ|$(H‰|$ ÿ@p;Çt E‹ÕD‰-ÒºëÿêqD‹úƒøxDDÖD‰µºL‹]D‹MpD;Ï~5A‹ÉI‹ÃA+Í@88t IÅ;ÏuñƒÉÿA‹Á+ÁA+ÅA;Á} DHD‰MpëD‹È‰EpD;Ö„\D;ׄSE;Õ…€D‹¥ˆ‹÷D;çuH‹D‹`÷M‹ÃA‹ÌÒ‰|$(H‰|$ ƒâAÕÿˆoLcøD;ÿ„<H»ðÿÿÿÿÿÿA¾ÝÝA½~[3ÒHBàI÷÷HƒørLKL?I;Íw.HAH;ÁwH‹ÃHƒàðè_H+àH|$@H…ÿ„åÇÌÌëè¨uÿÿH‹øH…ÀtD‰0HƒÇH…ÿ„ÀD‹MpL‹EºA‹ÌD‰|$(H‰|$ ÿàn3É;Á„K‹U‰L$(H‰L$ ‹ME‹ÏL‹Çÿ³nE3ÀHcðA;ð„!D‹UAºâ s;‹…€A;À„;ðÿ‹M‰D$(H‹ExE‹ÏL‹ÇA‹ÒH‰D$ ÿcnéÛA;ð~`3ÒHBàH÷öHƒørQHL6I;Íw*HAH;ÁwH‹ÃHƒàðè^H+àH\$@I;ØtÇÌÌëè©tÿÿE3ÀH‹ØI;ÀtD‰0HƒÃD‹UëI‹ØI;Øtn‹ME‹ÏL‹ÇA‹Ò‰t$(H‰\$ ÿÖm3É;Át?‹…€3ÒH‰L$8D‹ÎL‹ÃH‰L$0;Áu ‰L$(H‰L$ ë ‰D$(H‹ExH‰D$ A‹Ìÿûm‹ðHKðD91uèÓtÿÿHOðD91uèÅtÿÿ‹ÆéÍH‹÷L‹çD;÷u H‹D‹pD‰u‹½ˆ…ÿuH‹‹xA‹ÎèÈMD‹èƒøÿu3ÀéL‹}xL‹E;Ç„<3ÛLMp‹Ð‹Ï‰\$(H‰\$ èåMH‹ðH;ÃtÉD‹Mp‹UL‹ÀA‹Î‰\$(H‰\$ ÿõlLcÈD‰MD;Ëu‹ûéD;ËA¾ÝÝ~bI‹ÉIƒùàwYHƒÁHùw4HYH;Ùw H»ðÿÿÿÿÿÿHƒãðH‹Ãèz\H+ãH\$@H…Ût%ÇÌÌëèsÿÿH‹ØH…ÀtD‰0HƒÃD‹MH…Ûu3ÛëƒMcÁ3ÒH‹ËèW•ÿÿD‹]D‹Mp‹U‹MD‰\$(L‹ÆH‰\$ ÿ>l‰E…Àu3ÿë.‹…€LML‹Ã‰D$(‹×A‹ÍL‰|$ èßL‹}L‹à3ÀL;àDøHKðD91u(è7sÿÿë!‹…€D‹Mp‹U‰D$(A‹ÎL‰|$ ÿÖk‹ø3ÛH;ótH‹ÎèsÿÿL;ãt M;ütI‹Ìèórÿÿ‹ÇH‹MH3ÍèÿÿH‹]PH‹uXH‹}`He A_A^A]A\]ÃÌÌÌH‰\$H‰t$WHƒìp‹òH‹ÑHL$PI‹ÙA‹øè0vÿÿ‹„$¸D‹œ$ÀHL$PD‰\$@‰D$8‹„$°‰D$0H‹„$¨L‹ËH‰D$(‹„$ D‹Ç‹Ö‰D$ èOúÿÿ€|$ht H‹L$`ƒ¡ÈýL\$pI‹[I‹sI‹ã_ÃÌÌD‰L$ UATAUAVAWHƒì@Hl$0H‰]@H‰uHH‰}PH‹†ˆH3ÅH‰ED‹ Lµ¿3ÛM‹ðD‹úL‹éwD;Ëu=LMHI8D‹Ç‹Ïÿjj;Ãt‰=µë6ÿ(lD‹ µƒøxDDÎD‰ ÷´D;΄&D;Ë„D;Ï…C‹uh;óuI‹E‹p÷]xD‹MXM‹ÆҋΉ\$(ƒâH‰\$ ×ÿjLcàD;ã„A½ÝÝ~hH¸ðÿÿÿÿÿÿL;àwYKL$Hùw5HAH;Áw H¸ðÿÿÿÿÿÿHƒàðè£YH+àH|$0H;û„µÇÌÌëè5pÿÿH‹øH;Ãt D‰(HƒÇëH‹ûH;û„‹M‹Ä3ÒH‹ÏMÀèx’ÿÿD‹MXM‹Æº‹ÎD‰d$(H‰|$ ÿZi;ÃtL‹M`D‹ÀH‹×A‹Ïÿ+i‹ØHOðD9)uè{pÿÿ‹ÃéˆD‹epH‹ûD;ãuI‹ED‹`‹uh;óuI‹E‹pA‹Ìè‚Iƒøÿu3ÀëU;Æt$LMXM‹Æ‹Ð‹Î‰\$(H‰\$ è°IH‹øH;Ãt×L‹ðH‹E`D‹MXM‹ÆA‹×A‹ÌH‰D$ ÿ¥h‹ðH;ûtH‹Ïèîoÿÿ‹ÆH‹MH3Íè~ÿÿH‹]@H‹uHH‹}PHeA_A^A]A\]ÃÌÌH‰\$H‰t$WHƒì`‹òH‹ÑHL$@A‹ÙI‹øè,sÿÿ‹„$ D‹œ$¨HL$@D‰\$8‰D$0‹„$˜‰D$(H‹„$D‹ËL‹Ç‹ÖH‰D$ è.ýÿÿ€|$Xt H‹L$Pƒ¡ÈýH‹\$pH‹t$xHƒÄ`_ÃÌÌÌH…É„àSHƒì H‹ÙH‹IèoÿÿH‹KèoÿÿH‹Kè oÿÿH‹K èoÿÿH‹K(èúnÿÿH‹K0èñnÿÿH‹ èénÿÿH‹K@èànÿÿH‹KHè×nÿÿH‹KPèÎnÿÿH‹KXèÅnÿÿH‹K`è¼nÿÿH‹Khè³nÿÿH‹K8èªnÿÿH‹Kpè¡nÿÿH‹Kxè˜nÿÿH‹‹€èŒnÿÿH‹‹ˆè€nÿÿH‹‹ètnÿÿH‹‹˜èhnÿÿH‹‹ è\nÿÿH‹‹¨èPnÿÿH‹‹°èDnÿÿH‹‹¸è8nÿÿH‹‹Àè,nÿÿH‹‹Èè nÿÿH‹‹ÐènÿÿH‹‹ØènÿÿH‹‹àèümÿÿH‹‹èèðmÿÿH‹‹ðèämÿÿH‹‹øèØmÿÿH‹‹èÌmÿÿH‹‹èÀmÿÿH‹‹è´mÿÿH‹‹è¨mÿÿH‹‹ èœmÿÿH‹‹(èmÿÿH‹‹0è„mÿÿH‹‹8èxmÿÿH‹‹@èlmÿÿH‹‹Hè`mÿÿH‹‹PèTmÿÿHƒÄ [ÃÌÌH…ÉtBSHƒì H‹ÙH‹ H; ý™tè.mÿÿH‹KH; ó™tèmÿÿH‹KH; é™tè mÿÿHƒÄ [ÃH…É„‹SHƒì H‹ÙH‹IH; È™tèálÿÿH‹K H; ¾™tèÏlÿÿH‹K(H; ´™tè½lÿÿH‹K0H; ª™tè«lÿÿH‹K8H;  ™tè™lÿÿH‹K@H; –™tè‡lÿÿH‹KHH; Œ™tèulÿÿHƒÄ [ÃÌÌÌÌÌÌÌÌÌÌÌÌÌff„H+ÑL‹ÊöÁtŠBŠ :ÂuVHÿÁ„ÀtWH÷ÁuæI»J fâÿfúøwËH‹J‹ H;Âu¿Iºÿþþþþþþ~LÒHƒðÿHƒÁI3ÂI…ÃtÇëHÀHƒØÿÃ3ÀÃfff„Òt'„öt#HÁê„Òt„ötHÁê„Òt„öt Áê„Òt„öu‹3ÀÃHÀHƒØÿÃÌÌÌÌÌÌff„H+ÑIƒør"öÁtfŠ: u,HÿÁIÿÈöÁuîM‹ÈIÁéuM…ÀtŠ: u HÿÁIÿÈuñH3ÀÃÀƒØÿÃIÁét7H‹H; u[H‹AH;D uLH‹AH;D u=H‹AH;D u.HƒÁ IÿÉuÍIƒàM‹ÈIÁét›H‹H; uHƒÁIÿÉuîIƒàëƒHƒÁHƒÁHƒÁH‹ HÈHÉH;ÁÀƒØÿÃÌ@SHƒì@‹ÙHL$ èJnÿÿH‹D$ D¶ÛH‹ˆ@B·Y%€€|$8t H‹L$0ƒ¡ÈýHƒÄ@[ÃÌÌÌ@SHƒì@‹ÙHL$ 3ÒènÿÿH‹D$ D¶ÛH‹ˆ@B·Y%€€|$8t H‹L$0ƒ¡ÈýHƒÄ@[Ã̃%¹®ÃÌÌÌÌÌÌff„HìØM3ÀM3ÉH‰d$ L‰D$(èdRHÄØÃÌÌÌÌÌÌfDH‰L$H‰T$D‰D$IÇÁ “ëÌÌÌÌÌÌfÃÌÌÌÌÌÌf„ÃÌÌÌH‰\$WHƒì0I‹ØH‹úH…Ét23ÒHBàH÷ñH;Çs$èüŸÿÿHƒd$ E3ÉE3À3Ò3ÉÇ èe²ÿÿ3Àë]H¯ù¸H…ÿHDø3ÀHƒÿàwH‹ þ¢PL‹ÇÿÊcH…Àu-ƒ=ö¢tH‹Ïè, ÿÿ…ÀuËH…Ût²Ç ëªH…ÛtÇ H‹\$@HƒÄ0_ÃÌH‰\$H‰t$WHƒì03ÿH‹ÚH‹ñH…Òt13ÒHGàH÷óI;Às#èEŸÿÿH!|$ E3ÉE3À3Ò3ÉÇ è¯±ÿÿ3Àë=I¯ØH…ÉtèÉ¿ÿÿH‹øH‹ÓH‹Îè3pÿÿH‹ðH…ÀtH;ûsH+ßH 3ÒL‹ÃèEŠÿÿH‹ÆH‹\$@H‹t$HHƒÄ0_ÃÌÌ@USVWATAUAVAWHƒìhHl$0H‹Û~H3ÅH‰E(H‹½¨D‹Ò‰U‹«A»3ÛM‹ùD‰EL‹ñH‰}Ecÿ;ÓuOL.E‹Ì3Ò3ÉD‰d$(L‰D$ ÿb;Ãt A‹ÔE\$ëÿab‹G«A»ƒøxADÓD‹U‰0«D‹ D;Ë~YA‹ÉI‹ÇA+̃Îÿ8t IÄ;Ëuï‹Î‹Æ+ÁDÈD‰ D‹…°D;Ã~5A‹ÈH‹ÇA+Ì8t IÄ;Ëuò‹Î‹Æ+ÁDÀD‰…°ëƒÎÿD;Î}Æ3Àé¥D;Æ|ôA;Ó„¯;Ó„§A;ÔuÞD‹­¸D;ëuI‹D‹iD;Ët D;Ã…«E;ÈuA‹Ãé\E;Ä~A‹ÄéOE;Ì~ ¸é@HUA‹Íÿ¶`;ÃtƒD‹ D;Ë~2ƒ}rÓ8]HEtÊ8XtÅAŠ:r:HvHƒÀ8ëå¸éñ9°~+ƒ}rŒ8]HEtƒ8X„zÿÿÿŠ:r:HvËHƒÀ8ëâM‹Çº A‹Í‰\$(H‰\$ ÿ_LcðD;ó„ìþÿÿI¸ðÿÿÿÿÿÿ~d3ÒHBàI÷öHƒørUKL6Hùw.HAH;ÁwI‹ÀHƒàðè­NH+àHt$0H;ó„þÿÿÇÌÌëè?eÿÿH‹ðH;ÃtÇÝÝHƒÆëH‹óH;ó„pþÿÿD‹ M‹ÇA‹ÔA‹ÍD‰t$(H‰t$ ÿo^;ÄôD‹°L‹Çº A‹Í‰\$(H‰\$ ÿF^LcàD;ã„Ç~g3ÒHBàI÷ôHƒørXKL$Hùw1HAH;Áw H¸ðÿÿÿÿÿÿHƒàðèßMH+àH|$0H;ûtÇÌÌëèudÿÿH‹øH;ÃtÇÝÝHƒÇëH‹ûH;ûtVD‹°L‹EºA‹ÍD‰d$(H‰|$ ÿ¦];Ãt‹U‹ME‹ÎL‹ÆD‰d$(H‰|$ ÿV_‹ØHOð9ÝÝuè»dÿÿHNð9ÝÝuèªdÿÿ‹ÃéèH‹ûL‹ëD;Óu I‹D‹PD‰UD‹¥¸D;ãuI‹D‹`A‹Êèª=D‹ð;Æ„ýÿÿA;ÄteL M‹Ç‹ÐA‹Ì‰\$(H‰\$ èÑ=H‹øH;ÄÒüÿÿL‹EL°A‹ÖA‹Ì‰\$(H‰\$ è¦=L‹èH;Ãu H‹Ïè dÿÿéžüÿÿL‹ÿL‹ÀëL‹E‹…°D‹ ‹U‹M‰D$(L‰D$ M‹ÇÿT^‹ðH;ûtH‹ÏèÅcÿÿI‹Íè½cÿÿ‹ÆH‹M(H3ÍèçqÿÿHe8A_A^A]A\_^[]ÃÌÌH‰\$H‰t$WHƒì`‹òH‹ÑHL$@I‹ÙA‹øègÿÿD‹œ$¨‹„$ HL$@D‰\$8‰D$0H‹„$˜H‰D$(‹„$L‹ËD‹Ç‹Ö‰D$ è¾úÿÿ€|$Xt H‹L$Pƒ¡ÈýH‹\$pH‹t$xHƒÄ`_ÃÌÌÌH‰\$H‰t$WHƒì`H‹ñH‹úHL$@I‹ÑI‹ØèwfÿÿH…Ûu8\$Xt H‹D$Pƒ Èý3ÀéÂH…öu=è#™ÿÿHƒd$ E3ÉE3À3Ò3ÉÇ茫ÿÿ€|$Xt H‹D$Pƒ Èý¸ÿÿÿé€H…ÿt¾HûÿÿÿwµH‹D$@‹P…ÒuLL$@L‹ÃH‹×H‹ÎèÊ>ë>‹@HL$@L‹Î‰D$8‰\$0A¸H‰|$(‰\$ è™þÿÿ…Àu茘ÿÿÇéyÿÿÿƒÀþ€|$Xt H‹L$Pƒ¡ÈýH‹\$pH‹t$xHƒÄ`_ÃÌÌÌH‰\$‰T$UVWATAUAVAWHƒì0E3í‹êL‹ñA‹ÝI;Íu$è+˜ÿÿE3ÉE3À3Ò3ÉL‰l$ Ç蕪ÿÿéêL‹!M;å„Óº=I‹Ìè{@H‹øH‰D$pI;Å„µL;à„¬D8hH‹5–—E‹ýA”ÇH;5—upH‹îA‹ÅI;õu I‹õëUHƒÆÿÀL9.uõÿÀºHcÈè°¶ÿÿH‹øH‹ðI;Åu¹ ègjÿÿëH‹Èè•>H‰HƒÇHƒÅH‹EI;ÅuäL‰/H‹|$p‹l$xH‰5—I;õ…‰A;ít9L9-—t0èºÿÿA;Åtjè(—ÿÿǃÈÿH‹œ$€HƒÄ0A_A^A]A\_^]ÃE;ýt3Àëß¹褵ÿÿH‰µ–I;ÅtÆL‰(L9-¶–u¹肵ÿÿH‰£–I;Åt¤L‰(H‹5„–H‹îI;õt’H‹‹ÇH‹þA+ÄLcèH…Ét?H‹ÑM‹ÅI‹Ì蛸ÿÿ…ÀuH‹A€|=„¢A8\„—HƒÇH‹H…ÉuÈH‹5*–H+þHÁÿ÷ßE3íA;ýŒŒL9m„‚Hc÷H‹LõèÖ_ÿÿE;ýtfL9lõtHLõH‹ÿÇHƒÁH‰DõHÿÆL9lõuèHc×H¸ÿÿÿÿÿÿÿH;Ѓ“H‹ ¸•A¸è ¶ÿÿI;Åt|ësH‹5Ÿ•H+þHÁÿérÿÿÿL‰dõM‰.ë]E;ý…A;ý}÷ßG;ÇŒ„þÿÿLcÀH¸ÿÿÿÿÿÿÿL;ÀƒnþÿÿºH‹Î諵ÿÿI;Å„XþÿÿHcÏL‰$ÈL‰lÈM‰.H‰,•D9l$x„ŠI‹Ìèy·ÿÿºHHè_´ÿÿH‹øI;ÅtlI‹Ìè[·ÿÿM‹ÄH‹ÏHPèè¸ÿÿA;ÅtE3ÉE3À3Ò3ÉL‰l$ èg¦ÿÿH‹×H‹ÏI+ÔHT$pDˆ*HÿÂE;ýIEÕÿ"YA;ÅuƒËÿèÝ”ÿÿÇ*H‹Ïèo^ÿÿE;ýt I‹Ìèb^ÿÿM‰.‹Ãé™ýÿÿI‹ÌèP^ÿÿM‰.é¦ýÿÿH‰\$H‰t$H‰|$ ATAVAWHƒì ‹Ú‹ñãèGD‹Ø3ÿA¾€A„Æ‹ÇDAEÇAºã sƒÈAºã sƒÈAºã sƒÈAºã sƒÈAºãsºèA‹ËA¼`A#Ìt&ù tù@t A;Ìu ë ºè ëºèAã@€Aƒë@tAëÀt Aƒû@uºèë ëºè‹Ë÷Ñ#È#ó Î;È„šA„Ï‹ßAEÞ‰\$@öÁtºë ‰\$@öÁtºë ‰\$@öÁtºë ‰\$@öÁtºë ‰\$@ºásºë‰\$@‹Á%t0=t!=t=uA ܉\$@ëºë‰\$@ëºë ‰\$@áùt#ùtùuºë‰\$@ëƒË@‰\$@ë Ë@€‰\$@@8=Љt7öÃ@t2‹Ëè‚;ë'3ÿ@ˆ=·‰‹\$@ƒã¿‹Ëèi;A¾€DA¼`ë ƒã¿‹ËèM;A„ÞAEÿºã sƒÏºã sƒÏºã sƒÏºã sƒÏºãsºï‹ÃA#Ät%= t=@t A;ÄuÏë ºï ëºïã@€ƒë@tëÀt ƒû@uºïë Ïëºï‹ÇH‹\$HH‹t$PH‹|$XHƒÄ A_A^A\ÃÌÌL‹ÜI‰[I‰sI‰{ I‰KATHƒì H‹Ú3ÒA‹ñ‰QI‹CDb‰PI‹C‰P AöÀtI‹C¿ÀD `ë‹|$`AöÀtH‹D$0¿“ÀƒHE„ÄtH‹D$0¿‘ÀƒHAöÀtH‹D$0¿ŽÀƒHAöÀtH‹D$0¿ÀƒHH‹L$0H‹HÁèÁà÷Ð3Aƒà1AH‹L$0H‹HÁè Áà÷Ð3Aƒà1AH‹L$0H‹HÁè Áà÷Ð3Aƒà1AH‹L$0H‹HÁè À÷Ð3Aƒà1A‹H‹L$0HÁè ÷Ð3AA#Ä1AèxL‹ØA„Ät H‹L$0ƒI ¨t H‹L$0ƒI ¨t H‹D$0ƒH AöÃt H‹D$0ƒH Aöà t H‹D$0D ` ‹¹`H#ÁtCH= t)H=@tH;Áu6H‹D$0ƒë,H‹D$0ƒ þH‹D$0ƒëH‹D$0ƒ ýH‹D$0D ëH‹D$0ƒ üH‹D$0æÿ þÿH‹D$0Áæ 0H‹D$0H‹t$XD ` ƒ|$`t9H‹D$0ºáÿÿÿ!P H‹D$P‹H‹D$0‰HH‹D$0D ``H‹D$0!P`H‹D$0‹‰HPëNH‹L$0A¸ãÿÿÿ‹A A#ÀƒÈ‰A H‹D$PH‹H‹D$0H‰HH‹D$0D ``H‹T$0‹B`A#ÀƒÈ‰B`H‹D$0H‹H‰PPè0LL$0E‹Ä3Ò‹Ïÿ¾SL‹\$0AöCtHº3AöCtHº3 AöCtHº3 AöCtHº3 E„ctHº3 A‹ƒàt0A+ÄtA+ÄtA;Äu(H `ëHº3 Hº+ëHº3Hº+ ëH#ÿŸÿÿƒ|$`tA‹CP‰ëI‹CPH‰H‹\$8H‹t$@H‹|$HHƒÄ A\ÃÌÌÌHƒìHƒd$0H‹D$xH‰D$(H‹D$pH‰D$ è¢üÿÿHƒÄHÃÌHƒì(ƒùt~ƒù蓎ÿÿÇ"ë 膎ÿÿÇ!HƒÄ(ÃÌÌÌ3ÀÃÌHƒì(èAƒà?HƒÄ(ÃÌÌÌ@SHƒì èí@‹Øƒã?èí6‹ÃHƒÄ [ÃÌÌÌH‰\$H‰t$ WHƒì H‹ÚH‹ùè¾@‹ð‰D$8‹Ë÷ÑÉ€ÿÿ#È#û ωL$03À8À†t&öÁ@t!è6ë3Àˆª†‹L$0ƒá¿èz6‹t$8ëƒá¿èl6‹ÆH‹\$@H‹t$HHƒÄ _ÃÌÌ@SHƒì H‹ÙèJ@ƒã? ËÈHƒÄ [é96ÌH‰\$WHƒì HcÙA‹øH‰T$8‹Ëèè6HƒøÿuèyÿÿÇ HƒÈÿëW‹T$8LD$ÿÿÿM+Á¹ é1ÿÿÿL‹È°0E‹éë €ú9ƒÿs *ÐAùAˆMÑëAñAŠMÁ:Ð}ÜI‹$H‹ˆ(H‹:…{ÿÿÿ¹éãþÿÿBÏ<w¹A¹M+ÁéÉþÿÿI‹$H‹ˆ(H‹:u¹A¹é§þÿÿ€ú0…A¹A‹ÉéþÿÿL‹ÈBÏE‹é<w¹ë«I‹$H‹ˆ(H‹:„yÿÿÿ€ú+„ÿÿÿ€ú-„ÿÿÿ€ú0t·éâþÿÿBÏ<†cÿÿÿI‹$H‹ˆ(H‹:„rÿÿÿ€ú+t.€ú-t€ú0„xÿÿÿA¹M+Á銹ÇD$<€éDÿÿÿ¹f‰\$<é5ÿÿÿ€ê0D‰L$0€ú ‡ê¹éûþÿÿD‹ÉAƒé„ ¸D+ÈtrD+ÈtDD+È„ÐAƒù…§9œ$ „±MXÿ€ú+t€ú-…—ƒL$4ÿ¹L‹ÈélýÿÿL‹ÈE‹ñëAŠMÁ€ú0tõ€ê1€ú‡=ÿÿÿ¹ érþÿÿBÏ<w ¹ é[þÿÿ€ú0…¢¹émþÿÿBÏMXþ<vØ€ú+t€ú-u؃L$4ÿ¹éIþÿÿ¹ƒù tmé:þÿÿM‹ÃëiM‹ÃL‹ÈëaL‹ÈéÇþÿÿL‹ÈA³0E‹ñë€ú96L­¾ÂlHÐýP AŠMÁA:Ó}Ýë½Që€ú9‡þÿÿAŠMÁA:Ó}ìéwþÿÿM‹ÃA¹M‰D;ë„hƒÿv Š„$—<| AÁˆ„$—M+Ñ¿Añ;û†/M+ÑAƒÏÿë AÿAñM+ÑA8tòLD$`HŒ$€‹×èN9\$4}÷ÝîD;óu¬$9\$0u+¬$ýP¿ý°ëÿÿŒ£H5 fHƒî`;ë„z} H5ëg÷ÝHƒî`9\$8uf‰\$`;ë„X¿€A¹ÿA»‹ÅHƒÆTÁýƒàH‰t$@‰l$8;Ä"H˜A¾€H @HŽfD92r&H‹HL$pH‰‹BHT$p‰AH‹D$pHÁèA+ÉD$r·J ‹Ã·D$jD·éfA#ɉ\$PfD3èfA#Á‰\$TfE#îD‰\$XfA;Áƒ”fA;ɃŠAºý¿fE;‡zAº¿?fE;Âw ‰\$hévf;Ãu&‹D$hfEúð;Ãu9\$du9\$`u f‰\$jéSf;Ëu‹BfEúð;Ãu 9Zu9t¯¾D‹ãHL$TDVD;ÓC$D‰T$4LcÈ~UA‹üNt `Lz#þA·E·D‹ÛD¯È‹AüB,;èrA;ésD‹Þ‰iüD;Ûtf1D‹\$4IƒÆIƒïD+ÞD;ÛD‰\$4¹D+ÖHƒÁDæD;Ó‹D‹T$XD‹L$P¸ÀfDÀA¼ÿÿfD;Ã~EAºâr8D‹\$TA‹ÑEÒÁêEÉA‹ËÁéCfEÄ ÂD ÑfD;ÉD$TD‰T$XD‰L$PÁfD;ÃrfEÄylA·Àf÷Ø·ÐfDÂ@„t$PtÞD‹\$TA‹ÂAÑéA‹ËÁàAÑëÁáD ØAÑêD ÉH+ÖD‰\$TD‰L$Puȉ\$03ÛD‰T$X‹D$0;ÃtA·Áf Æf‰D$PD‹L$Pëf‹D$PH‹t$@A¾€¿€fA;ÆwAáÿÿAù€u]‹D$RAƒÏÿA»A;ÇuA‹D$V‰\$RA;Çu&·D$Z‰\$VfA;Äu fD‰t$ZfEÃëfAÃf‰D$ZëAÉD$VD‹T$XëAÉD$RëA»‹l$8A¹ÿfE;Ás#·D$RfE ÅD‰T$ff‰D$`‹D$TfD‰D$j‰D$bëfA÷ÝÀ#Ç€ÿ‰D$h‰\$`‰\$d;ë…¹üÿÿ‹D$hf‹T$`‹L$b‹|$fÁèëA‹Óf‹Ã‹û‹Ë»ë1‹Ëf‹Ó¸ÿ»¿€ëf‹Óf‹Ã‹û‹Ëëf‹Óf‹Ã‹û‹Ë»L‹D$Hf D$½.½½ ½½ö¼ê¼ܼμ¸¼¢¼’¼†¼t¼f¼P¼<¼¼¼ê»Ò»Ä»²»ª»–»ˆ»|»l»`»¿¢¿À´¿ο࿚½ò¿(À8ÀHÀ^ÀnÀܽ|ÀÆ´â´ò´þ´ µ µ0µ@µHµVµdµnµ|µе˜µ¨µ¸µȵÖµäµòµ¶ ¶¶"¶2¶>¶L¶^¶p¶ˆ¶–¶Ò´¸¸ì·Þ··²·ž·"¸v·n·^·L·>·2· ·2¸D¸V¸f¸€¸˜¸¤¸¸¸ʸÖ¸æ¸ö¸¹¹*¹<¹N¹\¹j¹x¹†¹’¹ ¹¸¹ʹعâ¹ö¹º"º.º@ºŠ·º>´.´´´ú³è³pÖ€ôæ€p€(°€Øç€-misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1À@ÀüA Æ€A¡Æ€A¢Æ€A£Æ€x„tŒ„„„HH€@üØ €¿@A(Ç€€€¸Ä„„ĸ€€þü`` €¿@AXÇ€x„tŒ„„„ ü €¿@AˆÇ€tˆˆˆˆˆHH€ÿ¨Hÿ €¿A¸Ç€tˆˆˆˆˆH0ÿÿ`àÿ €¿AèÇ€tˆˆˆˆˆ  €¿AÈ€tˆˆˆˆˆ  €¿AHÈ€€xĤ”Œx€¿€?AxÈ€ ø €¿€¿A È€x„„„„xHH €¿AÈÈ€x„„„„xP( €¿AøÈ€x„„„„xH0 €¿A(É€x„„„„x  €¿AXÉ€x„„„„x  €¿AˆÉ€„„„„ĸP( €¿A¸É€x„„„„xP0H €¿AèÉ€ø `PP €¿AÊ€ø `` €¿AHÊ€ø `@  €¿AxÊ€ø ` @ €¿A¨Ê€x„€ü„xHH €¿AØÊ€x„€ü„xH0 €¿AË€x„€ü„x  €¿A8Ë€x„€ü„x  €¿AhË€ x„€€„x€¿@A˜Ë€l’|lAÀË€tŒ„|x0H0 €¿AèË€tŒ„|xHH €¿AÌ€tŒ„|xP( €¿AHÌ€tŒ„|xH0 €¿AxÌ€tŒ„|x  €¿A¨Ì€tŒ„|x  €¿AØÌ€€¸Ä„„ø„„x €¿€?AÍ€€€€ø„„„ø€ €¿A8Í€ Pˆˆ  €¿AhÍ€x„„„„„„HH €¿A˜Í€x„„„„„„H0 €¿AÈÍ€x„„„„„„  €¿AøÍ€x„„„„„„  €¿A(΀€xĤ¤¤””Œx €¿€?AX΀„H00H„€¿€¿AˆÎ€|‚‚‚‚‚|(( A°Î€|‚‚‚‚‚|( Aà΀|‚‚‚‚‚|$ AÏ€|‚‚‚‚‚| A@Ï€|‚‚‚‚‚| ApÏ€‚†Š’¢Â‚( A Ï€üBBBâBBBü AÐÏ€ø øPP €¿AЀø øH0 €¿A0Ѐø ø  €¿A`Ѐø ø  €¿AЀü€€ð€€üHH €¿AÀЀü€€ð€€üH0 €¿AðЀü€€ð€€ü  €¿A Ñ€ü€€ð€€ü  €¿APÑ€ x„€€€€€„x €¿@A€Ñ€žðœn A°Ñ€„„ü„„H00H0 €¿AàÑ€„„ü„„H0HH €¿AÒ€„„ü„„H0P( €¿A@Ò€„„ü„„H0H0 €¿ApÒ€„„ü„„H0  €¿A Ò€„„ü„„H0  €¿AÐÒ€x„„€@  €¿AÓ€ f’ ` A0Ó€ òL@@À@ A`Ó€ æB@@À@ AÓ€H$$H€¿AÀÓ€ð``€¿@ÀAèÓ€à@@@À@€¿€ÀAÔ€@À@A¤Æ€@À€ÀA¦Æ€((((hèèè| €¿AxÔ€€´Ì„„„„€¿€?A¨Ô€@ÀÁA4Ç€` `€¿€ÀAðÔ€ð€``€¿€ÀAÕ€ø ø €¿€¿A@Õ€À ÀAdÇ€€¿ÁA§Æ€8Dª²ªª’D8 €¿A¨Õ€€¿€ÀA6Ç€€¿€¿A”Ç€$HH$€¿AÖ€øxˆxp€¿ÀA@Ö€8D’ª¢ª’D8 €¿AhÖ€€¿ÁA7Ç€```€` ÀA¸Ö€€€€€€€€€ @ÀAèÖ€||(D‚‚ A×€„xHHx„€¿€¿AH×€Üb p " Ap×€ p¨  ¨p €¿€¿A ×€€€€€€€€€ @ÀAÈ×€€¿ÀÀAÄÇ€à  à €¿AØ€€€€€€€€€€ @ÀAHØ€8@@ À @@8 ÀAxØ€ü@ ü€¿A¨Ø€x„tŒ„„„€¿@AÐØ€„H00H„€¿AøØ€Dª’’‚‚A Ù€ PPˆˆˆ€¿AHÙ€tˆˆˆˆˆ€¿ApÙ€8D@@@ø@@€¿A˜Ù€x„`„x€¿AÀÙ€@@@@D¸€¿AèÙ€tŒ„Œt€¿@AÚ€€€€¸Ä„ĸ€¿@A8Ú€x„„„„x€¿A`Ú€„„„„ĸ€¿AˆÚ€‚’’’’ìA°Ú€ø ` €¿AØÚ€„ˆàˆ€€€ €¿AÛ€pˆˆ €¿@A8Û€ø ` €¿AhÛ€„„„„ĸ€€€ €¿AÛ€x„x€pˆˆt€¿@AÀÛ€@@@@ø@@D8 €¿AèÛ€x„€ü„x€¿AÜ€tŒ„„Œt €¿A@Ü€x„€€„x€¿ApÜ€¸Ä„„ĸ€€€ €¿A˜Ü€tŒ„|x€¿AÈÜ€ÀÀÀAôÇ€€?AbÇ€ˆP €¿ÀÀA0Ý€ð𠀿AXÝ€ @€€ AˆÝ€ð€€€€€€€ð ÀA¸Ý€ü€€@ ü €¿AèÝ€(D‚‚ AÞ€‚‚D((D‚‚ AHÞ€Dª’’’‚‚‚‚ AxÞ€(((DDD‚‚ A¨Þ€x„„„„„„„„ €¿AØÞ€þ A߀x„x€€„x €¿A8߀„ˆ ø„„„ø €¿Ah߀x”¤„„„„„x €¿€?A˜ß€€€€€ø„„„ø €¿AÈ߀x„„„„„„„x €¿Aøß€„„„Œ”¤Ä„„ €¿A(à€‚‚‚’’ªÆ‚‚ AXà€ü€€€€€€€€ €¿Aˆà€„ˆ À ˆ„ €¿A¸à€pˆ< €¿Aèà€ø ø €¿Aင„„„ü„„„„ €¿AHá€tŒ„œ€€€„x €¿Axက€€€ð€€€ü €¿A¨á€ü€€€ð€€€ü €¿AØá€üBBBBBBBü Aâ€x„€€€€€„x €¿A8â€üBBB|BBBü Ah „„ü„„„H0 €¿A˜â€x€”¬¤œ„„x €¿AÈ „x €¿Aøâ€€@  @€ €¿A(ã€üü@à@€¿ÀAX〠@€@  ÀA€ã€€`p p €¿€?A°ã€@à@@à@À€?AØã€ptŒ„„x €¿Aä€x„„„x„„„x €¿A0ä€@@ ü €¿A`ä€x„„ĸ€€@8 €¿Aä€x„ĸ€€ü €¿AÀä€üˆˆH( €¿Aðä€x„8ü €¿A å€ü€@0„„x €¿AP倸  `  €¿A€å€0H„„„„„H0 €¿A°å€€€@  Aàå€À€?A\ ¿€ÀAcÇ€€`p€¿€?APæ€ ø €¿ÀAxæ€H0ü0H€¿ÀA æ€€@@ @@€ ÀAÈæ€ @@€€€@@  @ÀAøæ€€`p€¿ÀÀA(ç€tˆ”``€¿AP瀈TH H¤D €¿Axç€ ð(p x €¿€¿A¨ç€HHüHüHH€¿€¿AÐç€ÀÀÀAøç€€€€€€€€€ @ÀA è€@À@ÀAÂÇ€Üb p " Ap耀@þþA è€ˆHHHHü€¿AÈè€þ€  €Aðè€þ € A退€€€€€€€€€€€€ @À@A@é€ÿ@Apé€ÿ@ÀA˜é€ð @AÀ退€€€€ø€€€€€€€ @À@Að退?AÃÇ€€¿AÇÇ€@ÀAòÇ€ ÀAóÇ€àÀA÷Ç€ÿ @AÀê€ø€€€€€€€@À@ÀAðꀀ€€€€ø@À@Aë€ð@A@ë€ð@ÀAhë€> Pˆˆ @Aë€> ˆ˜¨Èˆ @AÀë€þþAðë€pˆˆp€¿ ÀAì€ < >ø€€€ @A@ì€""<"ˆˆøˆˆ @AÐì€UªUªUªUªUªUª @Aí€8|þ|8€¿A0í€`Æ€p퀨ƀ8í€í€à쀰쀀ì€Pì€ ì€øë€Ð뀠ë€pë€Hë€ ë€øê€Ðꀠꀀê€`ê€@ê€ ê€ê€Ð造é€xé€Pé€ é€øè€Ð耨耀è€Pè€ÈÆ€0è€è€Øç€°ç€ˆç€Xç€0ç€ç€Øæ€¨æ€€æ€Xæ€0æ€æ€ðå€Àå€å€`å€0å€å€Ð䀠ä€pä€@ä€ä€à〸ã€ã€`ã€8ã€ã€Øâ€¨â€xâ€Hâ€â€èးဈá€Xá€(á€øà€Èà€˜à€hà€8à€à€Øß€¨ß€x߀H߀߀èÞ€¸Þ€ˆÞ€XÞ€(Þ€øÝ€ÈÝ€˜Ý€hÝ€8݀݀ðÜ€ÐÜ€¨Ü€xÜ€PÜ€ Ü€øÛ€ÈÛ€ Û€pÛ€HÛ€Û€èÚ€¸Ú€Ú€hÚ€@Ú€Ú€ðÙ€ÈÙ€ Ù€xÙ€PÙ€(Ù€Ù€ØØ€°Ø€ˆØ€XØ€(Ø€ø×€èƀǀØ×€¨×€€×€P×€(×€øÖ€ÈÖ€˜Ö€xÖ€HÖ€ Ö€øÕ€ØÕ€¸Õ€ˆÕ€hÕ€HÕ€ Õ€øÔ€ÐÔ€°Ô€ˆÔ€XÔ€8Ô€Ô€ðÓ€ÈÓ€ Ó€pÓ€@Ó€Ó€àÒ€°Ò€€Ò€PÒ€ Ò€ðÑ€Àрр`Ñ€0ррÐЀ Ð€pЀ@ЀЀàÏ€°Ï€€Ï€PÏ€ Ï€ð΀À΀΀h΀8΀΀ØÍ€¨Í€xÍ€H̀̀èÌ€¸Ì€ˆÌ€XÌ€(Ì€øË€ÈË€ Ë€xË€HˀˀèÊ€¸Ê€ˆÊ€XÊ€(Ê€øÉ€ÈÉ€˜É€hÉ€8ɀɀØÈ€¨È€€È€XÈ€(È€øÇ€ÈÇ€˜Ç€hÇ€8Ç€-misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1`0üA°õ€A±õ€A²õ€A³õ€x„tŒ„„„„„((üÿ€¿@@A8ö€€€€¼Â‚‚‚¼€€ÀÀþ €¿@@Ahö€x„tŒ„„„„„0€¿@@A˜ö€z„„„„„„(( €¿AÈö€z„„„„„„D8 €¿Aøö€z„„„„„„0 €¿A(÷€z„„„„„„  €¿AX÷€€|¢¢’ŠŠ| €¿€?Aˆ÷€8þ8 €¿A¸÷€|‚‚‚‚‚|(( €¿Aè÷€|‚‚‚‚‚|P( €¿Aø€|‚‚‚‚‚|D8 €¿AHø€|‚‚‚‚‚|0 €¿Axø€|‚‚‚‚‚|  €¿A¨ø€‚‚‚‚‚¼P( €¿AØø€|‚‚‚‚‚|P0H €¿Aù€ø àPP ÀA8ù€ø à` ÀAhù€ø à` ÀA˜ù€ø à0@ ÀAÈù€|€€þ‚‚|(( €¿Aøù€|€€þ‚‚|D8 €¿A(ú€|€€þ‚‚|0 €¿AXú€|€€þ‚‚|  €¿Aˆú€0H|‚€€€‚| €¿@@A¸ú€n’|’l€¿Aèú€z†‚~|$ €¿Aû€z†‚~|(( €¿A@û€z†‚~|P( €¿Apû€z†‚~|D8 €¿A û€z†‚~|0 €¿AÐû€z†‚~|  €¿Aü€€¼Â‚‚ü‚‚| €¿€?A0ü€€€€ü‚‚‚ü€€ €¿A`ü€(D‚‚0 €¿Aü€|‚‚‚‚‚‚‚(( €¿AÀü€|‚‚‚‚‚‚‚D8 €¿Aðü€|‚‚‚‚‚‚‚0 €¿A ý€|‚‚‚‚‚‚‚  €¿APý€€|¢¢’’ŠŠ†|À  €¿€?A€ý€‚D((D‚€¿€¿A°ý€|‚‚‚‚‚‚|(( €¿AØý€|‚‚‚‚‚‚|P( €¿Aþ€|‚‚‚‚‚‚|D8 €¿A8þ€|‚‚‚‚‚‚|0 €¿Ahþ€|‚‚‚‚‚‚|  €¿A˜þ€‚†Š’’¢Â‚P( €¿AÈþ€üBBBBòBBBü €¿Aøþ€ø øPP ÀA(ÿ€ø øˆp ÀAXÿ€ø ø` ÀAˆÿ€ø ø0@ ÀA¸ÿ€þ@@@x@@þ(( €¿Aèÿ€þ@@@x@@þD8 €¿A€þ@@@x@@þ0 €¿AH€þ@@@x@@þ  €¿Ax€0H|‚€€€€€€‚| €¿@@A¨€žün €¿AØ€‚‚‚þ‚‚D8( €¿A€‚‚‚þ‚‚D8(( €¿A8€‚‚‚þ‚‚D8P( €¿Ah€‚‚‚þ‚‚D8D8 €¿A˜€‚‚‚þ‚‚D80 €¿AÈ€‚‚‚þ‚‚D8  €¿Aø€|‚‚€@  €¿A(€ f’ ` €¿AX€ òL@@À@ €¿Aˆ€ æB@@À@ €¿A¸€H$$H€¿€¿Aè€øpˆˆp€¿ ÀA€à@@@À@€¿€ÀA8€À@@A´õ€€À€ÀAtö€ zŠŠŠ~ €¿A €€€ºÆ‚‚‚‚‚ €¿@AЀ@ÀÁAŒý€` `€¿€ÀA €ð€``€¿€ÀAH€þþ €¿€¿Ap€``ü@ÀÀÀA €€¿ÁA·õ€ Pˆˆ €¿@AX€> ˆ˜¨Èˆ €¿@Aˆ€þþ€¿A¸€pˆˆpÀÀÀAà€ < >ø€€€ €¿@A€""<"<x€€x €¿@A8€€€à€ð €¿@Ah€>ˆˆøˆˆ €¿@A˜€UªUªUªUªUªUªUª@@AÈ€8|þ|8€¿Aø€¸õ€€Ø€¨€x€H€€è€À€˜€h€8€€à€¸€ˆ€H€ €€à€À€ €p€@€€Ø€¨€x€H€ €ø€È€Øõ€¨€x€X€0€€Ð€ €€€P€ €ø€Ð€¨€ˆ€h€8€€Ø€¨€x€H€€è€¸€ˆ€X€0€€Ð€°€€€P€ €ð€À€€`€0€€Ð€ €p€@€€à€°€€€P€ €ð€À€€`€0€€Ð €  €p €@ € €à €° € €p €P €( €ø €Ð €  €x €H € €è €¸ €ˆ €X €( € €Ø €° €€ €P €( € €Ð€¨€€€X€0€€Ø€¨€x€H€øõ€ö€ €ð€È€˜€p€@€€à€¸€ˆ€`€8€€ø€È€¨€€€P€(€€à€°€€€`€@€€ð€È€˜€h€8€€Ø€¨€x€H€€è€¸€ˆ€X€(€øÿ€Èÿ€˜ÿ€hÿ€8ÿ€ÿ€Øþ€¨þ€xþ€Hþ€þ€èý€¸ý€ý€`ý€0ý€ý€Ðü€ ü€pü€@ü€ü€àû€°û€€û€Pû€ û€ðú€Èú€˜ú€hú€8ú€ú€Øù€¨ù€xù€Hù€ù€èø€¸ø€ˆø€Xø€(ø€ø÷€È÷€˜÷€h÷€8÷€÷€Øö€¨ö€xö€Hö€põ€ €glutSetColor: index %d out of rangeð?€?ÿGglutSetColor: cannot set color of overlay transparent index %d glutSetColor: current window is RGBAglutGetColor: index %d out of rangeglutGetColor: requesting overlay transparent index %d €¿glutGetColor: current window is RGBAglutCopyColormap: source colormap of window %d must be color indexglutCopyColormap: window %d has no overlayglutCopyColormap: destination colormap must be color indexout of memory.win32pfdslowsamplesstereosinglestencilrgbrgbarednumluminanceindexgreendoubledepthconformantbufferblueauxbufsaccaccaalpha=>€`€ð` @(>€h˜ˆˆ˜hÀ@P>€`€€` @x>€°ÈˆˆÈ°€€À@ >€hpà @È>€€€@ À@@ð>€@À@ï)€ˆPP @ÀÀ@8?€À@@@@@@@@À @@@`?€ @@@@€€@@?€À€€€€€€€€À €¿@@@¸?€ø€@ ø€¿à@è?€((DD‚à@@€ˆˆPP Pˆˆ€¿à@8@€"""UIIˆ€ˆ€ A`@€((DDD‚‚à@@€x„„„„„„„€¿A¸@€ ø @à@€pˆˆp€ˆp€¿à@A€ˆˆˆˆðˆˆð€¿à@0A€|Œ”„„„„x €¿€?AXA€€€€€ðˆˆð€¿à@ˆA€x„„„„„„x€¿A°A€ŒŒ””¤¤ÄÄ€¿AØA€’’’ªªÆÆ‚€¿AB€ð€€€€€€€€¿À@(B€ˆˆà ˆ€¿à@PB€` @xB€€€€€€€€€€¿@@ B€„„„„ü„„„€¿AÈB€tŒ„Œ€€„x€¿AðB€€€€€ð€€ø€¿À@C€ø€€€ø€€ø€¿à@@C€ðˆ„„„„ˆð€¿AhC€x„€€€€„x€¿AC€ðˆˆˆðˆˆð€¿à@¸C€‚‚|D((à@àC€>@›¤€¤€¢@’@M@ €ðð @0AD€@@@ `€¿À@@D€€@ @€€¿€¿À@hD€À @D€ @€@ €¿€¿À@°D€€@@@@@@ØD€€€€¿@@E€pˆh˜ˆˆpÀ@(E€pˆˆˆpˆˆpÀ@PE€@@ øÀ@xE€pˆˆÈ°€ˆpÀ@ E€pˆð€€øÀ@ÈE€øPP0À@ðE€pˆ0ˆpÀ@F€ø€@0ˆpÀ@@F€@@@@@@À@€¿À@hF€pˆˆˆˆˆˆpÀ@F€€€@@@@ @@¸F€€¿@@*€€¿@Àà@*€€@@@@@ G€ ø €¿À@HG€ @  À€@pG€€@@ @@€ €¿@€@˜G€ @@€€€€@@  @€@ÈG€€@@€¿ À@@øG€d˜˜¤`PP €¿A H€&)h”dAHH€ p¨(p ¨p  €?À@pH€PPø(|((À@ H€  €¿ÀÀ€@ÈH€€€€€€€€€¿@@ðH€@@*€h)€à PI€I€øH€ÐH€¨H€€H€PH€(H€H€ØG€¨G€xG€PG€(G€G€àF€ÀF€˜F€pF€HF€ F€øE€ÐE€¨E€€E€XE€0E€E€àD€¸D€D€pD€HD€ D€èC€ÀC€˜C€pC€HC€ C€øB€ÐB€¨B€€B€XB€0B€B€àA€¸A€A€hA€8A€A€è@€À@€˜@€p@€@@€@€ð?€È?€˜?€p?€@?€?€ø>€Ð>€¨>€€>€X>€0>€>€à=€¸=€=€h=€8=€=€è<€À<€˜<€p<€H<€ <€ø;€Ð;€¨;€€;€X;€0;€;€à:€¸:€ˆ:€X:€(:€:€à9€¸9€9€h9€@9€9€è8€¸8€˜8€p8€H8€ 8€8€à7€¸7€˜7€p7€H7€(7€7€à6€¸6€ˆ6€h6€H6€(6€6€Ø5€¨5€€5€P5€(5€ø4€È4€˜4€h4€84€4€Ø3€¨3€x3€H3€3€è2€¸2€ˆ2€X2€(2€2€Ð1€ 1€p1€@1€1€à0€¸0€ˆ0€X0€(0€ø/€È/€˜/€p/€H/€/€è.€¸.€ˆ.€`.€0.€.€à-€°-€€-€P-€(-€ø,€È,€˜,€p,€@,€,€à+€°+€€+€P+€(+€+€Ø*€¨*€x*€H*€ *€ð)€À)€-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1À 0PPHˆˆPÀ @ €¿@@à@P€€€€°ÈˆˆˆÈ°€€€ðð  €¿@@à@ÀP€€@ PPˆˆˆ þ€ €¿@@à@ðP€h˜ˆˆˆˆˆPø €¿à@ Q€h˜ˆˆˆˆˆP  €¿à@PQ€h˜ˆˆˆˆˆ  €¿à@€Q€h˜ˆˆˆˆˆ @ €¿à@°Q€¸DdTLD:à@àQ€ ø €¿€¿à@R€pˆˆˆˆˆpP €¿à@0R€pˆˆˆˆˆpP( €¿à@`R€pˆˆˆˆˆpP  €¿à@R€pˆˆˆˆˆp  €¿à@ÀR€pˆˆˆˆˆp @ €¿à@ðR€ˆˆˆˆˆÈ°P( €¿à@ S€pˆˆˆˆxP0h €¿à@PS€@@@@@@@  @@€S€@@@@@@@ @ @@°S€€€€€€€€€@ €¿@@àS€@@@@@@@@€ @@T€pˆ€øˆˆpP €¿à@@T€pˆ€øˆˆpP  €¿à@pT€pˆ€øˆˆp  €¿à@ T€pˆ€øˆˆp @ €¿à@ÐT€` pˆ€€€ˆp €¿@@à@U€wˆ€ˆ€€ˆ€w €¿0A0U€tˆˆxˆp0H0 €¿à@`U€tˆˆxˆpP €¿à@U€tˆˆxˆpP( €¿à@ÀU€tˆˆxˆpP  €¿à@ðU€tˆˆxˆp  €¿à@ V€tˆˆxˆp  €¿à@PV€°ˆˆˆ°ˆˆˆp €¿à@€V€€€ø„„„ø€€ €¿A°V€(DD‚‚€@ €¿AàV€x„„„„„„„„H €¿AW€x„„„„„„„„(`` €¿A@W€x„„„„„„„„ü €¿ApW€x„„„„„„„„ ˜d €¿A W€€^!P€H€D€D€B€!€@ €? AÐW€ˆP Pˆ€¿€¿à@X€A”€”€˜€”€œ€A> €¿0AP_€@À @ÎP€€¿ÀA|W€(P P(€¿€¿à@È_€à  à€¿€À @ð_€>Aœ€¢€ €¢€œ€A> €¿0A`€Á@@ÏP€pˆ0Hˆˆ`€ˆp @@À@p`€€€€€€€€€ €¿@@@ `€ ø ø Pˆˆ €¿à@Ð`€„xHHx„€¿à@a€°H ð@@H0 €¿à@(a€@pÈ   ¨p €¿€?à@Xa€€€€€€€€€€ €¿@@@@ˆa€€@ýP€@Àà@¬W€À  À @@€@øa€€€€€€€€€€€€€ €¿@@@@(b€0@@@@@€@@@@0 @@€@Xb€ð€@@ ð€¿À@ˆb€€@ PPˆˆˆ €¿@@à@°b€„„H00H„À@àb€""UIIˆ€ˆ€ Ac€ PPˆˆˆ€¿à@8c€h˜ˆˆˆˆˆ€¿à@`c€`@@@@@à@@ @@ˆc€``€`€¿À@¸c€€€€€€À €¿€@àc€h˜ˆˆˆ˜h €¿@@à@d€€€€°ÈˆˆˆÈ° €¿@@à@8d€pˆˆˆˆˆp€¿à@hd€ˆˆˆˆˆÈ°€¿à@d€’’’’’Ú¤€¿A¸d€€€€€€€€€€ €¿@@àd€ˆ ÀÀ €€ €¿À@e€€@@@@@@@@@@ @@@@@e€€€€€€€€€ €¿@@pe€ˆˆˆˆˆÈ°€€ €¿à@ e€pˆh˜ˆˆˆ˜h €¿@@à@Ðe€@@@@@@à@0 @@f€pˆ€øˆˆp€¿à@0f€h˜ˆˆˆ˜h €¿à@Xf€pˆ€€€ˆp€¿à@ˆf€°ÈˆˆˆÈ°€€ €¿à@°f€tˆˆxˆp€¿à@àf€ÀÀ@@lX€@à@þP€ ÀÀ@œX€À@@@@@@@@@@À @@@@hg€ @@€€ €@˜g€À€€€€€€€€€€À €¿@@@@Èg€þ€@ þ €¿Aøg€(DD‚‚ €¿A(h€‚DD((DD‚ €¿AXh€"""UUIˆ€ˆ€ˆ€ €¿0Aˆh€((DDD‚‚ €¿AÀh€x„„„„„„„„ €¿Aðh€þ à@ i€x„„`€„x €¿APi€„„„ˆø„„„ø €¿A€i€=B…‰B< €¿ A°i€€€€€ø„„„ø €¿Aài€@›¦€¢@¢@’@M@`€ €¿€?@Aèl€ ˆˆp €¿à@ m€À0 0À€¿€¿à@Pm€€¿Àà@ÌX€ 0À0 €¿à@˜m€€@@@@@@Àm€€€€¿@@èm€pˆxˆˆˆp €¿à@n€pˆˆˆˆpˆˆp €¿à@@n€@@ ø €¿à@pn€pˆˆˆÈ°€ˆp €¿à@ n€pˆˆð€€ø €¿à@Ðn€üˆH(( à@o€pˆˆ0ˆp €¿à@0o€ø€€@ ˆp €¿à@`o€ à  €¿à@o€pˆˆˆˆˆˆˆp €¿à@Ào€€€@@@  €@ðo€€¿@@ÿP€€¿@ÀA)Q€€¿@€@üX€ ø €¿€¿à@€p€€¿ÀÀ @,Y€€@@ @@€ @@€@Èp€ @@€€€€€€@@  €¿@@€@øp€€¿ÀÀ@@¼Y€rŒ„ŠP0HH0 €¿AHq€#€€h””b €¿0Axq€ p¨¨(p ¨p  €¿€?à@°q€PPPü(ü((à@àq€€¿ÀÀ @ìY€€€€€€€€€ €¿@@(r€€@*Q€PP€à r€Xr€8r€r€èq€Àq€q€Xq€(q€q€Øp€¨p€ˆp€`p€@p€ p€p€Ðo€ o€po€@o€o€àn€°n€€n€Pn€ n€ðm€Èm€ m€xm€Xm€0m€m€Èl€˜l€hl€8l€l€Øk€¨k€xk€Hk€k€èj€¸j€ˆj€Pj€ j€ði€Ài€i€`i€0i€i€Ðh€ h€hh€8h€h€Øg€¨g€xg€Hg€(g€g€èf€Àf€f€hf€8f€f€àe€°e€€e€Pe€ e€ðd€Àd€˜d€pd€Hd€d€èc€Àc€˜c€hc€@c€c€èb€Àb€b€hb€8b€b€Øa€¸a€˜a€ha€8a€a€à`€°`€€`€P`€0`€ø_€Ð_€¨_€ˆ_€h_€0_€_€ð^€È^€ ^€x^€X^€(^€ø]€Ø]€¸]€]€h]€@]€]€Ð\€˜\€h\€8\€\€Ø[€¨[€x[€H[€[€àZ€°Z€€Z€PZ€ Z€ðY€ÀY€Y€`Y€0Y€Y€ÐX€ X€pX€@X€X€èW€°W€€W€PW€ W€ðV€ÀV€V€`V€0V€V€ÐU€ U€pU€@U€U€àT€°T€€T€PT€ T€ðS€ÀS€S€`S€0S€S€ÐR€ R€pR€@R€R€èQ€ÀQ€Q€`Q€0Q€Q€ÐP€ P€-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1pp<$fffÃÃÃfføÀÀ€¿€@ AÐy€ÀÀÀÀÞÿãÁ€Á€Á€Á€ãÿÞÀÀÀÀÀ`0 €¿€@0Az€pp<$fffÃÃà €¿€@ APz€sûÇÃÃÃÃÃÃÃff €¿ Aˆz€sûÇÃÃÃÃÃÃÃf<€¿ A¸z€sûÇÃÃÃÃÃÃà €¿ Aèz€sûÇÃÃÃÃÃÃà 0€¿ A{€Î€1€xÀlÀfÀcÀ1€?À`øø 0AH{€ÿÿ€¿€¿ A€{€>cÁ€Á€Á€Á€c>66 €¿0A¨{€>cÁ€Á€Á€Á€c>&-ØØ €¿0Aè{€>cÁ€Á€Á€Á€c>3 Ì~3 €¿0A(|€>cÁ€Á€Á€Á€c> ÿÀÿÀ €¿0Ah|€>cÁ€Á€Á€Á€c> 0ÀÀ €¿0A¨|€ÃÃÃÃÃÃÃãßÎLZ2€¿ Aè|€>cÁ€Á€Á€Á€c>L86`ÿÿ €¿0A}€``````````ØØ €@X}€0000000000Ìx0€?€@ˆ}€``````````À`0€@¸}€``````````0`À€@è}€<ãÀÀÿÃÃ~<66 €¿ A~€<ãÀÀÿÃÃ~<f<€¿ AH~€<ãÀÀÿÃÃ~< €¿ Ax~€<ãÀÀÿÃÃ~<0`€¿ A¨~€xl 8>cÀÀÀÀc>€¿€@ AØ~€uàïøÇÆæøÆïð}à €¿pA€vîÆÆæ~Æî|8ll8€¿A@€vîÆÆæ~Æî|ll €¿Ap€vîÆÆæ~Æî|LZ2€¿A €vîÆÆæ~Æî|f<€¿AЀvîÆÆæ~Æî|0 €¿A€€vîÆÆæ~Æî|0`€¿A0€€ÜÞÆÆÆÆÜÜÆÆÆÆ|8€¿A`€€ÀÀÀÿÿ€ÁÀÀÀÀÀÁÀÿ€ÿÀÀÀ €¿@A€€€0À0À````À0À0€ €¿`AЀ€À`ÀÀ`À`À`À`À`À`À`À`À`À`À`€€ €¿PA€À`ÀÀ`À`À`À`À`À`À`À`À`À`À`€ €¿PA`€À`ÀÀ`À`À`À`À`À`À`À`À`À`À`  €¿PA¨€À`ÀÀ`À`À`À`À`À`À`À`À`À`À`  €¿PAð€ÇÀÿðx88ln g cŒaÌpÜ0x88üÌpA8‚€ÀÀa€3 3a€ÀÀ Ax‚€€?àpp`0à8ÀÀÀÀà8`0pp?à€ € € €¿pA°‚€€?àpp`0à8ÀÀÀÀà8`0pp?à€ € @@ €¿pAø‚€€?àpp`0à8ÀÀÀÀà8`0pp?à€ À€ €¿pA@ƒ€€?àpp`0à8ÀÀÀÀà8`0pp?à€€À €¿pAˆƒ€€?àpp`0à8ÀÀÀÀà8`0pp?à€ €¿pAЃ€À`ÀàÁàÁàÃ`Æ`Æ`Ì`Ì`Ø`Ø`ð`à`à`€ € €¿PA„€€À`à```0`0ü0ü0`0`0```àÀ€ PA`„€00000000000000ÌÌÀ@ „€00000000000000Ìx0À@Ø„€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ`0ÀÀ@…€000000000000000`ÀÀ@H…€ÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€33 €¿0A€…€ÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€3 €¿0AÈ…€ÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€  €¿0A†€ÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€ 0 €¿0AX†€€?àpp`0àÀÀÀÀà`0pp?à€ €¿€@`A †€ÁÿÁÿa€a€€?€1þ1þ€€ € €ÿÿ€¿A膀À0À0````à?À0À0À€€€€ @A(‡€À0À0````à?À0À0À€€€€ @Ap‡€À0À0````à?À0À0À€€€ € @A¸‡€À0À0````à?À0À0À€€€ @Aˆ€À0À0````à?À0À0À€€€ @AHˆ€À0À0````à?À0À0À€€  @Aˆ€|þÆÆàp8€¿€@ A؈€ üØxs8ù™ˆ0À0À˜`ø0p0 pA‰€0ø0ø` 0 f˜bøcpa€a€àÀà``` €¿pAH‰€0000ø ° ðfpb0ca€a€àÀà``` €¿pAˆ‰€Øl66lØ€¿€¿Aȉ€øp؈ˆØp€¿ÀÀà@ð‰€`````àà`€¿ ÀÀ@Š€ðØp`€@ @@Š€€¿€À€@äy€2ròòòòr?€¿€@ AˆŠ€ÀÀÀÀÛÿçÃÃÃÃÃÃÀ¿€@ AÀŠ€0Á€@,z€pø˜00˜øp ÀÀ@‹€øø`0˜øp ÀÀ@8‹€ÿÿÿÿ €¿ A`‹€p؈Øp€¿Áà@‹€@Á @áy€€0`@HPˆˆ‰ˆˆHˆHO@0`€ €¿`AØ‹€€¿€Àà@\{€€€€ÿ€ÿ€ €¿@À0A8Œ€6lØØl6€¿€¿AhŒ€øhØH8Èp€¿ÀÀà@Œ€€0`@GˆˆˆˆG@0`€ €¿pA¸Œ€0ÁÀ@|€<~ÃÃ>sãÃÇn|ðÃÃ~<€¿€@ A€ÀÀÀÀÀÀÀÀÀÀÀÀÀ€¿@@€@P€ÿÿkÈÈÈÈk>€¿@ A Ž€ÀÀÀÀÀÀÀÀ@@ÀÀÀ€@À@PŽ€ @ây€€¿€À AD|€À`000000 00000`À€@À@ÀŽ€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€¿€@€@øŽ€ 000000`À`00000 €@À@0€þþÀ`0 þþ €¿Ah€pp<$fffÃÃÀ¿€@ A˜€Ãçf<üÀÆ~< €¿AÀ€ÀÀÀÀÀÀÀàØØ €¿À@ð€€€€€=€€c€Á€Á€Á€Á€c€€=€ €¿€@0A ‘€ÀÀÀÀÞÿãÁ€Á€Á€Á€ãÿÞ €¿€@0A`‘€>cÁ€Á€Á€Á€c> €¿0A ‘€ÃÃÃÃÃÃÃãßÎ €¿ AØ‘€Æ0Æ0Æ0Æ0Æ0Æ0Æ0ç0ÞðÌ` €¿`A’€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€¿€@@’€ÇÆÎÌØøðØÌÆÀÀÀÀ€¿Ap’€àð00000000000000€?€@€@ ’€ÀÀÀÀÀÀÀÀÀÀÀÀ€¿€@Ø’€ÃÃÃÃÃÃÃãßÎÀÀÀÀ€¿ A“€c€=€€c€Á€Á€Á€Á€a€€=€ €¿€@0A8“€00000000üü00<À@x“€<ãÀÀÿÃÃ~< €¿ A¨“€=€€c€Á€Á€Á€Á€c€€=€€€€€ €¿0AØ“€>cÀÀÀÀc> €¿ A”€ÞÿãÁ€Á€Á€Á€ãÿÞÀÀÀÀ €¿0AH”€vîÆÆæ~Æî| €¿Aˆ”€ÀÀ€€@€¿Á€@¸”€ €@ A„|€‚Æl8€¿ÁA•€ðð00000000000000ðð€@ @(•€00 ``@@ÀÀ @`•€ððÀÀÀÀÀÀÀÀÀÀÀÀÀÀðð€¿€@ @•€ÿÀÿÀÀ`0 €ÀÿÀÿÀ €¿@AÈ•€€0À0À````À0À0 €¿`A–€À`àà`ÀqÀ1€1€qÀ`ÀààÀ` €¿PAH–€84,6l6lffffbFcÆÃÃÁƒÁƒÁƒ€¿Aˆ–€€€€0À0À0À``````À0À0 €¿`AÈ–€À`ÀÀ`À`À`À`À`À`À`À`À`À`À` €¿PA—€ ÿÀÿÀ €¿@AH—€?ÀààÀ``àÀ|àÀ`ààÀ €¿PAˆ—€ÀÀÀÀÀÀÀÀÁ€Á€ÿÿ€ÁÀÀÀÀÀÁÀÿ€ÿ €¿@AÈ—€0°?àpða°á¸ÀÀÀÀà8`0pp?à€ €¿€?pA˜€ÀÀÀÀÀÀÿÿ€ÁÀÀÀÀÀÁÀÿ€ÿ €¿@AH˜€€?àpp`0à8ÀÀÀÀà8`0pp?à€ €¿pAˆ˜€À`ÀàÁàÁàÃ`Æ`Æ`Ì`Ì`Ø`ð`ð`à`À` €¿PAȘ€à à njČÌÌÌÌØlØlð<ð<ààÀ À €¿€A™€ÿÿÀÀÀÀÀÀÀÀÀÀÀÀ€¿ AH™€ÀpÀàÁÀÀÇÎüøÜÎÇÀÁÀÀà €¿PAx™€<~çÃÀ¿ A¸™€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ@虀À`À`À`À`À`À`ÿàÿàÀ`À`À`À`À`À` €¿PAš€°?ðpp`0à0ÁðÁðÀÀà0`0pp?à€ €¿`AXš€ÀÀÀÀÀÀÿÿÀÀÀÀÿ€ÿ€ €¿0A˜š€ÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€ €¿0AØš€ÿÿ€ÁÀÀÀÀ`À`À`À`À`À`ÀÀÁÀÿ€ÿ €¿PA›€€?àpp`0àÀÀÀÀà`0pp?à€ €¿`AX›€ÿ€ÿÀÀàÀ`À`ÀàÿÀÿ€Á€ÀÀÀÀÁÀÿ€ÿ €¿PA˜›€À0À0````à?À0À0À€€ @AØ›€àð8pgpÏøÌÌÌfÌfÌcÆ3gsc³0üð€¿@@Aœ€000008ÆÆþ|€¿ A`œ€Àð<<ðÀ €¿ Aœ€þþþþÀÀ0AÀœ€ë€É€ €>xèÈË> €¿@ Ap¡€$$$ÿ€ÿ€ÀÀ A°¡€ØØØÁ @ð¡€ÀÀ€€ÀÀÀÀÀÀÀÀÀÀ@¢€ @ãy€y€à €¢€H¢€(¢€ø¡€С€¡€P¡€¡€Р€¨ €p €8 € €àŸ€¸Ÿ€˜Ÿ€xŸ€HŸ€Ÿ€èž€¸ž€ˆž€Hž€ž€è€¸€ˆ€X€(€øœ€Èœ€ œ€pœ€@œ€ø›€¸›€x›€8›€øš€¸š€xš€8š€ø™€È™€˜™€X™€(™€è˜€¨˜€h˜€(˜€è—€¨—€h—€(—€è–€¨–€h–€(–€è•€¨•€p•€@•€•€à”€À”€˜”€h”€(”€ø“€¸“€ˆ“€X“€“€è’€¸’€€’€P’€ ’€è‘€¸‘€€‘€@‘€‘€Ð€ €p€@€€Ø€¨€x€H€€ØŽ€ Ž€€Ž€`Ž€0ހހÀ€˜€h€0€øŒ€ØŒ€˜Œ€pŒ€HŒ€Œ€ø‹€¸‹€˜‹€p‹€@‹€‹€ðŠ€Њ€ Š€hŠ€HŠ€ Š€ø‰€Љ€¨‰€h‰€(‰€èˆ€¸ˆ€pˆ€(ˆ€à‡€˜‡€P‡€‡€Ȇ€€†€8†€ð…€¨…€`…€(…€ð„€¸„€€„€@„€øƒ€°ƒ€hƒ€ ƒ€Ø‚€‚€X‚€‚€Ð€ˆ€@€ø€€°€€p€€@€€€€à€°€€€P€ €è~€¸~€ˆ~€X~€(~€ø}€È}€˜}€h}€8}€ø|€È|€ˆ|€H|€|€È{€ˆ{€`{€({€øz€Èz€˜z€hz€0z€èy€RegisterClass() failed:Cannot register GLUT window class.glut32.dllGLUT_ICONGLUT-sync option not supported by Win32 GLUT.-sync-gldebug-iconic-indirect option not supported by Win32 GLUT.-indirectcannot force both direct and indirect rendering.-direct option not supported by Win32 GLUT.-directfollow -geometry option with geometry parameter.-geometryfollow -display option with X display name.-display option not supported by Win32 GLUT.-displayglutInit being called a second time.invalid glutDeviceGet parameter: %dü©ñÒMb@@Mesa X11MesaBrian PaulMESA_SWAP_HACKglutCurrentModifiers: do not call outside core input callback.Roman%†QBÈB%†QBMUB%†QB|aAõy>B|a˜@%†QBT’dB|a˜@%†QB|aA€¬€¬€gUBÈBgUBZU…BqÛŽBÈBqÛŽBZU…Bج€è¬€0 [B“îBÆm«AMU³ª¦B“îBHBMUÂÆm«AT’dB¾0°BT’dBgU…A:’äA³ª¦B:’äA%†QB|aAõy>B|a˜@%†QBT’dB|a˜@%†QB|aA­€(­€8­€H­€¬m+B“îB¬m+B|a˜ÁjžwB“îBjžwB|a˜Á¹m«B¹m«B‰a˜Bèy¾BjžwBÈB¬m+BÈB:’äAèy¾B|a˜A¹m«B|a˜A‰a˜BÛy¾AZU…B:’äA„žwB|aBT’dBMU…BÛy>B‰a˜B¬m+B¡ç¡B|aB¹m«B:’äA¹m«B:’dA‰a˜B|a˜@jžwB¬m+B:’äA|a˜@|a˜A:’dAÀ­€Э€à­€èy¾BÈB|aAMUBÈB¬m+BÐó´B¬m+B¡ç¡B|aBqÛŽB:’äAZU…B|a˜AZU…B|aA‰a˜B|aA¹m«B:’dAèy¾BÛy¾AÈBMUBÈB¬m+Bèy¾B:’dBÐó´BqÛŽBÐó´B¹m«Bèy¾Bèy¾BÈB‰a˜BMUBZU…B:’äA„žwB|a˜A„žwB|aAqÛŽB¡ç¡BÐó´B|a˜@èy¾B:’dAèy¾BÛy¾A¹m«BMUB‰a˜BMUB°®€À®€ @¯€G’€BÈBgU…AMUB¾0°BMUBÈBT’dBÈB„žwBèy¾BZU…BÐó´BZU…B¹m«B„žwB¡ç¡B%†QBqÛŽB:’äA„žwB:’dA †QB|a˜@¬m+BÛy¾A:’dA|a˜@|aA|aA|a˜@|a˜A|a˜@:’äA|aA|aB:’dA¬m+BÛy>B„žwB †QBZU…BT’dB‰a˜BT’dB¹m«B †QBèy¾B¬m+BÈBMUBèy¾B:’äA¹m«B:’äA‰a˜BMUB„žwB¬m+BÛy>BZU…B:’dA‰a˜B|a˜@¹m«Bèy¾BÈB|a˜@ÈB|aA"ீ%†QBÈB%†QBZU…B±€_ŠB“îB_nBJ ÛBHBèy¾B¡ç!B‰a˜BqÛB%†QBqÛBMUB¡ç!B|aAHB|aÁ_nBÛy¾Á_ŠBMU ±€qÛB“îBÐó4BJ ÛB0 [Bèy¾BG’€B‰a˜B_ŠB%†QB_ŠBMUBG’€B|aA0 [B|aÁÐó4BÛy¾ÁqÛBMU €±€%†QBqÛŽB%†QB:’dAo’äAT’dB‰a˜B:’äA‰a˜BT’dBo’äA:’äAీ𱀲€ †QB¹m«B †QB|aA¬m+Bèy¾B¬m+B@²€P²€T’dB|a˜@%†QBõy>B|a˜@%†QB|aAT’dB|a˜@T’dB|a˜À%†QB:’dÁõy>B|a˜Á€²€|aA¬m+Bèy¾B¬m+Bв€X­€|a˜A:’dÁ¹m«BÈB³€Ûy>BÈBMUBèy¾BÛy¾A¡ç¡B|a˜AT’dB|a˜A¬m+BÛy¾A|a˜AMUB|a˜@Ûy>B:’dBqÛŽB|a˜@¡ç¡B|a˜A¹m«B¬m+B¹m«BT’dB¡ç¡B¡ç¡BqÛŽBèy¾B:’dBÈBÛy>BÈB ³€¡ç!B¡ç¡BHB¹m«BG’€BÈBG’€B¸³€%†QBZU…Bõy>B„žwB%†QBT’dBT’dB„žwB%†QBZU…BÛy¾A‰a˜BÛy¾A¡ç¡B:’äAÐó´BMUBèy¾B¬m+BÈBjžwBÈBqÛŽBèy¾B‰a˜BÐó´B¡ç¡B¡ç¡B¡ç¡BqÛŽB‰a˜B„žwBMU…BÛy>B|a˜A¹m«B´€:’äAÈB¡ç¡BÈB †QB„žwBMU…B„žwB‰a˜BT’dB¡ç¡B%†QB¹m«B|aB¹m«B:’äA¡ç¡B:’dAqÛŽB|a˜@:’dB¬m+B:’äA|a˜@Ûy¾A|aA|a˜A|a˜A´€G’€BÈBG’€Bȯ€µ€%†QB|aAõy>B|a˜@%†QBT’dB|a˜@%†QB|aA‰a˜BÈB:’äAÈBÛy¾AT’dB:’äA„žwB¬m+BZU…B:’dBZU…BqÛŽB„žwB¡ç¡B%†QB¹m«B|aB¹m«B:’äA¡ç¡B:’dAqÛŽB|a˜@:’dB¬m+B:’äA|a˜@Ûy¾A|aA|a˜A|a˜Apµ€%†QBZU…Bõy>B„žwB%†QBT’dBT’dB„žwB%†QBZU…B$B¹m«B„ž“Bèy¾B_nBÈBHBÈBqÛBèy¾B%†ÑA¡ç¡BÆm«AT’dBÆm«AMUB%†ÑA:’dAqÛB|a˜@HB0 [B_ŠB|a˜@$B:’dA³ª¦B:’äA³ª¦BMUB$BÛy>B_ŠBT’dB0 [B„žwBHB„žwBqÛBT’dB%†ÑAÛy>BÆm«AMUB0¶€¹m«BÈB|aB|a˜AÈB¹m«BÈBø¶€·€Ðó´B¹m«B:’dA¬m+BÐó´B¬m+BÈB:’äAèy¾BÛy¾A¹m«BÛy¾A‰a˜B:’äAZU…B|aB„žwB:’dBT’dBqÛŽB%†QB¡ç¡B¬m+B¹m«BMUB¹m«B|a˜A¡ç¡B|aA‰a˜B|a˜@jžwB¬m+B:’äA|a˜@Ûy¾A|aA|a˜A|a˜A|a˜AMUBÛy¾A¬m+BMUB%†QBÛy>BT’dBMU…B„žwB‰a˜BZU…B¡ç¡B‰a˜B¡ç¡B¹m«B‰a˜Bèy¾BjžwBÈB¬m+BÈBP·€:’dA¹m«BÐó´B¬m+B:’dA³ª¦BZU…B$B%†QB_ŠB¬m+B0 [B|aBHB|aBqÛB¬m+B%†ÑA%†QBÆm«AZU…BÆm«AqÛŽB%†ÑA¹m«BqÛBèy¾BHBÈB0 [BÈB_ŠBèy¾B$B¹m«B³ª¦BZU…B³ª¦B¬m+B$B|a˜A_ŠB|a˜@0 [BÐó4B„ž÷A|a˜@%†ÑA:’dA`¸€è³€Hµ€ †QB|aAÛy>B|a˜@ †QB:’dB|a˜@ †QB|aAT’dB|a˜@%†QBõy>B|a˜@%†QB|aAT’dB|a˜@T’dB|a˜À%†QB:’dÁõy>B|a˜Á¶€p¹€8·€|aAT’dBèy¾BT’dB|aA:’äAèy¾B:’äAเð¹€H¸€Ûy¾A‰a˜BÛy¾A¡ç¡B:’äAÐó´BMUBèy¾B¬m+BÈBjžwBÈBdÛŽBèy¾B‰a˜BÐó´B¡ç¡B¡ç¡B¡ç¡BqÛŽB‰a˜B„žwBdÛŽBT’dB †QBÛy>B †QBMUB0º€H¹€G’€B%†QB0 [BT’dBÐó4BT’dB¡ç!BÛy>B¡ç!B¬m+BÐó4BMUB0 [BMUBG’€B|aBG’€BT’dBG’€B|aB_ŠBMUB$BMUB³ª¦B¬m+B³ª¦BÛy>B$B„žwB_ŠBqÛŽB0 [B‰a˜BHB‰a˜BqÛBqÛŽB%†ÑA„žwBÆm«AÛy>BÆm«A¬m+B%†ÑA:’äAqÛB|a˜AHB:’dA0 [B:’dA_ŠB|a˜AÀº€»€ †QBÈB:’dA †QBÈBÐó´B:’äAMUB‰a˜BMUB¸»€È»€Ø»€|a˜AÈB|a˜A:’dAÈB †QB%†QB †QB|a˜AÈBjžwBÈB‰a˜Bèy¾B¡ç¡BÐó´B¹m«B¡ç¡B¹m«BqÛŽB¡ç¡B„žwB‰a˜BT’dBjžwB%†QBMUÂ%†ÑBMUÂ%†ÑB:’äÁ:’äÁMUÂ|a˜A%†QBjžwB%†QB‰a˜BÛy>B¡ç¡B¬m+B¹m«BMUB¹m«B|a˜A¡ç¡B|aA‰a˜B|a˜@jžwB|a˜A¼€ @¼€ °¼€¾0°B‰a˜B³ª¦B¹m«B„ž“Bèy¾BG’€BÈBÐó4BÈBqÛBèy¾B%†ÑA¹m«BÆm«A‰a˜BgU…A„žwBgU…A|aBÆm«AÛy¾A%†ÑA:’dAqÛB|a˜@Ðó4BG’€B„ž“B|a˜@³ª¦B:’dA¾0°BÛy¾A0½€|a˜AÈB|a˜A|a˜AÈB †QBÈBMU…Bèy¾B‰a˜B¹m«B¡ç¡B‰a˜B¹m«B„žwB¹m«B|aB¡ç¡BÛy¾A‰a˜B:’dAMU…B|a˜@ †QB|a˜Aн€ à½€Æm«AÈBÆm«AÆm«AÈB³ª¦BÈBÆm«A%†QB_nB%†QBÆm«A³ª¦B`¾€p¾€€¾€¾€Æm«AÈBÆm«AÆm«AÈB³ª¦BÈBÆm«A%†QB_nB%†QBྀ𾀿€¾0°B‰a˜B³ª¦B¹m«B„ž“Bèy¾BG’€BÈBÐó4BÈBqÛBèy¾B%†ÑA¹m«BÆm«A‰a˜BgU…A„žwBgU…A|aBÆm«AÛy¾A%†ÑA:’dAqÛB|a˜@Ðó4BG’€B„ž“B|a˜@³ª¦B:’dA¾0°BÛy¾A¾0°B|aBG’€B|aB¾0°B|aB@¿€Ø¿€|a˜AÈB|a˜A¹m«BÈB¹m«B|a˜A%†QB¹m«B%†QBÀ€À€(À€%†QBÈB%†QBhÀ€Æm+BÈB–aBèy¾BZU…BqÛŽB‰a˜BÈB‰a˜BÛy¾AqÛŽB|aAZU…B|a˜@T’dBõy>B–aB|a˜@gUB|aAo’äAÛy¾Ao’äAMUB  À€|a˜AÈB|a˜A¹m«BÈB|a˜AMUB¬m+BT’dB¹m«BÁ€Á€ Á€Ûy¾AÈBÛy¾AÛy¾A¡ç¡B`Á€pÁ€:’dAÈB:’dA:’dAÈB †QBÐó´BÈB †QBÐó´BÈBÐó´B Á€°Á€ÀÁ€ÐÁ€|a˜AÈB|a˜A|a˜AÈB¹m«B¹m«BÈB¹m«B €0€@€¬m+BÈBMUBèy¾BÛy¾A¹m«B|a˜A‰a˜B:’dA„žwB:’dA|aB|a˜AÛy¾AÛy¾A:’dAMUB|a˜@¬m+BjžwBqÛŽB|a˜@¡ç¡B:’dA¹m«BÛy¾AÐó´B|aBÐó´B„žwB¹m«B‰a˜B¡ç¡B¹m«BqÛŽBèy¾BjžwBÈB¬m+BÈB€Â€|a˜AÈB|a˜AqÛŽBÈB„žwBÈB%†QBèy¾Bõy>B¡ç¡Bõy>B|a˜AÈBjžwBÈB‰a˜Bèy¾B¡ç¡BÐó´B¹m«B¡ç¡B¹m«BZU…B¡ç¡BT’dB‰a˜B%†QBjžwBÛy>B|a˜AÛy>B8À pÀ¬m+BÈBMUBèy¾BÛy¾A¹m«B|a˜A‰a˜B:’dA„žwB:’dA|aB|a˜AÛy¾AÛy¾A:’dAMUB|a˜@¬m+BjžwBqÛŽB|a˜@¡ç¡B:’dA¹m«BÛy¾AÐó´B|aBÐó´B„žwB¹m«B‰a˜B¡ç¡B¹m«BqÛŽBèy¾BjžwBÈB¬m+BÈB:’dB|a˜A¹m«B|aÁàÀˆÄ€|a˜AÈB|a˜A¡ç¡BZU…B¡ç¡B|aÁ‰a˜BÛy¾ÁdÛŽB:’äÁjžwBMUÂÛy>BMUÂ|aB:’äÁ|a˜AÈBjžwBÈB‰a˜Bèy¾B¡ç¡BÐó´B¹m«B¡ç¡B¹m«BqÛŽB¡ç¡B„žwB‰a˜BT’dBjžwB%†QB|a˜A%†QB †QB%†QB¹m«B¸Ä€ Å€PÅ€¹m«B¹m«B‰a˜Bèy¾BjžwBÈB¬m+BÈB:’äAèy¾B|a˜A¹m«B|a˜A‰a˜BÛy¾AZU…B:’äA„žwB|aBT’dBMU…BÛy>B‰a˜B¬m+B¡ç¡B|aB¹m«B:’äA¹m«B:’dA‰a˜B|a˜@jžwB¬m+B:’äA|a˜@|a˜A:’dAÅ€ †QBÈB †QB|a˜AÈB¹m«BÈB@Æ€PÆ€|a˜AÈB|a˜A:’äAÛy¾A:’dAMUB|a˜@Ûy>B:’dBqÛŽB|a˜@¡ç¡B:’dA¹m«B:’äA¹m«BÈB €Æ€:’dAÈB †QBÐó´BÈB †QBàÆ€ðÆ€|a˜@ÈB:’äA †QBÈB:’äA †QBÈB‰a˜BÈBÈB‰a˜B Ç€0Ç€@Ç€PÇ€|a˜AÈB¹m«B¹m«BÈB|a˜A Ç€°Ç€Ðó´BÈB †QB%†QB(¼€àÇ€¹m«BÈB|a˜A|a˜AÈB¹m«BÈB|a˜A¹m«BÈ€ È€0È€qÛB“îBqÛBMU¡ç!B“îB¡ç!BMUÂqÛB“îB_ŠB“îBqÛBMUÂ_ŠBMUÂpÈ€€È€È€ È€|a˜AÈB¹m«B:’dÁðÈ€G’€B“îBG’€BMUÂ_ŠB“îB_ŠBMUÂqÛB“îB_ŠB“îBqÛBMUÂ_ŠBMUÂÉ€ É€0É€@É€ †QBJ ÛB:’dA¬m+B †QBJ ÛBÐó´B¬m+BÉ€ É€ˆ¼€Æm+BÈBZU…BqÛŽBàÉ€ˆÀ€¡ç¡BZU…B¡ç¡B¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dAÊ€ Ê€Ûy¾AÈBÛy¾AÛy¾A%†QBMUB„žwB¬m+BZU…B:’dBZU…BMU…B„žwB‰a˜B%†QB¡ç¡B|aB¡ç¡B:’äA‰a˜B:’dAMU…B|a˜@:’dB¬m+BMUB|a˜@Ûy¾A:’dA°Ê€ÀÊ€¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dAPË€¡ç¡BÈB¡ç¡B¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dAÐË€àË€Ûy¾A|aB¡ç¡B|aB¡ç¡BÛy>B‰a˜BT’dBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dApÌ€gUBZU…BZU…BZU…BHÀ̀%†ÑAÛy>B¡ç!B„žwBHBZU…BG’€BZU…Bwž“B„žwBœ$BÛy>Bœ$B¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dAÈÄ€pÍ€%†ÑAÈB%†ÑA΀8Í€õy>BÈB%†QBèy¾BT’dBÈB%†QB%†ÑBõy>BÈB%†QBZU…B%†QB0΀X΀T’dBÈB„žwBèy¾BZU…BÈB„žwB%†ÑBT’dBÈB„žwBZU…B„žwB:’dÁT’dB:’äÁõy>BMU–aBMUˆ΀°Î€%†ÑAÈB%†ÑAwž“BZU…B%†ÑA|a˜AÐó4B|aBœ$BøÎ€Ï€Ï€%†QBÈB%†QBXÏ€ZU…BÛy>B:’dA„žwBÛy¾AZU…B|aBZU…BÛy>B„žwB%†QBÛy>B%†QB%†QBÛy>BZU…B„žwB‰a˜BZU…BÐó´BZU…BÈB„žwB%†ÑBÛy>B%†ÑBxÏ€ˆÏ€ÀÏ€%†ÑAZU…B%†ÑA%†ÑAÛy>B¡ç!B„žwBHBZU…BG’€BZU…Bwž“B„žwBœ$BÛy>Bœ$B(Ѐ8ЀÐó4BZU…BqÛB„žwB%†ÑA%†QBÆm«A|aBÆm«A:’äA%†ÑA:’dAqÛB|a˜@Ðó4B_nB_ŠB|a˜@$B:’dA³ª¦B:’äA³ª¦B|aB$B%†QB_ŠB„žwB_nBZU…BÐó4BZU…BЀÛy¾AZU…BÛy¾AMUÂgUB|aB–aB%†QBõy>B„žwBT’dBZU…BqÛŽBZU…BÛy¾A%†QBMUB„žwB¬m+BZU…B:’dBZU…BMU…B„žwB‰a˜B%†QB¡ç¡B|aB¡ç¡B:’äA‰a˜B:’dAMU…B|a˜@:’dB¬m+BMUB|a˜@Ûy¾A:’dA(Ñ€`Ñ€¡ç¡BZU…B¡ç¡BMU¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dAðÑ€Ò€gUBZU…BgUBÒ€8Ñ€œ$B%†QBwž“B„žwB_nBZU…BÐó4BZU…B„ž÷A„žwB%†ÑA%†QB„ž÷A¬m+B¡ç!B|aBG’€BMUBwž“B:’äAœ$B|a˜Aœ$B:’dAwž“B|a˜@_nBÐó4B„ž÷A|a˜@%†ÑA:’dAÀÒ€õy>BÈBõy>B|a˜A%†QB|a˜@„žwBqÛŽBgUBZU…BZU…BZU…BXÓ€€Ó€%†ÑAZU…B%†ÑA|a˜A„ž÷A|a˜@¡ç!B0 [BG’€B|a˜@œ$B|a˜Aœ$BZU…Bœ$B°Ó€èÓ€Ûy¾AZU…B †QB¡ç¡BZU…B †QBÔ€(Ô€:’dAZU…BMUB †QBZU…BMUB †QBZU…BqÛŽBÐó´BZU…BqÛŽBXÔ€hÔ€xÔ€ˆÔ€%†ÑAZU…Bœ$Bœ$BZU…B%†ÑAàÔ€ðÔ€%†ÑAZU…B0 [B³ª¦BZU…B0 [BÐó4B|a˜ÁqÛB:’äÁ%†ÑAMUÂÆm«AMU Հ0Õ€œ$BZU…B%†ÑA%†ÑAZU…Bœ$BZU…B%†ÑAœ$B€Õ€Õ€ Õ€G’€B“îB0 [Bo’äBHBJ ÛBÐó4BÈBÐó4BÐó´BHB¡ç¡B0 [B‰a˜B_nBZU…B_nBT’dBHBÛy>B0 [Bo’äBHB%†ÑBHBèy¾B0 [B¹m«B_nB¡ç¡BG’€BqÛŽBG’€B„žwB_nB%†QB¡ç!B¬m+B_nBMUBG’€BÛy¾AG’€B:’dA_nB|a˜@0 [BHB|aÁHB|a˜Á0 [B:’äÁHB|aB_nB:’äA_nB|a˜A0 [B|aAHB|a˜@Ðó4B|a˜ÀÐó4B:’dÁHBÛy¾Á0 [B:’äÁG’€BMU àÕ€0Ö€ ÀÖ€%†QB“îB%†QBMUÂ@×€¡ç!B“îBHBo’äB0 [BJ ÛB_nBÈB_nBÐó´B0 [B¡ç¡BHB‰a˜BÐó4BZU…BÐó4BT’dB0 [BÛy>BHBo’äB0 [B%†ÑB0 [Bèy¾BHB¹m«BÐó4B¡ç¡B¡ç!BqÛŽB¡ç!B„žwBÐó4B%†QBG’€B¬m+BÐó4BMUB¡ç!BÛy¾A¡ç!B:’dAÐó4B|a˜@HB0 [B|aÁ0 [B|a˜ÁHB:’äÁ0 [B|aBÐó4B:’äAÐó4B|a˜AHB|aA0 [B|a˜@_nB|a˜À_nB:’dÁ0 [BÛy¾ÁHB:’äÁ¡ç!BMU `×€°×€ @Ø€|aA:’äA|aA|aB:’dA%†QBÛy¾AT’dBMUBT’dB¬m+B%†QB„žwB|aBqÛŽBMUB¡ç¡BMUBÐó´B|aBèy¾BÛy>B|aA|aB:’dAÛy>BÛy¾A%†QBMUB%†QB¬m+BÛy>B„žwBMUBqÛŽB:’äA¡ç¡B:’äAÐó´BMUBèy¾BÛy>Bèy¾BT’dB ÀØ€ Ù€qÛŽBÈBMUBMUÂÛy>BZU…BMUB„žwBÛy¾A%†QB|a˜A|aB|a˜AÛy¾AÛy¾A:’dAMUB|a˜@Ûy>B:’dBqÛŽB|a˜@¡ç¡B:’dA¹m«B:’äA¹m«B¬m+B¡ç¡B%†QBqÛŽB„žwB:’dBZU…BÛy>BZU…B˜Ù€°Ù€%†QB%†ÑB¸¬€%†QB%†ÑBø¬€%†QB%†ÑB€­€%†QB%†ÑB€®€%†QB%†ÑB˜¯€%†QB%†ÑBð°€%†QB%†ÑB±€%†QB%†ÑBp±€%†QB%†ÑBб€%†QB%†ÑB²€%†QB%†ÑB`²€%†QB%†ÑBÀ²€%†QB%†ÑBಀ%†QB%†ÑBð²€%†QB%†ÑB³€%†QB%†ÑB¨³€%†QB%†ÑBس€%†QB%†ÑB€´€%†QB%†ÑBµ€%†QB%†ÑB(µ€%†QB%†ÑBøµ€%†QB%†ÑBè¶€%†QB%†ÑB·€%†QB%†ÑB8¸€%†QB%†ÑB¹€%†QB%†ÑB(¹€%†QB%†ÑB°¹€%†QB%†ÑBй€%†QB%†ÑBº€%†QB%†ÑB º€%†QB%†ÑB º€%†QB%†ÑB˜»€%†QB%†ÑB軀%†QB%†ÑB½€%†QB%†ÑBÀ½€%†QB%†ÑB@¾€%†QB%†ÑB ¾€%†QB%†ÑB¿€%†QB%†ÑBè¿€%†QB%†ÑB8À€%†QB%†ÑBxÀ€%†QB%†ÑBðÀ€%†QB%†ÑB0Á€%†QB%†ÑB€Á€%†QB%†ÑBàÁ€%†QB%†ÑBP€%†QB%†ÑB(À%†QB%†ÑBÀÀ%†QB%†ÑB˜Ä€%†QB%†ÑB`Å€%†QB%†ÑB0Æ€%†QB%†ÑB`Æ€%†QB%†ÑBÐÆ€%†QB%†ÑBÇ€%†QB%†ÑB`Ç€%†QB%†ÑBÀÇ€%†QB%†ÑBðÇ€%†QB%†ÑB@È€%†QB%†ÑB°È€%†QB%†ÑBÉ€%†QB%†ÑBPÉ€%†QB%†ÑB°É€%†QB%†ÑBÐÉ€%†QB%†ÑBðÉ€%†QB%†ÑBÊ€%†QB%†ÑB0Ë€%†QB%†ÑBÀË€%†QB%†ÑBPÌ€%†QB%†ÑBøÌ€%†QB%†ÑBÍ€%†QB%†ÑBàÍ€%†QB%†ÑB΀%†QB%†ÑBh΀%†QB%†ÑBØÎ€%†QB%†ÑB(Ï€%†QB%†ÑBhÏ€%†QB%†ÑBøÏ€%†QB%†ÑBpЀ%†QB%†ÑBÑ€%†QB%†ÑBÐÑ€%†QB%†ÑBpÒ€%†QB%†ÑB Ò€%†QB%†ÑBHÓ€%†QB%†ÑBÓ€%†QB%†ÑBøÓ€%†QB%†ÑB8Ô€%†QB%†ÑB Ô€%†QB%†ÑBÕ€%†QB%†ÑB`Õ€%†QB%†ÑB°Õ€%†QB%†ÑB×€%†QB%†ÑBP×€%†QB%†ÑBØ€%†QB%†ÑBxÙ€%†QB%†ÑB8Ú€%†QB%†ÑBRGBA overlays are not supported by GLUT (for now).glutUseLayer: unknown layer, %d.glutOverlayDisplayFunc: window has no overlay establishedglutHideOverlay: window has no overlay establishedglutShowOverlay: window has no overlay establishedinvalid glutLayerGet param: %dfailed to create overlay OpenGL rendering context.lacks overlay support.CVAÈBCVAMUBCVA|aA…ë A|a˜@CVA&‘A|a˜@CVA|aAàç€ðç€×£€@ÈB×£€@ZU…B÷u(BÈB÷u(BZU…B8è€Hè€I.%B“îBãÇþ@MUÂÀ»‹B“îB"BMUÂãÇþ@T’dBØA•BT’dBÍÌL@:’äAÀ»‹B:’äAb¡QA|aA¤pA|a˜@b¡QAéŽA|a˜@b¡QA|aAx耈耘耨è€7 åA“îB7 åA|a˜ÁZµ>B“îBZµ>B|a˜Á1ùŽB¹m«BÚwBèy¾BZµ>BÈB7 åAÈB4€eAèy¾Bq=š@¹m«Bq=š@‰a˜BvOAZU…B4€eA„žwBØð¾AT’dB‰ÁQBÛy>BÚwB¬m+Bs…B|aB1ùŽB:’äA1ùŽB:’dAÚwB|a˜@Zµ>B7 åA4€eA|a˜@q=š@:’dA é€0é€@é€ &¸BÈB…Ë@#[ñAÈBðÅBÐó´BðÅB¡ç¡BÁ¹ BqÛŽBÄBËAZU…B $~AZU…B…Ë@‰a˜B…Ë@¹m«BMó1Aèy¾Be*¥AÈB#[ñAÈBðÅBèy¾BêWBÐó´B”‡ˆBÐó´BÛ¥Bèy¾B &¸BÈB¬ ’BMUBø~B:’äAÉöjB|a˜AÉöjB|aA”‡ˆBÓ›BóŸ®B|a˜@ &¸B:’dA &¸BÛy¾AÛ¥BMUB¬ ’BMUBê€ ê€  ê€úþMBÈBìQx@MUBž–BMUBžoÊBT’dBžoÊB„žwB“éÀBZU…B{c·BZU…BdÝ­B„žwBLW¤B%†QBK‘B:’äAÙ}|B:’dA`eVB|a˜@M0B†8ÈA‘xA|a˜@ÓÞ+A|aA)\¿@|a˜A)\¿@:’äAÓÞ+A|aB‘xA¬m+B1YCB„žwB`eVBZU…BªqiB‰a˜BªqiB¹m«B`eVBèy¾BM0BÈB¢4 Bèy¾BåPîA¹m«BåPîA‰a˜B¢4 B„žwBM0BÛy>BŇB:’dA4ÑšB|a˜@dÝ­B“éÀBžoÊB|a˜@žoÊB|aA"@ë€{Ž@ÈB{Ž@ZU…B`ì€8§#B“îB²ûAJ ÛBôì®Aèy¾BlxEA‰a˜B\ò@%†QB\ò@MUBlxEA|aAôì®A|aÁ²ûAÛy¾Á8§#BMU €ì€Ãõ¨@“îB]ÜlAJ ÛBížÂAèy¾BÕgB‰a˜BtB%†QBtBMUBÕgB|aAížÂA|aÁ]ÜlAÛy¾ÁÃõ¨@MU àì€ð'öAqÛŽBð'öA:’dAR¸Þ@T’dBåPZB:’äAåPZBT’dBR¸Þ@:’äA@í€Pí€`í€1YCB¹m«B1YCB)\¿@¬m+B{c·B¬m+B í€°í€9E’A|a˜@´YXAö( A|a˜@´YXA|aA9E’A|a˜@9E’A|a˜À´YXA:’dÁö( A|a˜Áàí€ö(ì@¬m+BH0ºB¬m+B0耮ç@:’dÁ;ГBÈB`4BÈB' šAèy¾BÓÞA¡ç¡B)\Ÿ@T’dB)\Ÿ@¬m+BÓÞA|a˜A' šA|a˜@¢4BM,BªqeB|a˜@Å…B|a˜AKB¬m+BKBT’dBÅ…B¡ç¡BªqeBèy¾BM,BÈB¢4BÈB€î€¸=A¡ç¡BÀªA¹m«Bœ„BÈBœ„Bï€vOaAZU…B¸A„žwBvOaAT’dBÀ–A„žwBvOaAZU…Bé"A‰a˜Bé"A¡ç¡BÎoAÐó´BF¥Aèy¾BÖéAÈBÀABÈB94gBèy¾Bi@zBÐó´BL¦†B¡ç¡BL¦†BqÛŽBi@zB„žwBð'TBÛy>B¤p­@d,Bpï€|ahAÈBBÏ…BÈBMUB„žwBÛyRB„žwBT’xBT’dBBÏ…B%†QBZUB|aBZUB:’äABÏ…B:’dA%†eB|a˜@|a,BÛyæA|ahA|a˜@¾0A|aA @|a˜Aðï€úþMBÈBúþMB(ë€xð€vOaA|aA¸A|a˜@vOaAÀ–A|a˜@vOaA|aAøxBÈB $fAÈBMóAT’dB $fA„žwB#[åAZU…B Ò+BZU…BÉödB„žwB”‡…B%†QB¬ B|aB¬ B:’äA”‡…B:’dAÉödB|a˜@ Ò+B#[åA $fA|a˜@MóA|aA…›@|a˜AÐð€ñcOAZU…B33A„žwBñcOAT’dBXÊA„žwBñcOAZU…B@äzB¹m«BØgBèy¾Bh³.BÈB ›BÈBôìžAèy¾Blx%A¡ç¡B\²@T’dB\²@MUBlx%A:’dAôìžA|a˜@ ›B8§BÇËTB|a˜@@äzB:’dA8ø†B:’äA8ø†BMUB@äzBÛy>BÇËTBT’dB8§B„žwB ›B„žwBôìžAT’dBlx%AÛy>B\²@MUBñ€tBÈB]ÜÄA…ë±@ÈBtBÈBXò€hò€B€žB¹m«B ×C@¬m+BB€žB¨FëAÈBûqAèy¾BXÊ%A¹m«BXÊ%A‰a˜BûqAZU…BI.ÅA„žwBãÇ.BT’dB‹ìgB%†QBu‡B¬m+BˆBMUBˆB|a˜Au‡B|aA»øzB|a˜@ÔAB¨FëAûqA|a˜@XÊ%A|aA33³@|a˜A33³@MUBXÊ%A¬m+BêŸA%†QBƒ¯BT’dBBàTB„žwB»øzBZU…Bu‡B‰a˜Bu‡B¹m«B»øzBèy¾BÔABÈB¨FëAÈB°ò€…ë1@¹m«BåðB¬m+B…ë1@u‰BZU…B»ø~B%†QBBàXB¬m+B³»B|aBƒ¯ B|aBê§A¬m+BXÊ5A%†QB33Ó@ZU…B33Ó@qÛŽBXÊ5A¹m«Bê§Aèy¾Bƒ¯ BÈB³»BÈBBàXBèy¾B»ø~B¹m«Bu‰BZU…Bu‰B¬m+B»ø~B|a˜ABàXB|a˜@³»B¨FóA‹ý€A|a˜@XÊ5A:’dAÀó€Hð€2÷B|aAëB|a˜@2÷Ba'B|a˜@2÷B|aAXÊA|a˜@ñcOA33A|a˜@ñcOA|aAXÊA|a˜@XÊA|a˜ÀñcOA:’dÁ33A|a˜Áhñ€Ðô€˜ò€ff¶@T’dBÔ¶BT’dBff¶@:’äAÔ¶B:’äA@õ€Põ€¨ó€R¸A‰a˜BR¸A¡ç¡BéRAÐó´BçŒAèy¾B¥½ÛAÈB‘:BÈBð'`Bèy¾B94sBÐó´B4 ƒB¡ç¡B4 ƒBqÛŽB94sB„žwBð'`BT’dB2÷BÛy>B2÷BMUBõ€¨ô€OÞDB%†QBðÅBT’dB#[ñAT’dBÄBËAÛy>BÄBËA¬m+B#[ñAMUBðÅBMUBOÞDB|aBOÞDBT’dBOÞDB|aBêWBMUBø~BMUB”‡ˆB¬m+B”‡ˆBÛy>Bø~B„žwBêWBqÛŽBðÅB‰a˜BÁ¹ B‰a˜Be*¥AqÛŽBMó1A„žwB…Ë@Ûy>B…Ë@¬m+BMó1A:’äAe*¥A|a˜AÁ¹ B:’dAðÅB:’dAêWB|a˜A ö€`ö€|a"BÈB @|a"BÈB‰aBI†AMUBBÏ€BMUB÷€(÷€8÷€R¸6AÈBR¸6A\Â?ÈB÷uB%†QB÷uBR¸6AÈBÀYBÈB4 ‰Bèy¾BL¦’BÐó´Bd,œB¡ç¡Bd,œBqÛŽBL¦’B„žwB4 ‰BT’dBÀYB%†QBÍÌŒ¿MUÂòRÏBMUÂòRÏB:’äÁÍÌŒ¿:’äÁÍÌŒ¿MUÂR¸6A%†QBÀYB%†QB4 ‰BÛy>BL¦’B¬m+Bd,œBMUBd,œB|a˜AL¦’B|aA4 ‰B|a˜@ÀYBR¸6Ax÷€  ÷€ ø€]-œB‰a˜BE§’B¹m«B+6Bèy¾B²YBÈBôì BÈB*©ÍAèy¾BlxA¹m«BÀ6A‰a˜B¸Õ@„žwB¸Õ@|aBÀ6AÛy¾AlxA:’dA*©ÍA|a˜@ôì B²YB+6B|a˜@E§’B:’dA]-œBÛy¾Aø€)\?AÈB)\?A)\?AÈBW,5BÈBåPnBèy¾B¯4ŠB¹m«BǺ“B‰a˜Bß@B„žwBß@B|aBǺ“BÛy¾A¯4ŠB:’dAåPnB|a˜@W,5B)\?A0ù€ @ù€R¸6AÈBR¸6AR¸6AÈBL¦’BÈBR¸6A%†QB‘FB%†QBR¸6AL¦’BÀù€Ðù€àù€ðù€R¸6AÈBR¸6AR¸6AÈBL¦’BÈBR¸6A%†QB‘FB%†QB@ú€Pú€`ú€*úœB‰a˜Bt“B¹m«Bãg€Bèy¾BL·ZBÈBކBÈB]ÜÐAèy¾BŸ«„A¹m«B&=A‰a˜B…ëá@„žwB…ëá@|aB&=AÛy¾AŸ«„A:’dA]ÜÐA|a˜@ކBL·ZBãg€B|a˜@t“B:’dA*úœBÛy¾A*úœB|aBL·ZB|aB*úœB|aB ú€8û€R¸6AÈBR¸6Ad,œBÈBd,œBR¸6A%†QBd,œB%†QBhû€xû€ˆû€Â-AÈBÂ-AÈû€mBÈB{âAèy¾B[ScBqÛŽBÛyHBÈBÛyHBÛy¾A¬m5B|aA|a"B|a˜@:’øA|a¬A|a@A|a˜@|aè@|aA @Ûy¾A @MUB ü€áz4AÈBáz4A¶ä›BÈBáz4AMUB¦[ BT’dB¶ä›B`ü€pü€€ü€Há:AÈBHá:AHá:AS¥‰BÀü€Ðü€Â-AÈBÂ-AÂ-AÈB ÒCBÛ®BÈB ÒCBÛ®BÈBÛ®Bý€ý€ ý€0ý€q=2AÈBq=2Aq=2AÈB›B›BÈB›B€ý€ý€ ý€à> BÈBMÊAèy¾B†8|A¹m«BÈ0A‰a˜B®Ç@„žwB®Ç@|aBÈ0AÛy¾A†8|A:’dAMÊA|a˜@à> BžoWBˆ}B|a˜@;БB:’dASV›BÛy¾AjܤB|aBjܤB„žwBSV›B‰a˜B;БB¹m«Bˆ}Bèy¾BžoWBÈBà> BÈBàý€š™AAÈBš™AAÎBÈBÞêAÈB ÒAèy¾B‚soA¡ç¡B‚soAš™AAÈBÔ[BÈB]|ŠBèy¾Bu”BÐó´BˆB¡ç¡BˆBZU…Bu”BT’dB]|ŠB%†QBÔ[BÛy>Bš™AAÛy>B˜þ€ Ðþ€P|BÈBãÇÂAèy¾BI.mA¹m«B‹ý A‰a˜Bš™©@„žwBš™©@|aB‹ý AÛy¾AI.mA:’dAãÇÂA|a˜@P|B­SBˆÅyB|a˜@óîB:’dA u™BÛy¾A#û¢B|aB#û¢B„žwB u™B‰a˜BóîB¹m«BˆÅyBèy¾B­SBÈBP|BÈBß @B|a˜A u™B|aÁ@ÿ€èÿ€Há:AÈBHá:AøzBZU…BøzB|aÁÉöfBÛy¾ÁêSB:’äÁ Ò-BMUÂ#[éAMUÂe*A:’äÁHá:AÈBþ%ZBÈBS¥‰Bèy¾Bk+“BÐó´Bƒ±œB¡ç¡Bƒ±œBqÛŽBk+“B„žwBS¥‰BT’dBþ%ZB%†QBHá:A%†QBŸ 4B%†QBƒ±œB€ `€°€ZU•B¹m«B*I‚Bèy¾B¬mKBÈBÛyþAÈB¾0ŒAèy¾BA¹m«BA‰a˜B¾0LAZU…B¾0ŒA„žwB|aØAT’dBÛy^BÛy>B*I‚B¬m+BBÏ‹B|aBZU•B:’äAZU•B:’dA*I‚B|a˜@¬mKBÛyþA¾0ŒA|a˜@A:’dAð€ðÅBÈBðÅB= @ÈB¬ ŠBÈB €°€×£8AÈB×£8A:’äAKj‚A:’dA ›ÎA|a˜@r BrŠFB¯B|a˜@½ã’B:’dAÕiœB:’äAÕiœBÈB à€= @ÈB Ò!BÛBÈB Ò!B@€P€{@ÈBj<ÐA#[GBÈBj<ÐA#[GBÈBL“BŒêÂBÈBL“B€€€ €°€ @ÈBZUŠBZUŠBÈB @€€Çk›BÈB÷uB%†QBˆ÷€@€ZUŠBÈB @ @ÈBZUŠBÈB @ZUŠBp€€€€Ãõø@“îBÃõø@MUŸ«HA“îBŸ«HAMUÂÃõø@“îBt$B“îBÃõø@MUÂt$BMUÂЀà€ð€€Háº@ÈBn‘B:’dÁP€¬ B“îB¬ BMUÂÜB“îBÜBMUÂ{Ž@“îBÜB“îB{Ž@MUÂÜBMUÂp€€€€ €M0BJ ÛB)\¿@¬m+BM0BJ ÛBLW¤B¬m+Bð€€è÷€mBÈB[ScBqÛŽB@€èû€¦JBZU…B¦JB¦JB%†QB-2YB„žwBÎ3BZU…BêóAZU…BÁ¹§A„žwB7A%†QBÂÕ@|aBÂÕ@:’äA7A:’dAÁ¹§A|a˜@êóAÎ3B-2YB|a˜@¦JB:’dAp€€€ö( AÈBö( Aö( A%†QB9E’A„žwB÷uÞAZU…BŠ_(BZU…BéwNB„žwBbtB%†QBI΃B|aBI΃B:’äAbtB:’dAéwNB|a˜@Š_(B÷uÞA9E’A|a˜@ö( A:’dA€ €ϦzB%†QBVŽTB„žwB÷u.BZU…BÑ¢êAZU…BržA„žwBª‚$A%†QB×£°@|aB×£°@:’äAª‚$A:’dAržA|a˜@Ñ¢êA÷u.BVŽTB|a˜@ϦzB:’dA°€±!wBÈB±!wB±!wB%†QB7 QB„žwBØð*BZU…B“˜ãAZU…BÕg—A„žwB/nA%†QBáz”@|aBáz”@:’äA/nA:’dAÕg—A|a˜@“˜ãAØð*B7 QB|a˜@±!wB:’dA0€@€= ·@|aBœs{B|aBœs{BÛy>BmghBT’dB#[UB„žwBÄB/BZU…Bj<ìAZU…B¬  A„žwBݵ'A%†QB= ·@|aB= ·@:’äAݵ'A:’dA¬  A|a˜@j<ìAÄB/B#[UB|a˜@œs{B:’dAЀ{.?ZU…BŸ BZU…B¨þ€h€š™AÛy>Bê¿A„žwBT£BZU…BãÇ>BZU…BBàdB„žwB‹ìwBÛy>B‹ìwBøzB%†QBêSB„žwB Ò-BZU…B#[éAZU…Be*A„žwBMó!A%†QB…«@|aB…«@:’äAMó!A:’dAe*A|a˜@#[éA Ò-BêSB|a˜@øzB:’dA(€Ð€š™AÈBš™A` €˜€ìQ AÈBª‚lAèy¾B´YœAÈBª‚lA%†ÑBìQ AÈBª‚lAZU…Bª‚lA €¸ €Î‹AÈB-2±Aèy¾BŒJ×AÈB-2±A%†ÑB΋AÈB-2±AZU…B-2±A:’dÁ΋A:’äÁ@¤û@MUÂázÔ¿MUÂè € €š™AÈBš™ABàdBZU…Bš™A|a˜AI.åA|aB‹ìwBX €h €x €ìQ AÈBìQ A¸ €š™AZU…Bš™Aš™AÛy>Bê¿A„žwBT£BZU…BãÇ>BZU…BBàdB„žwB‹ìwBÛy>B‹ìwB‹ìwBÛy>Bˆ˜B„žwB¼”«BZU…Bé&ÈBZU…B33ÛB„žwBX¹äBÛy>BX¹äBØ €è € €HáAZU…BHáAHáAÛy>BÁ¹»A„žwB?õBZU…BÎ=BZU…B-2cB„žwBw>vBÛy>Bw>vBˆ €˜ €åPæAZU…B' šA„žwBÓÞA%†QB)\Ÿ@|aB)\Ÿ@:’äAÓÞA:’dA' šA|a˜@åPæAM,B`eRB|a˜@Ù}xB:’dAÅ…B:’äAÅ…B|aBÙ}xB%†QB`eRB„žwBM,BZU…BåPæAZU…Bð €)\AZU…B)\AMUÂ)\A|aBçŒcA%†QB2÷½A„žwBøBZU…B†8>BZU…B)\A%†QBÓÞ—A„žwB‘äAZU…BW,+BZU…B¶DQB„žwB/]wB%†QB¯4…B|aB¯4…B:’äA/]wB:’dA¶DQB|a˜@W,+B‘äAÓÞ—A|a˜@)\A:’dAˆ €À €}îwBZU…B}îwBMUÂ}îwB%†QBÖQB„žwB¥½+BZU…B-2åAZU…Bo™A„žwBb¡A%†QBHáš@|aBHáš@:’äAb¡A:’dAo™A|a˜@-2åA¥½+BÖQB|a˜@}îwB:’dAP €` €)\AZU…B)\A𠀘 €òRdB%†QB¨FQB„žwB"BZU…Bû½AZU…BñcA„žwBff–@%†QBñcA¬m+B·â—A|aBI.+BMUB¨FQB:’äAòRdB|a˜AòRdB:’dA¨FQB|a˜@"Bû½AñcA|a˜@ff–@:’dA €6mAÈB6mA|a˜Ah³œA|a˜@&äèArŠBq= ?ZU…BB~BZU…B¸€à€)\AZU…B)\A|a˜AçŒcA|a˜@2÷½A' B†8>B|a˜@/]wB|a˜A/]wBZU…B/]wB€H€ffæ?ZU…B¡øòAˆÅkBZU…B¡øòAx€ˆ€ @ZU…B|a¬A|a"BZU…B|a¬A|a"BZU…BT’nB‰aBZU…BT’nB¸€È€Ø€è€ázÔ?ZU…Bü)XBü)XBZU…BázÔ?@€P€ûÑ@ZU…B€ˆ B·Ñ~BZU…B€ˆ BBàÌA|a˜Áƒ¯€A:’äÁûÑ@MUÂffæ?MU€€€´HcBZU…B{Ž@{Ž@ZU…B´HcBZU…B{Ž@´HcBà€ð€€„ùA“îB[S­Ao’äBû:‡AJ ÛB9EBAÈB9EBAÐó´Bû:‡A¡ç¡B[S­A‰a˜BºkÓAZU…BºkÓAT’dBû:‡AÛy>B[S­Ao’äBû:‡A%†ÑBû:‡Aèy¾B[S­A¹m«BºkÓA¡ç¡B„ùAqÛŽB„ùA„žwBºkÓA%†QBö(ì@¬m+BºkÓAMUB„ùAÛy¾A„ùA:’dAºkÓA|a˜@[S­Aû:‡A|aÁû:‡A|a˜Á[S­A:’äÁû:‡A|aBºkÓA:’äAºkÓA|a˜A[S­A|aAû:‡A|a˜@9EBA|a˜À9EBA:’dÁû:‡AÛy¾Á[S­A:’äÁ„ùAMU @€€ €×£8A“îB×£8AMU €HáA“îBb¡•Ao’äBÁ¹»AJ ÛB ÒáAÈB ÒáAÐó´BÁ¹»A¡ç¡Bb¡•A‰a˜B_AZU…B_AT’dBÁ¹»AÛy>Bb¡•Ao’äBÁ¹»A%†ÑBÁ¹»Aèy¾Bb¡•A¹m«B_A¡ç¡BHáAqÛŽBHáA„žwB_A%†QB?õB¬m+B_AMUBHáAÛy¾AHáA:’dA_A|a˜@b¡•AÁ¹»A|aÁÁ¹»A|a˜Áb¡•A:’äÁÁ¹»A|aB_A:’äA_A|a˜Ab¡•A|aAÁ¹»A|a˜@ ÒáA|a˜À ÒáA:’dÁÁ¹»AÛy¾Áb¡•A:’äÁHáAMU À€€  €Há:@:’äAHá:@|aB Òõ@%†QBF¥‰AT’dBÖÕAT’dBaB%†QB94]B|aBL¦BMUB|²”BMUB«¾§B|aBÃD±BÛy>BHá:@|aB Òõ@Ûy>BF¥‰A%†QBÖÕA%†QBaBÛy>B94]BMUBL¦B:’äA|²”B:’äA«¾§BMUBÃD±BÛy>BÃD±BT’dB € €€%†QBÈB:’dAMUÂ:’äAZU…B:’dA„žwB|a˜@%†QB|aBÛy¾A|a˜@:’dA:’dA|a˜@:’äA|aB%†QB|a˜@„žwB:’dAZU…B:’äAZU…B¬m+B„žwB%†QB%†QB„žwB|aBZU…B:’äAZU…Bø€€%†QB%†ÑBè€CVA‹ýÔAXè€rЏA¥½MBàè€"B*úžBàé€ûœBÕi˜Bøê€OÞDB &ÁBPì€`eVB„ËBpì€{Ž@…ëYAÐì€ôì®Av±Bpí€ð'öA‰ÁmBÀí€1YCB4‚ÂB YXAª‚ÐA@î€ÊòHB ‚ÉBPî€b¡QAÓÞÓApî€K"B¡6¤Bï€Ò@B'"šB8ï€ØðöA…Bàï€aBK›Bhð€MUBéšBˆð€kÚBSV BXñ€ðÅB—_›BHò€ ›Bœ“Bxò€½’BtšB˜ó€³»BZU›Bxô€³»B-!”Bˆô€vOaAXÊÑAõ€ñcOA/nÒA0õ€íž$B“8£B`õ€x:BB4‚ÂB€õ€4€#B“8£Bö€2÷BIΓBøö€Á¹ BǺ”BH÷€|a"B#û B`ø€a3Bß@§B ù€$ùB*ú¨B ù€W,5BÊ’ªBú€2÷Bž^œBpú€2÷BV}BHû€½’!B†‰³B˜û€a3Bd,²BØû€Â-AffªAPü€:’øAúþoBü€t2BE§žBàü€o!BS¥ŽB@ý€ ÒCBÇkÂB°ý€©ä1B±Bˆþ€?W1B7©±B ÿ€³»5BZU«Bøÿ€¯”-BV.°BÀ€Ÿ 4BÀ»¤B€MU%BE§¡BÀ€ðÅB¶äB0€B~3B1ù²B`€ Ò!B“8£BÀ€#[GB7 ÉB €MUBÀ»BP€÷uBMŸB €MUBO~“B€ކ°At8B`€v±BÕiœB°€›æ»A½’9B€M0Bv´B0€¾MB¾ÐBP€Ì.*B$§Bð€o B¯4…B€[SBíŒB €˜]B†Ø‰B°€yØB›†ŒBX€e* Bº ‰Bx€‚soAížB@ €Á¹B?÷Bp €T£BÁ ŽBÈ €ª‚lAéæA8 €Î‹AôìBˆ €T£BzBÈ €ìQ AR¸šAX €‹ìwB‹ì÷BÐ €?õBÃBx €¢4BV}B0 €' B›BÐ €F¥B]|B€2÷½AûEB¨€uäA´HyBð€6mAÄBBX€øBoRŽB˜€¡øòA_irB€|a"B#û B`€‰ÁËA šaBÀ€€ˆ B-!„B€úþáA´HwBp€[S­Aœ„&B°€×£8Aq=¾Að€b¡•AÅà%BØ€À7BqŒ¶B˜€MUBZU…B¿?€€€€-DTû!@@@@@normalize: zero length vectorð¿À¿à?‡C-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1€À@` ¸ €àà PP  @ @"€À€àà€€ øà@À@ @ @À"€€À@` ¸ €ðÀ @ @ @ð"€hP @ #€hP  @H#€h@  @p#€h @ @˜#€€pHHH8€?€? @À#€ ø À@è#€``  @$€`` P @8$€`` @ @`$€``@  @ˆ$€`` @ @°$€Øà P @Ø$€`p p@ @%€à@@@À €@(%€à@@@À @€@P%€à@@@À@ €@x%€à@@@À@€€@ %€`€À ` €@È%€`€À ` @€@ð%€`€À `@ €@&€`€À `@€€@@&€À @`€€€`@@€@h&€Ø p(ØÀ@&€à ` À@ @€@¸&€à ` À €@à&€à ` À P€@'€à ` À @€@0'€à ` À@ €@X'€à ` À@€€@€'€àPP`PP  @¨'€à@pHp@àÀ@Ð'€8((Dî Aø'€8lDDDDî( A((€8lDDDDî( AX(€8lDDDDî Aˆ(€8lDDDDî  A¸(€€|fRRJf> €?Aè(€ˆP PˆÀ@)€xÌ„„„ÌxP à@@)€xÌ„„„ÌxP( à@p)€xÌ„„„ÌxP  à@ )€xÌ„„„Ìx à@Ð)€xÌ„„„Ìx @ à@*€äLLTTdîP( A0*€øLDäDLøà@`*€à@@@@@à  €@ˆ*€à@@@@@à @ €@¸*€à@@@@@à@  €@è*€à@@@@@à@€ €@+€øH@p@HøP À@H+€øH@p@HøP  À@x+€øH@p@Hø  À@¨+€øH@p@Hø @ À@Ø+€` xÄ€€€Ä| @@à@,€ïIx.(9A8,€îD|((8( A`,€îD|((8( A,€îD|((8( AÀ,€îD|((8( Að,€îD|((8 A -€îD|((8  AP-€à €@@@@€@€-€D>,Ô(HäA¨-€N$*öHÈDAÐ-€D>,ôHÈDAø-€€¿ @œ"€à@ @À€@@.€@À@@Ì"€@@€@ü"€À@™"€((((hèèè| @À@È.€€€è@ @ø.€€@ À@@ /€À @àà@ `@À@@H/€@À@@L/€ø ø À@/€``ø@À€@¸/€ÀÀ€@š"€8Dª²ºD8€¿A0€À€@›"€€¿€¿à@¼/€P  P˜d€¿ @h0€à  ÀÀ€@0€8Dš¢šD8€¿A¸0€€¿ÀÀ @É"€à P @p €? @1€€€€€€€@01€p ø ØPˆ @X1€ˆpPPpˆ€¿ @€1€ðÈ@à@P0 @¨1€€à€p€? @Ð1€€€€€€€€¿@@@ø1€@Ê"€Àà@l0€€@@@ @@@€ @€@`2€€€€€€€€€€ @@2€ @@@€@@@  @€@À2€ð@ ð @ð2€@@ 0PHÜ€?@ @3€ØP PØÀ@@3€(lT’ÛAh3€ `PØ @3€h @¸3€0@@@à@€@à3€à `€à€@4€à@@` €@04€8pp@ @X4€À€àà@ @€4€`` @¨4€Øà @Ð4€Û’’’ìAø4€à@@@@@À€@ 5€˜à €€ @H5€€@@@@@À@ @@@p5€@@@@À@@@ 5€Øà€€ @È5€à`@  p@ @ð5€à@@@à@0€@6€`€À `€@@6€hp0 @h6€`€€€`€@6€àà€€ @¸6€à ` À€@à6€À€ À@@7€@@ @Ë"€  @€¿€À @P7€À@@@@@@@À @@@x7€ @@@€€@@¨7€À€€€€€€€À @@@Ð7€øˆ@ ˆøÀ@8€8((DîA(8€îD((DîAP8€""UUÉ€ˆ€ÝÀ  Ax8€((lDîA¨8€8lDDDDîAÐ8€p ¨øÀ@ø8€à`Àp @ 9€ìHPpHHðà@H9€ pÌ„„„Ìx @à@p9€à@@pHHðÀ@ 9€xÌ„„„Ìxà@È9€äLLTTdîAð9€ë€IUUcc〠 A:€øH@@@@àÀ@H:€ìHP`PHìà@p:€À  p€@˜:€à@@@@@à€@À:€îDD|DDîAè:€xÄ„œ€Ä|à@;€à@@p@HøÀ@8;€øH@p@HøÀ@`;€øLDDDLøà@ˆ;€xÄ€€€Ä|à@°;€ðHHpHHðÀ@Ø;€îD|((8A<€>@’­¥¥B< @A(<€@@@  à€@X<€€@ @€ @€<€øø€¿À@¨<€ @€@ €¿ @Ð<€€€€€€¿@@@ø<€€€€¿@@ =€À p` @H=€``` @p=€@@@ ð @˜=€`à@0 @À=€àà@p @è=€øP0 @>€à`` @8>€ð@ ` @`>€à@@@@À@€¿ @ˆ>€`` @°>€€€@@@ @@Ø>€€¿@@ú"€€¿Àà@û"€€€€€¿@@@@?€ ø À@h?€ @ €À @?€€@@ @@€ @€@¸?€ @@€€€@@  @€@è?€@À À@@@€v˜tnP0A@@€D**V¨¤~Ah@€ à`€p  €? @@€PPøPøPP @À@€   À€@è@€€€€€€€€¿@@A€@ÿ"€H"€à pA€8A€A€ð@€È@€ @€p@€H@€ @€ø?€È?€˜?€p?€H?€ ?€?€à>€¸>€>€h>€@>€>€ð=€È=€ =€x=€P=€(=€=€Ø<€°<€ˆ<€`<€8<€<€à;€¸;€;€h;€@;€;€ð:€È:€ :€x:€P:€(:€ø9€Ð9€¨9€€9€P9€(9€9€Ø8€°8€ˆ8€X8€08€8€à7€°7€ˆ7€X7€07€7€è6€À6€˜6€p6€H6€ 6€ø5€Ð5€¨5€€5€P5€(5€5€Ø4€°4€ˆ4€`4€84€4€è3€À3€˜3€p3€H3€ 3€ø2€Ð2€ 2€p2€@2€ 2€2€Ø1€°1€ˆ1€`1€81€1€à0€À0€˜0€p0€H0€(0€0€à/€À/€˜/€p/€P/€(/€/€Ø.€¨.€ˆ.€h.€H.€ .€.€Ø-€°-€ˆ-€`-€0-€-€Ð,€ ,€p,€@,€,€è+€¸+€ˆ+€X+€(+€ø*€È*€˜*€h*€@*€*€à)€°)€€)€P)€ )€ø(€È(€˜(€h(€8(€(€Ø'€°'€ˆ'€`'€8'€'€è&€À&€˜&€p&€H&€ &€ø%€Ð%€¨%€€%€X%€0%€%€à$€¸$€$€h$€@$€$€ð#€È#€ #€x#€P#€(#€#€Ð"€ "€-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1àð 10€0€`€`Àñà33ÀÀ  @0A°H€ð````ns€a€`À`À`À`À`À`Àa€s€n````à€`8 €¿ @@AI€àð 10€0€`€`Àñà€€üü  @0API€à>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ33 €¿PA I€à>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ! €¿PAàI€à>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ€€ €¿PA(J€à>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ 80 €¿PApJ€ÀÞs€q€ÐÀØÀÈÀÌÀÄÀÆÀc€s€ÀÀþþ €¿€?@A¸J€ÿðÿðÌÌ €¿À`AøJ€s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€33 €¿@A0K€s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€'€ €¿@ApK€s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€! €¿@A°K€s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€€€ €¿@AøK€s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€ 80 €¿@A@L€ñà`À`À`À`À`À`À`À`ÀqÀo€ç'€ €¿PAˆL€s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€Æ<q€À €¿@AÈL€x0000000000pÌÌÀ@M€x0000000000p„Hx0À@@M€ð``````````à€`8€¿À@xM€x0000000000p0àÀÀ@°M€p€àÀÀÀÿ€Á€A€c33 €¿0AèM€p€àÀÀÀÿ€Á€A€c! €¿0A(N€p€àÀÀÀÿ€Á€A€c  €¿0ApN€p€àÀÀÀÿ€Á€A€cp` €¿0A¸N€<fp€àÀÀÀÀÀA€c€ÿøÿø €¿À@0AO€pðûøÇ„ÃÃc;ü c g˜<𠀿€AHO€q€ûÇÃÃc;cg>"" €¿0A€O€q€ûÇÃÃc;cg>ff €¿0AÈO€q€ûÇÃÃc;cg>\: €¿0AP€q€ûÇÃÃc;cg>B$< €¿0AHP€q€ûÇÃÃc;cg>  €¿0AP€q€ûÇÃÃc;cg>p` €¿0AØP€çl€lÀ`À`ÀaÀa€c€glca€a€a€a€3 €¿@A Q€ü000?À0p00000000p?À000ü €¿pAhQ€à€€€€€€À@` 080 ü?Àp0ÀÀ€A°Q€à00000000000000ü00€¿AR€à00000000000000ü`À€ÿðÿð€¿APR€à00000000000000üÀp0€¿A R€à00000000000000ü@€€¿AðR€ 'à88hdÂÂÁÁÀƒÀƒÀC`F`&88䀿€?A@S€€@ÀÀa€3 3a€ÀÀ€@ À€¿`AˆS€à88``ÀÀÀÀÀÀÀ``88à``€¿AÀS€à88``ÀÀÀÀÀÀÀ``88àà€¿AT€à88``ÀÀÀÀÀÀÀ``88à`À€€¿A`T€à88``ÀÀÀÀÀÀÀ``88àÀp0€¿A°T€à88``ÀÀÀÀÀÀÀ``88à@€€¿AU€ø   4 d d Ä!„!„#&&,880ðà€¿APU€à8ÿ8àˆA U€ü000000000000000üÌÌ€¿AèU€~~f<€¿A V€ü000000000000000ü@0 €¿AXV€ü000000000000000ü0àÀ€¿AV€ÿø000000@0@?À0@0@000000ÿð€€ €¿pAÈV€ÿø000000@0@?À0@0@000000ÿð À€ €¿pAW€ÿø000000@0@?À0@0@000000ÿðÀÀ €¿pAhW€ÿø000000@0@?À0@0@000000ÿ𠀿pA¸W€€ ÀÀÀà88``ÀÀÀÀÀÀÀ``8 <䀿À@€AX€ùÿð0`0````à€ `€€`€`€``` ` à`ÿà¨AXX€ü€0   ø 000``ÀÀ€À  ÀˆA°X€ü€0   ø 000``ÀÀ€00ˆAY€ü€0   ø 000``ÀÀ€àˆApY€ü€0   ø 000``ÀÀ€`À€ˆAÐY€>cÁÃÃàp08 ü€0   ø 000``ÀÀ€Àp0ˆAPZ€ €"2 qŽˆ†ŒÂ ` 00ŒL 8ü€0   ø 000``ÀÀ€ À€ˆAðZ€€¿ @0A8Z€A¸Z€0~" ûF!&!œ À @ `  0` €¿A˜[€0ÿD d$û! !„ À @ `  0` €¿Aà[€ˆÌf3€€3f̈ À€¿@A(\€üxÌÌÌÌÌx €¿ÁA`\€ø  `  €¿àÀà@\€xÌ <0€¿À@AÀ\€ÀÀÀÀ@ÜH€ 9yyùùùyy9€ €¿ @0A]€@àÀ@@\à~ÀqÀ`À`À`À`À`À`À`À`ÀáÀ €¿ @PAX]€ÀPÁA,I€pˆŒ 0ŒL8 àÀà@À]€üD 0 ŒL8 àÀà@ð]€ÿðÿðÿðÿ𠀿`A ^€8D‚‚‚D8€¿ ÁA`^€€¿`ÁA|I€ð0`GÂ1€‚ €‚@€ƒà€‚0€‚€Â€B1gã0ð€¿˜A¨^€€¿ ÀAÔJ€00000ÿðÿ𠀿@À`A _€€€3fÌÌf3€€ À€¿PAP_€~vÌÌ| Ìx ÁAˆ_€ð0aÃGqÄ€Œ€ˆ€ˆ€ˆ€Œ€Ä€G1aã0ð€¿˜A¸_€€¿`ÁA K€8db8tâÇN<8p`F&À@@A0`€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ@h`€Ààà€ € À@`0 p0ø|`A `€À`îàÀ1€`À`À`À`À1€ÀîàÀ` €¿@ÀPAè`€瀾Àx@000000ü00001€€ €¿@A a€@@>p€ÐÈÈÈÄÄC€c€ €¿@@Aha€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€À @A¨a€À@ÚH€ƒ€ÇÀ|`8 €¿ ÀPAb€à0  0à€¿ @ A(b€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ@`b€ 0 À 0 €¿ @ A˜b€ÿÃap08†Ãÿ €¿ AÐb€àð 10€0€`€`Àñà  @0Ac€ñà`À!€3€ 91€`Àñà €¿PAHc€88(dd1d0Â0Â`Â`Ãñç€ ˆA€c€10€0€`€`Àñà 0AÈc€à>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ €¿PAd€2000000000þp0à@8d€øÆƒ|pàÂf> €¿ Ahd€ð````````vnæ €¿A˜d€À€€€€€s€a€Á€Á€Á€Á€Á€Á€a€s€€ €¿ @@AÈd€ð````ns€a€`À`À`À`À`À`Àa€s€î €¿ @@Ae€s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€ €¿@AXe€ñà`À`À`À`À`À`À`À`ÀqÀo€ç €¿PAe€ñãÀ`Á€`Á€`Á€`Á€`Á€`Á€`Á€`Á€qã€oŸç €¿ AÈe€ð```````````````à€¿À@f€óàaÀc€gnlxhdfcgÀ````à €¿@AHf€Àà00000000000000p00 @À@f€ð``````````à``€¿À@Èf€ñà`À`À`À`À`À`À`À`ÀqÀo€g````à €¿PAg€?ñÀÀ`À ``?À`0>3a€a€a€a€3À €¿ @@AHg€x0000000000þ000à@g€p€àÀÀÀÿ€Á€A€c €¿0AÈg€Às€a€Á€Á€Á€Á€Á€Á€a€s€€€€€€€ €¿@Ah€p€àÀÀÀÀÀA€c€ €¿0AHh€^s€a€`À`À`À`À`À`Àa€s€n````à €¿@A€h€q€ûÇÃÃc;cg> €¿0AÈh€`à€À`À@Áà@i€  @PA$O€€€Á€Ac"6 €¿Á0AHi€øø€¿€@A€i€ 00 ``@ÀÀà@¸i€øÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀøÀ€@Aði€ÿøàp08€À€À€àÀpÿ𠀿pA(j€à€€€€€€À@` 080 ü?€Apj€üÀ0€ 8pàÀÀ  ~€A¸j€ƒƒƒ€‡€F€FÀF@L@L` ,` , , 000ü~~¸Ak€€€€À@`  0   00ü€ˆAhk€à00000000000000ü€¿AÀk€Àƒƒà ÿü€¿€Al€žñ€ÀÀ€`€``àÀ€xàÀ@À@ÀÀcÀ@ €¿PAPl€ü0080p0`0À1À3€?À0p0008008000pÿÀ€¿€A˜l€8pàÀà88``ÀÀÀÀÀÀÀ``88à€¿ @Aàl€ü0000000?À0p00000000pÿÀ €¿pA0m€à88``ÀÀÀÀÀÀÀ``88à€¿Axm€ø   4 d d Ä!„!„#&&,880ð€¿AÀm€ø!ø `` `` Ð` Ð`!ˆ`!ˆ`#`#`&`&`,`,`8`8`0àðø€¿°An€ÿø000000000000000ü €¿`A`n€ü00080p0à1À3€?>31€0À0`000ü~€¿ˆA¨n€xÌÆ€ €¿0Aðn€ü000000000000000ü€¿A8o€ü€0000000?þ0000000ü€€¿˜Apo€à88` ` À À À?ÀÀÀÀ``8 <䀿AÈo€ü000000 0 ?à0 0 000000ÿ𠀿`Ap€ÿø000000@0@?À0@0@000000ÿ𠀿pAXp€ÿÀ0p080 0 00000000 0 080pÿÀ€¿ˆA p€à88``ÀÀÀÀÀÀÀ``8 <䀿€Aèp€ÿà0x00 0 0 008?à0@00000000pÿÀ€¿€A0q€ü€0   ø 000``ÀÀ€ˆAxq€ð 0aÞc{Æ9€Æ€ÆÀÆ@Æ @à @ÃŒ@áü@`ìÀp€8€øÀ@@°AÐq€00 ÃÃÆ|À0A0r€ÀpÀ`ÀpÀ €¿€¿PAhr€ÿðÿðÿðÿ𠀿€À`A r€`ÀpÀpÀ` €¿€¿PAÐr€À` àÀÀÀÀ@@à@s€ÀÀÀÀ ÀÀ@8s€ð€€€sÀaÀÀÀÀÀÀÀÀÀÁÀa€w€ €¿@Ahs€s€á€ÀÀÀÀÀÀAÀa€73a€a€a€3 €¿@A°s€ €€ÀÀÿÀÀ €¿@Aøs€{€a€àÀÀÀÀÀÀÀÀÀÁ€ó€î`p0À €¿@A@t€~ã€Á€ÀÀÀÀÀ€€~x` €À €¿@Aˆt€ÿÀÿÀÃCc#3  €¿@AÐt€xæÃ€€€€ ƒƒG~ €¿@Au€ÿ€ÿÀ`@0 €€€€C€ €¿@A`u€ÿxÀ@A¨u€3a€a€áÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀa€a€3 €¿@Aàu€ÀÀÀ`` 00 €?@@à@(v€ÀÀ@ÜQ€ €¿ÀÀ`A|R€À` àÀÀ@@à@ v€ÿðÿ𠀿€¿`AÈv€É€ë€ë€É€ ÀÁ@Aw€€@ 0 0 @€€¿ @A8w€0 ``ÀÀÀÀÀÀÀÀ`` 0€¿ @Apw€À` àÀ@À@ÁA¨w€<<~ááÀÀÁÀÁ c 7>€À@@ À€€¿AÐw€0<r a`€`€0€€xÀä@Â`Á0Áa3ü €¿˜Ax€?åÀÄÀ„`„``àÀ€<tdd d`4à€ @@Ahx€"""""ÿÀÿÀàà€€€€€ €¿PA¸x€ˆÌÌÌÌ€¿@Á Ay€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀ@ÀA(y€À@ÛH€`y€@y€y€àx€˜x€Hx€øw€°w€ˆw€Pw€w€àv€¨v€€v€`v€@v€v€Àu€ˆu€@u€øt€°t€ht€ t€Øs€s€Hs€s€èr€°r€€r€Hr€r€°q€Xq€q€Èp€€p€8p€ðo€¨o€Po€o€Ðn€ˆn€@n€èm€ m€Xm€m€Àl€xl€0l€èk€ k€Hk€ðj€˜j€Pj€j€Ði€˜i€`i€(i€i€àh€¨h€`h€(h€àg€¨g€pg€(g€àf€¨f€pf€(f€ðe€¨e€pe€8e€ðd€¨d€xd€Hd€d€àc€¨c€`c€(c€àb€°b€xb€@b€b€àa€Àa€ˆa€Ha€a€È`€€`€H`€`€ð_€˜_€h_€0_€_€à^€ˆ^€h^€@^€^€Ð]€ ]€€]€8]€è\€È\€ \€p\€@\€\€À[€x[€X[€8[€˜Z€Z€°Y€PY€ðX€X€8X€èW€˜W€HW€øV€¨V€pV€8V€V€ÈU€€U€0U€àT€T€@T€ðS€ S€hS€ S€ÐR€€R€0R€àQ€Q€HQ€Q€¸P€pP€(P€èO€¨O€`O€(O€àN€˜N€PN€N€ÈM€M€XM€ M€ðL€¨L€hL€ L€ØK€K€PK€K€ØJ€˜J€PJ€J€ÀI€€I€0I€àH€pH€à €y€GLUT: Warning in %s: (unamed)GL error: %sGLUT: Fatal Error in %s: GLUT: Fatal API Usage in %s: invalid glutVideoResizeGet parameter: %dglutEstablishVideoResizing: video resizing not possible. glutSetWindow attempted on bogus window.redisplay needed for window %d, but no display callback.The following is a new check for GLUT 3.0; update your code.failed to create OpenGL rendering context.SetPixelFormat failed during window create.pixel format with necessary capabilities not found.cannot create windows in game mode.destroying menu window not allowed while menus in useNULL display callback not allowed in GLUT 3.0; update your code.glutReshapeWindow: non-positive width or height not allowedmenu manipulation not allowed while menus in use.glutSetMenu attempted on bogus menu.out of memoryCurrent menu has no %d item.cannot attach menus in game mode.zDXÇ€ø€ø€CorExitProcessmscoree.dllUUUUUUÅ¿³ ?\>è *¿ÞlyãÇ>§ß/´æZ¾¸;¤ù²àå=UUUUUU¥?giÁlÁV¿ìô ú>öe¡O~’¾x«7¶î!>B^ÌFÛ©½ƒÈÉm0_ä?@Tû!ù?1cba´Ð=`a´Ð=sp.Š£;.Š£;ÁI %šƒ{9ƒÈÉm0_ä?@Tû!ù?1cba´Ð=`a´Ð=sp.Š£;.Š£;ÁI %šƒ{9UUUUUUÅ?\>è *?§ß/´æZ>giÁlÁV?öe¡O~’>B^ÌFÛ©=€„A€€sincossqrte+000runtime error TLOSS error SING error DOMAIN error R6034 An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information. R6033 - Attempt to use MSIL code from this assembly during native code initialization This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. R6032 - not enough space for locale information R6031 - Attempt to initialize the CRT more than once. This indicates a bug in your application. R6030 - CRT not initialized R6028 - unable to initialize heap R6027 - not enough space for lowio initialization R6026 - not enough space for stdio initialization R6025 - pure virtual function call R6024 - not enough space for _onexit/atexit table R6019 - unable to open console device R6018 - unexpected heap error R6017 - unexpected multithread lock error R6016 - not enough space for thread data This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. R6009 - not enough space for environment R6008 - not enough space for arguments R6002 - floating point support not loaded Microsoft Visual C++ Runtime Library ...Runtime Error! Program:   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~À À–ÀÀŽÀÀÀ‘À’À“À €@€-DTû!ù?Pû!ù?`´Q>\3&¦‘<À(null)(null)EEE50P( 8PX700WP `h````xpxxxx€€†€€†€†‚€EEE………00€P€ˆ('8PW€700PPˆ (€ˆ€€`h`hhhxppwppGetProcessWindowStationGetUserObjectInformationAGetLastActivePopupGetActiveWindowMessageBoxAUSER32.DLL ((((( H„„„„„„„„„„‚‚‚‚‚‚ h(((( H„„„„„„„„„„‚‚‚‚‚‚ H€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿHH:mm:ssdddd, MMMM dd, yyyyMM/dd/yyPMAMDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSun_nextafter_logb_yn_y1_y0frexpfmod_hypot_cabsldexpmodffabsfloorceiltanatan2atanacosasintanhcoshsinhlog10logpowexp1#QNAN1#INF1#IND1#SNANSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecÿÿÿÿÿÿ?Cÿÿÿÿÿÿ?ÃCONOUT$’0!PÖü™!ÖÞè™!ÞЙ!TÞЙ!*¸™!t*¸™!T4ÞЙ!xhÖÞè™!ÔPÖü™' '¨˜ˆ À`!0fd­!  t40fd­ dT4òÐÀp!`n€š!ô ä Ä`n€šþþÔ â p`P0!ô ä Ô Ä td4 £ ›! £ ›!£ O!ôš!ô £ O!ôš! ä Ô Ä td4 £ ›ò P dT 4 RðàÐÀp! !d !T !4 !2ðàÐÀp!Ð/0€›!Ä Ð/0€›T4 rÐ p `4d T2p!À4Ø4p§!4À4Ø4p§!ð5ú5œ!ú5;6œ!T ú5;6œ!tð5ú5œ  4 ’`!ð;<`œ!t4ð;<`œ!11t4ð;<`œ2`!`B‰B¸œ!‰BC œ!dT‰BC œ!t4`B‰B¸œ ÖÀ!ôD¿D!D¿D!ôD¿D’àÐÀp ` P 0!`GbHh!d`GbHh!dT`GbHh!&&Td`GbHh  4 2pT 42À p ` t dT42À!PN‹VØ!4PN‹VØ!4PN‹VØÒ0!t d €\À\@ž!À\¶]$ž!ÄÀ\¶]$ž!bbt d T€\À\@ž  ¢ðàÐ0CÖ4B!pf¢fd­!  tdpf¢fd­d 4R pd 4 r ph 4 Rpxh 4 ’pdT4òp!Ðp^q$Ÿ! øÈ¸˜ ˆ dÐp^q$ŸNNèHØ3¨)x "h p0xh 4 rpˆh‚ˆ"hR0 tdT 4 ’ÀR0d T 4 rpggøaè[ØSÈ G¸ B¨ =˜ (ˆ #xhd&T%4$ ÐÀp!p€—€¥!—€©€T !©€À€< !t©€À€< !dT—€©€T !Ä p€—€¥66ˆ5(x6$h7 4{ pðàÐÀp`PBp0¢‰‰t 0   ðàÐp`P0  4 2p!t T Оòž¡!FFt T Оòž¡  4 ’`d T 4Rp 4 òpÖp!À±ß±|¡!tÀ±ß±|¡!tÀ±ß±|¡  4 2` *0Ö@ t d T 4 rÀ t d T 4RÀ²0!@¿Ÿ¿ø¡!d@¿Ÿ¿ø¡T 4 2Ð À pt tt odjT e4 ¢Â!ÐÄ Å¨¢!td T ÐÄ Å¨¢!FŘÅ|¢!tFŘÅ|¢!d T ÐÄ Å¨¢!T ÐÄ Å¨¢  BàÐÀ0 tdT4’àÐÀbÖ  4 ’pÖ@42 p d4rðàÐÀpKÓTÔ ± t d 42àÐÀÖÖ—×B±R0íÙøÙV±xhB++xhÒp))xhâ  ¢d 4Rpãâ¨ão± t d 4 RàÐÀ`ä+凱bÀp`0æÕ柱µ t d 4RÀ-ìôì·±øìr0 tdT4’ðÐÀ Àp`0Öp ÄtT4’ðàÐ âÀp`0Ö`òÀp`P0ÖpÔ t 4RàB20$d´4³° pÖp  4 2pòKÓ±4r Ð Àp`PÖ8 Ä t d 4RÐaÓ±20ë  ì±  4 2p¾ É ²Þ  %²42pb  ²¥ Ü %²dT² p  ¼0td42Àtd42Ð/o>² B× `²  d T 4 rðàÐÀp BÍÑÑ d4rðàÐ À p”'² b¨·²·   t dT42À d T 42ÐÀpbdT4²pT 4 r p,,ˆú'xû#hüdT4úðàÐÀp’0d42 p$hp`P0ÖÐd T42p Ä t d 4 ðàÐh,t,/t42 À  20dT42pdT42p) 4dZðà Ð Àp`PÖÈ2Pd 4R À==¿² Ä t d RðàÐÃ> ?زŠ>&?³ t d T 42àÐÀd 4 R p t d T 4 rÀ  4 2p  T Òp 4 òpÖx  4 Rp  t4 òp`0Öp T4ràÐÀ p `- Etd4C² ðàÐÀPÖXd4Ò p1 5#td43rð à ÐÀPÖ8  202 0›$ 53 ð à ÐÀp`0PÖXd4² p 4RðàÐÀ p ` PBpP  t d 4 2ðàÀ‡kk!³kt d42À d 42 p{p‚pP³‚p d4 RðàÐÀp&rYr{³/ 4qfðà Ð Àp`PÖ  d4 RðàÐÀp¼zíz{³4²p ` PRP4 R p)’³4 R À p `Ó€ª³d 4 r prðà Ð Àp`0+ 4 ðàÐ À p `PÖ + 4ðàÐ À p `PÖ bÖ(' EC ð à ÐÀp`0PÖpd 4 ’ pT42 p Ä td42Ы¨˨Á³ÂÖPdT 4 ’pd 4 RÐÀp'­L­ª³!T 42Ð p `Ö‚B°³L´¸Åp®¼´xÀ±ª¶Ã¨®·°À ²Pº(Äø­V»ÀÔº²º ºŽº€ºlº\ºæºöº»»2»F»ȺV´r´†´œ´ª´f´~¿l¿Z¿J¿4¿$¿ ¿ô¾ä¾ʾ°¾˜¾~¾l¾^¾L¾6¾*¾¾¸¶ȶܶø¶ô½À½®½†½r½f½V½L½>½.½½ ½½ö¼ê¼ܼμ¸¼¢¼’¼†¼t¼f¼P¼<¼¼¼ê»Ò»Ä»²»ª»–»ˆ»|»l»`»¿¢¿À´¿ο࿚½ò¿(À8ÀHÀ^ÀnÀܽ|ÀÆ´â´ò´þ´ µ µ0µ@µHµVµdµnµ|µе˜µ¨µ¸µȵÖµäµòµ¶ ¶¶"¶2¶>¶L¶^¶p¶ˆ¶–¶Ò´¸¸ì·Þ··²·ž·"¸v·n·^·L·>·2· ·2¸D¸V¸f¸€¸˜¸¤¸¸¸ʸÖ¸æ¸ö¸¹¹*¹<¹N¹\¹j¹x¹†¹’¹ ¹¸¹ʹعâ¹ö¹º"º.º@ºŠ·º>´.´´´ú³è³joyGetDevCapsAjoyGetPosExjoyReleaseCapturejoySetThresholdjoySetCaptureŠtimeGetTimeWINMM.dllgluNewQuadric*gluSphere&gluQuadricNormals%gluQuadricDrawStylegluCylindergluErrorStringGLU32.dll glBitmapÊglPixelStoreioglGetIntegerv`glFinish|glGetString[wglDeleteContextóglReadBufferIglDrawBufferQglEndHglVertex3fv¾glNormal3fv glBeginGglVertex3f½glNormal3fÒglPopAttribÏglPolygonMode×glPushAttrib<glTranslatef?glVertex2fÔglPopMatrix\glEvalMesh2°glMapGrid2f¬glMap2fglScalefÿglRotatefÙglPushMatrixOglEnablemglGetErrordwglMakeCurrent_wglGetCurrentDC^wglGetCurrentContextVglViewportYwglCreateContextOPENGL32.dllëLoadLibraryAöGetModuleHandleAOQueryPerformanceFrequencyNQueryPerformanceCounterKERNEL32.dllÎIsWindowVisiblevSetCursorÖLoadCursorA WindowFromPointGetCursorPosGetDCGetDesktopWindow¨DispatchMessageAÝTranslateMessagePeekMessageA MsgWaitForMultipleObjectsÀShowWindowAdjustWindowRectGetClientRectEClientToScreen¯SetWindowPosªSetWindowLongAƒGetWindowLongAŒGetWindowRect"ChangeDisplaySettingsAàEnumDisplaySettingsAPReleaseDCqGetSystemMetrics7RegisterClassAÚLoadIconA DestroyWindow"PostMessageAgCreateWindowExAGetClassInfoA³SetWindowTextA×TrackPopupMenueCreatePopupMenužDestroyMenu AppendMenuA§InsertMenuARRemoveMenuÕEndPaintBeginPaintAChildWindowFromPointXScreenToClient3GetKeyStateÒToAscii8GetKeyboardStatekSetCaptureOReleaseCapture¤SetTimerÑKillTimer•DefWindowProcAxSetCursorPosUSER32.dllÐDeleteObjectChoosePixelFormatžSwapBuffersìGetPixelFormatƒSetPixelFormatÑDescribePixelFormat`GdiFlushCRealizePalette_SelectPalette£UnrealizeObjectGCreatePaletteùGetSystemPaletteEntriesSetPaletteEntriesµGetDeviceCapsGDI32.dllHeapAllocæGetLastError¡HeapFree¤HeapReAllocùGetModuleHandleW%Sleep GetProcAddressExitProcessÚEnterCriticalSectionéLeaveCriticalSectionBUnhandledExceptionFilterSetUnhandledExceptionFilter‰RtlCaptureContext®GetCurrentThreadId@FlsSetValuepGetCommandLineA‘WriteFile;GetStdHandleôGetModuleFileNameA¥HeapSetInformationŸHeapCreate HeapDestroy\GetCPInfoSGetACPGetOEMCPÕIsValidCodePageÖEncodePointer¸DecodePointer?FlsGetValue>FlsFreeðSetLastError=FlsAlloc1TerminateProcessªGetCurrentProcessËIsDebuggerPresent—RtlVirtualUnwindRtlLookupFunctionEntry¿DeleteCriticalSection–RtlUnwindExµInitializeCriticalSectionAndSpinCount¦HeapSize~WideCharToMultiByteìSetHandleCountØGetFileType9GetStartupInfoAKFreeEnvironmentStringsAÀGetEnvironmentStringsLFreeEnvironmentStringsWÂGetEnvironmentStringsWfGetTickCount«GetCurrentProcessIdOGetSystemTimeAsFileTimeÛLCMapStringAMultiByteToWideCharÝLCMapStringW=GetStringTypeA@GetStringTypeWèGetLocaleInfoARCompareStringAUCompareStringWÕSetEnvironmentVariableATRaiseExceptionäSetFilePointer„GetConsoleCP–GetConsoleModeBFlushFileBuffersSetStdHandle†WriteConsoleAšGetConsoleOutputCPWriteConsoleWCCloseHandleyCreateFileA¹I^Åww¸À”ÂpÄÀ¤–?0aÀ<€¦ §ðªàpà§©  ¤–p•Ф€—`«`b  ˜€Là™€kð;pd`A M0LPNp¥ g°‹°i  œÀ1Àe€\p\@1\@\Àc eÐePj B0;à à ð˜p˜€i€™œ@›@i4`i 4PœPªðlpˆðš›P0 Š Š¥0Œ›ŠjàœànÀppzpàmP‡Ð°s@€à€pe f Šp€Ð@°‚@‚Ð1°h Š Šà‰Àš°Š@šPn°p`z`pmp‡À@siÅ‚ÅŪŽÅÊÅÛÅêÅùÅ ÆÆ.Æ@ÆVÆjÆ{ƊƞƯƿÆÑÆàÆîÆüÆ ÇÇ,ÇAÇXÇnÇ}ÇǠǨǵÇÁÇÒÇàÇðÇÿÇÈÈ2È;ÈOÈeÈ|ÈȠȱÈÄÈÑÈãÈðÈÉÉ$É2ÉIÉ_ÉmɀəɫÉÊÉâÉñÉÊÊ'Ê7ÊIÊVÊdÊuʆʒʠʳÊÊÊÚÊéÊ÷ÊËË0ËDËTËdËyˈˠ˸ËÐËàËòËÌÌ-Ì=ÌMÌbÌw̟̯̅̒ÌÂÌÕÌåÌúÌÍÍ)Í=ÍPÍ_ÍnÍ‚Í  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvglut64.dll__glutCreateMenuWithExit__glutCreateWindowWithExit__glutGetFCB__glutInitWithExit__glutSetFCBglutAddMenuEntryglutAddSubMenuglutAttachMenuglutBitmapCharacterglutBitmapLengthglutBitmapWidthglutButtonBoxFuncglutChangeToMenuEntryglutChangeToSubMenuglutCopyColormapglutCreateMenuglutCreateSubWindowglutCreateWindowglutDestroyMenuglutDestroyWindowglutDetachMenuglutDeviceGetglutDialsFuncglutDisplayFuncglutEnterGameModeglutEntryFuncglutEstablishOverlayglutExtensionSupportedglutForceJoystickFuncglutFullScreenglutGameModeGetglutGameModeStringglutGetglutGetColorglutGetMenuglutGetModifiersglutGetWindowglutHideOverlayglutHideWindowglutIconifyWindowglutIdleFuncglutIgnoreKeyRepeatglutInitglutInitDisplayModeglutInitDisplayStringglutInitWindowPositionglutInitWindowSizeglutJoystickFuncglutKeyboardFuncglutKeyboardUpFuncglutLayerGetglutLeaveGameModeglutMainLoopglutMenuStateFuncglutMenuStatusFuncglutMotionFuncglutMouseFuncglutOverlayDisplayFuncglutPassiveMotionFuncglutPopWindowglutPositionWindowglutPostOverlayRedisplayglutPostRedisplayglutPostWindowOverlayRedisplayglutPostWindowRedisplayglutPushWindowglutRemoveMenuItemglutRemoveOverlayglutReportErrorsglutReshapeFuncglutReshapeWindowglutSetColorglutSetCursorglutSetIconTitleglutSetKeyRepeatglutSetMenuglutSetWindowglutSetWindowTitleglutSetupVideoResizingglutShowOverlayglutShowWindowglutSolidConeglutSolidCubeglutSolidDodecahedronglutSolidIcosahedronglutSolidOctahedronglutSolidSphereglutSolidTeapotglutSolidTetrahedronglutSolidTorusglutSpaceballButtonFuncglutSpaceballMotionFuncglutSpaceballRotateFuncglutSpecialFuncglutSpecialUpFuncglutStopVideoResizingglutStrokeCharacterglutStrokeLengthglutStrokeWidthglutSwapBuffersglutTabletButtonFuncglutTabletMotionFuncglutTimerFuncglutUseLayerglutVideoPanglutVideoResizeglutVideoResizeGetglutVisibilityFuncglutWarpPointerglutWindowStatusFuncglutWireConeglutWireCubeglutWireDodecahedronglutWireIcosahedronglutWireOctahedronglutWireSphereglutWireTeapotglutWireTetrahedronglutWireTorus†ˆ‹ˆ†…„…„„‚ƒ‚ƒ ÿÿÿÿÿÿÿÿÿÿÿÿ,,ÿÿÿÿÿÿÿÿ@a€p¬€€`Ú€“îBMU€ p¬€€À€“îBMU€¿€?€?€¿€?€¿€?€¿€?€¿€?€¿P–¿@ÄY?P–?@ÄY?P–¿@ÄY¿P–?@ÄY¿@ÄY?P–?@ÄY?P–¿@ÄY¿P–?@ÄY¿P–¿@ÄY?P–?@ÄY¿P–?@ÄY?P–¿@ÄY¿P–¿           ׳Ý?׳Ý?׳Ý?׳Ý?׳ݿ׳ݿ׳ݿ׳Ý?׳ݿ׳ݿ׳ݿ׳Ý?fghi   !"#$%&'(````abcdeeeejklmnopqrstuvvvv|zwy{~}x('&%)*+,-./01234567856789:;<=>?@ABCDEFGHIJKLMNOPQRSPQRSTUVWXYZ[\]^_ÍÌL>ÍÌ,@ÍÌL>B`å½ÍÌ,@B`å=ÍÌL¾ÍÌ,@ÍÌL¾ÍÌ,@33«?"@33«?w¾?¿"@w¾??33«¿"@33«¿"@¸?"@¸?{N¿"@{N?¸¿"@¸¿"@À?š™@À?= W¿š™@= W?À¿š™@À¿š™@à?ð?à?Ház¿ð?Ház?à¿ð?à¿ð?@Í̬?@)\¿Í̬?)\?ÀÍ̬?ÀÍ̬?@fff?@)\¿fff?)\?Àfff?Àfff?Àfff?@ffæ>@)\¿ffæ>)\?Àffæ>Àffæ>À?fff>À?= W¿fff>= W?À¿fff>À¿fff>À?š™>À?= W¿š™>= W?À¿š™>À¿š™>ÍÌÌ¿š™@ÍÌÌ¿š™™¾š™@À¿š™™¾@À¿@33Àš™@33Àš™™¾š™@ Àš™™¾@ À@ÍÌ,Àš™@ÍÌ,Àš™™¾š™@@Àš™™¾@@À@ÍÌ,Àffæ?ÍÌ,Àš™™¾ffæ?@Àš™™¾ffæ?@Àffæ?ÍÌ,Àš™É?ÍÌ,Àš™™¾š™É?@Àš™™¾Í̬?@ÀÍ̬? À? Àš™™¾?š™)Àš™™¾p?š™)Àp?Àš™™¾fff?33ó¿š™™¾š™?33ó¿š™?š™Ù?ff¶?š™Ù?Ãõ(¿ff¶?š™Ù?Ãõ(¿š™?š™Ù?š™?ff&@ff¶?ff&@Ãõ(¿ff¶?ffF@Ãõ(¿33S?ffF@33S?33@ff@33@€¾ff@š™@€¾š™@š™@š™@ÍÌ,@š™@ÍÌ,@€¾š™@33S@€¾š™@33S@š™@333@ff@333@€¾ff@š™a@€¾š™@š™a@š™@š™9@ff@š™9@š™¾ff@ÍÌ\@š™¾ÍÌ @ÍÌ\@ÍÌ @333@š™@333@š™¾š™@ÍÌL@š™¾š™@ÍÌL@š™@š™I@ÍÌL?š™I@ÍÌL?ff澚™I@ffæ>ÍÌL¿š™I@ÍÌL¿š™I@ff6@33³?š™@33³?9´H¿š™@9´H?33³¿š™@33³¿š™@ÍÌÌ>33#@ÍÌÌ>B`e¾33#@B`e>ÍÌ̾33#@ÍÌ̾33#@ff¦?33#@ff¦?5^:¿33#@5^:?ff¦¿33#@ff¦¿33#@ff¦?š™@ff¦?5^:¿š™@5^:?ff¦¿š™@ff¦¿š™@ff¶?ºIL¿À?š™™=ff¶?ºIL?ff¶¿À¿š™™=ff¶¿À?= W¿š™™== W?À¿š™™=€?€?€?€?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ u˜s˜´Ô€2¢ß-™+Í] ÒfÔÿÿÀ€À€\L€\L€\L€\L€\L€\L€\L€\L€\L€\L€H‹€‹€ 芀 PŠ€Š€è‰€À‰€‰€X‰€0‰€øˆ€Àˆ€˜ˆ€xˆ€ˆ€ ؇€!à†€"@†€x(†€y†€z†€ü†€ÿð…€        ! 5A CPR S WY l m pr € ‚ ƒ„ ‘)ž ¡¤ § ·Î×   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZÀ値`‚y‚!¦ß¡¥Ÿàü@~€ü¨Á£Ú£ þ@þµÁ£Ú£ þAþ¶Ï¢ä¢å¢è¢[þ@~¡þQQÚ^Ú _ÚjÚ2ÓØÞàù1~þ”‘€þÿÿÿCë€ë€ë€ë€ë€àô€€ ”€ •€`ó€ë€ë€Àå€ÿÿÿÿ  ¢æ6“DTŸ WGS7Àm)f<Q޽®Å†r: ݸ$î‚ÑHχëri>¢#}.íH:œÀk~™u9 3}œøïù ±þ—ÿàf¼ñbZ)ÑÛ6ûòò Ýôfyþ‹už¬úåųA9Þ¥¤ê¯µì5ÐÁoÿÿÿÿÿÿÿÿ€ H€8€€’‘€ð—€ì—€è—€ä—€à—€Ü—€Ø—€З€È—€À—€°—€ —€”—€ˆ—€„—€€—€|—€x—€t—€p—€l—€h—€d—€`—€\—€X—€P—€@—€4—€,—€t—€$—€—€—€—€—€ð–€à–€Ø–€Ô–€È–€°–€ –€ `ó€.Ðô€p €p €p €p €p €p €p €p €p €àô€.¬˜€¨˜€¤˜€œ˜€”˜€Œ˜€!„˜€|˜€ t˜€l˜€d˜€Ø…€Ð…€Ô…€ `˜€ X˜€ P˜€H˜€@˜€8˜€0˜€(˜€ ˜€˜€"˜€#˜€$ ˜€%˜€&ø—€”&üÿÿ5 @ÿ€ÿÿÿ €pðñÿÿPSTPDT€÷€À÷€ÿÿÿÿÿÿÿÿðøÿÿÿÿÿÿÿ@È@ú@@œ @PÃ@$ô@€–˜@ ¼¾@¿ÉŽ4@¡íÌÎÂÓN@ ðžµp+¨­Åi@Ð]ý%åŽOëƒ@q–וC)¯ž@ù¿ D킹@¿<Õ¦ÏÿIxÂÓ@oÆàŒé€ÉGº“¨A¼…kU'9÷pà|B¼ÝŽÞùûë~ªQC¡ævãÌò)/„&D(ªø®ãÅÄúDë§Ôó÷ëáJz•ÏEeÌÇ‘¦® ã£F e u†uvÉHMXBä§“9;5¸²íSM§å]=Å];‹ž’Zÿ]¦ð¡ ÀT¥Œ7aÑý‹Z‹Ø%]‰ùÛgª•øó'¿¢È]Ý€nLÉ›— ŠR`Ä%uÍÌÍÌÌÌÌÌÌÌû?q= ×£p= ×£ø?Zd;ßO—nƒõ?ÃÓ,eâX·Ññ?Ð#„GG¬Å§î?@¦¶il¯½7†ë?3=¼BzåÕ”¿Öç?ÂýýÎa„wÌ«ä?/L[áMľ”•æÉ?’ÄS;uD;š¯?Þgº”9E­±Ï”?$#Æâ¼º;1a‹z?aUYÁ~±S|»_?×î/¾’…ûD?$?¥é9¥'ê¨*?}¬¡ä¼d|FÐÝU>c{Ì#Twƒÿ‘=‘ú:zc%C1À¬£Ð§`£õ£¥¤ ¤d­ ¤µ¤Ð§Фo¥t¨Ð¥}¦X§€¦§Ð§ §Ó§Ð§à§©´¡©Hª´¡PªêªÔ ðªY«¥`«¡«¥°«X¬¥`¬(­d­0­ß­¡ð­®¥ ®T®¥`®Ù®0¡à®Q¯Ð§`¯Á¯Ô Я(°Ð§0°º°¥À°!±¥0±¶±Œ©À±ß±|¡ß±;²h¡;²N²T¡N²\²D¡`²¶²Ô  ´š´ˆ¡ ´àµ”žàµ$·œ¡0·¸´¡ ¸C¹t¨P¹m¹d­p¹†¹d­¹á¹˜Ÿð¹ºd­º-ºd­0ºˆº¥º?»Ì¡@»4¿˜Ÿ@¿Ÿ¿ø¡Ÿ¿Ý¿ä¡Ý¿ø¿Ô¡À²Á ¢ÀÁ<Â¥@Â|ÂÔ €ÂÀÂp§ÀÂ2ÃŒ©@Ã’ÃЧ ÃòÃЧÄ8Äp§@ÄdÄ$¢ÐÄ Å¨¢ ÅFÅ”¢FŘÅ|¢˜Å\Æh¢\ÆrÆX¢rÆœÆ<¢œÆªÆ,¢`ÇÈЧÈUÈ0ª¤ËMÌ¥PÌÒθ¢ÔÎÏp§ÏžÏÔ¢ ÏsÐЧtÐ_Ñä¢`ÑÑ¥ÑÉÑ¥ÌÑâÑ¥üÑ/Òø¢0ÒiÒÔ lÒÓÔ Ó¦Ô£ÐÔ7Õ¥°ÕÖ¥Ö1Öd­pÖ²Ö¥´Ö¹×4£¼×Ó×d­ÈØiÙЧlÙ Úd£°Ú_Û„£`Û{Þ”£|Þ}ᤣ€áŠâ´£ŒâÂã¼£ÄãOåä£Påsåp§tå鿤ôæÖç¥Øçÿçd­è_è¥`èè¥èæèd­èèéd­é±é<¤¼êøë¥øëíD¤íMíЧPíÏíp¤Ðímîp¤ˆîÊäî;ñx¤<ñHò”¤Hòqö¬¤tö7ø€Ÿ8øùȤ ùdúà¤dúùúp§üú û\­ ûVûÔ Xû}ýø¤€ýÃýd­Äýþ ¥þ.þd­xþ˜þd­˜þ¸þd­¸þþþ¥ÿ:ÿ¥<ÿÎÿt¨Ðÿ³¥´p8¥pp¤w\¥xpx¥p˜d­˜ ЧT « ¥¬ ! ¨¥@ e d­h  È¥   Ô   Ä ¥Ä ù ü¥ü :¥<½¥ÀÉ0¦Ôù@¦ü¡„L¦“t¨¬”`¦”ØÔ ØÔ HÔ ÐŒ¦µ¬¦¸ÛȦÜød­üÊt¨Ìéd­‰è¦¤Ù§Ü&8§(”t¨”@§@§ (X§(np§p x§H!:"Œ§<"­"˜ŸÌ"?#˜Ÿ@#A(œ§D(©(ȧ¬(e)Чh)·*৸*E,ü§H,5/¨8/£/Ô ¤/Ú/p§Ü/­0H¨°0å0X¨è0/1¥011`¨„12t¨2é<ˆ¨ì<œ=´¨œ=>Ч>_>¥`>T?ܨ`?@¡@_B©`BVC8©XC EH©EÇE`©ÈEFFp¤HF¸Gl©¸GàGd­àGâHx©äHæIx©èIÁJŒ©ÄJšK˜©œK\L¤©hL\N¸©\NåN˜ŸèN½O˜ŸÀOPp§PMUЩPUæUø©èURXªTXÝXhªàXÊZ8ªÌZ[0ª[©[8ªH]]p¤]×]p¤ð]^@ªT^_Œ©_ž_”ž _zdHª|dehªefhª fÐixªÐijlœªll¥o̪¨oÏo\­Ðoýod­ppd­p5p¥8p¶pસp×p¥ØpmqÔ pq§r«¨rz8«z9{\«<{{¥{ÿ{p§|(~Œ«(~<~p§<~Å~Œ©È~>¤«@S€È«T€Ï€ð«ä€ç†¬è†ëŒ¬ìŒå•¬è•O¡8¬P¡£¡\¬¤¡)¤l¬„¤•¥­˜¥¦”ž¦þ¦˜¬0§ܧ°¬ܧ`¨p§`¨©À¬0©Dªð¬Dªµ«­À«|¬Ô |¬”­­”­Ë­¥Ì­ê¯@­ì¯'°\­(°c°d­°°þ°¬± ±¨¬ ±B±¬¨B±V±¬¨V±o±œ«o±‡±œ«‡±Ÿ±œ«Ÿ±·±œ«·±Ó±¬¨Ó±ì±¬¨ì±²¬¨²²¬¨%²>²¬¨>²Z²¬¨`²²¬¨²²œ«²¿²¬¨¿²ز¬¨زþ²¬¨³!³¬¨!³P³ªP³{³¬¨{³’³œ«’³ª³œ«ª³Á³œ«Á³Ú³¬¨(€H€`€x€€€¨€À€ Ø è ø ,Ahä”F¨ä PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDÀ|¦¦¦0¦8¦À¦à¦§ §P§€§°§à§¨@¨p¨˜¨À¨ð¨ ©P©€©°©à©ª@ªpª ªÐª«0«`««¸«à«¬@¬p¬ ¬Ð¬­0­`­­À­ð­ ®P®€®¨®Ø®¯8¯h¯˜¯È¯ø¯ÐÄ( X ˆ ¸ è ¡H¡x¡¨¡Ø¡¢8¢h¢˜¢È¢ø¢(£X£ˆ£¸£à£¤0¤P¤p¤ ¤È¤è¤¥8¥`¥€¥ ¥Ð¥ð¥¦8¦`¦¦°¦à¦§@§h§˜§À§ð§¨@¨p¨ ¨È¨ð¨©@©h©©¸©à©ª0ªXª€ª¨ªÐª«0«`«ˆ«¸«à«¬8¬h¬¬À¬è¬­(­P­€­°­à­®@®p® ®Ð®¯0¯`¯¯À¯ð¯àL  P € ° à ¡@¡p¡ ¡Ð¡¢0¢`¢¢À¢ð¢ £P£x£¨£Ð£ø£(¤X¤ˆ¤¸¤è¤¥H¥x¥¨¥Ø¥¦(¦H¦p¦˜¦À¦ð¦ §H§p§ §È§ð§¨H¨h¨˜¨À¨è¨©8©h©©¸©è©ª8ªXªxª˜ª¸ªèª«8«`«ˆ«¸«è«¬8¬h¬˜¬È¬ø¬(­P­X­h­p­x­€­ˆ­­˜­ ­¨­°­¸­À­È­Ð­Ø­à­è­ð­ø­®®®® ®(®0®8®@®H®P®X®`®h®p®x®€®ˆ®®˜® ®¨®°®¸®À®È®Ð®Ø®à®è®ð®ø®¯¯¯¯ ¯(¯0¯8¯@¯H¯P¯X¯`¯h¯p¯x¯€¯ˆ¯¯˜¯ ¯¨¯°¯¸¯À¯È¯Ð¯Ø¯à¯è¯ð¯ø¯ð”      ( 0 8 @ H P X ` h p x € ˆ  ˜   ¨ ° ¸ À È Ð Ø à è ð ø ¡¡¡¡ ¡(¡0¡8¡@¡H¡P¡X¡`¡h¡p¢x¢€¢ˆ¢¢˜¢ ¢¨¢°¢¸¢À¢È¢Ð¢Ø¢à¢è¢ð¢ø¢££££ £(£0£8£@£H£P£X£`£h£p£x£€£ˆ££˜£ £¨£°£¸£À£È£Ð£Ø£à£è£ð£ø£¤¤¤¤ ¤(¤0¤8¤@¤H¤P¤X¤`¤h¤p¤x¤€¤ˆ¤¤˜¤ ¤¨¤°¤¸¤À¤È¤Ð¤Ø¤à¤è¤ð¤ø¤¥¥¥¥ ¥(¥0¥8¥@¥H¥P¥X¥`¥h¥Ð¥ð¥¦0¦`¦¦À¦ð¦ §P§€§°§à§¨@¨p¨ ¨Ð¨©0©`©©À©ð© ªPª€ª°ªàª«8«h«˜«È«ø«(¬X¬ˆ¬¸¬è¬­H­x­¨­Ð­®0®`®®À®ð® ¯P¯€¯°¯à¯Ä @ p   Ð ¡0¡`¡¡À¡ð¡ ¢P¢€¢°¢à¢£0£X£x£˜£È£ø£¤@¤h¤˜¤À¤à¤¥0¥P¥x¥ ¥Ð¥ø¥(¦X¦ˆ¦°¦à¦§8§`§§À§ð§¨H¨p¨˜¨À¨è¨©@©h©˜©È©ð©ª@ªpª ªÐª«0«`««¸«è«¬@¬h¬ˆ¬¨¬È¬ø¬(­X­ˆ­¸­è­®H®x®¨®Ø®¯8¯h¯˜¯È¯ø¯X( X ˆ ¸ è ¡H¡x¡¨¡Ø¡¢8¢h¢˜¢È¢è¢£H£p£ £Ð£¤0¤`¤¤À¤ð¤ ¥P¥€¥ ¥À¥è¥¦8¦h¦˜¦¸¦è¦§H§p§§À§à§¨8¨`¨¨À¨ð¨ ©X©ˆ©¸©Ø©ø©ª8ª`ª ªÐªøª «P«€«°«Ø«¬0¬`¬¬À¬ð¬­ ­(­0­8­@­H­P­X­`­h­p­x­€­ˆ­­˜­ ­¨­°­¸­À­È­Ð­Ø­à­è­ð­ø­®®®® ®(®0®8®@®H®P®X®`®h®p®x®€®ˆ®®˜® ®¨®°®¸®À®È®Ð®Ø®à®è®ð®ø®¯¯¯¯ ¯(¯0¯8¯@¯H¯P¯X¯`¯h¯p¯x¯€¯ˆ¯¯˜¯ ¯¨¯°¯¸¯À¯È¯Ð¯Ø¯à¯è¯ð¯ø¯ \      ( 0 8 @ H P X ` h p x € ˆ  ˜   ¨ ° ¸ À È Ð Ø à è ð ø ¡¡¡¡ ¢(¢0¢8¢@¢H¢P¢X¢`¢h¢p¢x¢€¢ˆ¢¢˜¢ ¢¨¢°¢¸¢À¢È¢Ð¢Ø¢à¢è¢ð¢ø¢££££ £(£0£8£@£H£P£X£`£h£p£x£€£ˆ££˜£ £¨£°£¸£À£È£Ð£Ø£à£è£ð£ø£¤¤¤¤ ¤(¤0¤8¤@¤H¤P¤X¤`¤h¤p¤x¤€¤ˆ¤¤˜¤ ¤¨¤°¤¸¤À¤È¤Ð¤Ø¤à¤è¤ð¤ø¤¥¥¥¥ ¥0¥Ø©ª8ª`ªªÀªðª«@«h«˜«È«ø«(¬X¬ˆ¬°¬à¬­@­h­˜­È­ø­ ®H®x® ®Ð®¯0¯`¯ˆ¯°¯à¯0Ì @ p   Ð ø (¡X¡ˆ¡¸¡è¡¢@¢p¢ ¢Ð¢£0£`££À£ð£ ¤P¤€¤°¤à¤¥@¥h¥˜¥À¥ð¥¦@¦`¦€¦ ¦Ð¦ø¦§@§`§ˆ§°§Ð§ø§¨8¨`¨ˆ¨°¨Ð¨©0©X©€©¨©Ð©ø©ª@ªpª ªÐªøª «H«p«˜«À«è«¬8¬`¬ˆ¬°¬Ø¬­(­P­€­¨­Ð­ø­ ®H®p®˜®À®è®¯0¯X¯ˆ¯°¯à¯@ì 0 X ˆ ° Ø ¡(¡P¡€¡¨¡Ð¡ø¡ ¢H¢p¢˜¢À¢è¢£8£`£ˆ£°£Ø£¤8¤`¤ˆ¤¨¤Ð¤ø¤ ¥H¥p¥˜¥À¥è¥¦8¦`¦ˆ¦°¦Ø¦ø¦§@§h§§À§ð§¨@¨h¨˜¨À¨è¨©0©8©H©P©X©`©h©p©x©€©ˆ©©˜© ©¨©°©¸©À©È©Ð©Ø©à©è©ð©ø©ªªªª ª(ª0ª8ª@ªHªPªXª`ªhªpªxª€ªˆªª˜ª ª¨ª°ª¸ªÀªÈªÐªØªàªèªðªøª«««« «(«0«8«@«H«P«X«`«h«p«x«€«ˆ««˜« «¨«°«¸«À«È«Ð«Ø«à«è«ð«ø«¬¬¬¬ ¬(¬0¬8¬@¬P­X­`­h­p­x­€­ˆ­­˜­ ­¨­°­¸­À­È­Ð­Ø­à­è­ð­ø­®®®® ®(®0®8®@®H®P®X®`®h®p®x®€®ˆ®®˜® ®¨®°®¸®À®È®Ð®Ø®à®è®ð®ø®¯¯¯¯ ¯(¯0¯8¯@¯H¯P¯X¯`¯h¯p¯x¯€¯ˆ¯¯˜¯ ¯¨¯°¯¸¯À¯È¯Ð¯Ø¯à¯è¯ð¯ø¯PÈ      ( 0 8 @ H ¸ è ¡H¡x¡¨¡Ø¡¢(¢X¢ˆ¢¸¢è¢£H£x£¨£Ø£¤8¤h¤˜¤È¤ø¤(¥X¥ˆ¥¸¥è¥¦H¦x¦¨¦Ø¦§8§h§˜§È§¨(¨X¨ˆ¨¸¨è¨©H©x©¨©Ø©ª8ªhª˜ªÈªøª(«`««À«ð« ¬P¬€¬°¬è¬ ­X­€­¨­Ð­ð­®@®p®®¸®à®¯(¯H¯€¯ ¯À¯è¯`¼ H h ˜ È ø  ¡P¡€¡°¡Ð¡ð¡ ¢P¢€¢¨¢Ø¢£0£X£€£°£Ø£¤0¤`¤ˆ¤°¤Ø¤¥8¥h¥˜¥È¥ø¥(¦P¦€¦¨¦Ø¦§ §@§`§§À§ð§ ¨P¨€¨¸¨è¨©H©x©¨©Ø©ª8ªhª ªÐª«0«`««À«ð« ¬P¬€¬°¬à¬­H­p­­¸­à­®8®h®˜®È®ø®(¯X¯ˆ¯¸¯è¯pè 8 X x   À ð  ¡@¡p¡¨¡Ø¡¢ ¢P¢p¢x¢ˆ¢¢˜¢ ¢¨¢°¢¸¢À¢È¢Ð¢Ø¢à¢è¢ð¢ø¢££££ £(£0£8£@£H£P£X£`£h£p£x£€£ˆ££˜£ £¨£°£¸£À£È£Ð£Ø£à£è£ð£ø£¤¤¤¤ ¤(¤0¤8¤@¤H¤P¤X¤`¤h¤p¤x¤€¤ˆ¤¤˜¤ ¤¨¤°¤¸¤À¤È¤Ð¤Ø¤à¤è¤ð¤ø¤¥¥¥¥ ¥(¥0¥8¥@¥H¥P¥X¥`¥h¥p¥x¥€¥¦˜¦ ¦¨¦°¦¸¦À¦È¦Ð¦Ø¦à¦è¦ð¦ø¦§§§§ §(§0§8§@§H§P§X§`§h§p§x§€§ˆ§§˜§ §¨§°§¸§À§È§Ð§Ø§à§è§ð§ø§¨¨¨¨ ¨(¨0¨8¨@¨H¨P¨X¨`¨h¨p¨x¨€¨ˆ¨¨˜¨ ¨¨¨°¨¸¨À¨È¨Ð¨Ø¨à¨è¨ð¨ø¨©©©© ©(©0©8©@©H©P©X©`©h©p©x©€©ˆ©ªHª€ª°ªàª«@«x« «à« ¬`¬ ¬à¬­P­€­°­à­®@®p® ®Ð®¯8¯h¯˜¯È¯ø¯€œ( X ˆ È ¡X¡ ¡è¡0¢p¢¨¢ð¢8£€£È£¤X¤˜¤Ð¤¥@¥x¥À¥¦P¦˜¦à¦ §h§°§ø§@¨ˆ¨Ð¨©@©€©À©è©ª8ª`ª€ª¸ªèª«0«X«ˆ«°«Ð«¬0¬`¬ˆ¬°¬ð¬­H­€­°­Ø­®H®x®˜®¸®ð®(¯`¯¯À¯ð¯ ( X ˆ ¸ è ¡X¡˜¡Ð¡¢8¢h¢˜¢Ð¢£0£p£ £Ð£¤@¤€¤°¤Ø¤ø¤ ¥X¥ˆ¥À¥¦@¦€¦À¦§@§€§À§¨@¨€¨À¨©@©p©°©à©ªPªªÐª«P««Ð«¬X¬ˆ¬¸¬à¬­@­p­ ­Ð­®0®`® ®Ð®¯0¯`¯¯°¯Ð¯ø¯ À( P ˆ À è (¡h¡¨¡è¡¢@¢`¢h¢x¢€¢ˆ¢¢˜¢ ¢¨¢°¢¸¢À¢È¢Ð¢Ø¢à¢è¢ð¢ø¢££££ £(£0£8£@£H£P£X£`£h£p£x£€£ˆ££˜£ £¨£°£¸£À£È£Ð£Ø£à£è£ð£ø£¤¤¤¤ ¤(¤0¤8¤@¤H¤P¤X¤`¤h¤p¤x¤€¤ˆ¤¤˜¤ ¤¨¤°¤¸¤À¤È¤Ð¤Ø¤à¤è¤ð¤ø¤¥¥¥¥ ¥(¥0¥8¥@¥H¥P¥X¥`¥h¥p¥€¦ˆ¦¦˜¦ ¦¨¦°¦¸¦À¦È¦Ð¦Ø¦à¦è¦ð¦ø¦§§§§ §(§0§8§@§H§P§X§`§h§p§x§€§ˆ§§˜§ §¨§°§¸§À§È§Ð§Ø§à§è§ð§ø§¨¨¨¨ ¨(¨0¨8¨@¨H¨P¨X¨`¨h¨p¨x¨€¨ˆ¨¨˜¨ ¨¨¨°¨¸¨À¨È¨Ð¨Ø¨à¨è¨ð¨ø¨©©©© ©(©0©8©@©H©P©X©`©h©p©x©À¬Ð¬­­ˆ­˜­¨­¸­ˆ®˜®¨® ¯°¯À¯°tø ¡x¡Ø¡¢(¢8¢h¢x¢È¢è¢ø¢£°£à£ˆ¤¥0¥@¥¦ð¦ §0§@¨ ©0©@©¸©È©Ø©ªª(ª¨ª¸ª «°«ð«¬¬­­(­È­H®X®¨®¸®È®Ø®¯(¯8¯ð¯À¨ @ P ` € ø 8¡H¡X¡ˆ¡˜¡è¡ø¡¢¢X¢h¢x¢0£È£Ø£ ¤°¤h¥x¥ˆ¥8¦h¦x¦Ø¦§§h§x§ˆ§˜§È§Ø§ø§¨H¨X¨h¨¸¨È¨Ø¨è¨©X©h©x©ˆ©¸©È©Ø©ø©ª˜ª¨ª8«H«È«X¬h¬­ ­0­è­ø­®(®p®€®à®ð®0¯@¯P¯p¯Ð    x ˆ  ¡Ø¡è¡x¢ˆ¢¨¢¸¢P£˜£¨£¤¤@¤P¤¨¤¸¤È¤Ø¤¥¥h¥x¥¸¥È¥Ø¥§(§8§X§˜¨¨¨¸¨€©©@ªPª€­˜­°­È­à­ø­®(®@®X®p®ˆ® ®¸®Ð®è®¯¯0¯H¯`¯x¯¯¨¯À¯Ø¯ð¯àÌ   8 P h € ˜ ° È à ø ¡(¡@¡X¡p¡ˆ¡ ¡¸¡Ð¡è¡¢¢0¢H¢`¢x¢¢¨¢À¢Ø¢ð¢£ £8£P£h£€£˜£°£È£à£ø£¤(¤@¤X¤p¤ˆ¤ ¤¸¤Ð¤è¤¥¥0¥H¥`¥x¥¥¨¥À¥Ø¥ð¥¦ ¦8¦P¦ ¨0¨`¨p¨è¨ø¨©©è©ø©ª«« «X¬x¬Ø¬8­x­ˆ­˜­È­Ø­(®H®X®x®¯@¯è¯ð€p    `¡P¢€¢¢ £€¤¤ ¤¥(¥8¥h¥x¥ˆ¥¦¦§§P§`§p§h¨x¨ˆ¨(©¨©¸©ªª(ª8ªxªˆª˜ªP«`« «°«À«à«X¬˜¬¨¬¸¬è¬ø¬H­X­h­x­¸­È­Ø­®(¯8¯¤  È Ø è ˜¡È¡Ø¡8¢h¢x¢È¢Ø¢è¢ø¢(£8£X£h£¨£¸£È£¤(¤8¤H¤h¤¸¤È¤Ø¤è¤¥(¥8¥X¥h¥ø¥¦˜¦¨¦(§¸§È§`¨€¨¨H©X©x©ˆ©Ð©à©@ªPªª ª°ªÐª`«p«€«Ø«è«€¬8­H­Ø­è­®®°®ø®¯`¯p¯ ¯°¯Ì  ( 8 h x È Ø ¡(¡8¡x¢ˆ¢˜¢¸¢ø£¤¤à¤ð¤ ¥°¥à¨ø¨©(©@©X©p©ˆ© ©¸©Ð©è©ªª0ªHª`ªxªª¨ªÀªØªðª« «8«P«h«€«˜«°«È«à«ø«¬(¬@¬X¬p¬ˆ¬ ¬¸¬Ð¬è¬­­0­H­`­x­­¨­À­Ø­ð­® ®8®P®h®€®˜®°®È®à®ø®¯(¯@¯X¯p¯ˆ¯ ¯¸¯Ð¯è¯ Р 0 H ` x  ¨ À Ø ð ¡ ¡8¡P¡h¡€¡˜¡°¡¸¢è¢£@£h££¸£à£¤0¤X¤€¤¨¤Ð¤ø¤ ¥H¥p¥˜¥À¥è¥¦8¦`¦ˆ¦°¦Ø¦§(§P§x§ §È§ð§ ¨P¨€¨°¨à¨©8©h©˜©È©ø©(ªXª€ª°ªàª«@«p« «Ð«¬0¬X¬ˆ¬¸¬è¬­H­x­ ­È­ð­®8®`®€® ®À®ð®¯@¯h¯ˆ¯°¯Ø¯ø¯0Ô  @ ` ˆ ° Ø ø (¡P¡x¡ ¡È¡ð¡¢8¢X¢ˆ¢¸¢è¢£8£`£ˆ£°£Ø£¤(¤P¤x¤ ¤È¤ð¤¥@¥h¥˜¥À¥è¥¦8¦`¦ˆ¦°¦Ø¦§(§H§p§ §È§ø§ ¨H¨p¨ ¨È¨ð¨©@©h©˜©À©è©ª@ªhªª¸ªàª«0«X«€«¨«Ð«ø« ¬P¬x¬ ¬È¬ð¬­@­h­­¸­à­®0®X®€®¨®Ð®ø®¯8¯`¯ˆ¯°¯à¯@Ô 8 ` ˆ ¸ à ¡0¡P¡X¡h¡p¡x¡€¡ˆ¡¡˜¡ ¡¨¡°¡¸¡À¡È¡Ð¡Ø¡à¡è¡ð¡ø¡¢¢¢¢ ¢(¢0¢8¢@¢H¢P¢X¢`¢h¢p¢x¢€¢ˆ¢¢˜¢ ¢¨¢°¢¸¢À¢È¢Ð¢Ø¢à¢è¢ð¢ø¢££££ £(£0£8£@£H£P£X£`£h£p£x£€£ˆ££˜£ £¨£°£¸£À£È£Ð£Ø£à£è£ð£ø£¤¤¤¤ ¤(¤0¤8¤@¤H¤P¤X¤`¤p¥x¥€¥ˆ¥¥˜¥ ¥¨¥°¥¸¥À¥È¥Ð¥Ø¥à¥è¥ð¥ø¥¦¦¦¦ ¦(¦0¦8¦@¦H¦P¦X¦`¦h¦p¦x¦€¦ˆ¦¦˜¦ ¦¨¦°¦¸¦À¦È¦Ð¦Ø¦à¦è¦ð¦ø¦§§§§ §(§0§8§@§H§P§X§`§h§p§x§€§ˆ§§˜§ §¨§°§¸§À§È§Ð§Ø§à§è§ð§ø§¨¨¨¨ ¨(¨0¨8¨@¨H¨P¨X¨`¨h¨ø¨H©˜©Ø© ªhª°ªðª(«h«¨«ð«8¬€¬À¬­8­p­¨­à­ ®h®°®ø®@¯x¯À¯P€ @ ˆ Ð ¡`¡¨¡ø¡H¢˜¢è¢8£€£¸£¤X¤¨¤ø¤H¥˜¥à¥¦P¦ˆ¦À¦§`§°§¨P¨¨¨©h©È©0ª°ªP«p««Ø« ¬X¬ˆ¬¸¬à¬­P­˜­¸­è­®X®€® ®ø®¯H¯€¯°¯`Œ ( ` ˜ à ¡`¡ ¡Ø¡ø¡ ¢X¢¢È¢ø¢@£x£À£ø£0¤`¤¤À¤¥P¥ˆ¥À¥¦@¦ˆ¦À¦ø¦@§ˆ§À§ø§@¨x¨À¨ø¨ ©@©x©°©è© ªhª°ª«`«¸«¬H¬¬Ø¬(­p­¸­®X® ®è®0¯h¯À¯p¸ P ˜ à (¡p¡È¡(¢`¢˜¢È¢£0£`£¨£ð£8¤€¤È¤¥X¥ ¥Ø¥ ¦X¦x¦˜¦À¦ø¦0§h§ §È§¨`¨°¨ø¨ ©X©x©€©ˆ©©˜© ©¨©°©¸©À©È©Ð©Ø©à©è©ð©ø©ªªªª ª(ª0ª8ª@ªHªPªXª`ªhªpªxª€ªˆªª˜ª ª¨ª°ª¸ªÀªÈªÐªØªàªèªðªøª«««« «(«0«8«@«H«P«X«`«h«p«x«€«ˆ««˜« «¨«°«¸«À«È«Ð«Ø«à«è«ð«ø«¬¬¬¬ ¬(¬0¬8¬@¬H¬P¬X¬`¬h¬p¬€­ˆ­­˜­ ­¨­°­¸­À­È­Ð­Ø­à­è­ð­ø­®®®® ®(®0®8®@®H®P®X®`®h®p®x®€®ˆ®®˜® ®¨®°®¸®À®È®Ð®Ø®à®è®ð®ø®¯¯¯¯ ¯(¯0¯8¯@¯H¯P¯X¯`¯h¯p¯x¯€¯ˆ¯¯˜¯ ¯¨¯°¯¸¯À¯È¯Ð¯Ø¯à¯è¯ð¯ø¯€8      ( 0 8 @ H P X ` h p x €  p¤x¤€¤­­Ð°¡À¡Ð¡(¢8¢®°®À®àh€¢ˆ¢¢˜¢ ¢¨¢°¢¸¢À¢È¢Ø¢è¢ø¢££(£8£H£X£h£x£ˆ£˜£¨£¸£È£Ø£è£ø£¤¤(¤8¤ð©ðªx«˜«¸«Ø«ø«8¬P¬X¬`¬h¬p¬€¬ˆ¬ð¼8£@£H£P£`£h£p£x£€£ˆ££˜£ £¨£°£¸£À£È£Ð£Ø£à£è£ð£ø£¤¤¤¤ ¤(¤0¤8¤@¤H¤P¤X¤`¤h¤p¤x¤€¤ˆ¤¤˜¤ ¤¨¤°¤È¤à¤è¤ð¤ø¤¥¥¥¥ ¥(¥8¥h¥x¥ˆ¥˜¥¨¥¸¥È¥Ø¥è¥ø¥¦¦(¦8¦H¦X¦h¦x¦ˆ¦˜¦¨¦¸¦È¦Ø¦è¦ø¦§§(§¨¨PyOpenGL-3.0.2/OpenGL/DLLS/opengle32.vc7.dll0000755000175000001440000042000012025001653020761 0ustar mcfletchusers00000000000000MZÿÿ¸@øº´ Í!¸LÍ!This program cannot be run in DOS mode. $j‘þ.ðr­.ðr­.ðr­+ü/­,ðr­+ü­/ðr­+ü}­-ðr­+ü-­)ðr­íÿ/­)ðr­.ðs­ðr­Âû-­ ðr­Âû.­/ðr­Âû(­/ðr­Rich.ðr­PELóɇFà!  Ð@xØà  äq´ádÈPáHà”.textjÊÐ `.rdataàà@@.dataLðð@À.reloc @BU‹ìƒ=ðuèÏ¡£ðh³èäÆƒÄ¡ð‹M‰H]ÃU‹ìƒ=ðu蟡£ðh³è´ÆƒÄ¡ð‹@]ÃÌÌÌU‹ìQƒ=ðuèn¡£ðh³èƒÆƒÄ¡ð‹M‰H(‹ð‹E ‰B,‹ ð‹U‰Q0¡ð‹M‰H4‹ð‹E‰B8‹ ð‹U‰Q<¡ð‹M ‰H@‹ð‹E$‰BD‹ ð‹Qƒâ‰Uü‹Eüƒè‰Eüƒ}ü‡†‹Müÿ$‹U$R‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPèNƒÄ ëR‹M$Q‹U R‹EP‹MQ‹UR‹EP‹M Q‹URèTÖƒÄ ë(‹E$P‹M Q‹UR‹EP‹MQ‹UR‹E P‹MQèóƒÄ ‹å]à 7aaÌÌÌU‹ìj‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPèšþÿÿƒÄ ]ÃÌÌÌÌÌU‹ìjÝEƒìÝ$‹EP‹M Q‹URèƒÄ]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìpVƒ=ðuèËŸ£ðh³èàăġð‹H‰Mü‹ð‹B ‰EÔ‹ ð‹Q$‰Uøƒ}t ݨàÝ]ÇEðë ‹EðƒÀ‰Eð‹Mð;Mü}:‹UðÁâ‹EøÝEÜ ‹MðÁá‹UÔÝ ‹EðÁà‹MøÝEÜL‹UðÁâ‹EÔÝ\ëµÇEð‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝÜ$Ý]°‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜdÝ]¸‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜdÝ]ÀÝE°ÜM°ÝE¸ÜM¸ÞÁÝ]ÈÝEÀÜMÀÜEÈÝUȃìÝ$èæÃƒÄÝ]È‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝÜÝ]‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜDÝ]˜‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜDÝ] ÝEÜMÝE˜ÜM˜ÞÁÝ]¨ÝE ÜM ÜE¨ÝU¨ƒìÝ$èZÃÄÝ]¨ÝE¨Ü  àÝ]¨‹MðƒÁ‰MðÝEÈÜ]¨ßàöÄAz‹Uƒê9UðŒ·þÿÿ‹Eð;EuéÛݘàÝE°ÚéßàöÄDz#ݘàÝEÀÚéßàöÄDzݨàÝUèÝUàÝ]ØëݘàÝUèÝ]ØÝ¨àÝ]à‹ ð‹Q‰Uô¡ð‹HÉ‹ð‰JhP ÿŒà¶À…Àu(‹MQ‹UR‹E P‹MQUØRj‹EÔP‹MüQè´ûÿÿƒÄ ë(‹UR‹EP‹M Q‹UREØP‹MøQ‹UÔR‹EüPèŠûÿÿƒÄ ‹ ð‹Uô‰Q^‹å]ÃÌÌÌÌÌÌU‹ìƒìV‹EkÀ0PÿTàƒÄ‰EüÇEøë ‹MøƒÁ‰Mø‹Uø;U}|‹EøkÀ0‹Mü‹Uø‹uÝÖÝ‹EøkÀ0‹MüݘàÝ\‹UøkÒ0‹EüݘàÝ\‹MøkÉ0‹UüݘàÝ\ ‹EøkÀ0‹Mü‹Uø‹uÝÖÝ\ ‹EøkÀ0‹MüݘàÝ\(ésÿÿÿ‹UüRݨàƒìÝ$‹EP‹M Q‹URè?üÿÿƒÄ‹EüPÿPàƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìƒì$‹EkÀ0PÿTàƒÄ‰EüÇEÜë ‹M܃Á‰MÜ‹UÜ;U£‹EÜ‹M$ݰàÜ ÁÝUðƒìÝ$èøÀƒÄÝ]àÝEðƒìÝ$èÞÀƒÄÝ]è‹UÜkÒ0‹EüÝEèÝÝEàÙà‹MÜkÉ0‹UüÝ\ ‹EÜkÀ0‹MüݘàÝ\‹UÜkÒ0‹EüÝEàÝ\‹MÜkÉ0‹UüÝEèÝ\ ‹EÜkÀ0‹MüݘàÝ\(éHÿÿÿ‹UüR‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPèùÿÿƒÄ ‹MüQÿPàƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììôƒ=ðuèÉš£ðh³èÞ¿ƒÄ¡ðÛ@Ü5ÈàÝÿÿÿÝEHƒìÝ$è翃ÄÜÿÿÿèß¿ƒÀ‰…\ÿÿÿƒ}8u(‹\ÿÿÿkÉÁáQÿTàƒÄ‰EÜ‹U܉U”ÇEüë1‹…\ÿÿÿkÀ ÁàPÿTàƒÄ‰EÜ‹M܉M”‹•\ÿÿÿkÒ‹E” ЉMüݰàÜMH‹•\ÿÿÿƒê‰• ÿÿÿÛ… ÿÿÿÞùÝ]ðÝE@Ü °àÝU@ÜeðÝU@ƒìÝ$è%¿ƒÄÝHÿÿÿÝE@ƒìÝ$迃ÄÝÿÿÿÝEðƒìÝ$è÷¾ƒÄÝ]˜ÝEðƒìÝ$è龃ÄÝPÿÿÿÝEðÜ5ÀàÝ@ÿÿÿÝE0Ü@ÿÿÿÝ]0ÝE Ü@ÿÿÿÝ] ÝE(Üe0Ý](ÝEÜe Ý]ÇEàë ‹EàƒÀ‰Eà‹Mà;\ÿÿÿ˜ÝEÜHÿÿÿ‹UàkÒ‹E”ÝÐÝEÜÿÿÿ‹MàkÉ‹U”Ý\Ê‹EàkÀ‹M”ÝE(Ý\ÁÝE(ÜE0Ý](ÝEÜE Ý]Ý…HÿÿÿÜM˜Ý…ÿÿÿÜPÿÿÿÞéÝ]èÝ…HÿÿÿÜPÿÿÿÝ…ÿÿÿÜM˜ÞÁÝ]°ÝEèÝHÿÿÿÝE°ÝÿÿÿéPÿÿÿƒ}8„²ƒ}<…—ÇEàë ‹UàƒÂ‰Uà‹Eà;…\ÿÿÿ}u‹MàkÉ0‹Uü‹E8ÝÝ ‹MàkÉ0‹Uü‹E8Ý@Ý\ ‹MàkÉ0‹Uü‹E8Ý@Ý\ ‹MàkÉ0‹Uü‹E8Ý@Ý\ ‹MàkÉ0‹Uü‹E8Ý@ Ý\ ‹MàkÉ0‹Uü‹E8Ý@(Ý\ (éwÿÿÿé‹M<Ý…@ÿÿÿÜIÝ] ‹U<Ý…@ÿÿÿÜJ(Ý]¨‹E8Ý@Ý]€‹M8ÝA(Ý]ˆÝ…@ÿÿÿÜ5¸àÝ@ÿÿÿ‹U<Ý…@ÿÿÿÜ Ü¨àÝ]¸‹E<Ý…@ÿÿÿÜHÝ]À‹M<Ý…@ÿÿÿÜIÝ]È‹U<Ý…@ÿÿÿÜJ ܨàÝ]ÐÝE¸ÜM¸ÝEÀÜMÈÞÁÝ`ÿÿÿÝE¸ÜMÀÝEÀÜMÐÞÁÝhÿÿÿÝEÈÜM¸ÝEÐÜMÈÞÁÝpÿÿÿÝEÈÜMÀÝEÐÜMÐÞÁÝxÿÿÿÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜpÿÿÿÞÁÝ]¸Ý…`ÿÿÿÜhÿÿÿÝ…hÿÿÿÜxÿÿÿÞÁÝ]ÀÝ…pÿÿÿÜ`ÿÿÿÝ…xÿÿÿÜpÿÿÿÞÁÝ]ÈÝ…pÿÿÿÜhÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÐÝE¸ÜM¸ÝEÀÜMÈÞÁÝ`ÿÿÿÝE¸ÜMÀÝEÀÜMÐÞÁÝhÿÿÿÝEÈÜM¸ÝEÐÜMÈÞÁÝpÿÿÿÝEÈÜMÀÝEÐÜMÐÞÁÝxÿÿÿÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜpÿÿÿÞÁÝ]¸Ý…`ÿÿÿÜhÿÿÿÝ…hÿÿÿÜxÿÿÿÞÁÝ]ÀÝ…pÿÿÿÜ`ÿÿÿÝ…xÿÿÿÜpÿÿÿÞÁÝ]ÈÝ…pÿÿÿÜhÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÐÝE¸ÜM¸ÝEÀÜMÈÞÁÝ`ÿÿÿÝE¸ÜMÀÝEÀÜMÐÞÁÝhÿÿÿÝEÈÜM¸ÝEÐÜMÈÞÁÝpÿÿÿÝEÈÜMÀÝEÐÜMÐÞÁÝxÿÿÿ‹E8ÝÝ ÿÿÿ‹M8ÝAÝ(ÿÿÿ‹U8ÝBÝ0ÿÿÿ‹E8Ý@ Ý8ÿÿÿ‹Mü‹U8ÝÝ‹Eü‹M8ÝAÝX‹Uü‹E8Ý@ÝZ‹Mü‹U8ÝBÝY‹Eü‹M8ÝA ÝX ‹Uü‹E8Ý@(ÝZ(ÇEàë ‹MàƒÁ‰Mà‹Uà;•\ÿÿÿ‹EàkÀ0‹MüÝ… ÿÿÿÝ‹UàkÒ0‹EüÝ…(ÿÿÿÝ\‹MàkÉ0‹UüÝ…0ÿÿÿÝ\ ‹EàkÀ0‹MüÝ…8ÿÿÿÝ\ Ý…`ÿÿÿÜ ÿÿÿÝ…hÿÿÿÜ0ÿÿÿÞÁÝ]¸Ý…`ÿÿÿÜ(ÿÿÿÝ…hÿÿÿÜ8ÿÿÿÞÁÝ]ÀÝ…pÿÿÿÜ ÿÿÿÝ…xÿÿÿÜ0ÿÿÿÞÁÝ]ÈÝ…pÿÿÿÜ(ÿÿÿÝ…xÿÿÿÜ8ÿÿÿÞÁÝ]ÐÝE¸Ý ÿÿÿÝEÀÝ(ÿÿÿÝEÈÝ0ÿÿÿÝEÐÝ8ÿÿÿ‹UàkÒ0‹EüÝE€Ý\‹MàkÉ0‹UüÝEˆÝ\ (ÝE€ÜE Ý]€ÝEˆÜE¨Ý]ˆéÎþÿÿ¡ð‹H‰Mä‹ð‹Bƒàð‹ ð‰A‹ð‹BƒÈ‹ ð‰A‹UüRj‹E”P‹\ÿÿÿQ‹UR‹EP‹M Q‹URè òÿÿƒÄ ¡ð‹Mä‰H‹UÜRÿPàƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìì‹EݘàÝ@ÚéßàöÄD‹©‹MÝÝ]èݘàÝ]ð‹UÝBÝ]øÝEèÜMèÝEðÜMðÞÁÝ]àÝEøÜMøÜEàÝUàƒìÝ$è<¸ƒÄÝ]àݘàÝEàÚéßàöÄD{;ݨàÜuàÝ]àÝEèÜMàÝ]èÝEøÜMàÝ]øÝEàÜMèÝ]èÝEàÜMðÝ]ðÝEàÜMøÝ]øëݘàÝ]èݨàÝ]øë‹EÝÝ]è‹MÝAÝ]ð‹UÝBÝ]øÝEøÜM ÝEèÜM0ÞéÝ] ÝEèÜM ÝEøÜM0ÞÁÝ]¨ƒ}8„ïƒ}<tO‹E<ÝÝpÿÿÿ‹M<ÝAÝxÿÿÿ‹U<ÝBÝ]€‹E<Ý@Ý]ˆ‹M<ÝA Ý]‹U<ÝB(Ý]˜ÝE€ÜE Ý]€ÝE˜ÜE¨Ý]˜ë6ݘàÝpÿÿÿݘàÝxÿÿÿÝE Ý]€Ý˜àÝ]ˆÝ˜àÝ]ÝE¨Ý]˜ÝEHƒìÝ$ÝE@ƒìÝ$…pÿÿÿP‹M8QݘàƒìÝ$ÝE(ƒìÝ$ݘàƒìÝ$ÝEƒìÝ$‹UR‹EP‹M Q‹URèˆöÿÿƒÄHéËݨàÝ]°Ý˜àÝ]¸Ý˜àÝ]ÀݘàÝ]ÈݨàÝ]ÐݘàÝ]ØÝ˜àÝpÿÿÿݘàÝxÿÿÿÝE Ý]€Ý˜àÝ]ˆÝ˜àÝ]ÝE¨Ý]˜ÝEHƒìÝ$ÝE@ƒìÝ$…pÿÿÿPM°QݘàƒìÝ$ÝE(ƒìÝ$ݘàƒìÝ$ÝEƒìÝ$‹UR‹EP‹M Q‹URè¸õÿÿƒÄH‹å]ÃÌU‹ìhÝE@ƒìÝ$ÝE8ƒìÝ$‹E4P‹M0QÝE(ƒìÝ$ÝE ƒìÝ$ÝEƒìÝ$ÝEƒìÝ$ÝEƒìÝ$è ƒÄD]ÃÌÌÌÌÌÌÌU‹ìƒì,¡ð‹H‰Mü‹ð‹B ‰EÔ‹ ð‹Q$‰UøÇEðë ‹EðƒÀ‰Eð‹Mð;Mü}:‹UðÁâ‹EøÝEÜ ‹MðÁá‹UÔÝ ‹EðÁà‹MøÝEÜL‹UðÁâ‹EÔÝ\ëµÝ˜àÝUèÝ]àݨàÝ]Ø‹ ð‹Q‰Uô¡ð‹HÉ‹ð‰J¡ð‹HÉ‹ð‰JhP ÿŒà¶À…ÀuTÝE@ƒìÝ$ÝE8ƒìÝ$‹M4Q‹U0RÝE(ƒìÝ$ÝE ƒìÝ$ÝEƒìÝ$ÝEƒìÝ$EØPj‹MÔQ‹UüRÿUHƒÄHëTÝE@ƒìÝ$ÝE8ƒìÝ$‹E4P‹M0QÝE(ƒìÝ$ÝE ƒìÝ$ÝEƒìÝ$ÝEƒìÝ$UØR‹EøP‹MÔQ‹UüRÿUHƒÄH¡ð‹Mô‰H‹å]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ìh€ÝE@ƒìÝ$ÝE8ƒìÝ$‹E4P‹M0QÝE(ƒìÝ$ÝE ƒìÝ$ÝEƒìÝ$ÝEƒìÝ$ÝEƒìÝ$è þÿÿƒÄD]ÃÌÌÌÌÌÌÌU‹ìƒì<ÝE(Ü5ÐàƒìÝ$èh³ƒÄèf³ƒÀ‰EÌ‹EÌkÀPÿTàƒÄ‰EЋMÌÁáQÿTàƒÄ‰EÔÝE Üe‹Ũê‰UÈÛEÈÞùÝ]ØÝEÜeØÝ]à‹Ẽè‰EÄÛEÄÜ}(ÝUèÙàÝ]ðÇEüë ‹MüƒÁ‰Mü‹Uü;UÌ}U‹EükÀ‹MÐݘàÝ‹UükÒ‹EÐݘàÝ\‹MükÉ‹UÐÝEàÝ\ ÝEàÜEØÝ]à‹Eü‹MÔÝEðÝÁÝEðÜEèÝ]ðëš‹UÔRj‹EÐP‹MÌQ‹UR‹EP‹M Q‹URèñÿÿƒÄ ‹EÐPÿPàƒÄ‹MÔQÿPàƒÄ‹å]ÃÌÌÌÌÌÌÌÌU‹ìì˜Vƒ}uݘàÝ]àݨàÝ]èݘàÝ]ðë‹EÝÝ]à‹MÝAÝ]è‹UÝBÝ]ð‹EP‹MQUàRè6ƒÄ ݘàÝÿÿÿݘàÝÿÿÿݘàÝÿÿÿݘàÝ]ÈݘàÝ]ÐݨàÝ]ØÇEÀ‹EÀ‰…<þÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝÜ$ÝÀþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜdÝÈþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜdÝÐþÿÿÝ…ÀþÿÿÜÀþÿÿÝ…ÈþÿÿÜÈþÿÿÞÁÝ`ÿÿÿÝ…ÐþÿÿÜÐþÿÿÜ…`ÿÿÿÝ•`ÿÿÿƒìÝ$èʰƒÄÝ`ÿÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝÜÝþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜDÝ þÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜDÝ(þÿÿÝ…þÿÿÜþÿÿÝ… þÿÿÜ þÿÿÞÁÝ0þÿÿÝ…(þÿÿÜ(þÿÿÜ…0þÿÿÝ•0þÿÿƒìÝ$è°ƒÄÝ0þÿÿÝ…0þÿÿÜ  àÝ0þÿÿ‹<þÿÿƒÁ‰<þÿÿÝ…`ÿÿÿÜ0þÿÿßàöÄAz‹Uƒê9•<þÿÿŒ0þÿÿÝ…`ÿÿÿÝøþÿÿ‹…<þÿÿkÀEP‹MƒÁQ‹UR… ÿÿÿPè&_ƒÄÝEàÜ ÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜ0ÿÿÿÞÁÝþÿÿÝààÜþÿÿÜ ÿÿÿÜmàÝ]àÝààÜþÿÿÜ(ÿÿÿÜmèÝ]èÝààÜþÿÿÜ0ÿÿÿÜmðÝ]ð‹MkÉ‹UkÒÁâÊPÿTàƒÄ‰E¼‹M¼‰M€‹UkÒ‹E€ Љ<ÿÿÿ‹UkÒ‹…<ÿÿÿ Љôþÿÿ‹UkÒ‹…ôþÿÿ Љÿÿÿ‹•ôþÿÿ‰Uüƒ}„ƒ}$…Ç…8þÿÿë‹…8þÿÿƒÀ‰…8þÿÿ‹8þÿÿ;M}V‹•8þÿÿÁâ‹…8þÿÿkÀ‹Mü‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹Mü‹uÝDÝ\Á‹•8þÿÿkÒ‹EüݘàÝ\Ðëé“Ç…8þÿÿë‹8þÿÿƒÁ‰8þÿÿ‹•8þÿÿ;Ui‹…<þÿÿƒèkÀ0‹M$ݘàÝDÚéßàöÄDzT‹•<þÿÿƒêkÒ0‹E$ݘàÝDÚéßàöÄDz2‹<þÿÿƒékÉ0‹•<þÿÿƒêkÒ0‹E$‹u$ÝD ÝÚéßàöÄD‹x‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝD Ü ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝDÜLÞé‹8þÿÿkÉ‹•ôþÿÿÝÊ‹…<þÿÿƒèkÀ0‹M$ÝDÙà‹•8þÿÿÁâ‹EÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝÜLÞÁ‹8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÞÁÝ•þÿÿƒìÝ$èf¬ƒÄÜ=¨àÝþÿÿ‹…8þÿÿkÀ‹ôþÿÿÝ…þÿÿÜ Á‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉ‹•ôþÿÿÝ…þÿÿÜLÊ‹…8þÿÿkÀ‹ôþÿÿÝ\ÁëD‹•8þÿÿÁâ‹…8þÿÿkÀ‹ôþÿÿ‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹ôþÿÿ‹uÝDÝ\Á‹•8þÿÿkÒ‹…ôþÿÿݘàÝ\Ћ8þÿÿkÉ‹•ÿÿÿݘàÝ\ÊéyýÿÿÇ…\ÿÿÿ‹Eƒè9…<þÿÿ‹<þÿÿ‰MÄ‹UăÂkÒ‹EÄkÀ‹M‹uÝÜ$ÝÀþÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜdÝÈþÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜdÝÐþÿÿÝ…ÀþÿÿÜÀþÿÿÝ…ÈþÿÿÜÈþÿÿÞÁÝ`ÿÿÿÝ…ÐþÿÿÜÐþÿÿÜ…`ÿÿÿÝ•`ÿÿÿƒìÝ$赪ƒÄÝ`ÿÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝÜÝèýÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜDÝðýÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜDÝøýÿÿÝ…èýÿÿÜèýÿÿÝ…ðýÿÿÜðýÿÿÞÁÝþÿÿÝ…øýÿÿÜøýÿÿÜ…þÿÿÝ•þÿÿƒìÝ$誃ÄÝþÿÿÝ…þÿÿÜ  àÝþÿÿ‹Uă‰UÄÝ…`ÿÿÿÜþÿÿßàöÄAz‹Eƒè9EÄŒ]þÿÿ‹MÄkÉMQ‹•<þÿÿkÒUR‹EÀkÀEPhÿÿÿQè/YƒÄUàR‹…<þÿÿkÀEP‹MÀkÉMQ•@þÿÿRèŤƒÄÿlà…@þÿÿPÿhàÝ…@þÿÿÜ ÿÿÿÝ…HþÿÿÜ(ÿÿÿÞÁÝ…PþÿÿÜ0ÿÿÿÞÁÝ@ÿÿÿÝ…`þÿÿÜ ÿÿÿÝ…hþÿÿÜ(ÿÿÿÞÁÝ…pþÿÿÜ0ÿÿÿÞÁÝHÿÿÿÝ…€þÿÿÜ ÿÿÿÝ…ˆþÿÿÜ(ÿÿÿÞÁÝ…þÿÿÜ0ÿÿÿÞÁÝPÿÿÿÝ…@þÿÿÜhÿÿÿÝ…HþÿÿÜpÿÿÿÞÁÝ…PþÿÿÜxÿÿÿÞÁÝ]ˆÝ…`þÿÿÜhÿÿÿÝ…hþÿÿÜpÿÿÿÞÁÝ…pþÿÿÜxÿÿÿÞÁÝ]Ý…€þÿÿÜhÿÿÿÝ…ˆþÿÿÜpÿÿÿÞÁÝ…þÿÿÜxÿÿÿÞÁÝ]˜Ý…øþÿÿÙàÝ]ØÇ…8þÿÿë‹8þÿÿƒÁ‰8þÿÿ‹•8þÿÿ;U¤ ƒ}„üƒ}$„‹…<þÿÿkÀ0‹M$ݘàÝDÚéßàöÄDzK‹•<þÿÿkÒ0‹E$ݘàÝDÚéßàöÄDz,‹<þÿÿkÉ0‹•<þÿÿkÒ0‹E$‹u$ÝD ÝÚéßàöÄD‹l‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝD Ü ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝDÜLÞé‹8þÿÿkÉ‹•ÿÿÿÝÊ‹…<þÿÿkÀ0‹M$ÝDÙà‹•8þÿÿÁâ‹EÜ ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝÜLÞÁ‹8þÿÿkÉ‹•ÿÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ÿÿÿ‹µÿÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ÿÿÿ‹µÿÿÿÝDÂÜLÎÞÁÝ•àýÿÿƒìÝ$茦ƒÄÜ=¨àÝàýÿÿ‹…8þÿÿkÀ‹ÿÿÿÝ…àýÿÿÜ Á‹•8þÿÿkÒ‹…ÿÿÿÝЋ8þÿÿkÉ‹•ÿÿÿÝ…àýÿÿÜLÊ‹…8þÿÿkÀ‹ÿÿÿÝ\ÁëD‹•8þÿÿÁâ‹…8þÿÿkÀ‹ÿÿÿ‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹ÿÿÿ‹uÝDÝ\Á‹ð‹B%„ă}$uD‹8þÿÿÁá‹•8þÿÿkÒ‹…ÿÿÿ‹uÝÝЋ8þÿÿÁá‹•8þÿÿkÒ‹…ÿÿÿ‹uÝDÝ\Ћ8þÿÿkÉ‹•ôþÿÿݘàÝ\Ê‹…8þÿÿkÀ‹ôþÿÿÝ…@ÿÿÿÜ Á‹•8þÿÿkÒ‹…ôþÿÿÝ…HÿÿÿÜLÐÞÁ‹8þÿÿkÉ‹•ôþÿÿÝ…PÿÿÿÜLÊÞÁÝØýÿÿ‹…8þÿÿkÀÝ…ØýÿÿÜ@ÿÿÿ‹ôþÿÿÜ,Á‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉÝ…ØýÿÿÜHÿÿÿ‹•ôþÿÿÜlÊ‹…8þÿÿkÀ‹ôþÿÿÝ\Á‹•8þÿÿkÒÝ…ØýÿÿÜPÿÿÿ‹…ôþÿÿÜlЋ8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÞÁÝÐýÿÿ‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÜ…ÐýÿÿÝ•ÐýÿÿƒìÝ$èó£ƒÄÝÐýÿÿݘàÝ…ÐýÿÿÚéßàöÄD‹”ݨàܵÐýÿÿÝÐýÿÿ‹…8þÿÿkÀ‹ôþÿÿÝ…ÐýÿÿÜ Á‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉ‹•ôþÿÿÝ…ÐýÿÿÜLÊ‹…8þÿÿkÀ‹ôþÿÿÝ\Á‹•8þÿÿkÒ‹…ôþÿÿÝ…ÐýÿÿÜLЋ8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹ÿÿÿݘàÝ\Á‹•8þÿÿkÒ‹…ÿÿÿÝEˆÜ Ћ8þÿÿkÉ‹•ÿÿÿÝEÜLÊÞÁ‹…8þÿÿkÀ‹ÿÿÿÝE˜ÜLÁÞÁÝÈýÿÿ‹•8þÿÿkÒÝ…ÈýÿÿÜMˆ‹…ÿÿÿÜ,Ћ8þÿÿkÉ‹•ÿÿÿÝÊ‹…8þÿÿkÀÝ…ÈýÿÿÜM‹ÿÿÿÜlÁ‹•8þÿÿkÒ‹…ÿÿÿÝ\Ћ8þÿÿkÉÝ…ÈýÿÿÜM˜‹•ÿÿÿÜlÊ‹…8þÿÿkÀ‹ÿÿÿÝ\Á‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝÑÜ Æ‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝDÑÜLÆÞÁÝÀýÿÿ‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝDÑÜLÆÜ…ÀýÿÿÝ•ÀýÿÿƒìÝ$è¿¡ƒÄÝÀýÿÿݘàÝ…ÀýÿÿÚéßàöÄD‹”ݨàܵÀýÿÿÝÀýÿÿ‹•8þÿÿkÒ‹…ÿÿÿÝ…ÀýÿÿÜ Ð‹8þÿÿkÉ‹•ÿÿÿÝÊ‹…8þÿÿkÀ‹ÿÿÿÝ…ÀýÿÿÜLÁ‹•8þÿÿkÒ‹…ÿÿÿÝ\Ћ8þÿÿkÉ‹•ÿÿÿÝ…ÀýÿÿÜLÊ‹…8þÿÿkÀ‹ÿÿÿÝ\Áƒ}$uU‹•8þÿÿÁâ‹E ÝÝ] ‹8þÿÿÁá‹U ÝD Ý]¨‹…8þÿÿÁà‹M ÝÝØþÿÿ‹•8þÿÿÁâ‹E ÝDÝàþÿÿéx‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜLÞÁ‹<þÿÿƒékÉ0‹U$ÜD Ý] ‹…<þÿÿƒèkÀ0‹8þÿÿÁá‹U$‹u ÝDÜ ‹…<þÿÿƒèkÀ0‹8þÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…<þÿÿƒèkÀ0‹M$ÜD(Ý]¨‹•<þÿÿƒêkÒ0‹…8þÿÿÁà‹M$‹u ÝÜ ‹•<þÿÿƒêkÒ0‹…8þÿÿÁà‹M$‹u ÝDÜLÞÁ‹•<þÿÿƒêkÒ0‹E$ÜDÝØþÿÿ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹<þÿÿƒékÉ0‹U$ÜD (ÝàþÿÿݘàÝ]°Ý…øþÿÿÙàÝèþÿÿÝE Ü¥ØþÿÿÜ@ÿÿÿÝ ýÿÿÝE¨Ü¥àþÿÿÜHÿÿÿÜ… ýÿÿÝ ýÿÿÝE°Ü¥èþÿÿÜPÿÿÿÜ… ýÿÿÝ ýÿÿݘàÝ… ýÿÿÚéßàöÄDz*Ç…¼ýÿÿÝE Ý@ÿÿÿÝE¨ÝHÿÿÿÝE°ÝPÿÿÿé,Ç…¼ýÿÿÝ…ÿÿÿÜ¥ØþÿÿÜ@ÿÿÿݨýÿÿÝ…ÿÿÿÜ¥àþÿÿÜHÿÿÿÜ…¨ýÿÿݨýÿÿÝ…ÿÿÿÜ¥èþÿÿÜPÿÿÿÜ…¨ýÿÿÝ•¨ýÿÿܵ ýÿÿݘýÿÿݨàÜ¥˜ýÿÿݰýÿÿÝ…˜ýÿÿÜ  àܨàßàöÄAtÝ…˜ýÿÿÜ  àÜØàßàöÄz Ç…¼ýÿÿÝ…˜ýÿÿÜM Ý…°ýÿÿÜØþÿÿÞÁ‹…8þÿÿkÀ‹M€ÝÁÝ…˜ýÿÿÜM¨Ý…°ýÿÿÜàþÿÿÞÁ‹•8þÿÿkÒ‹E€Ý\ÐÝ…˜ýÿÿÜM°Ý…°ýÿÿÜèþÿÿÞÁ‹8þÿÿkÉ‹U€Ý\ʃ}$„T‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝÜ ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝDÜLÞÁ‹…<þÿÿkÀ0‹M$ÜDÝ] ‹•<þÿÿkÒ0‹…8þÿÿÁà‹M$‹u ÝDÜ ‹•<þÿÿkÒ0‹…8þÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•<þÿÿkÒ0‹E$ÜD(Ý]¨‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹u ÝÜ ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜLÞÁ‹<þÿÿkÉ0‹U$ÜD ÝØþÿÿ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝDÜ ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…<þÿÿkÀ0‹M$ÜD(ÝàþÿÿÝE Ü¥ØþÿÿÜMˆÝxýÿÿÝE¨Ü¥àþÿÿÜMÜ…xýÿÿÝxýÿÿÝE°Ü¥èþÿÿÜM˜Ü…xýÿÿÝxýÿÿݘàÝ…xýÿÿÚéßàöÄDz!Ç…”ýÿÿÝE Ý]ˆÝE¨Ý]ÝE°Ý]˜é#Ç…”ýÿÿÝEÈÜ¥ØþÿÿÜMˆÝ€ýÿÿÝEÐÜ¥àþÿÿÜMÜ…€ýÿÿÝ€ýÿÿÝEØÜ¥èþÿÿÜM˜Ü…€ýÿÿÝ•€ýÿÿܵxýÿÿÝpýÿÿݨàÜ¥pýÿÿ݈ýÿÿÝ…pýÿÿÜ  àܨàßàöÄAtÝ…pýÿÿÜ  àÜØàßàöÄz Ç…”ýÿÿÝ…pýÿÿÜM Ý…ˆýÿÿÜØþÿÿÞÁ‹•8þÿÿkÒ‹…<ÿÿÿÝÐÝ…pýÿÿÜM¨Ý…ˆýÿÿÜàþÿÿÞÁ‹8þÿÿkÉ‹•<ÿÿÿÝ\ÊÝ…pýÿÿÜM°Ý…ˆýÿÿÜèþÿÿÞÁ‹…8þÿÿkÀ‹<ÿÿÿÝ\Áé>òÿÿ‹ð‹Bƒà„„ƒ½\ÿÿÿt=ƒ} t‹<þÿÿƒéÁáM QÿdàÇ…\ÿÿÿ‹U€R…@ÿÿÿP‹MQèÖ ƒÄ ‹Uƒê9•<þÿÿu0ƒ} t‹…<þÿÿÁàE Pÿdà‹<ÿÿÿQUˆR‹EP訥ƒÄ ƒ}$…Å‹ ð‹Qâ…°ƒ} …¦ƒ}u,Ý…øþÿÿƒìÝ$‹…<þÿÿP‹<ÿÿÿQ‹U€R‹EPèZƒÄëo‹ ð‹Qât0Ý…øþÿÿƒìÝ$‹…<þÿÿP‹MüQ‹•<ÿÿÿR‹E€P‹MQè¾`ƒÄë.Ý…øþÿÿƒìÝ$‹•<þÿÿR‹EüP‹<ÿÿÿQ‹U€R‹EPèÎ\ƒÄéûƒ}uLÝ…øþÿÿƒìÝ$‹<þÿÿQ‹•<þÿÿÁâU R‹…<þÿÿƒèÁàE P‹<ÿÿÿQ‹U€R‹EPèL‘ƒÄ é©‹ ð‹QâtMÝ…øþÿÿƒìÝ$‹…<þÿÿP‹<þÿÿÁáM Q‹•<þÿÿƒêÁâU R‹EüP‹<ÿÿÿQ‹U€R‹EPè{”ƒÄ$ëKÝ…øþÿÿƒìÝ$‹<þÿÿQ‹•<þÿÿÁâU R‹…<þÿÿƒèÁàE P‹MüQ‹•<ÿÿÿR‹E€P‹MQè’ƒÄ$éÔƒ} …¼ƒ}u/Ý…øþÿÿƒìÝ$‹•<þÿÿR‹…<ÿÿÿP‹M€Q‹URèßXƒÄé‚¡ð‹Hát:Ý…øþÿÿƒìÝ$‹•<þÿÿR‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQèjƒÄ ë8Ý…øþÿÿƒìÝ$‹•<þÿÿR‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQèÈeƒÄ éƒ}uLÝ…øþÿÿƒìÝ$‹•<þÿÿR‹…<þÿÿÁàE P‹<þÿÿƒéÁáM Q‹•<ÿÿÿR‹E€P‹MQè†ƒÄ é¼‹ð‹B%tWÝ…øþÿÿƒìÝ$‹<þÿÿQ‹•<þÿÿÁâU R‹…<þÿÿƒèÁàE P‹ÿÿÿQ‹•ôþÿÿR‹…<ÿÿÿP‹M€Q‹URè ™ƒÄ(ëUÝ…øþÿÿƒìÝ$‹…<þÿÿP‹<þÿÿÁáM Q‹•<þÿÿƒêÁâU R‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQè•–ƒÄ(ÿˆàÝ…`ÿÿÿÝøþÿÿ‹•<þÿÿ‰UÀ‹Eĉ…<þÿÿÝ…hÿÿÿÝ ÿÿÿÝ…pÿÿÿÝ(ÿÿÿÝ…xÿÿÿÝ0ÿÿÿ‹ôþÿÿ‰M„‹•ÿÿÿ‰•ôþÿÿ‹E„‰…ÿÿÿÝEàÜ ÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜ0ÿÿÿÞÁÝhýÿÿÝààÜhýÿÿÜ ÿÿÿÜmàÝ]àÝààÜhýÿÿÜ(ÿÿÿÜmèÝ]èÝààÜhýÿÿÜ0ÿÿÿÜmðÝ]ðéàéÿÿ‹M¼QÿPàƒÄ^‹å]ÃÌÌÌÌÌÌÌÌU‹ììHVÇEäÇ…lþÿÿÇ…(þÿÿÇ…Äþÿÿ¡ð‹HƒátÇ…dþÿÿÇ…lþÿÿ`oëÇ…dþÿÿÇ…lþÿÿPŃ}uݘàÝ]ÈݨàÝ]ÐݘàÝ]Øë‹UÝÝ]È‹EÝ@Ý]ЋMÝAÝ]Ø‹UR‹EPMÈQèÌƒÄ Ý˜àÝHþÿÿݘàÝPþÿÿݘàÝXþÿÿݘàÝ]¨Ý˜àÝ]°Ý¨àÝ]¸‹UkÒ ‹EkÀÁà ЋUÑâ‘PÿTàƒÄ‰…|ÿÿÿ‹|ÿÿÿ‰$þÿÿ‹UkÒ‹…$þÿÿ Љhþÿÿ‹UkÒ‹…hþÿÿ Љÿÿÿ‹UkÒ‹…ÿÿÿ Љ¤þÿÿ‹UkÒ‹…¤þÿÿ ЉTÿÿÿ‹UkÒ‹…Tÿÿÿ Љ`þÿÿ‹UkÒ‹…`þÿÿ Љþÿÿ‹U‹…þÿÿ ‰MÀÇE€‹U€‰•Lýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝÜ$ÝÐýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜdÝØýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜdÝàýÿÿÝ…ÐýÿÿÜÐýÿÿÝ…ØýÿÿÜØýÿÿÞÁÝXÿÿÿÝ…àýÿÿÜàýÿÿÜ…XÿÿÿÝ•XÿÿÿƒìÝ$è»’ƒÄÝXÿÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝÜÝ(ýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜDÝ0ýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜDÝ8ýÿÿÝ…(ýÿÿÜ(ýÿÿÝ…0ýÿÿÜ0ýÿÿÞÁÝ@ýÿÿÝ…8ýÿÿÜ8ýÿÿÜ…@ýÿÿÝ•@ýÿÿƒìÝ$èö‘ƒÄÝ@ýÿÿÝ…@ýÿÿÜ  àÝ@ýÿÿ‹…LýÿÿƒÀ‰…LýÿÿÝ…XÿÿÿÜ@ýÿÿßàöÄAz‹Mƒé9LýÿÿŒ0þÿÿÝ…XÿÿÿÝ]èƒ}„2ƒ}$…“‹•$þÿÿ‰Uä‹E䉅hþÿÿÇ…Hýÿÿë‹HýÿÿƒÁ‰Hýÿÿ‹•Hýÿÿ;U}V‹…HýÿÿÁà‹HýÿÿkÉ‹Uä‹uÝÝÊ‹…HýÿÿÁà‹HýÿÿkÉ‹Uä‹uÝDÝ\Ê‹…HýÿÿkÀ‹MäݘàÝ\Áëé“Ç…Hýÿÿë‹•HýÿÿƒÂ‰•Hýÿÿ‹…Hýÿÿ;Ei‹LýÿÿƒékÉ0‹U$ݘàÝD ÚéßàöÄDzT‹…LýÿÿƒèkÀ0‹M$ݘàÝDÚéßàöÄDz2‹•LýÿÿƒêkÒ0‹…LýÿÿƒèkÀ0‹M$‹u$ÝD ÝÚéßàöÄD‹x‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝD Ü ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝDÜLÞé‹•HýÿÿkÒ‹…$þÿÿÝЋLýÿÿƒékÉ0‹U$ÝD Ùà‹…HýÿÿÁà‹MÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝÜLÞÁ‹•HýÿÿkÒ‹…$þÿÿÝ\ЋHýÿÿkÉ‹•HýÿÿkÒ‹…$þÿÿ‹µ$þÿÿÝÈÜ Ö‹HýÿÿkÉ‹•HýÿÿkÒ‹…$þÿÿ‹µ$þÿÿÝDÈÜLÖÞÁÝ• ýÿÿƒìÝ$èFƒÄÜ=¨àÝ ýÿÿ‹HýÿÿkÉ‹•$þÿÿÝ… ýÿÿÜ Ê‹…HýÿÿkÀ‹$þÿÿÝÁ‹•HýÿÿkÒ‹…$þÿÿÝ… ýÿÿÜLЋHýÿÿkÉ‹•$þÿÿÝ\ÊëD‹…HýÿÿÁà‹HýÿÿkÉ‹•$þÿÿ‹uÝÝÊ‹…HýÿÿÁà‹HýÿÿkÉ‹•$þÿÿ‹uÝDÝ\Ê‹…HýÿÿkÀ‹$þÿÿݘàÝ\Á‹•HýÿÿkÒ‹…hþÿÿݘàÝ\ÐéyýÿÿëÇEä‹Mä‰hþÿÿ‹•hþÿÿ‰•$þÿÿ‹…LýÿÿkÀEP‹M€kÉMQ‹U€ƒêkÒUR…pþÿÿPè¶=ƒÄ‹M€kÉ‹U€ƒêkÒ‹E‹uÝÜ$Ýàüÿÿ‹M€kÉ‹U€ƒêkÒ‹E‹uÝDÜdÝèüÿÿ‹M€kÉ‹U€ƒêkÒ‹E‹uÝDÜdÝðüÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝÜ$Ýýÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝDÜdÝýÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝDÜdÝýÿÿÝ…àüÿÿÜàüÿÿÝ…èüÿÿÜèüÿÿÞÁÝýÿÿÝ…ðüÿÿÜðüÿÿÜ…ýÿÿÝ•ýÿÿƒìÝ$èƒÄÝýÿÿÝ…ýÿÿÜýÿÿÝ…ýÿÿÜýÿÿÞÁÝØüÿÿÝ…ýÿÿÜýÿÿÜ…ØüÿÿÝ•ØüÿÿƒìÝ$è¶ŒƒÄÝØüÿÿÝ àÜØüÿÿÜýÿÿßàöÄ…ŠÝ˜àÝ…ØüÿÿÚéßàöÄDz!ݘàÝ•ØþÿÿÝ•ÐþÿÿÝÈþÿÿÇE¤ëOݨàܵØüÿÿÝØüÿÿÝ…ØüÿÿÜýÿÿÝÈþÿÿÝ…ØüÿÿÜýÿÿÝÐþÿÿÝ…ØüÿÿÜýÿÿÝØþÿÿÇE¤éûÇE¤Ý àÜýÿÿÜØüÿÿßàöÄuMݨàܵýÿÿÝýÿÿÝ…ýÿÿÜàüÿÿÝÈþÿÿÝ…ýÿÿÜèüÿÿÝÐþÿÿÝ…ýÿÿÜðüÿÿÝØþÿÿéŽÝ¨àܵýÿÿÝýÿÿÝ…ýÿÿÜàüÿÿÝàüÿÿÝ…ýÿÿÜèüÿÿÝèüÿÿÝ…ýÿÿÜðüÿÿÝðüÿÿݨàܵØüÿÿÝØüÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…àüÿÿÜ¥ýÿÿÝÈþÿÿÝ…èüÿÿÜ¥ýÿÿÝÐþÿÿÝ…ðüÿÿÜ¥ýÿÿÝØþÿÿÝ…ÈþÿÿÜÈþÿÿÝ…ÐþÿÿÜÐþÿÿÞÁÝøüÿÿÝ…ØþÿÿÜØþÿÿÜ…øüÿÿÝ•øüÿÿƒìÝ$芃ÄÝøüÿÿÝ…øüÿÿÜ àßàöÄz!ݘàÝ•ØþÿÿÝ•ÐþÿÿÝÈþÿÿÇE¤ëHݨàܵøüÿÿÝøüÿÿÝ…øüÿÿÜÈþÿÿÝÈþÿÿÝ…øüÿÿÜÐþÿÿÝÐþÿÿÝ…øüÿÿÜØþÿÿÝØþÿÿÝEÈÜpþÿÿÝEÐÜxþÿÿÞÁÝEØÜ€þÿÿÞÁÝÐüÿÿÝààÜÐüÿÿÜpþÿÿÜmÈÝ]ÈÝààÜÐüÿÿÜxþÿÿÜmÐÝ]ÐÝààÜÐüÿÿÜ€þÿÿÜmØÝ]Ø‹Mƒé9Lýÿÿµ!‹•Lýÿÿ‰U„‹E„ƒÀkÀ‹M„kÉ‹U‹uÝÜ$ÝÐýÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜdÝØýÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜdÝàýÿÿÝ…ÐýÿÿÜÐýÿÿÝ…ØýÿÿÜØýÿÿÞÁÝXÿÿÿÝ…àýÿÿÜàýÿÿÜ…XÿÿÿÝ•XÿÿÿƒìÝ$èÙˆƒÄÝXÿÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝÜݰüÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜDݸüÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜDÝÀüÿÿÝ…°üÿÿܰüÿÿÝ…¸üÿÿܸüÿÿÞÁÝÈüÿÿÝ…ÀüÿÿÜÀüÿÿÜ…ÈüÿÿÝ•ÈüÿÿƒìÝ$è&ˆƒÄÝÈüÿÿÝ…ÈüÿÿÜ  àÝÈüÿÿ‹E„ƒÀ‰E„Ý…XÿÿÿÜÈüÿÿßàöÄAz‹Mƒé9M„Œ]þÿÿ‹U„kÒUR‹…LýÿÿkÀEP‹M€kÉMQ•ÿÿÿRèS7ƒÄ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝÜ$Ýpüÿÿ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝDÜdÝxüÿÿ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝDÜdÝ€üÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝÜ$Ýüÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝDÜdݘüÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝDÜdÝ üÿÿÝ…püÿÿÜpüÿÿÝ…xüÿÿÜxüÿÿÞÁݨüÿÿÝ…€üÿÿÜ€üÿÿÜ…¨üÿÿÝ•¨üÿÿƒìÝ$蟆ƒÄݨüÿÿÝ…üÿÿÜüÿÿÝ…˜üÿÿܘüÿÿÞÁÝhüÿÿÝ… üÿÿÜ üÿÿÜ…hüÿÿÝ•hüÿÿƒìÝ$èS†ƒÄÝhüÿÿÝ àÜhüÿÿܨüÿÿßàöÄu~ݘàÝ…hüÿÿÚéßàöÄDzݘàÝU˜ÝUÝ]ˆÇ…,þÿÿëIݨàܵhüÿÿÝhüÿÿÝ…hüÿÿÜüÿÿÝ]ˆÝ…hüÿÿܘüÿÿÝ]Ý…hüÿÿÜ üÿÿÝ]˜Ç…,þÿÿéÂÇ…,þÿÿÝ àܨüÿÿÜhüÿÿßàöÄuDݨàܵ¨üÿÿݨüÿÿÝ…¨üÿÿÜpüÿÿÝ]ˆÝ…¨üÿÿÜxüÿÿÝ]Ý…¨üÿÿÜ€üÿÿÝ]˜é[ݨàܵ¨üÿÿݨüÿÿÝ…¨üÿÿÜpüÿÿÝpüÿÿÝ…¨üÿÿÜxüÿÿÝxüÿÿÝ…¨üÿÿÜ€üÿÿÝ€üÿÿݨàܵhüÿÿÝhüÿÿÝ…hüÿÿÜüÿÿÝüÿÿÝ…hüÿÿܘüÿÿݘüÿÿÝ…hüÿÿÜ üÿÿÝ üÿÿÝ…püÿÿÜ¥üÿÿÝ]ˆÝ…xüÿÿÜ¥˜üÿÿÝ]Ý…€üÿÿÜ¥ üÿÿÝ]˜ÝEˆÜMˆÝEÜMÞÁ݈üÿÿÝE˜ÜM˜Ü…ˆüÿÿÝ•ˆüÿÿƒìÝ$è^„ƒÄ݈üÿÿÝ…ˆüÿÿÜ àßàöÄzݘàÝU˜ÝUÝ]ˆÇ…,þÿÿë6ݨàܵˆüÿÿ݈üÿÿÝ…ˆüÿÿÜMˆÝ]ˆÝ…ˆüÿÿÜMÝ]Ý…ˆüÿÿÜM˜Ý]˜EÈP‹LýÿÿkÉMQ‹U€kÒUR…PýÿÿPè*ƒÄÿlàPýÿÿQÿhàÝ…PýÿÿÜÈþÿÿÝ…XýÿÿÜÐþÿÿÞÁÝ…`ýÿÿÜØþÿÿÞÁÝàþÿÿÝ…pýÿÿÜÈþÿÿÝ…xýÿÿÜÐþÿÿÞÁÝ…€ýÿÿÜØþÿÿÞÁÝèþÿÿÝ…ýÿÿÜÈþÿÿÝ…˜ýÿÿÜÐþÿÿÞÁÝ… ýÿÿÜØþÿÿÞÁÝðþÿÿÝ…PýÿÿÜMˆÝ…XýÿÿÜMÞÁÝ…`ýÿÿÜM˜ÞÁ݈þÿÿÝ…pýÿÿÜMˆÝ…xýÿÿÜMÞÁÝ…€ýÿÿÜM˜ÞÁÝþÿÿÝ…ýÿÿÜMˆÝ…˜ýÿÿÜMÞÁÝ… ýÿÿÜM˜ÞÁݘþÿÿÝ…PýÿÿÜpþÿÿÝ…XýÿÿÜxþÿÿÞÁÝ…`ýÿÿÜ€þÿÿÞÁݨþÿÿÝ…pýÿÿÜpþÿÿÝ…xýÿÿÜxþÿÿÞÁÝ…€ýÿÿÜ€þÿÿÞÁݰþÿÿÝ…ýÿÿÜpþÿÿÝ…˜ýÿÿÜxþÿÿÞÁÝ… ýÿÿÜ€þÿÿÞÁݸþÿÿÝ…PýÿÿÜÿÿÿÝ…XýÿÿÜÿÿÿÞÁÝ…`ýÿÿÜÿÿÿÞÁÝ ÿÿÿÝ…pýÿÿÜÿÿÿÝ…xýÿÿÜÿÿÿÞÁÝ…€ýÿÿÜÿÿÿÞÁÝ(ÿÿÿÝ…ýÿÿÜÿÿÿÝ…˜ýÿÿÜÿÿÿÞÁÝ… ýÿÿÜÿÿÿÞÁÝ0ÿÿÿÝEèÙàÝ]¸Ç…Hýÿÿë‹•HýÿÿƒÂ‰•Hýÿÿ‹…Hýÿÿ;Eäƒ}$…±‹HýÿÿÁá‹U Ý Ý8ÿÿÿ‹…HýÿÿÁà‹M ÝDÝ@ÿÿÿ‹•HýÿÿÁâ‹E ÝÝþÿÿ‹HýÿÿÁá‹U ÝD Ýþÿÿ‹…HýÿÿÁà‹M ÝÝ`ÿÿÿ‹•HýÿÿÁâ‹E ÝDÝhÿÿÿ‹HýÿÿÁá‹U Ý Ý0þÿÿ‹…HýÿÿÁà‹M ÝDÝ8þÿÿéü‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜLÞÁ‹•LýÿÿƒêkÒ0‹E$ÜDÝ8ÿÿÿ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜ ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹LýÿÿƒékÉ0‹U$ÜD (Ý@ÿÿÿ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝÜ ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝDÜLÞÁ‹…LýÿÿkÀ0‹M$ÜDÝ`ÿÿÿ‹•LýÿÿkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜ ‹•LýÿÿkÒ0‹…HýÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•LýÿÿkÒ0‹E$ÜD(Ýhÿÿÿ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹u ÝÜ ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜLÞÁ‹LýÿÿkÉ0‹U$ÜD Ýþÿÿ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝDÜ ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…LýÿÿkÀ0‹M$ÜD(Ýþÿÿ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜLÞÁ‹•LýÿÿƒêkÒ0‹E$ÜDÝ0þÿÿ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜ ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹LýÿÿƒékÉ0‹U$ÜD (Ý8þÿÿƒ}„‹…LýÿÿkÀ0‹M$ݘàÝDÚéßàöÄDzK‹•LýÿÿkÒ0‹E$ݘàÝDÚéßàöÄDz,‹LýÿÿkÉ0‹•LýÿÿkÒ0‹E$‹u$ÝD ÝÚéßàöÄD‹l‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝD Ü ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝDÜLÞé‹HýÿÿkÉ‹•hþÿÿÝÊ‹…LýÿÿkÀ0‹M$ÝDÙà‹•HýÿÿÁâ‹EÜ ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝÜLÞÁ‹HýÿÿkÉ‹•hþÿÿÝ\Ê‹…HýÿÿkÀ‹HýÿÿkÉ‹•hþÿÿ‹µhþÿÿÝÂÜ Î‹…HýÿÿkÀ‹HýÿÿkÉ‹•hþÿÿ‹µhþÿÿÝDÂÜLÎÞÁÝ•`üÿÿƒìÝ$èi|ƒÄÜ=¨àÝ`üÿÿ‹…HýÿÿkÀ‹hþÿÿÝ…`üÿÿÜ Á‹•HýÿÿkÒ‹…hþÿÿÝЋHýÿÿkÉ‹•hþÿÿÝ…`üÿÿÜLÊ‹…HýÿÿkÀ‹hþÿÿÝ\ÁëD‹•HýÿÿÁâ‹…HýÿÿkÀ‹hþÿÿ‹uÝÝÁ‹•HýÿÿÁâ‹…HýÿÿkÀ‹hþÿÿ‹uÝDÝ\ÁݘàÝHÿÿÿݘàÝpÿÿÿÝEèÙàÝþÿÿÝEèÙàÝ@þÿÿƒ}¤„wƒ½dþÿÿ„jÝ…8ÿÿÿÜ¥þÿÿÜàþÿÿÝ@üÿÿÝ…@ÿÿÿÜ¥þÿÿÜèþÿÿÜ…@üÿÿÝ@üÿÿÝ…HÿÿÿÜ¥þÿÿÜðþÿÿÜ…@üÿÿÝ@üÿÿݘàÝ…@üÿÿÚéßàöÄDz3Ç…\üÿÿÝ…8ÿÿÿÝàþÿÿÝ…@ÿÿÿÝèþÿÿÝ…HÿÿÿÝðþÿÿéÇ…\üÿÿÝ…HþÿÿÜ¥þÿÿÜàþÿÿÝHüÿÿÝ…PþÿÿÜ¥þÿÿÜèþÿÿÜ…HüÿÿÝHüÿÿÝ…XþÿÿÜ¥þÿÿÜðþÿÿÜ…HüÿÿÝ•Hüÿÿܵ@üÿÿÝ8üÿÿݨàÜ¥8üÿÿÝPüÿÿÝ…8üÿÿÜ  àܨàßàöÄAtÝ…8üÿÿÜ  àÜØàßàöÄz Ç…\üÿÿÝ…8üÿÿÜ8ÿÿÿÝ…PüÿÿÜþÿÿÞÁÝèýÿÿÝ…8üÿÿÜ@ÿÿÿÝ…PüÿÿÜþÿÿÞÁÝðýÿÿÝ…8üÿÿÜHÿÿÿÝ…PüÿÿÜþÿÿÞÁÝøýÿÿÝ…ðþÿÿܘàßàöÄz6ÝØàÜàþÿÿÝàþÿÿÝØàÜèþÿÿÝèþÿÿÝØàÜðþÿÿÝðþÿÿÝ…àþÿÿÜ8ÿÿÿÝ]ðÝ…èþÿÿÜ@ÿÿÿÜEðÝ]ð‹•HýÿÿkÒ‹…ÿÿÿÝ…èýÿÿÝЋHýÿÿkÉ‹•ÿÿÿÝ…ðýÿÿÝ\Ê‹…HýÿÿkÀ‹ÿÿÿÝ…øýÿÿÝ\ÁëSݨàÝ]ð‹•HýÿÿkÒ‹…ÿÿÿÝ…8ÿÿÿÝЋHýÿÿkÉ‹•ÿÿÿÝ…@ÿÿÿÝ\Ê‹…HýÿÿkÀ‹ÿÿÿÝ…HÿÿÿÝ\ÁÝ…8ÿÿÿÜ¥0þÿÿܨþÿÿÝüÿÿÝ…@ÿÿÿÜ¥8þÿÿܰþÿÿÜ…üÿÿÝüÿÿÝ…HÿÿÿÜ¥@þÿÿܸþÿÿÜ…üÿÿÝüÿÿݘàÝ…üÿÿÚéßàöÄDz3Ç…4üÿÿÝ…8ÿÿÿݨþÿÿÝ…@ÿÿÿݰþÿÿÝ…HÿÿÿݸþÿÿéÇ…4üÿÿÝ…HþÿÿÜ¥0þÿÿܨþÿÿÝ üÿÿÝ…PþÿÿÜ¥8þÿÿܰþÿÿÜ… üÿÿÝ üÿÿÝ…XþÿÿÜ¥@þÿÿܸþÿÿÜ… üÿÿÝ• üÿÿܵüÿÿÝüÿÿݨàÜ¥üÿÿÝ(üÿÿÝ…üÿÿÜ  àܨàßàöÄAtÝ…üÿÿÜ  àÜØàßàöÄz Ç…4üÿÿÝ…üÿÿÜ8ÿÿÿÝ…(üÿÿÜ0þÿÿÞÁÝèýÿÿÝ…üÿÿÜ@ÿÿÿÝ…(üÿÿÜ8þÿÿÞÁÝðýÿÿÝ…üÿÿÜHÿÿÿÝ…(üÿÿÜ@þÿÿÞÁÝøýÿÿÝEðܘàßàöÄA{$‹•HýÿÿkÒ‹…ÿÿÿÝ…øýÿÿÜ\ÐßàöÄŠÏ‹HýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝÎÝЋHýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝDÎÝ\ЋHýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝDÎÝ\ЋHýÿÿkÉ‹•ÿÿÿÝ…èýÿÿÝÊ‹…HýÿÿkÀ‹ÿÿÿÝ…ðýÿÿÝ\Á‹•HýÿÿkÒ‹…ÿÿÿÝ…øýÿÿÝ\ЋHýÿÿ‹•þÿÿÇŠë‹…Hýÿÿ‹þÿÿÇ‹•HýÿÿkÒÝEèÙà‹…ÿÿÿÜ\ÐßàöÄAuJ‹HýÿÿkÉ‹•ÿÿÿÝ…þÿÿÝÊ‹…HýÿÿkÀ‹ÿÿÿÝ…þÿÿÝ\Á‹•HýÿÿkÒ‹…ÿÿÿÝ…þÿÿÝ\Ѓ½,þÿÿ„nƒ½dþÿÿ„aÝ…þÿÿÜ¥8ÿÿÿ܈þÿÿÝðûÿÿÝ…þÿÿÜ¥@ÿÿÿÜþÿÿÜ…ðûÿÿÝðûÿÿÝ…þÿÿÜ¥HÿÿÿܘþÿÿÜ…ðûÿÿÝðûÿÿݘàÝ…ðûÿÿÚéßàöÄDz3Ç… üÿÿÝ…þÿÿ݈þÿÿÝ…þÿÿÝþÿÿÝ…þÿÿݘþÿÿéÇ… üÿÿÝE¨Ü¥8ÿÿÿ܈þÿÿÝøûÿÿÝE°Ü¥@ÿÿÿÜþÿÿÜ…øûÿÿÝøûÿÿÝE¸Ü¥HÿÿÿܘþÿÿÜ…øûÿÿÝ•øûÿÿܵðûÿÿÝèûÿÿݨàÜ¥èûÿÿÝüÿÿÝ…èûÿÿÜ  àܨàßàöÄAtÝ…èûÿÿÜ  àÜØàßàöÄz Ç… üÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜ8ÿÿÿÞÁÝèýÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜ@ÿÿÿÞÁÝðýÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜHÿÿÿÞÁÝøýÿÿÝ…˜þÿÿܘàßàöÄAu6ÝØà܈þÿÿ݈þÿÿÝØàÜþÿÿÝþÿÿÝØàܘþÿÿݘþÿÿÝ…ˆþÿÿÜþÿÿÝ]ðÝ…þÿÿÜþÿÿÜEðÝ]ð‹HýÿÿkÉ‹•¤þÿÿÝ…èýÿÿÝÊ‹…HýÿÿkÀ‹¤þÿÿÝ…ðýÿÿÝ\Á‹•HýÿÿkÒ‹…¤þÿÿÝ…øýÿÿÝ\ÐëSݨàÝ]ð‹HýÿÿkÉ‹•¤þÿÿÝ…þÿÿÝÊ‹…HýÿÿkÀ‹¤þÿÿÝ…þÿÿÝ\Á‹•HýÿÿkÒ‹…¤þÿÿÝ…þÿÿÝ\ÐÝ…`ÿÿÿÜ¥þÿÿÜ ÿÿÿÝÈûÿÿÝ…hÿÿÿÜ¥þÿÿÜ(ÿÿÿÜ…ÈûÿÿÝÈûÿÿÝ…pÿÿÿÜ¥þÿÿÜ0ÿÿÿÜ…ÈûÿÿÝÈûÿÿݘàÝ…ÈûÿÿÚéßàöÄDz3Ç…äûÿÿÝ…`ÿÿÿÝ ÿÿÿÝ…hÿÿÿÝ(ÿÿÿÝ…pÿÿÿÝ0ÿÿÿéÇ…äûÿÿÝE¨Ü¥þÿÿÜ ÿÿÿÝÐûÿÿÝE°Ü¥þÿÿÜ(ÿÿÿÜ…ÐûÿÿÝÐûÿÿÝE¸Ü¥þÿÿÜ0ÿÿÿÜ…ÐûÿÿÝ•ÐûÿÿܵÈûÿÿÝÀûÿÿݨàÜ¥ÀûÿÿÝØûÿÿÝ…ÀûÿÿÜ  àܨàßàöÄAtÝ…ÀûÿÿÜ  àÜØàßàöÄz Ç…äûÿÿÝ…ÀûÿÿÜ`ÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝèýÿÿÝ…ÀûÿÿÜhÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝðýÿÿÝ…ÀûÿÿÜpÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝøýÿÿÝEðܘàßàöÄA{$‹HýÿÿkÉ‹•¤þÿÿÝ…øýÿÿÜ\ÊßàöÄA…Ì‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝÆÝÊ‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝDÆÝ\Ê‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝDÆÝ\Ê‹…HýÿÿkÀ‹¤þÿÿÝ…èýÿÿÝÁ‹•HýÿÿkÒ‹…¤þÿÿÝ…ðýÿÿÝ\ЋHýÿÿkÉ‹•¤þÿÿÝ…øýÿÿÝ\Ê‹…Hýÿÿ‹MÀÇë‹•Hýÿÿ‹EÀÇ‹HýÿÿkÉ‹•¤þÿÿÝDÊܘàßàöÄAuJ‹…HýÿÿkÀ‹¤þÿÿÝ…8ÿÿÿÝÁ‹•HýÿÿkÒ‹…¤þÿÿÝ…@ÿÿÿÝ\ЋHýÿÿkÉ‹•¤þÿÿÝ…HÿÿÿÝ\Êéþíÿÿƒ}$…ƒ} …¯ƒ}u/Ý…XÿÿÿƒìÝ$‹…LýÿÿP‹¤þÿÿQ‹•ÿÿÿR‹EPè]0ƒÄëu‹ ð‹Qât3Ý…XÿÿÿƒìÝ$‹…LýÿÿP‹MäQ‹•¤þÿÿR‹…ÿÿÿP‹MQè‰6ƒÄë1Ý…XÿÿÿƒìÝ$‹•LýÿÿR‹EäP‹¤þÿÿQ‹•ÿÿÿR‹EPè–2ƒÄéƒ}uOÝ…XÿÿÿƒìÝ$‹LýÿÿQ‹•LýÿÿÁâU R‹…LýÿÿƒèÁàE P‹¤þÿÿQ‹•ÿÿÿR‹EPègƒÄ 鯋 ð‹QâtPÝ…XÿÿÿƒìÝ$‹…LýÿÿP‹LýÿÿÁáM Q‹•LýÿÿƒêÁâU R‹EäP‹¤þÿÿQ‹•ÿÿÿR‹EPè=jƒÄ$ëNÝ…XÿÿÿƒìÝ$‹LýÿÿQ‹•LýÿÿÁâU R‹…LýÿÿƒèÁàE P‹MäQ‹•¤þÿÿR‹…ÿÿÿP‹MQèÍgƒÄ$éæƒ} …Ń}u2Ý…XÿÿÿƒìÝ$‹•LýÿÿR‹…¤þÿÿP‹ÿÿÿQ‹URè›.ƒÄ鈡ð‹Hát=Ý…XÿÿÿƒìÝ$‹•LýÿÿR‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQèË?ƒÄ ë;Ý…XÿÿÿƒìÝ$‹•LýÿÿR‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQè~;ƒÄ éƒ}uOÝ…XÿÿÿƒìÝ$‹•LýÿÿR‹…LýÿÿÁàE P‹LýÿÿƒéÁáM Q‹•¤þÿÿR‹…ÿÿÿP‹MQè9eƒÄ é‹ð‹B%tZÝ…XÿÿÿƒìÝ$‹LýÿÿQ‹•LýÿÿÁâU R‹…LýÿÿƒèÁàE P‹hþÿÿQ‹•$þÿÿR‹…¤þÿÿP‹ÿÿÿQ‹URè¼nƒÄ(ëXÝ…XÿÿÿƒìÝ$‹…LýÿÿP‹LýÿÿÁáM Q‹•LýÿÿƒêÁâU R‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQèBlƒÄ(ƒ½ÄþÿÿtcÇ…Äþÿÿ‹•lþÿÿ‰•(þÿÿÇ…lþÿÿy¡ð‹Hƒát6ƒ} t‹•LýÿÿƒêÁâU Rÿdà‹…ÿÿÿP¨þÿÿQ‹URè6rƒÄ ƒ} t&‹…LýÿÿƒèÁàE ‰EÄ‹LýÿÿÁáM ‰üþÿÿëÇEÄÇ…üþÿÿƒ}…'ƒ}¤t •àþÿÿ‰UüëÇEü‹…lþÿÿPj‹MüQ‹•üþÿÿR‹EÄP¨þÿÿQ•HþÿÿR‹…þÿÿP‹TÿÿÿQ‹•ÿÿÿR‹EPèP ƒÄ,‹Mƒé9LýÿÿuM‹ð‹Bƒàt=ƒ} t‹LýÿÿÁáM Qÿdà‹•¤þÿÿR… ÿÿÿP‹MQèQvƒÄ Ç…lþÿÿyë ‹•(þÿÿ‰•lþÿÿƒ½,þÿÿt …ˆþÿÿ‰EüëÇEü‹lþÿÿQj‹UüR‹EÄP‹üþÿÿQ• ÿÿÿRE¨P‹MÀQ‹•`þÿÿR‹…¤þÿÿP‹MQè ƒÄ,é/ƒ}¤t •àþÿÿ‰UüëÇEü‹…lþÿÿPj‹MüQ‹•üþÿÿR‹EÄP‹$þÿÿQ•¨þÿÿR…HþÿÿP‹þÿÿQ‹•TÿÿÿR‹…ÿÿÿP‹MQèRƒÄ0‹Uƒê9•LýÿÿuL¡ð‹Hƒát=ƒ} t‹•LýÿÿÁâU Rÿdà‹…¤þÿÿP ÿÿÿQ‹URè$uƒÄ Ç…lþÿÿyë ‹…(þÿÿ‰…lþÿÿƒ½,þÿÿt ˆþÿÿ‰MüëÇEü‹•lþÿÿRj‹EüP‹MÄQ‹•üþÿÿR‹…hþÿÿP ÿÿÿQU¨R‹EÀP‹`þÿÿQ‹•¤þÿÿR‹EP艃Ä0ÿˆà‹$þÿÿ‰ÿÿÿ‹•hþÿÿ‰•$þÿÿ‹…ÿÿÿ‰…hþÿÿÝ…XÿÿÿÝ]è‹Lýÿÿ‰M€‹U„‰•LýÿÿÝ…ÿÿÿÝpþÿÿÝ…ÿÿÿÝxþÿÿÝ…ÿÿÿÝ€þÿÿÝEˆÝÈþÿÿÝEÝÐþÿÿÝE˜ÝØþÿÿ‹…,þÿÿ‰E¤ÝEÈÜpþÿÿÝEÐÜxþÿÿÞÁÝEØÜ€þÿÿÞÁݸûÿÿÝààܸûÿÿÜpþÿÿÜmÈÝ]ÈÝààܸûÿÿÜxþÿÿÜmÐÝ]ÐÝààܸûÿÿÜ€þÿÿÜmØÝ]Øé9Þÿÿ‹|ÿÿÿQÿPàƒÄ^‹å]ÃÌÌU‹ììhVÇEüÇEôè[g‰Eð¡|àPh‡‹MðQè>g‹xàRh‡‹EðPè)g‹ tàQh‡‹UðRègƒ}t ‹EPÿdàƒ} „«ƒ}tm‹MÝAܘàßàöÄz4‹UÝØàÜ ‹EÝ‹MÝØàÜI‹UÝZ‹EÝØàÜH‹MÝY‹ðƒzt‹EP‹ ðÿQƒÄ‹URÿpà‹EðPèxfÇEô‹MƒékÉM ‰MüÇEøë ‹UøƒÂ‰Uø‹Eƒè9Eøá‹MøkÉ‹U ‹EüÝ Ü Ý]¨‹MøkÉ‹U ‹EüÝD Ü`Ý]°‹MøkÉ‹U ‹EüÝD Ü`Ý]¸‹MøƒÁkÉ‹UøkÒ‹E ‹u ÝÜ$Ý]À‹MøƒÁkÉ‹UøkÒ‹E ‹u ÝDÜdÝ]È‹MøƒÁkÉ‹UøkÒ‹E ‹u ÝDÜdÝ]ÐÝE¨ÜM¨ÝE°ÜM°ÞÁÝE¸ÜM¸ÞÁÝ]ØÝEÀÜMÀÝEÈÜMÈÞÁÝEÐÜMÐÞÁÝ] Ý àÜMØÜ] ßàöÄu Ç…Äþÿÿë Ç…Äþÿÿ‹Äþÿÿ‰Mìƒ}ìuÝ àÜM Ü]ØßàöÄt Ç…Àþÿÿë Ç…Àþÿÿ‹•Àþÿÿ‰UìÝE¨ÜMÀÝE°ÜMÈÞÁÝE¸ÜMÐÞÁÝ]àƒ}ìu5ÝEØÜM ÝEàÜMàÞéÝEØÜM Ü  àÜ  àÞÙßàöÄt Ç…¼þÿÿë Ç…¼þÿÿ‹…¼þÿÿ‰Eìƒ}ìu5‹MøkÉM Q‹UøkÒU R‹EðPèwd‹MøkÉM ‰Müƒ}ôu‹Uü‰Uôéþÿÿƒ}ôu‹E ‰Eô‹MƒékÉ‹U ‹EüÝ Ü Ý`ÿÿÿ‹MƒékÉ‹U ‹EüÝD Ü`Ýhÿÿÿ‹MƒékÉ‹U ‹EüÝD Ü`Ýpÿÿÿ‹MƒékÉ‹Uô‹E ÝÜ$Ýxÿÿÿ‹MƒékÉ‹Uô‹E ÝBÜdÝ]€‹MƒékÉ‹Uô‹E ÝBÜdÝ]ˆÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜhÿÿÿÞÁÝ…pÿÿÿÜpÿÿÿÞÁÝ]Ý…xÿÿÿÜxÿÿÿÝE€ÜM€ÞÁÝEˆÜMˆÞÁÝXÿÿÿÝ àÜMÜXÿÿÿßàöÄu Ç…¸þÿÿë Ç…¸þÿÿ‹¸þÿÿ‰Mìƒ}ìu"Ý àÜXÿÿÿÜ]ßàöÄt Ç…´þÿÿë Ç…´þÿÿ‹•´þÿÿ‰UìÝ…`ÿÿÿÜxÿÿÿÝ…hÿÿÿÜM€ÞÁÝ…pÿÿÿÜMˆÞÁÝ]˜ƒ}ìu;ÝEÜXÿÿÿÝE˜ÜM˜ÞéÝEÜXÿÿÿÜ  àÜ  àÞÙßàöÄt Ç…°þÿÿë Ç…°þÿÿ‹…°þÿÿ‰Eìƒ}ìu#‹MƒékÉM Q‹UƒêkÒU R‹EðPèQb‹MðQèBbéóƒ}tl‹UÝBܘàßàöÄAu4‹EÝØàÜ‹MÝ‹UÝØàÜJ‹EÝX‹MÝØàÜI‹UÝZ¡ðƒxt‹MQ‹ðÿRƒÄ‹EPÿpà‹MðQèÎaÇEô‹U ‰Uü‹Eƒè‰Eøë ‹Møƒé‰Møƒ}øŽP‹UøkÒ‹E ‹MüÝÜ!Ýÿÿÿ‹UøkÒ‹E ‹MüÝDÜaÝ ÿÿÿ‹UøkÒ‹E ‹MüÝDÜaÝ(ÿÿÿ‹UøƒêkÒ‹EøkÀ‹M ‹u ÝÜ$Ý0ÿÿÿ‹UøƒêkÒ‹EøkÀ‹M ‹u ÝDÜdÝ8ÿÿÿ‹UøƒêkÒ‹EøkÀ‹M ‹u ÝDÜdÝ@ÿÿÿÝ…ÿÿÿÜÿÿÿÝ… ÿÿÿÜ ÿÿÿÞÁÝ…(ÿÿÿÜ(ÿÿÿÞÁÝHÿÿÿÝ…0ÿÿÿÜ0ÿÿÿÝ…8ÿÿÿÜ8ÿÿÿÞÁÝ…@ÿÿÿÜ@ÿÿÿÞÁÝÿÿÿÝ àÜHÿÿÿÜÿÿÿßàöÄu Ç…¬þÿÿë Ç…¬þÿÿ‹•¬þÿÿ‰Uìƒ}ìu%Ý àÜÿÿÿÜHÿÿÿßàöÄt Ç…¨þÿÿë Ç…¨þÿÿ‹…¨þÿÿ‰EìÝ…ÿÿÿÜ0ÿÿÿÝ… ÿÿÿÜ8ÿÿÿÞÁÝ…(ÿÿÿÜ@ÿÿÿÞÁÝPÿÿÿƒ}ìuGÝ…HÿÿÿÜÿÿÿÝ…PÿÿÿÜPÿÿÿÞéÝ…HÿÿÿÜÿÿÿÜ  àÜ  àÞÙßàöÄt Ç…¤þÿÿë Ç…¤þÿÿ‹¤þÿÿ‰Mìƒ}ìu5‹UøkÒU R‹EøkÀE P‹MðQèj_‹UøkÒU ‰Uüƒ}ôu‹Eü‰Eôéýÿÿƒ}ôu‹MƒékÉM ‰Mô‹U ‹EüÝÜ ÝÐþÿÿ‹M ‹UüÝAÜbÝØþÿÿ‹E ‹MüÝ@ÜaÝàþÿÿ‹Uô‹E ÝÜ Ýèþÿÿ‹Mô‹U ÝAÜbÝðþÿÿ‹Eô‹M Ý@ÜaÝøþÿÿÝ…ÐþÿÿÜÐþÿÿÝ…ØþÿÿÜØþÿÿÞÁÝ…àþÿÿÜàþÿÿÞÁÝÿÿÿÝ…èþÿÿÜèþÿÿÝ…ðþÿÿÜðþÿÿÞÁÝ…øþÿÿÜøþÿÿÞÁÝÈþÿÿÝ àÜÿÿÿÜÈþÿÿßàöÄu Ç… þÿÿë Ç… þÿÿ‹• þÿÿ‰Uìƒ}ìu%Ý àÜÈþÿÿÜÿÿÿßàöÄt Ç…œþÿÿë Ç…œþÿÿ‹…œþÿÿ‰EìÝ…ÐþÿÿÜèþÿÿÝ…ØþÿÿÜðþÿÿÞÁÝ…àþÿÿÜøþÿÿÞÁÝÿÿÿƒ}ìuGÝ…ÿÿÿÜÈþÿÿÝ…ÿÿÿÜÿÿÿÞéÝ…ÿÿÿÜÈþÿÿÜ  àÜ  àÞÙßàöÄt Ç…˜þÿÿë Ç…˜þÿÿ‹˜þÿÿ‰Mìƒ}ìu‹U R‹E P‹MðQèY]‹UðRèJ]‹EðPè;]^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ì]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ììèVÇEÀÇE´‹EƒÀkÀÁàPÿTàƒÄ‰E¸èZ–ÿÿ‰EÀÇE¼ÇEü‹Mƒ9…‹ð‹Bƒà„­‹MÀá…ž‹U ‹EÝÜÝ]È‹M ‹UÝAÜBÝ]ЋE ‹MÝ@ÜAÝ]Ø‹U ÝÜeÈ‹EÜÝ]˜‹M ÝAÜeЋUÜJÜE˜Ý]˜‹E Ý@ÜeØ‹MÜIÜE˜Ý]˜Ý˜àÝE˜ÚéßàöÄDz.ÇE°‹U‹E ÝÝ‹M‹U ÝBÝY‹E‹M ÝAÝXéÁÇE°‹UÝÜeÈ‹EÜÝ] ‹MÝAÜeЋUÜJÜE Ý] ‹EÝ@ÜeØ‹MÜIÜE ÝU Üu˜Ý]ݨàÜeÝ]¨ÝEÜ  àܨàßàöÄAtÝEÜ  àÜØàßàöÄzÇE°‹U ÝEÜ ÝE¨ÜMÈÞÁÝ]à‹E ÝEÜHÝE¨ÜMÐÞÁÝ]è‹M ÝEÜIÝE¨ÜMØÞÁÝ]ð‹UükÒ‹E¸ÝEàÝЋMükÉ‹U¸ÝEèÝ\Ê‹EükÀ‹M¸ÝEðÝ\Á‹UüƒÂ‰Uü‹EükÀ‹M¸‹U ÝÝÁ‹EükÀ‹M¸‹U ÝBÝ\Á‹EükÀ‹M¸‹U ÝBÝ\Á‹EüƒÀ‰Eü‹M¼‰Mø‹U¼ƒÂ‰U¼ë>ÇE´‹E¼‹Mƒ<t+‹U¼‰Uø‹E¼ƒÀ‰E¼‹M¼;M|‹U¸RÿPàƒÄéL ëÉ¡ð‹Hát‹U‰UÄë ‹Eƒè‰EÄ‹MÀáÿïÿÿQè“ÿÿƒÄë‹UøƒÂ‰Uø‹E¼ƒÀ‰E¼‹E¼™÷}‰U¼‹Mø;MÄ,‹Eø‹Mƒ<„Ó‹U¼‹Eƒ<…ËMøkÉ‹U¼kÒ‹E‹u ÝÜ$‹MÜ Ýpÿÿÿ‹UøkÒ‹E¼kÀ‹M‹u ÝDÜd‹UÜJÜ…pÿÿÿÝpÿÿÿ‹EøkÀ‹M¼kÉ‹U‹u ÝDÜd‹EÜHÜ…pÿÿÿÝpÿÿÿݘàÝ…pÿÿÿÚéßàöÄDzCÇEŒ‹MøkÉ‹U‹EÝÝ‹MøkÉ‹U‹EÝDÝZ‹MøkÉ‹U‹EÝDÝZé7ÇEŒ‹M¼kÉ‹U‹E ÝÜ$‹MÜ Ýxÿÿÿ‹U¼kÒ‹E‹M Ý@Üd‹UÜJÜ…xÿÿÿÝxÿÿÿ‹E¼kÀ‹M‹U ÝAÜd‹EÜHÜ…xÿÿÿÝ•xÿÿÿܵpÿÿÿÝhÿÿÿݨàÜ¥hÿÿÿÝ]€Ý…hÿÿÿÜ  àܨàßàöÄAtÝ…hÿÿÿÜ  àÜØàßàöÄzÇEŒ‹MøkÉ‹UÝ…hÿÿÿÜ ‹E¼kÀ‹M ÝE€Ü ÞÁÝ]à‹UøkÒ‹EÝ…hÿÿÿÜL‹M¼kÉ‹U ÝE€ÜL ÞÁÝ]è‹EøkÀ‹MÝ…hÿÿÿÜL‹U¼kÒ‹E ÝE€ÜLÞÁÝ]ð‹M$Q‹U R‹E,PMàQ‹U¼kÒU R‹EøkÀE P蟃ċMükÉ‹U¸ÝEàÝÊ‹EükÀ‹M¸ÝEèÝ\Á‹UükÒ‹E¸ÝEðÝ\ЋMüƒÁ‰Mü‹U¼kÒ‹EükÀ‹M¸‹u ÝÝÁ‹U¼kÒ‹EükÀ‹M¸‹u ÝDÝ\Á‹U¼kÒ‹EükÀ‹M¸‹u ÝDÝ\Á‹UüƒÂ‰Uü‹Eø‹Mƒ<ua‹U¼‹Eƒ<uU‹M¼kÉ‹UükÒ‹E¸‹u ÝÝЋM¼kÉ‹UükÒ‹E¸‹u ÝDÝ\ЋM¼kÉ‹UükÒ‹E¸‹u ÝDÝ\ЋMüƒÁ‰Mü‹Uø‹Eƒ<…Ç‹M¼‹Uƒ<Š„·ÇE´‹EøkÀ‹M¼kÉ‹U ‹uÝÜ$‹EÜÝHÿÿÿ‹MøkÉ‹U¼kÒ‹E ‹uÝDÜd‹MÜIÜ…HÿÿÿÝHÿÿÿ‹UøkÒ‹E¼kÀ‹M ‹uÝDÜd‹UÜJÜ…HÿÿÿÝHÿÿÿݘàÝ…HÿÿÿÚéßàöÄDzFÇ…dÿÿÿ‹EøkÀ‹M‹U ÝÝ‹EøkÀ‹M‹U ÝDÝY‹EøkÀ‹M‹U ÝDÝYéIÇ…dÿÿÿ‹E¼kÀ‹M‹UÝÜ$‹EÜÝPÿÿÿ‹M¼kÉ‹U‹EÝBÜd‹MÜIÜ…PÿÿÿÝPÿÿÿ‹U¼kÒ‹E‹MÝ@Üd‹UÜJÜ…PÿÿÿÝ•PÿÿÿܵHÿÿÿÝ@ÿÿÿݨàÜ¥@ÿÿÿÝXÿÿÿÝ…@ÿÿÿÜ  àܨàßàöÄAtÝ…@ÿÿÿÜ  àÜØàßàöÄz Ç…dÿÿÿ‹EøkÀ‹M Ý…@ÿÿÿÜ ‹U¼kÒ‹EÝ…XÿÿÿÜ ÞÁÝ]à‹MøkÉ‹U Ý…@ÿÿÿÜL ‹E¼kÀ‹MÝ…XÿÿÿÜLÞÁÝ]è‹UøkÒ‹E Ý…@ÿÿÿÜL‹M¼kÉ‹UÝ…XÿÿÿÜL ÞÁÝ]ð‹E$P‹M Q‹U,REàP‹M¼kÉM Q‹UøkÒU Rè3ƒÄ‹EükÀ‹M¸ÝEàÝÁ‹UükÒ‹E¸ÝEèÝ\ЋMükÉ‹U¸ÝEðÝ\Ê‹EüƒÀ‰Eüƒ}ü| ‹M,Qj‹UR‹E(P‹M Q‹U¸R‹EüPÿU0ƒÄÇEüé¬ùÿÿ‹M¼ƒé‰M¼‹U¼U‰U¼‹E¼™÷}‰U¼‹E¼‹Mƒ<…|ƒ}üŒr‹U¼kÒ‹E ‹MÝÜÝ]È‹U¼kÒ‹E ‹MÝDÜAÝ]ЋU¼kÒ‹E ‹MÝDÜAÝ]Ø‹U¼kÒ‹E ÝÜeÈ‹MÜ Ý ÿÿÿ‹U¼kÒ‹E ÝDÜeЋMÜIÜ… ÿÿÿÝ ÿÿÿ‹U¼kÒ‹E ÝDÜeØ‹MÜIÜ… ÿÿÿÝ ÿÿÿݘàÝ… ÿÿÿÚéßàöÄDzFÇ…<ÿÿÿ‹U¼kÒ‹E‹M ÝÝ‹U¼kÒ‹E‹M ÝDÝX‹U¼kÒ‹E‹M ÝDÝXéÇ…<ÿÿÿ‹UÝÜeÈ‹EÜÝ(ÿÿÿ‹MÝAÜeЋUÜJÜ…(ÿÿÿÝ(ÿÿÿ‹EÝ@ÜeØ‹MÜIÜ…(ÿÿÿÝ•(ÿÿÿܵ ÿÿÿÝÿÿÿݨàÜ¥ÿÿÿÝ0ÿÿÿÝ…ÿÿÿÜ  àܨàßàöÄAtÝ…ÿÿÿÜ  àÜØàßàöÄz Ç…<ÿÿÿ‹U¼kÒ‹E Ý…ÿÿÿÜ Ý…0ÿÿÿÜMÈÞÁÝ]à‹M¼kÉ‹U Ý…ÿÿÿÜL Ý…0ÿÿÿÜMÐÞÁÝ]è‹E¼kÀ‹M Ý…ÿÿÿÜLÝ…0ÿÿÿÜMØÞÁÝ]ð‹UükÒ‹E¸ÝEàÝЋMükÉ‹U¸ÝEèÝ\Ê‹EükÀ‹M¸ÝEðÝ\Á‹UüƒÂ‰Uüƒ}´u ‹EÀP豊ÿÿƒÄ‹M,Qj‹UR‹E(P‹M Q‹U¸R‹EüPÿU0ƒÄ‹MÀQè…ŠÿÿƒÄ‹U¸RÿPàƒÄ^‹å]ÃU‹ìƒ}t ‹EPÿdà‹ ðƒ9tݘàƒìÝ$jû‹ðÿƒÄ jÿ|àƒ}tT¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒytjj‹U R¡ðÿPƒÄ ‹M QÿxàëS‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒytjj‹UR¡ðÿPƒÄ ‹MQÿxà‹ðƒzt¡ðÿPÿtà]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììðVÇE¸ÇE¬èC‰ÿÿ‰E¸‹EƒÀkÀÑàÁàPÿTàƒÄ‰E°‹MƒÁkÉ‹U°ʉEüÇE´ÇEø‹Mƒ9…~‹ð‹Bƒà„ä‹M¸á…Õ‹U ‹EÝÜÝ]À‹M ‹UÝAÜBÝ]È‹E ‹MÝ@ÜAÝ]ЋU ÝÜeÀ‹EÜÝ]‹M ÝAÜeÈ‹UÜJÜEÝ]‹E Ý@ÜeЋMÜIÜEÝ]ݘàÝEÚéßàöÄDz.ÇE¨‹U‹E ÝÝ‹M‹U ÝBÝY‹E‹M ÝAÝXéÁÇE¨‹UÝÜeÀ‹EÜÝ]˜‹MÝAÜeÈ‹UÜJÜE˜Ý]˜‹EÝ@ÜeЋMÜIÜE˜ÝU˜ÜuÝ]ˆÝ¨àÜeˆÝ] ÝEˆÜ  àܨàßàöÄAtÝEˆÜ  àÜØàßàöÄzÇE¨‹U ÝEˆÜ ÝE ÜMÀÞÁÝ]Ø‹E ÝEˆÜHÝE ÜMÈÞÁÝ]à‹M ÝEˆÜIÝE ÜMÐÞÁÝ]è‹UøkÒ‹E°ÝEØÝЋMøkÉ‹U°ÝEàÝ\Ê‹EøkÀ‹M°ÝEèÝ\Á‹UøkÒ‹Eü‹M ÝÝЋUøkÒ‹Eü‹M ÝAÝ\ЋUøkÒ‹Eü‹M ÝAÝ\ЋUøƒÂ‰Uø‹EøkÀ‹M°‹U ÝÝÁ‹EøkÀ‹M°‹U ÝBÝ\Á‹EøkÀ‹M°‹U ÝBÝ\Á‹EøkÀ‹Mü‹U ÝÝÁ‹EøkÀ‹Mü‹U ÝBÝ\Á‹EøkÀ‹Mü‹U ÝBÝ\Á‹EøƒÀ‰Eø‹M´‰Mô‹U´ƒÂ‰U´ë>ÇE¬‹E´‹Mƒ<t+‹U´‰Uô‹E´ƒÀ‰E´‹M´;M|‹U°RÿPàƒÄé ëÉ¡ð‹Hát‹U‰U¼ë ‹Eƒè‰E¼è†ÿÿ‰E¸‹M¸áÿïÿÿQèÕ…ÿÿƒÄë‹UôƒÂ‰Uô‹E´ƒÀ‰E´‹E´™÷}‰U´‹Mô;M¼ù‹Eô‹Mƒ<„‹‹U´‹Eƒ<…{‹MôkÉ‹U´kÒ‹E‹u ÝÜ$‹MÜ Ýhÿÿÿ‹UôkÒ‹E´kÀ‹M‹u ÝDÜd‹UÜJÜ…hÿÿÿÝhÿÿÿ‹EôkÀ‹M´kÉ‹U‹u ÝDÜd‹EÜHÜ…hÿÿÿÝhÿÿÿݘàÝ…hÿÿÿÚéßàöÄDzCÇE„‹MôkÉ‹U‹EÝÝ‹MôkÉ‹U‹EÝDÝZ‹MôkÉ‹U‹EÝDÝZéCÇE„‹M´kÉ‹U‹E ÝÜ$‹MÜ Ýpÿÿÿ‹U´kÒ‹E‹M Ý@Üd‹UÜJÜ…pÿÿÿÝpÿÿÿ‹E´kÀ‹M‹U ÝAÜd‹EÜHÜ…pÿÿÿÝ•pÿÿÿܵhÿÿÿÝ`ÿÿÿݨàÜ¥`ÿÿÿÝxÿÿÿÝ…`ÿÿÿÜ  àܨàßàöÄAtÝ…`ÿÿÿÜ  àÜØàßàöÄzÇE„‹MôkÉ‹UÝ…`ÿÿÿÜ ‹E´kÀ‹M Ý…xÿÿÿÜ ÞÁÝ]Ø‹UôkÒ‹EÝ…`ÿÿÿÜL‹M´kÉ‹U Ý…xÿÿÿÜL ÞÁÝ]à‹EôkÀ‹MÝ…`ÿÿÿÜL‹U´kÒ‹E Ý…xÿÿÿÜLÞÁÝ]è‹M´kÉM Q‹UôkÒU R‹E(P‹M$Q‹U0REØP‹M´kÉM Q‹UôkÒU RèÅƒÄ ‹EøkÀ‹M°ÝEØÝÁ‹UøkÒ‹E°ÝEàÝ\ЋMøkÉ‹U°ÝEèÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝÝÊ‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eø‹M´kÉ‹UøkÒ‹E°‹u ÝÝЋM´kÉ‹UøkÒ‹E°‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹E°‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹Eü‹u ÝÝЋM´kÉ‹UøkÒ‹Eü‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹Eü‹u ÝDÝ\ЋMøƒÁ‰Mø‹Uô‹Eƒ<…±‹M´‹Uƒ<Š…¡‹E´kÀ‹MøkÉ‹U°‹u ÝÝÊ‹E´kÀ‹MøkÉ‹U°‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹U°‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eø‹Mô‹Uƒ<Š…ˆ‹E´‹Mƒ<„xÇE¬‹UôkÒ‹E´kÀ‹M ‹uÝÜ$‹UÜ Ý@ÿÿÿ‹EôkÀ‹M´kÉ‹U ‹uÝDÜd‹EÜHÜ…@ÿÿÿÝ@ÿÿÿ‹MôkÉ‹U´kÒ‹E ‹uÝDÜd‹MÜIÜ…@ÿÿÿÝ@ÿÿÿݘàÝ…@ÿÿÿÚéßàöÄDzFÇ…\ÿÿÿ‹UôkÒ‹E‹M ÝÝ‹UôkÒ‹E‹M ÝDÝX‹UôkÒ‹E‹M ÝDÝXéIÇ…\ÿÿÿ‹U´kÒ‹E‹MÝÜ$‹UÜ ÝHÿÿÿ‹E´kÀ‹M‹UÝAÜd‹EÜHÜ…HÿÿÿÝHÿÿÿ‹M´kÉ‹U‹EÝBÜd‹MÜIÜ…HÿÿÿÝ•Hÿÿÿܵ@ÿÿÿÝ8ÿÿÿݨàÜ¥8ÿÿÿÝPÿÿÿÝ…8ÿÿÿÜ  àܨàßàöÄAtÝ…8ÿÿÿÜ  àÜØàßàöÄz Ç…\ÿÿÿ‹UôkÒ‹E Ý…8ÿÿÿÜ ‹M´kÉ‹UÝ…PÿÿÿÜ ÞÁÝ]Ø‹EôkÀ‹M Ý…8ÿÿÿÜL‹U´kÒ‹EÝ…PÿÿÿÜLÞÁÝ]à‹MôkÉ‹U Ý…8ÿÿÿÜL ‹E´kÀ‹MÝ…PÿÿÿÜLÞÁÝ]è‹U´kÒU R‹EôkÀE P‹M(Q‹U$R‹E0PMØQ‹U´kÒU R‹EôkÀE PèYƒÄ ‹MøkÉ‹U°ÝEØÝÊ‹EøkÀ‹M°ÝEàÝ\Á‹UøkÒ‹E°ÝEèÝ\Ћ ð‹QâtN‹EôkÀ‹MøkÉ‹Uü‹u ÝÝÊ‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\ÊëL‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eøƒ}ø|"‹M0Q‹UüR‹EP‹M,Q‹U$R‹E°P‹MøQÿU4ƒÄÇEøéß÷ÿÿ‹U´ƒê‰U´‹E´E‰E´‹E´™÷}‰U´‹M´‹Uƒ<Š…êƒ}øŒà¡ð‹Hƒá„›‹U¸â…Œ‹E´kÀ‹M ‹UÝÜÝ]À‹E´kÀ‹M ‹UÝDÜBÝ]È‹E´kÀ‹M ‹UÝDÜBÝ]ЋE´kÀ‹M ÝÜeÀ‹UÜ Ýÿÿÿ‹E´kÀ‹M ÝDÜeÈ‹UÜJÜ…ÿÿÿÝÿÿÿ‹E´kÀ‹M ÝDÜeЋUÜJÜ…ÿÿÿÝÿÿÿݘàÝ…ÿÿÿÚéßàöÄDzFÇ…4ÿÿÿ‹E´kÀ‹M‹U ÝÝ‹E´kÀ‹M‹U ÝDÝY‹E´kÀ‹M‹U ÝDÝYéÇ…4ÿÿÿ‹EÝÜeÀ‹MÜ Ý ÿÿÿ‹UÝBÜeÈ‹EÜHÜ… ÿÿÿÝ ÿÿÿ‹MÝAÜeЋUÜJÜ… ÿÿÿÝ• ÿÿÿܵÿÿÿÝÿÿÿݨàÜ¥ÿÿÿÝ(ÿÿÿÝ…ÿÿÿÜ  àܨàßàöÄAtÝ…ÿÿÿÜ  àÜØàßàöÄz Ç…4ÿÿÿ‹E´kÀ‹M Ý…ÿÿÿÜ Ý…(ÿÿÿÜMÀÞÁÝ]Ø‹U´kÒ‹E Ý…ÿÿÿÜLÝ…(ÿÿÿÜMÈÞÁÝ]à‹M´kÉ‹U Ý…ÿÿÿÜL Ý…(ÿÿÿÜMÐÞÁÝ]è‹EøkÀ‹M°ÝEØÝÁ‹UøkÒ‹E°ÝEàÝ\ЋMøkÉ‹U°ÝEèÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eøƒ}¬u ‹M¸Qè¾zÿÿƒÄ‹U0R‹EüP‹MQ‹U,R‹E$P‹M°Q‹UøRÿU4ƒÄ‹E¸PèzÿÿƒÄ‹M°QÿPàƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ìƒ}t ‹EPÿdà‹ ðƒ9tݘàƒìÝ$jû‹ðÿƒÄ jÿ|à¡ð‹Há„‹ðƒzt‹E P‹ ðÿQƒÄ‹U Rÿpàƒ}tT¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒytjj‹U R¡ðÿPƒÄ ‹M QÿxàëS‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒytjj‹UR¡ðÿPƒÄ ‹MQÿxà陃}„£‹ðƒzt‹E P‹ ðÿQƒÄ‹U Rÿpà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒyt‹U$R¡ðÿPƒÄ‹M$Qÿpà‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxàé¡ðƒxt‹M$Q‹ðÿRƒÄ‹E$Pÿpà‹ ðƒytjj‹U R¡ðÿPƒÄ ‹M Qÿxà‹ðƒzt‹E P‹ ðÿQƒÄ‹U Rÿpà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒyt‹U$R¡ðÿPƒÄ‹M$Qÿpà‹ðƒztjj‹EP‹ ðÿQƒÄ ‹URÿxà¡ðƒxt ‹ ðÿQÿtà]ÃÌÌÌÌÌÌÌU‹ììpVÇEàÇEÔÇEÄÇE ÇE¤Ý˜àÝUÝ]ˆ3Àƒ}”Àf‰EÜ3Ƀ} ”Áf‰MÐ3Òƒ}$”Âf‰UÀ¿EÀ…ÀuL‹MÁákÉÁáQÿTàƒÄ‰Eà‹Uà‰UÔ‹EkÀ‹MÔÁ‰UÄ‹EkÀ‹MÄÁ‰U ‹EkÀ‹M Á‰U¤ƒ}uݘàÝ]èݨàÝ]ðݘàÝ]øë‹EÝÝ]è‹MÝAÝ]ð‹UÝBÝ]ø‹EP‹MQUèRè¾ÁƒÄ ÇEä‹E䉅ìþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜ$Ýpÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝxÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝ]€Ý…pÿÿÿÜpÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÈÝE€ÜM€ÜEÈÝUȃìÝ$èÁ<ƒÄÝ]È‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜÝÈþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝÐþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝØþÿÿÝ…ÈþÿÿÜÈþÿÿÝ…ÐþÿÿÜÐþÿÿÞÁÝàþÿÿÝ…ØþÿÿÜØþÿÿÜ…àþÿÿÝ•àþÿÿƒìÝ$èÿ;ƒÄÝàþÿÿÝ…àþÿÿÜ  àÝàþÿÿ‹ìþÿÿƒÁ‰ìþÿÿÝEÈÜàþÿÿßàöÄAz‹Uƒê9•ìþÿÿŒHþÿÿ¿EÀ…À…ŒÇ…èþÿÿë‹èþÿÿƒÁ‰èþÿÿ‹•èþÿÿ;Uí‹…ìþÿÿƒèkÀ0‹èþÿÿÁá‹U$‹u ÝÜ ‹…ìþÿÿƒèkÀ0‹èþÿÿÁá‹U$‹u ÝDÜLÞÁ‹…ìþÿÿƒèkÀ0‹M$ÜD‹•èþÿÿkÒ‹EÔÝЋìþÿÿƒékÉ0‹•èþÿÿÁâ‹E$‹u ÝDÜ ‹ìþÿÿƒékÉ0‹•èþÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹ìþÿÿƒékÉ0‹U$ÜD (‹…èþÿÿkÀ‹MÔÝ\Á‹•èþÿÿkÒ‹EÔݘàÝ\Ðéõþÿÿ¿MÜ…É…iÇ…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;E?‹ìþÿÿƒékÉ0‹U$ݘàÝD ÚéßàöÄDzT‹…ìþÿÿƒèkÀ0‹M$ݘàÝDÚéßàöÄDz2‹•ìþÿÿƒêkÒ0‹…ìþÿÿƒèkÀ0‹M$‹u$ÝD ÝÚéßàöÄD‹Z‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝD Ü ‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝDÜLÞé‹•èþÿÿkÒ‹E ÝЋìþÿÿƒékÉ0‹U$ÝD Ùà‹…èþÿÿÁà‹MÜ ‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝÜLÞÁ‹•èþÿÿkÒ‹E Ý\ЋèþÿÿkÉ‹•èþÿÿkÒ‹E ‹u ÝÈÜ Ö‹èþÿÿkÉ‹•èþÿÿkÒ‹E ‹u ÝDÈÜLÖÞÁÝ•ÀþÿÿƒìÝ$èå8ƒÄÜ=¨àÝÀþÿÿ‹èþÿÿkÉ‹U Ý…ÀþÿÿÜ Ê‹…èþÿÿkÀ‹M ÝÁ‹•èþÿÿkÒ‹E Ý…ÀþÿÿÜLЋèþÿÿkÉ‹U Ý\Êë>‹…èþÿÿÁà‹èþÿÿkÉ‹U ‹uÝÝÊ‹…èþÿÿÁà‹èþÿÿkÉ‹U ‹uÝDÝ\Ê‹…èþÿÿkÀ‹M Ý˜àÝ\Á‹•èþÿÿkÒ‹E¤Ý˜àÝ\Ðé£ýÿÿ‹Mƒé9ìþÿÿ ‹•ìþÿÿkÒUR‹EäkÀEP‹MäƒékÉMQU¨Rè|çƒÄÝEèÜM¨ÝEðÜM°ÞÁÝEøÜM¸ÞÁݸþÿÿÝààܸþÿÿÜM¨ÜmèÝ]èÝààܸþÿÿÜM°ÜmðÝ]ðÝààܸþÿÿÜM¸ÜmøÝ]øEèP‹ìþÿÿkÉMQ‹UäkÒUR…ðþÿÿPè·2ƒÄÿlàðþÿÿQÿhà¿UÀ…Ò„*¿EÐ…À„‰¿MÜ…Ét"ÝEȃìÝ$‹•ìþÿÿR‹E P‹MQè” ƒÄëZ‹ð‹B%t&ÝEȃìÝ$‹ìþÿÿQ‹UR‹E P‹MQ较Äë$ÝEȃìÝ$‹•ìþÿÿR‹EP‹M Q‹URèHƒÄé¿EÜ…Àt&ÝEȃìÝ$‹ìþÿÿQ‹U R‹E P‹MQè× ƒÄëb‹ð‹B%t*ÝEȃìÝ$‹ìþÿÿQ‹UR‹E P‹M Q‹URè-ƒÄë(ÝEȃìÝ$‹…ìþÿÿP‹MQ‹U R‹E P‹MQ胃Äé(Ç…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;Eð‹ìþÿÿkÉ0‹•èþÿÿÁâ‹E$‹u ÝÜ ‹ìþÿÿkÉ0‹•èþÿÿÁâ‹E$‹u ÝDÜLÞÁ‹ìþÿÿkÉ0‹U$ÜD ‹…èþÿÿkÀ‹MÄÝÁ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹u ÝDÜ ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•ìþÿÿkÒ0‹E$ÜD(‹èþÿÿkÉ‹UÄÝ\ÊÝEÈÙà‹…èþÿÿkÀ‹MÄÝ\Á‹•èþÿÿkÒ‹EÔݘàÝ\Ðéòþÿÿ¿MÜ…É…%Ç…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;Eû‹ìþÿÿkÉ0‹U$ݘàÝD ÚéßàöÄDzK‹…ìþÿÿkÀ0‹M$ݘàÝDÚéßàöÄDz,‹•ìþÿÿkÒ0‹…ìþÿÿkÀ0‹M$‹u$ÝD ÝÚéßàöÄD‹N‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝD Ü ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝDÜLÞé‹•èþÿÿkÒ‹E¤ÝЋìþÿÿkÉ0‹U$ÝD Ùà‹…èþÿÿÁà‹MÜ ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝÜLÞÁ‹•èþÿÿkÒ‹E¤Ý\ЋèþÿÿkÉ‹•èþÿÿkÒ‹E¤‹u¤ÝÈÜ Ö‹èþÿÿkÉ‹•èþÿÿkÒ‹E¤‹u¤ÝDÈÜLÖÞÁÝ•°þÿÿƒìÝ$è^3ƒÄÜ=¨àݰþÿÿ‹èþÿÿkÉ‹U¤Ý…°þÿÿÜ Ê‹…èþÿÿkÀ‹M¤ÝÁ‹•èþÿÿkÒ‹E¤Ý…°þÿÿÜLЋèþÿÿkÉ‹U¤Ý\Êë>‹…èþÿÿÁà‹èþÿÿkÉ‹U¤‹uÝÝÊ‹…èþÿÿÁà‹èþÿÿkÉ‹U¤‹uÝDÝ\Êéçýÿÿ¿EÐ…À„'¿MÜ…Ét&ÝEȃìÝ$‹•ìþÿÿR‹EÄP‹MÔQ‹URè›óƒÄëj¡ð‹Hát.ÝEȃìÝ$‹•ìþÿÿR‹E¤P‹M Q‹UÄR‹EÔP‹MQèÝƒÄ ë,ÝEȃìÝ$‹•ìþÿÿR‹E¤P‹M Q‹UÄR‹EÔP‹MQèŸƒÄ ‹ð‹Bƒàt|ݨàÝ]˜‹ ðƒytUˆR¡ðÿPƒÄMˆQÿpà‹UÔR‹EPèƒÄÝØàÝ]˜‹ ðƒytUˆR¡ðÿPƒÄMˆQÿpà‹UÄR‹EPèuƒÄ骿MÜ…ÉtFÝEȃìÝ$‹•ìþÿÿR‹…ìþÿÿÁàE P‹ìþÿÿƒéÁáM Q‹UÄR‹EÔP‹MQè×)ƒÄ 餋ð‹B%tKÝEȃìÝ$‹ìþÿÿQ‹•ìþÿÿÁâU R‹…ìþÿÿƒèÁàE P‹M¤Q‹U R‹EÄP‹MÔQ‹URèi3ƒÄ(ëIÝEȃìÝ$‹…ìþÿÿP‹ìþÿÿÁáM Q‹•ìþÿÿƒêÁâU R‹E¤P‹M Q‹UÄR‹EÔP‹MQèþ0ƒÄ(‹ð‹Bƒà„¦‹ìþÿÿƒéÁáM QÿdàݨàÝ]˜‹ðƒztEˆP‹ ðÿQƒÄUˆRÿpà‹EÔP‹MQègƒÄ‹•ìþÿÿÁâU RÿdàÝØàÝ]˜¡ðƒxtMˆQ‹ðÿRƒÄEˆPÿpà‹MÄQ‹URèÆƒÄÿˆà‹EÔ‰EØ‹MĉMÔ‹U؉UÄ‹E ‰EØ‹M¤‰M ‹U؉U¤‹…ìþÿÿ‰Eä‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜ$Ýpÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝxÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝ]€Ý…pÿÿÿÜpÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÈÝE€ÜM€ÜEÈÝUȃìÝ$è/ƒÄÝ]È‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜÝþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDݘþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝ þÿÿÝ…þÿÿÜþÿÿÝ…˜þÿÿܘþÿÿÞÁݨþÿÿÝ… þÿÿÜ þÿÿÜ…¨þÿÿÝ•¨þÿÿƒìÝ$èD.ƒÄݨþÿÿÝ…¨þÿÿÜ  àݨþÿÿ‹ìþÿÿƒÁ‰ìþÿÿÝEÈܨþÿÿßàöÄAz‹Uƒê9•ìþÿÿŒHþÿÿéØõÿÿ¿EÀ…Àu ‹MàQÿPàƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒìè}-‰Eü¡|àPh‡‹MüQè`-‹xàRh‡‹EüPèK-‹ tàQh‡‹UüRè6-‹EüPè'-ÇEøë ‹MøƒÁ‰Mø‹Uø;U}‹EøkÀE P‹MøkÉM Q‹UüRèê,ëЋEüPèÙ,‹MüQèÊ,‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìèÍ,‰Eü¡|àPh‡‹MüQè°,‹xàRh‡‹EüPè›,‹ tàQh‡‹UüRè†,‹EüPèw,‹Mƒé‰Møë ‹Uøƒê‰Uøƒ}øÿ~‹EøkÀE P‹MøkÉM Q‹UüRè:,ëÒ‹EüPè),‹MüQè,‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEäë ‹EäƒÀ‰Eä‹Mä;M‹‹UäÁâ‹E ÝÝ]è‹MäÁá‹U ÝD Ý]ðݘàÝ]ø¡ðƒxtj‹MäQUèR¡ðÿPƒÄ MèQÿxàÝEÙàÝ]ø‹ðƒztj‹EäPMèQ‹ðÿRƒÄ EèPÿxàé`ÿÿÿ‹ ð‹Qâtu‹E ÝÝ]è‹M ÝAÝ]ðݘàÝ]ø‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø¡ðƒxtjjMèQ‹ðÿRƒÄ EèPÿxà‹ ðƒyt ‹ðÿRÿtà¡ð‹Hƒát;jݘàƒìÝ$‹U R‹EPè>±ƒÄjÝEÙàƒìÝ$‹M Q‹URè!±ƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìƒì¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEäë ‹EäƒÀ‰Eä‹Mä;M°‹UäÁâ‹E ÝÝ]è‹MäÁá‹U ÝD Ý]ðݘàÝ]ø‹EƒèÁàEPÿdà‹ ðƒytj‹UäREèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø‹EÁàEPÿdà‹ ðƒytj‹UäREèP‹ ðÿQƒÄ UèRÿxàé;ÿÿÿ¡ð‹Hᄘ‹U ÝÝ]è‹E Ý@Ý]ðݘàÝ]ø‹MƒéÁáMQÿdà‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø‹EÁàEPÿdà‹ ðƒytjjUèR¡ðÿPƒÄ MèQÿxà‹ðƒzt¡ðÿPÿtà‹ ð‹Qƒât^‹EƒèÁàEPÿdàjݘàƒìÝ$‹M Q‹UR诃ċEÁàEPÿdàjÝEÙàƒìÝ$‹M Q‹URè㮃Ä‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ݘàÝ]à¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEÌë ‹ẼÀ‰EÌ‹MÌ;MÑ‹UÌÁâ‹EÝÝ]ЋMÌÁá‹UÝD Ý]Ø¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpà‹MÌÁá‹U Ý Ý]è‹EÌÁà‹M ÝDÝ]ðݘàÝ]ø‹ðƒztj‹EÌPMèQ‹ðÿRƒÄ EèPÿxàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ðÿQƒÄ UèRÿxàéÿÿÿ¡ð‹Há„´‹UÝÝ]ЋEÝ@Ý]ØÝ˜àÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpà‹U ÝÝ]è‹E Ý@Ý]ðݘàÝ]ø‹ ðƒytjjUèR¡ðÿPƒÄ MèQÿxàÝEÙàÝ]ø‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxà¡ðƒxt ‹ ðÿQÿtà‹ð‹Bƒà„£Ý˜àÝUØÝ]ÐݨàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjݘàƒìÝ$‹U R‹EPè_¬ƒÄÝØàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjÝEÙàƒìÝ$‹U R‹EP謃ċå]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ݘàÝ]à¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEÌë ‹ẼÀ‰EÌ‹MÌ;M‹UƒêÁâURÿdà‹EÌÁà‹MÝÝ]ЋUÌÁâ‹EÝDÝ]Ø‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpà‹UÌÁâ‹E ÝÝ]è‹MÌÁá‹U ÝD Ý]ðݘàÝ]ø¡ðƒxtj‹MÌQUèR¡ðÿPƒÄ MèQÿxà‹UÁâURÿdà¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ðÿQƒÄ UèRÿxàéÔþÿÿ¡ð‹Há„‹UƒêÁâURÿdà‹EÝÝ]ЋMÝAÝ]Ø‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpà‹E ÝÝ]è‹M ÝAÝ]ðݘàÝ]ø‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxà‹EÁàEPÿdà‹MÝÝ]ЋUÝBÝ]Ø¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytjjUèR¡ðÿPƒÄ MèQÿxà‹ðƒzt¡ðÿPÿtà‹ ð‹Qƒâ„Ç‹EƒèÁàEPÿdàݘàÝUØÝ]ÐݨàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjݘàƒìÝ$‹U R‹EPè娃Ä‹MÁáMQÿdàÝØàÝ]à‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpàjÝEÙàƒìÝ$‹E P‹MQ艨ƒÄ‹å]ÃÌÌU‹ìƒì4ݘàÝ]à¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEÌë ‹ẼÀ‰EÌ‹Mƒé9MÌc‹UÌÁâ‹EÝÝ]ЋMÌÁá‹UÝD Ý]Ø¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpà‹MÌÁá‹U Ý Ý]è‹EÌÁà‹M ÝDÝ]ðݘàÝ]ø‹ðƒztj‹EÌPMèQ‹ðÿRƒÄ EèPÿxàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ðÿQƒÄ UèRÿxà‹ẼÀÁà‹M ÝÝ]è‹ŨÂÁâ‹E ÝDÝ]ðݘàÝ]ø‹ ðƒytj‹ŨÂREèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø¡ðƒxtj‹M̃ÁQUèR¡ðÿPƒÄ MèQÿxàé…þÿÿ‹ð‹B%„R‹MƒéÁá‹UÝ Ý]ЋEƒèÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpà‹EƒèÁà‹M ÝÝ]è‹UƒêÁâ‹E ÝDÝ]ðݘàÝ]ø‹ ðƒytj‹UƒêREèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø¡ðƒxtj‹MƒéQUèR¡ðÿPƒÄ MèQÿxà‹U ÝÝ]è‹E Ý@Ý]ðݘàÝ]ø‹ ðƒytjjUèR¡ðÿPƒÄ MèQÿxàÝEÙàÝ]ø‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxà¡ðƒxt ‹ ðÿQÿtà‹ð‹Bƒà„£Ý˜àÝUØÝ]ÐݨàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjݘàƒìÝ$‹U R‹EPèܤƒÄÝØàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjÝEÙàƒìÝ$‹U R‹EP葤ƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ݘàÝ]à¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEÌë ‹ẼÀ‰EÌ‹Mƒé9MÌ‹UƒêÁâURÿdà‹EÌÁà‹MÝÝ]ЋUÌÁâ‹EÝDÝ]Ø‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpà‹UÌÁâ‹E ÝÝ]è‹MÌÁá‹U ÝD Ý]ðݘàÝ]ø¡ðƒxtj‹MÌQUèR¡ðÿPƒÄ MèQÿxà‹UÁâURÿdà¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ðÿQƒÄ UèRÿxà‹EƒèÁàEPÿdà‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpà‹ŨÂÁâ‹E ÝÝ]è‹M̃ÁÁá‹U ÝD Ý]ðݘàÝ]ø¡ðƒxtj‹M̃ÁQUèR¡ðÿPƒÄ MèQÿxà‹UÁâURÿdà¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytj‹ŨÂREèP‹ ðÿQƒÄ UèRÿxàéÒýÿÿ¡ð‹Há„‹UƒêÁâ‹E ÝÝ]è‹MƒéÁá‹U ÝD Ý]ðݘàÝ]ø‹EƒèÁàEPÿdà‹MƒéÁá‹UÝ Ý]ЋEƒèÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpà¡ðƒxtj‹MƒéQUèR¡ðÿPƒÄ MèQÿxà‹UÁâURÿdà¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytj‹UƒêREèP‹ ðÿQƒÄ UèRÿxà‹EƒèÁàEPÿdà‹MÝÝ]ЋUÝBÝ]Ø¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpà‹M ÝÝ]è‹U ÝBÝ]ðݘàÝ]ø¡ðƒxtjjMèQ‹ðÿRƒÄ EèPÿxà‹MÁáMQÿdà‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpàÝEÙàÝ]ø¡ðƒxtjjMèQ‹ðÿRƒÄ EèPÿxà‹ ðƒyt ‹ðÿRÿtà¡ð‹Hƒá„Æ‹UƒêÁâURÿdàݘàÝUØÝ]ÐݨàÝ]à¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàjݘàƒìÝ$‹M Q‹URèPŸƒÄ‹EÁàEPÿdàÝØàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjÝEÙàƒìÝ$‹U R‹EPèõžƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQƒ=ðuèó£ðh³è3ƒÄ¡ð‹M‰H(‹ð‹E ‰B,‹ ð‹U‰Q0¡ð‹M‰H4‹ð‹E‰B8‹ ð‹U‰Q<¡ð‹M ‰H@‹ð‹E$‰BD‹ ð‹Qƒâ‰Uü‹Eüƒè‰Eüƒ}ü‡†‹Müÿ$Ý¿‹U$R‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPèÙÿÿƒÄ ëR‹M$Q‹U R‹EP‹MQ‹UR‹EP‹M Q‹URèDeÿÿƒÄ ë(‹E$P‹M Q‹UR‹EP‹MQ‹UR‹E P‹MQè ‚ÿÿƒÄ ‹å]Ã]¿‡¿±¿±¿ÌÌÌU‹ìj‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPèšþÿÿƒÄ ]ÃÌÌÌÌÌU‹ìjÝEƒìÝ$‹EP‹M Q‹URèƒÄ]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìpVƒ=ðuè{ñ£ðh³èƒÄ¡ð‹H‰Mü‹ð‹B ‰EÔ‹ ð‹Q$‰Uøƒ}t ݨàÝ]ÇEðë ‹EðƒÀ‰Eð‹Mð;Mü}:‹UðÁâ‹EøÝEÜ ‹MðÁá‹UÔÝ ‹EðÁà‹MøÝEÜL‹UðÁâ‹EÔÝ\ëµÇEð‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝÜ$Ý]°‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜdÝ]¸‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜdÝ]ÀÝE°ÜM°ÝE¸ÜM¸ÞÁÝ]ÈÝEÀÜMÀÜEÈÝUȃìÝ$è–ƒÄÝ]È‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝÜÝ]‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜDÝ]˜‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜDÝ] ÝEÜMÝE˜ÜM˜ÞÁÝ]¨ÝE ÜM ÜE¨ÝU¨ƒìÝ$è ƒÄÝ]¨ÝE¨Ü  àÝ]¨‹MðƒÁ‰MðÝEÈÜ]¨ßàöÄAz‹Uƒê9UðŒ·þÿÿ‹Eð;EuéÛݘàÝE°ÚéßàöÄDz#ݘàÝEÀÚéßàöÄDzݨàÝUèÝUàÝ]ØëݘàÝUèÝ]ØÝ¨àÝ]à‹ ð‹Q‰Uô¡ð‹HÉ‹ð‰JhP ÿŒà¶À…Àu(‹MQ‹UR‹E P‹MQUØRj‹EÔP‹MüQè´ûÿÿƒÄ ë(‹UR‹EP‹M Q‹UREØP‹MøQ‹UÔR‹EüPèŠûÿÿƒÄ ‹ ð‹Uô‰Q^‹å]ÃÌÌÌÌÌÌU‹ìƒìV‹EkÀ0PÿTàƒÄ‰EüÇEøë ‹MøƒÁ‰Mø‹Uø;U}|‹EøkÀ0‹Mü‹Uø‹uÝÖÝ‹EøkÀ0‹MüݘàÝ\‹UøkÒ0‹EüݘàÝ\‹MøkÉ0‹UüݘàÝ\ ‹EøkÀ0‹Mü‹Uø‹uÝÖÝ\ ‹EøkÀ0‹MüݘàÝ\(ésÿÿÿ‹UüRݨàƒìÝ$‹EP‹M Q‹URè?üÿÿƒÄ‹EüPÿPàƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìƒì$‹EkÀ0PÿTàƒÄ‰EüÇEÜë ‹M܃Á‰MÜ‹UÜ;U£‹EÜ‹M$ݰàÜ ÁÝUðƒìÝ$訃ÄÝ]àÝEðƒìÝ$莃ÄÝ]è‹UÜkÒ0‹EüÝEèÝÝEàÙà‹MÜkÉ0‹UüÝ\ ‹EÜkÀ0‹MüݘàÝ\‹UÜkÒ0‹EüÝEàÝ\‹MÜkÉ0‹UüÝEèÝ\ ‹EÜkÀ0‹MüݘàÝ\(éHÿÿÿ‹UüR‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPèùÿÿƒÄ ‹MüQÿPàƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììøVƒ}t ‹EPÿdàƒ}ué1 ‹MÝAܘàßàöÄAu4‹UÝØàÜ ‹EÝ‹MÝØàÜI‹UÝZ‹EÝØàÜH‹MÝY‹UÝBܘàßàöÄz4‹EÝØàÜ‹MÝ‹UÝØàÜJ‹EÝX‹MÝØàÜI‹UÝZ‹E‹MÝ@ÜI‹U‹EÝBÜHÞéÝ]è‹M‹UÝAÜ ‹E‹MÝÜIÞéÝ]ð‹U‹EÝÜH‹M‹UÝAÜ ÞéÝ]øƒ} u4‹EÝØàÜ‹MÝ‹UÝØàÜJ‹EÝX‹MÝØàÜI‹UÝZݘàÝ]ÀݘàÝ]ÈݨàÝ]ЋEÝEÀÜ‹MÝEÈÜIÞÁ‹UÝEÐÜJÞÁÝÿÿÿÝ…ÿÿÿÜMÀ‹EÜ(Ý]ÀÝ…ÿÿÿÜMÈ‹MÜiÝ]ÈÝ…ÿÿÿÜMЋUÜjÝ]ÐÝEÀÜMÀÝEÈÜMÈÞÁÝÿÿÿÝEÐÜMÐÜ…ÿÿÿÝ•ÿÿÿƒìÝ$èëƒÄÝÿÿÿݘàÝ…ÿÿÿÚéßàöÄD{6ݨàܵÿÿÿÝÿÿÿÝEÀÜÿÿÿÝ]ÀÝEÈÜÿÿÿÝ]ÈÝEÐÜÿÿÿÝ]ЋEÝEÀÜ‹MÝEÈÜIÞÁ‹UÝEÐÜJÞÁÝ] ÝE ƒìÝ$èöƒÄÝU Ü5èàÝ] EèPÝE ƒìÝ$ ÿÿÿQèÀùƒÄ‹UkÒ ÁâRÿTàƒÄ‰E¼‹E¼‰…ÿÿÿ‹MkÉ‹•ÿÿÿʉE¸‹MkÉ‹U¸ʉEÜ‹M‹UÜʉE°‹MkÉ‹U°ʉE¬ƒ} „CÇ…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹•ÿÿÿ;U„‹…ÿÿÿkÀ‹ÿÿÿkÉ‹•ÿÿÿ‹u ÝÝÊ‹…ÿÿÿkÀ‹ÿÿÿkÉ‹•ÿÿÿ‹u ÝDÝ\Ê‹…ÿÿÿkÀ‹ÿÿÿ‹UÜ‹u ÝDÝÊ‹…ÿÿÿkÀ‹ÿÿÿ‹•ÿÿÿ‹uÜÝÖÝ\Áé^ÿÿÿƒ}„†Ç…ÿÿÿë‹…ÿÿÿƒÀ‰…ÿÿÿ‹ÿÿÿ;M}`‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝÝÁ‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝDÝ\Á‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝDÝ\Áë†éïÇ…ÿÿÿë‹•ÿÿÿƒÂ‰•ÿÿÿ‹…ÿÿÿ;E„‹M+ÿÿÿƒé‰M´‹•ÿÿÿkÒ‹E´kÀ‹ÿÿÿ‹u ÝÝÁ‹•ÿÿÿkÒ‹E´kÀ‹ÿÿÿ‹u ÝDÝ\Á‹•ÿÿÿkÒ‹E´‹MÜ‹u ÝDÝÁ‹U´kÒ‹…ÿÿÿ‹M´‹uÜÝÎÝ\Ðé^ÿÿÿƒ}„7‹ð‹B%„—Ç…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹Uƒê9•ÿÿÿ}i‹E+…ÿÿÿƒè‰E´‹ÿÿÿkÉ‹U´kÒ‹E°‹uÝÝЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ÐézÿÿÿéŒÇ…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹•ÿÿÿ;U}f‹E+…ÿÿÿƒè‰E´‹ÿÿÿkÉ‹U´kÒ‹E°‹uÝÝЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\Ðë€ÇEäë ‹MäƒÁ‰Mäƒ}äÇ…ÿÿÿë‹•ÿÿÿƒÂ‰•ÿÿÿ‹…ÿÿÿ;EÚ‹ÿÿÿkÉ‹U¸‹…ÿÿÿ‹uÜÝDÊÜ$Æ‹ÿÿÿkÉ‹U¸Ý\Ê‹…ÿÿÿkÀ‹ÿÿÿ‹•ÿÿÿ‹uÜÝDÁÜ$Ö‹…ÿÿÿkÀ‹ÿÿÿÝ\Á‹•ÿÿÿkÒ‹…ÿÿÿÝ… ÿÿÿÜ Ð‹ÿÿÿkÉ‹•ÿÿÿÝ…(ÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹ÿÿÿÝ…0ÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E¸ÝЋÿÿÿkÉ‹•ÿÿÿÝ…@ÿÿÿÜ Ê‹…ÿÿÿkÀ‹ÿÿÿÝ…HÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹…ÿÿÿÝ…PÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U¸Ý\Ê‹…ÿÿÿkÀ‹ÿÿÿÝ…`ÿÿÿÜ Á‹•ÿÿÿkÒ‹…ÿÿÿÝ…hÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹•ÿÿÿÝ…pÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M¸Ý\Á‹•ÿÿÿkÒ‹E¸‹ÿÿÿ‹uÜÝDÐÜ΋•ÿÿÿkÒ‹E¸Ý\ЋÿÿÿkÉ‹•ÿÿÿ‹…ÿÿÿ‹uÜÝDÊÜÆ‹ÿÿÿkÉ‹•ÿÿÿÝ\Êéþÿÿƒ}„-Ç…ÿÿÿë‹…ÿÿÿƒÀ‰…ÿÿÿ‹ÿÿÿ;M‹•ÿÿÿkÒ‹E°Ý… ÿÿÿÜ Ð‹ÿÿÿkÉ‹U°Ý…(ÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M°Ý…0ÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E¬ÝЋÿÿÿkÉ‹U°Ý…@ÿÿÿÜ Ê‹…ÿÿÿkÀ‹M°Ý…HÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E°Ý…PÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U¬Ý\Ê‹…ÿÿÿkÀ‹M°Ý…`ÿÿÿÜ Á‹•ÿÿÿkÒ‹E°Ý…hÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U°Ý…pÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M¬Ý\Áéßþÿÿƒ}u'ݘàƒìÝ$j‹•ÿÿÿR‹E¸P‹MQè7ɃÄël‹ð‹B%t/ݘàƒìÝ$j‹M°Q‹U¬R‹…ÿÿÿP‹M¸Q‹URèxÚƒÄ ë-ݘàƒìÝ$j‹E°P‹M¬Q‹•ÿÿÿR‹E¸P‹MQè9ÖƒÄ ‹U¸‰Uà‹…ÿÿÿ‰E¸‹Mà‰ÿÿÿ‹U¬‰Uà‹E°‰E¬‹Mà‰M°éêûÿÿ‹U¼RÿPàƒÄ^‹å]ÃÌÌÌÌÌU‹ìQ¡ðƒ8tÝE ƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mü;M…‹URÿdà¡ðƒxtj‹MüQ‹UükÒU R¡ðÿPƒÄ ‹MükÉM Qÿxà‹URÿdà¡ðƒxtj‹MüQ‹UükÒUR¡ðÿPƒÄ ‹MükÉMQÿxàéfÿÿÿ‹ð‹B%tg‹MQÿdà‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà‹EPÿdà‹ ðƒytjj‹UR¡ðÿPƒÄ ‹MQÿxà‹ðƒzt¡ðÿPÿtà‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tÝE$ƒìÝ$‹M Q‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mü;Më‹URÿdà¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒytj‹UüR‹EükÀE P‹ ðÿQƒÄ ‹UükÒU Rÿxà‹EPÿdà‹ ðƒyt‹UükÒUR¡ðÿPƒÄ‹MükÉMQÿpà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxàéÿÿÿ‹ ð‹QℲ‹EPÿdà‹ ðƒyt‹UR¡ðÿPƒÄ‹MQÿpà‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà‹EPÿdà‹ ðƒyt‹UR¡ðÿPƒÄ‹MQÿpà‹ðƒztjj‹EP‹ ðÿQƒÄ ‹URÿxà¡ðƒxt ‹ ðÿQÿtà‹å]ÃÌÌÌÌU‹ìQ¡ðƒ8tÝE$ƒìÝ$‹M Q‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mƒé9Müâ‹URÿdà¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒytj‹UüR‹EükÀE P‹ ðÿQƒÄ ‹UükÒU Rÿxà‹EPÿdà‹ ðƒyt‹UükÒUR¡ðÿPƒÄ‹MükÉMQÿpà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxà‹MQÿdà‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxt!j‹MüƒÁQ‹UüƒÂkÒU R¡ðÿPƒÄ ‹MüƒÁkÉM Qÿxà‹URÿdà¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒyt"j‹UüƒÂR‹EüƒÀkÀEP‹ ðÿQƒÄ ‹UüƒÂkÒURÿxàéþÿÿ¡ð‹Há„Ú‹URÿdà¡ðƒxt‹MƒékÉMQ‹ðÿRƒÄ‹EƒèkÀEPÿpà‹ ðƒyt"j‹UƒêR‹EƒèkÀE P‹ ðÿQƒÄ ‹UƒêkÒU Rÿxà‹EPÿdà‹ ðƒyt‹UƒêkÒUR¡ðÿPƒÄ‹MƒékÉMQÿpà‹ðƒzt"j‹EƒèP‹MƒékÉMQ‹ðÿRƒÄ ‹EƒèkÀEPÿxà‹MQÿdà‹ðƒzt‹EƒèkÀEP‹ ðÿQƒÄ‹UƒêkÒURÿpà¡ðƒxtjj‹M Q‹ðÿRƒÄ ‹E Pÿxà‹MQÿdà‹ðƒzt‹EƒèkÀEP‹ ðÿQƒÄ‹UƒêkÒURÿpà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒyt ‹ðÿRÿtà‹å]ÃÌÌU‹ìQ¡ðƒ8tÝE(ƒìÝ$‹M$Q‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mü;Më‹URÿdà¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒytj‹UüR‹EükÀE P‹ ðÿQƒÄ ‹UükÒU Rÿxà‹E Pÿdà‹ ðƒyt‹UükÒUR¡ðÿPƒÄ‹MükÉMQÿpà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxàéÿÿÿ‹ ð‹QℲ‹EPÿdà‹ ðƒyt‹UR¡ðÿPƒÄ‹MQÿpà‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà‹E Pÿdà‹ ðƒyt‹UR¡ðÿPƒÄ‹MQÿpà‹ðƒztjj‹EP‹ ðÿQƒÄ ‹URÿxà¡ðƒxt ‹ ðÿQÿtà‹å]ÃÌÌÌÌU‹ìQ¡ðƒ8tÝE(ƒìÝ$‹M$Q‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mƒé9Müâ‹URÿdà¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒytj‹UüR‹EükÀE P‹ ðÿQƒÄ ‹UükÒU Rÿxà‹E Pÿdà‹ ðƒyt‹UükÒUR¡ðÿPƒÄ‹MükÉMQÿpà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxà‹MQÿdà‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxt!j‹MüƒÁQ‹UüƒÂkÒU R¡ðÿPƒÄ ‹MüƒÁkÉM Qÿxà‹U Rÿdà¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒyt"j‹UüƒÂR‹EüƒÀkÀEP‹ ðÿQƒÄ ‹UüƒÂkÒURÿxàéþÿÿ¡ð‹Há„Ú‹URÿdà¡ðƒxt‹MƒékÉMQ‹ðÿRƒÄ‹EƒèkÀEPÿpà‹ ðƒyt"j‹UƒêR‹EƒèkÀE P‹ ðÿQƒÄ ‹UƒêkÒU Rÿxà‹E Pÿdà‹ ðƒyt‹UƒêkÒUR¡ðÿPƒÄ‹MƒékÉMQÿpà‹ðƒzt"j‹EƒèP‹MƒékÉMQ‹ðÿRƒÄ ‹EƒèkÀEPÿxà‹MQÿdà‹ðƒzt‹EƒèkÀEP‹ ðÿQƒÄ‹UƒêkÒURÿpà¡ðƒxtjj‹M Q‹ðÿRƒÄ ‹E Pÿxà‹M Qÿdà‹ðƒzt‹EƒèkÀEP‹ ðÿQƒÄ‹UƒêkÒURÿpà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒyt ‹ðÿRÿtà‹å]ÃÌÌU‹ììÀVÇEüÇEø‹E Ý@ܘàßàöÄz4‹M ÝØàÜ ‹U Ý‹E ÝØàÜH‹M ÝY‹U ÝØàÜJ‹E ÝX‹ ðƒyt‹U R¡ðÿPƒÄ‹M Qÿpàèoø‰Eð‹|àRh‡‹EðPèQø‹ xàQh‡‹UðRè<ø¡tàPh‡‹MðQè(ø‹UðRèøÇEø‹EƒèkÀE‰EüÇEìë ‹MìƒÁ‰Mì‹Uƒê9Uìá‹EìkÀ‹M‹UüÝÜ"Ý]¨‹EìkÀ‹M‹UüÝDÜbÝ]°‹EìkÀ‹M‹UüÝDÜbÝ]¸‹EìƒÀkÀ‹MìkÉ‹U‹uÝÜ$Ý]À‹EìƒÀkÀ‹MìkÉ‹U‹uÝDÜdÝ]È‹EìƒÀkÀ‹MìkÉ‹U‹uÝDÜdÝ]ÐÝE¨ÜM¨ÝE°ÜM°ÞÁÝE¸ÜM¸ÞÁÝ]ØÝEÀÜMÀÝEÈÜMÈÞÁÝEÐÜMÐÞÁÝ] Ý àÜMØÜ] ßàöÄu Ç…Tÿÿÿë Ç…Tÿÿÿ‹…Tÿÿÿ‰Eôƒ}ôuÝ àÜM Ü]ØßàöÄt Ç…Pÿÿÿë Ç…Pÿÿÿ‹Pÿÿÿ‰MôÝE¨ÜMÀÝE°ÜMÈÞÁÝE¸ÜMÐÞÁÝ]àƒ}ôu5ÝEØÜM ÝEàÜMàÞéÝEØÜM Ü  àÜ  àÞÙßàöÄt Ç…Lÿÿÿë Ç…Lÿÿÿ‹•Lÿÿÿ‰Uôƒ}ôu5‹EìkÀEP‹MìkÉMQ‹UðRèö‹EìkÀE‰Eüƒ}øu‹Mü‰Møéþÿÿƒ}øu‹U‰Uø‹EƒèkÀ‹M‹UüÝÜ"Ý`ÿÿÿ‹EƒèkÀ‹M‹UüÝDÜbÝhÿÿÿ‹EƒèkÀ‹M‹UüÝDÜbÝpÿÿÿ‹EƒèkÀ‹Mø‹UÝÜ$Ýxÿÿÿ‹EƒèkÀ‹Mø‹UÝAÜdÝ]€‹EƒèkÀ‹Mø‹UÝAÜdÝ]ˆÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜhÿÿÿÞÁÝ…pÿÿÿÜpÿÿÿÞÁÝ]Ý…xÿÿÿÜxÿÿÿÝE€ÜM€ÞÁÝEˆÜMˆÞÁÝXÿÿÿÝ àÜMÜXÿÿÿßàöÄu Ç…Hÿÿÿë Ç…Hÿÿÿ‹…Hÿÿÿ‰Eôƒ}ôu"Ý àÜXÿÿÿÜ]ßàöÄt Ç…Dÿÿÿë Ç…Dÿÿÿ‹Dÿÿÿ‰MôÝ…`ÿÿÿÜxÿÿÿÝ…hÿÿÿÜM€ÞÁÝ…pÿÿÿÜMˆÞÁÝ]˜ƒ}ôu;ÝEÜXÿÿÿÝE˜ÜM˜ÞéÝEÜXÿÿÿÜ  àÜ  àÞÙßàöÄt Ç…@ÿÿÿë Ç…@ÿÿÿ‹•@ÿÿÿ‰Uôƒ}ôu#‹EƒèkÀEP‹MƒékÉMQ‹UðRèòó‹EðPèãó‹MðQèÔó^‹å]ÃÌÌÌÌÌU‹ììÀVÇEüÇEø‹E Ý@ܘàßàöÄAu4‹M ÝØàÜ ‹U Ý‹E ÝØàÜH‹M ÝY‹U ÝØàÜJ‹E ÝX‹ ðƒyt‹U R¡ðÿPƒÄ‹M Qÿpàè_ó‰Eð‹|àRh‡‹EðPèAó‹ xàQh‡‹UðRè,ó¡tàPh‡‹MðQèó‹UðRè óÇEø‹E‰Eü‹Mƒé‰Mìë ‹Uìƒê‰Uìƒ}ìŽá‹EìkÀ‹M‹UüÝÜ"Ý]¨‹EìkÀ‹M‹UüÝDÜbÝ]°‹EìkÀ‹M‹UüÝDÜbÝ]¸‹EìƒèkÀ‹MìkÉ‹U‹uÝÜ$Ý]À‹EìƒèkÀ‹MìkÉ‹U‹uÝDÜdÝ]È‹EìƒèkÀ‹MìkÉ‹U‹uÝDÜdÝ]ÐÝE¨ÜM¨ÝE°ÜM°ÞÁÝE¸ÜM¸ÞÁÝ]ØÝEÀÜMÀÝEÈÜMÈÞÁÝEÐÜMÐÞÁÝ] Ý àÜMØÜ] ßàöÄu Ç…Tÿÿÿë Ç…Tÿÿÿ‹…Tÿÿÿ‰Eôƒ}ôuÝ àÜM Ü]ØßàöÄt Ç…Pÿÿÿë Ç…Pÿÿÿ‹Pÿÿÿ‰MôÝE¨ÜMÀÝE°ÜMÈÞÁÝE¸ÜMÐÞÁÝ]àƒ}ôu5ÝEØÜM ÝEàÜMàÞéÝEØÜM Ü  àÜ  àÞÙßàöÄt Ç…Lÿÿÿë Ç…Lÿÿÿ‹•Lÿÿÿ‰Uôƒ}ôu5‹EìkÀEP‹MìkÉMQ‹UðRèñ‹EìkÀE‰Eüƒ}øu‹Mü‰Møé þÿÿƒ}øu‹UƒêkÒU‰Uø‹E‹MüÝÜ!Ý`ÿÿÿ‹U‹EüÝBÜ`Ýhÿÿÿ‹M‹UüÝAÜbÝpÿÿÿ‹Eø‹MÝÜ!Ýxÿÿÿ‹Uø‹EÝBÜ`Ý]€‹Mø‹UÝAÜbÝ]ˆÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜhÿÿÿÞÁÝ…pÿÿÿÜpÿÿÿÞÁÝ]Ý…xÿÿÿÜxÿÿÿÝE€ÜM€ÞÁÝEˆÜMˆÞÁÝXÿÿÿÝ àÜMÜXÿÿÿßàöÄu Ç…Hÿÿÿë Ç…Hÿÿÿ‹…Hÿÿÿ‰Eôƒ}ôu"Ý àÜXÿÿÿÜ]ßàöÄt Ç…Dÿÿÿë Ç…Dÿÿÿ‹Dÿÿÿ‰MôÝ…`ÿÿÿÜxÿÿÿÝ…hÿÿÿÜM€ÞÁÝ…pÿÿÿÜMˆÞÁÝ]˜ƒ}ôu;ÝEÜXÿÿÿÝE˜ÜM˜ÞéÝEÜXÿÿÿÜ  àÜ  àÞÙßàöÄt Ç…@ÿÿÿë Ç…@ÿÿÿ‹•@ÿÿÿ‰Uôƒ}ôu‹EP‹MQ‹UðRè3ï‹EðPè$ï‹MðQèï^‹å]ÃÌÌÌÌÌÌU‹ìì˜Vƒ}uݘàÝ]àݨàÝ]èݘàÝ]ðë‹EÝÝ]à‹MÝAÝ]è‹UÝBÝ]ð‹EP‹MQUàRèXsƒÄ ݘàÝÿÿÿݘàÝÿÿÿݘàÝÿÿÿݘàÝ]ÈݘàÝ]ÐݨàÝ]ØÇEÀ‹EÀ‰…<þÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝÜ$ÝÀþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜdÝÈþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜdÝÐþÿÿÝ…ÀþÿÿÜÀþÿÿÝ…ÈþÿÿÜÈþÿÿÞÁÝ`ÿÿÿÝ…ÐþÿÿÜÐþÿÿÜ…`ÿÿÿÝ•`ÿÿÿƒìÝ$è îƒÄÝ`ÿÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝÜÝþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜDÝ þÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜDÝ(þÿÿÝ…þÿÿÜþÿÿÝ… þÿÿÜ þÿÿÞÁÝ0þÿÿÝ…(þÿÿÜ(þÿÿÜ…0þÿÿÝ•0þÿÿƒìÝ$èEíƒÄÝ0þÿÿÝ…0þÿÿÜ  àÝ0þÿÿ‹<þÿÿƒÁ‰<þÿÿÝ…`ÿÿÿÜ0þÿÿßàöÄAz‹Uƒê9•<þÿÿŒ0þÿÿÝ…`ÿÿÿÝøþÿÿ‹…<þÿÿkÀEP‹MƒÁQ‹UR… ÿÿÿPèfœƒÄÝEàÜ ÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜ0ÿÿÿÞÁÝþÿÿÝààÜþÿÿÜ ÿÿÿÜmàÝ]àÝààÜþÿÿÜ(ÿÿÿÜmèÝ]èÝààÜþÿÿÜ0ÿÿÿÜmðÝ]ð‹MkÉ‹UkÒÁâÊPÿTàƒÄ‰E¼‹M¼‰M€‹UkÒ‹E€ Љ<ÿÿÿ‹UkÒ‹…<ÿÿÿ Љôþÿÿ‹UkÒ‹…ôþÿÿ Љÿÿÿ‹•ôþÿÿ‰Uüƒ}„ƒ}$…Ç…8þÿÿë‹…8þÿÿƒÀ‰…8þÿÿ‹8þÿÿ;M}V‹•8þÿÿÁâ‹…8þÿÿkÀ‹Mü‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹Mü‹uÝDÝ\Á‹•8þÿÿkÒ‹EüݘàÝ\Ðëé“Ç…8þÿÿë‹8þÿÿƒÁ‰8þÿÿ‹•8þÿÿ;Ui‹…<þÿÿƒèkÀ0‹M$ݘàÝDÚéßàöÄDzT‹•<þÿÿƒêkÒ0‹E$ݘàÝDÚéßàöÄDz2‹<þÿÿƒékÉ0‹•<þÿÿƒêkÒ0‹E$‹u$ÝD ÝÚéßàöÄD‹x‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝD Ü ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝDÜLÞé‹8þÿÿkÉ‹•ôþÿÿÝÊ‹…<þÿÿƒèkÀ0‹M$ÝDÙà‹•8þÿÿÁâ‹EÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝÜLÞÁ‹8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÞÁÝ•þÿÿƒìÝ$è¦éƒÄÜ=¨àÝþÿÿ‹…8þÿÿkÀ‹ôþÿÿÝ…þÿÿÜ Á‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉ‹•ôþÿÿÝ…þÿÿÜLÊ‹…8þÿÿkÀ‹ôþÿÿÝ\ÁëD‹•8þÿÿÁâ‹…8þÿÿkÀ‹ôþÿÿ‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹ôþÿÿ‹uÝDÝ\Á‹•8þÿÿkÒ‹…ôþÿÿݘàÝ\Ћ8þÿÿkÉ‹•ÿÿÿݘàÝ\ÊéyýÿÿÇ…\ÿÿÿ‹Eƒè9…<þÿÿ‹<þÿÿ‰MÄ‹UăÂkÒ‹EÄkÀ‹M‹uÝÜ$ÝÀþÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜdÝÈþÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜdÝÐþÿÿÝ…ÀþÿÿÜÀþÿÿÝ…ÈþÿÿÜÈþÿÿÞÁÝ`ÿÿÿÝ…ÐþÿÿÜÐþÿÿÜ…`ÿÿÿÝ•`ÿÿÿƒìÝ$èõçƒÄÝ`ÿÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝÜÝèýÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜDÝðýÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜDÝøýÿÿÝ…èýÿÿÜèýÿÿÝ…ðýÿÿÜðýÿÿÞÁÝþÿÿÝ…øýÿÿÜøýÿÿÜ…þÿÿÝ•þÿÿƒìÝ$èBçƒÄÝþÿÿÝ…þÿÿÜ  àÝþÿÿ‹Uă‰UÄÝ…`ÿÿÿÜþÿÿßàöÄAz‹Eƒè9EÄŒ]þÿÿ‹MÄkÉMQ‹•<þÿÿkÒUR‹EÀkÀEPhÿÿÿQèo–ƒÄUàR‹…<þÿÿkÀEP‹MÀkÉMQ•@þÿÿRèâƒÄÿlà…@þÿÿPÿhàÝ…@þÿÿÜ ÿÿÿÝ…HþÿÿÜ(ÿÿÿÞÁÝ…PþÿÿÜ0ÿÿÿÞÁÝ@ÿÿÿÝ…`þÿÿÜ ÿÿÿÝ…hþÿÿÜ(ÿÿÿÞÁÝ…pþÿÿÜ0ÿÿÿÞÁÝHÿÿÿÝ…€þÿÿÜ ÿÿÿÝ…ˆþÿÿÜ(ÿÿÿÞÁÝ…þÿÿÜ0ÿÿÿÞÁÝPÿÿÿÝ…@þÿÿÜhÿÿÿÝ…HþÿÿÜpÿÿÿÞÁÝ…PþÿÿÜxÿÿÿÞÁÝ]ˆÝ…`þÿÿÜhÿÿÿÝ…hþÿÿÜpÿÿÿÞÁÝ…pþÿÿÜxÿÿÿÞÁÝ]Ý…€þÿÿÜhÿÿÿÝ…ˆþÿÿÜpÿÿÿÞÁÝ…þÿÿÜxÿÿÿÞÁÝ]˜Ý…øþÿÿÙàÝ]ØÇ…8þÿÿë‹8þÿÿƒÁ‰8þÿÿ‹•8þÿÿ;U¤ ƒ}„üƒ}$„‹…<þÿÿkÀ0‹M$ݘàÝDÚéßàöÄDzK‹•<þÿÿkÒ0‹E$ݘàÝDÚéßàöÄDz,‹<þÿÿkÉ0‹•<þÿÿkÒ0‹E$‹u$ÝD ÝÚéßàöÄD‹l‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝD Ü ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝDÜLÞé‹8þÿÿkÉ‹•ÿÿÿÝÊ‹…<þÿÿkÀ0‹M$ÝDÙà‹•8þÿÿÁâ‹EÜ ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝÜLÞÁ‹8þÿÿkÉ‹•ÿÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ÿÿÿ‹µÿÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ÿÿÿ‹µÿÿÿÝDÂÜLÎÞÁÝ•àýÿÿƒìÝ$èÌãƒÄÜ=¨àÝàýÿÿ‹…8þÿÿkÀ‹ÿÿÿÝ…àýÿÿÜ Á‹•8þÿÿkÒ‹…ÿÿÿÝЋ8þÿÿkÉ‹•ÿÿÿÝ…àýÿÿÜLÊ‹…8þÿÿkÀ‹ÿÿÿÝ\ÁëD‹•8þÿÿÁâ‹…8þÿÿkÀ‹ÿÿÿ‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹ÿÿÿ‹uÝDÝ\Á‹ð‹B%„ă}$uD‹8þÿÿÁá‹•8þÿÿkÒ‹…ÿÿÿ‹uÝÝЋ8þÿÿÁá‹•8þÿÿkÒ‹…ÿÿÿ‹uÝDÝ\Ћ8þÿÿkÉ‹•ôþÿÿݘàÝ\Ê‹…8þÿÿkÀ‹ôþÿÿÝ…@ÿÿÿÜ Á‹•8þÿÿkÒ‹…ôþÿÿÝ…HÿÿÿÜLÐÞÁ‹8þÿÿkÉ‹•ôþÿÿÝ…PÿÿÿÜLÊÞÁÝØýÿÿ‹…8þÿÿkÀÝ…ØýÿÿÜ@ÿÿÿ‹ôþÿÿÜ,Á‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉÝ…ØýÿÿÜHÿÿÿ‹•ôþÿÿÜlÊ‹…8þÿÿkÀ‹ôþÿÿÝ\Á‹•8þÿÿkÒÝ…ØýÿÿÜPÿÿÿ‹…ôþÿÿÜlЋ8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÞÁÝÐýÿÿ‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÜ…ÐýÿÿÝ•ÐýÿÿƒìÝ$è3áƒÄÝÐýÿÿݘàÝ…ÐýÿÿÚéßàöÄD‹”ݨàܵÐýÿÿÝÐýÿÿ‹…8þÿÿkÀ‹ôþÿÿÝ…ÐýÿÿÜ Á‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉ‹•ôþÿÿÝ…ÐýÿÿÜLÊ‹…8þÿÿkÀ‹ôþÿÿÝ\Á‹•8þÿÿkÒ‹…ôþÿÿÝ…ÐýÿÿÜLЋ8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹ÿÿÿݘàÝ\Á‹•8þÿÿkÒ‹…ÿÿÿÝEˆÜ Ћ8þÿÿkÉ‹•ÿÿÿÝEÜLÊÞÁ‹…8þÿÿkÀ‹ÿÿÿÝE˜ÜLÁÞÁÝÈýÿÿ‹•8þÿÿkÒÝ…ÈýÿÿÜMˆ‹…ÿÿÿÜ,Ћ8þÿÿkÉ‹•ÿÿÿÝÊ‹…8þÿÿkÀÝ…ÈýÿÿÜM‹ÿÿÿÜlÁ‹•8þÿÿkÒ‹…ÿÿÿÝ\Ћ8þÿÿkÉÝ…ÈýÿÿÜM˜‹•ÿÿÿÜlÊ‹…8þÿÿkÀ‹ÿÿÿÝ\Á‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝÑÜ Æ‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝDÑÜLÆÞÁÝÀýÿÿ‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝDÑÜLÆÜ…ÀýÿÿÝ•ÀýÿÿƒìÝ$èÿÞƒÄÝÀýÿÿݘàÝ…ÀýÿÿÚéßàöÄD‹”ݨàܵÀýÿÿÝÀýÿÿ‹•8þÿÿkÒ‹…ÿÿÿÝ…ÀýÿÿÜ Ð‹8þÿÿkÉ‹•ÿÿÿÝÊ‹…8þÿÿkÀ‹ÿÿÿÝ…ÀýÿÿÜLÁ‹•8þÿÿkÒ‹…ÿÿÿÝ\Ћ8þÿÿkÉ‹•ÿÿÿÝ…ÀýÿÿÜLÊ‹…8þÿÿkÀ‹ÿÿÿÝ\Áƒ}$uU‹•8þÿÿÁâ‹E ÝÝ] ‹8þÿÿÁá‹U ÝD Ý]¨‹…8þÿÿÁà‹M ÝÝØþÿÿ‹•8þÿÿÁâ‹E ÝDÝàþÿÿéx‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜLÞÁ‹<þÿÿƒékÉ0‹U$ÜD Ý] ‹…<þÿÿƒèkÀ0‹8þÿÿÁá‹U$‹u ÝDÜ ‹…<þÿÿƒèkÀ0‹8þÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…<þÿÿƒèkÀ0‹M$ÜD(Ý]¨‹•<þÿÿƒêkÒ0‹…8þÿÿÁà‹M$‹u ÝÜ ‹•<þÿÿƒêkÒ0‹…8þÿÿÁà‹M$‹u ÝDÜLÞÁ‹•<þÿÿƒêkÒ0‹E$ÜDÝØþÿÿ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹<þÿÿƒékÉ0‹U$ÜD (ÝàþÿÿݘàÝ]°Ý…øþÿÿÙàÝèþÿÿÝE Ü¥ØþÿÿÜ@ÿÿÿÝ ýÿÿÝE¨Ü¥àþÿÿÜHÿÿÿÜ… ýÿÿÝ ýÿÿÝE°Ü¥èþÿÿÜPÿÿÿÜ… ýÿÿÝ ýÿÿݘàÝ… ýÿÿÚéßàöÄDz*Ç…¼ýÿÿÝE Ý@ÿÿÿÝE¨ÝHÿÿÿÝE°ÝPÿÿÿé,Ç…¼ýÿÿÝ…ÿÿÿÜ¥ØþÿÿÜ@ÿÿÿݨýÿÿÝ…ÿÿÿÜ¥àþÿÿÜHÿÿÿÜ…¨ýÿÿݨýÿÿÝ…ÿÿÿÜ¥èþÿÿÜPÿÿÿÜ…¨ýÿÿÝ•¨ýÿÿܵ ýÿÿݘýÿÿݨàÜ¥˜ýÿÿݰýÿÿÝ…˜ýÿÿÜ  àܨàßàöÄAtÝ…˜ýÿÿÜ  àÜØàßàöÄz Ç…¼ýÿÿÝ…˜ýÿÿÜM Ý…°ýÿÿÜØþÿÿÞÁ‹…8þÿÿkÀ‹M€ÝÁÝ…˜ýÿÿÜM¨Ý…°ýÿÿÜàþÿÿÞÁ‹•8þÿÿkÒ‹E€Ý\ÐÝ…˜ýÿÿÜM°Ý…°ýÿÿÜèþÿÿÞÁ‹8þÿÿkÉ‹U€Ý\ʃ}$„T‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝÜ ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝDÜLÞÁ‹…<þÿÿkÀ0‹M$ÜDÝ] ‹•<þÿÿkÒ0‹…8þÿÿÁà‹M$‹u ÝDÜ ‹•<þÿÿkÒ0‹…8þÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•<þÿÿkÒ0‹E$ÜD(Ý]¨‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹u ÝÜ ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜLÞÁ‹<þÿÿkÉ0‹U$ÜD ÝØþÿÿ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝDÜ ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…<þÿÿkÀ0‹M$ÜD(ÝàþÿÿÝE Ü¥ØþÿÿÜMˆÝxýÿÿÝE¨Ü¥àþÿÿÜMÜ…xýÿÿÝxýÿÿÝE°Ü¥èþÿÿÜM˜Ü…xýÿÿÝxýÿÿݘàÝ…xýÿÿÚéßàöÄDz!Ç…”ýÿÿÝE Ý]ˆÝE¨Ý]ÝE°Ý]˜é#Ç…”ýÿÿÝEÈÜ¥ØþÿÿÜMˆÝ€ýÿÿÝEÐÜ¥àþÿÿÜMÜ…€ýÿÿÝ€ýÿÿÝEØÜ¥èþÿÿÜM˜Ü…€ýÿÿÝ•€ýÿÿܵxýÿÿÝpýÿÿݨàÜ¥pýÿÿ݈ýÿÿÝ…pýÿÿÜ  àܨàßàöÄAtÝ…pýÿÿÜ  àÜØàßàöÄz Ç…”ýÿÿÝ…pýÿÿÜM Ý…ˆýÿÿÜØþÿÿÞÁ‹•8þÿÿkÒ‹…<ÿÿÿÝÐÝ…pýÿÿÜM¨Ý…ˆýÿÿÜàþÿÿÞÁ‹8þÿÿkÉ‹•<ÿÿÿÝ\ÊÝ…pýÿÿÜM°Ý…ˆýÿÿÜèþÿÿÞÁ‹…8þÿÿkÀ‹<ÿÿÿÝ\Áé>òÿÿ‹ð‹Bƒà„„ƒ½\ÿÿÿt=ƒ} t‹<þÿÿƒékÉ M Qÿ„àÇ…\ÿÿÿ‹U€R…@ÿÿÿP‹MQèÞÿÿƒÄ ‹Uƒê9•<þÿÿu0ƒ} t‹…<þÿÿkÀ E Pÿ„à‹<ÿÿÿQUˆR‹EPèèâÿÿƒÄ ƒ}$…Å‹ ð‹Qâ…°ƒ} …¦ƒ}u,Ý…øþÿÿƒìÝ$‹…<þÿÿP‹<ÿÿÿQ‹U€R‹EPèÏ—ƒÄëo‹ ð‹Qât0Ý…øþÿÿƒìÝ$‹…<þÿÿP‹MüQ‹•<ÿÿÿR‹E€P‹MQèþƒÄë.Ý…øþÿÿƒìÝ$‹•<þÿÿR‹EüP‹<ÿÿÿQ‹U€R‹EP蚃Äéûƒ}uLÝ…øþÿÿƒìÝ$‹<þÿÿQ‹•<þÿÿkÒ U R‹…<þÿÿƒèkÀ E P‹<ÿÿÿQ‹U€R‹EPèL˜ƒÄ é©‹ ð‹QâtMÝ…øþÿÿƒìÝ$‹…<þÿÿP‹<þÿÿkÉ M Q‹•<þÿÿƒêkÒ U R‹EüP‹<ÿÿÿQ‹U€R‹EPèÛŸƒÄ$ëKÝ…øþÿÿƒìÝ$‹<þÿÿQ‹•<þÿÿkÒ U R‹…<þÿÿƒèkÀ E P‹MüQ‹•<ÿÿÿR‹E€P‹MQ讚ƒÄ$éÔƒ} …¼ƒ}u/Ý…øþÿÿƒìÝ$‹•<þÿÿR‹…<ÿÿÿP‹M€Q‹URè–ƒÄé‚¡ð‹Hát:Ý…øþÿÿƒìÝ$‹•<þÿÿR‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQèR§ƒÄ ë8Ý…øþÿÿƒìÝ$‹•<þÿÿR‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQè£ƒÄ éƒ}uLÝ…øþÿÿƒìÝ$‹•<þÿÿR‹…<þÿÿkÀ E P‹<þÿÿƒékÉ M Q‹•<ÿÿÿR‹E€P‹MQ膖ƒÄ 鼋ð‹B%tWÝ…øþÿÿƒìÝ$‹<þÿÿQ‹•<þÿÿkÒ U R‹…<þÿÿƒèkÀ E P‹ÿÿÿQ‹•ôþÿÿR‹…<ÿÿÿP‹M€Q‹URèLªƒÄ(ëUÝ…øþÿÿƒìÝ$‹…<þÿÿP‹<þÿÿkÉ M Q‹•<þÿÿƒêkÒ U R‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQè壃Ä(ÿˆàÝ…`ÿÿÿÝøþÿÿ‹•<þÿÿ‰UÀ‹Eĉ…<þÿÿÝ…hÿÿÿÝ ÿÿÿÝ…pÿÿÿÝ(ÿÿÿÝ…xÿÿÿÝ0ÿÿÿ‹ôþÿÿ‰M„‹•ÿÿÿ‰•ôþÿÿ‹E„‰…ÿÿÿÝEàÜ ÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜ0ÿÿÿÞÁÝhýÿÿÝààÜhýÿÿÜ ÿÿÿÜmàÝ]àÝààÜhýÿÿÜ(ÿÿÿÜmèÝ]èÝààÜhýÿÿÜ0ÿÿÿÜmðÝ]ðéàéÿÿ‹M¼QÿPàƒÄ^‹å]ÃÌÌÌÌÌÌÌÌU‹ììHVÇEäÇ…lþÿÿÇ…(þÿÿÇ…Äþÿÿ¡ð‹HƒátÇ…dþÿÿÇ…lþÿÿ 2ëÇ…dþÿÿÇ…lþÿÿЃ}uݘàÝ]ÈݨàÝ]ÐݘàÝ]Øë‹UÝÝ]È‹EÝ@Ý]ЋMÝAÝ]Ø‹UR‹EPMÈQè VƒÄ ݘàÝHþÿÿݘàÝPþÿÿݘàÝXþÿÿݘàÝ]¨Ý˜àÝ]°Ý¨àÝ]¸‹UkÒ ‹EkÀÁà ЋUÑâ‘PÿTàƒÄ‰…|ÿÿÿ‹|ÿÿÿ‰$þÿÿ‹UkÒ‹…$þÿÿ Љhþÿÿ‹UkÒ‹…hþÿÿ Љÿÿÿ‹UkÒ‹…ÿÿÿ Љ¤þÿÿ‹UkÒ‹…¤þÿÿ ЉTÿÿÿ‹UkÒ‹…Tÿÿÿ Љ`þÿÿ‹UkÒ‹…`þÿÿ Љþÿÿ‹U‹…þÿÿ ‰MÀÇE€‹U€‰•Lýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝÜ$ÝÐýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜdÝØýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜdÝàýÿÿÝ…ÐýÿÿÜÐýÿÿÝ…ØýÿÿÜØýÿÿÞÁÝXÿÿÿÝ…àýÿÿÜàýÿÿÜ…XÿÿÿÝ•XÿÿÿƒìÝ$èûσÄÝXÿÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝÜÝ(ýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜDÝ0ýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜDÝ8ýÿÿÝ…(ýÿÿÜ(ýÿÿÝ…0ýÿÿÜ0ýÿÿÞÁÝ@ýÿÿÝ…8ýÿÿÜ8ýÿÿÜ…@ýÿÿÝ•@ýÿÿƒìÝ$è6σÄÝ@ýÿÿÝ…@ýÿÿÜ  àÝ@ýÿÿ‹…LýÿÿƒÀ‰…LýÿÿÝ…XÿÿÿÜ@ýÿÿßàöÄAz‹Mƒé9LýÿÿŒ0þÿÿÝ…XÿÿÿÝ]èƒ}„2ƒ}$…“‹•$þÿÿ‰Uä‹E䉅hþÿÿÇ…Hýÿÿë‹HýÿÿƒÁ‰Hýÿÿ‹•Hýÿÿ;U}V‹…HýÿÿÁà‹HýÿÿkÉ‹Uä‹uÝÝÊ‹…HýÿÿÁà‹HýÿÿkÉ‹Uä‹uÝDÝ\Ê‹…HýÿÿkÀ‹MäݘàÝ\Áëé“Ç…Hýÿÿë‹•HýÿÿƒÂ‰•Hýÿÿ‹…Hýÿÿ;Ei‹LýÿÿƒékÉ0‹U$ݘàÝD ÚéßàöÄDzT‹…LýÿÿƒèkÀ0‹M$ݘàÝDÚéßàöÄDz2‹•LýÿÿƒêkÒ0‹…LýÿÿƒèkÀ0‹M$‹u$ÝD ÝÚéßàöÄD‹x‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝD Ü ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝDÜLÞé‹•HýÿÿkÒ‹…$þÿÿÝЋLýÿÿƒékÉ0‹U$ÝD Ùà‹…HýÿÿÁà‹MÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝÜLÞÁ‹•HýÿÿkÒ‹…$þÿÿÝ\ЋHýÿÿkÉ‹•HýÿÿkÒ‹…$þÿÿ‹µ$þÿÿÝÈÜ Ö‹HýÿÿkÉ‹•HýÿÿkÒ‹…$þÿÿ‹µ$þÿÿÝDÈÜLÖÞÁÝ• ýÿÿƒìÝ$è†ÌƒÄÜ=¨àÝ ýÿÿ‹HýÿÿkÉ‹•$þÿÿÝ… ýÿÿÜ Ê‹…HýÿÿkÀ‹$þÿÿÝÁ‹•HýÿÿkÒ‹…$þÿÿÝ… ýÿÿÜLЋHýÿÿkÉ‹•$þÿÿÝ\ÊëD‹…HýÿÿÁà‹HýÿÿkÉ‹•$þÿÿ‹uÝÝÊ‹…HýÿÿÁà‹HýÿÿkÉ‹•$þÿÿ‹uÝDÝ\Ê‹…HýÿÿkÀ‹$þÿÿݘàÝ\Á‹•HýÿÿkÒ‹…hþÿÿݘàÝ\ÐéyýÿÿëÇEä‹Mä‰hþÿÿ‹•hþÿÿ‰•$þÿÿ‹…LýÿÿkÀEP‹M€kÉMQ‹U€ƒêkÒUR…pþÿÿPèözƒÄ‹M€kÉ‹U€ƒêkÒ‹E‹uÝÜ$Ýàüÿÿ‹M€kÉ‹U€ƒêkÒ‹E‹uÝDÜdÝèüÿÿ‹M€kÉ‹U€ƒêkÒ‹E‹uÝDÜdÝðüÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝÜ$Ýýÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝDÜdÝýÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝDÜdÝýÿÿÝ…àüÿÿÜàüÿÿÝ…èüÿÿÜèüÿÿÞÁÝýÿÿÝ…ðüÿÿÜðüÿÿÜ…ýÿÿÝ•ýÿÿƒìÝ$èBʃÄÝýÿÿÝ…ýÿÿÜýÿÿÝ…ýÿÿÜýÿÿÞÁÝØüÿÿÝ…ýÿÿÜýÿÿÜ…ØüÿÿÝ•ØüÿÿƒìÝ$èöɃÄÝØüÿÿÝ àÜØüÿÿÜýÿÿßàöÄ…ŠÝ˜àÝ…ØüÿÿÚéßàöÄDz!ݘàÝ•ØþÿÿÝ•ÐþÿÿÝÈþÿÿÇE¤ëOݨàܵØüÿÿÝØüÿÿÝ…ØüÿÿÜýÿÿÝÈþÿÿÝ…ØüÿÿÜýÿÿÝÐþÿÿÝ…ØüÿÿÜýÿÿÝØþÿÿÇE¤éûÇE¤Ý àÜýÿÿÜØüÿÿßàöÄuMݨàܵýÿÿÝýÿÿÝ…ýÿÿÜàüÿÿÝÈþÿÿÝ…ýÿÿÜèüÿÿÝÐþÿÿÝ…ýÿÿÜðüÿÿÝØþÿÿéŽÝ¨àܵýÿÿÝýÿÿÝ…ýÿÿÜàüÿÿÝàüÿÿÝ…ýÿÿÜèüÿÿÝèüÿÿÝ…ýÿÿÜðüÿÿÝðüÿÿݨàܵØüÿÿÝØüÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…àüÿÿÜ¥ýÿÿÝÈþÿÿÝ…èüÿÿÜ¥ýÿÿÝÐþÿÿÝ…ðüÿÿÜ¥ýÿÿÝØþÿÿÝ…ÈþÿÿÜÈþÿÿÝ…ÐþÿÿÜÐþÿÿÞÁÝøüÿÿÝ…ØþÿÿÜØþÿÿÜ…øüÿÿÝ•øüÿÿƒìÝ$èÐǃÄÝøüÿÿÝ…øüÿÿÜ àßàöÄz!ݘàÝ•ØþÿÿÝ•ÐþÿÿÝÈþÿÿÇE¤ëHݨàܵøüÿÿÝøüÿÿÝ…øüÿÿÜÈþÿÿÝÈþÿÿÝ…øüÿÿÜÐþÿÿÝÐþÿÿÝ…øüÿÿÜØþÿÿÝØþÿÿÝEÈÜpþÿÿÝEÐÜxþÿÿÞÁÝEØÜ€þÿÿÞÁÝÐüÿÿÝààÜÐüÿÿÜpþÿÿÜmÈÝ]ÈÝààÜÐüÿÿÜxþÿÿÜmÐÝ]ÐÝààÜÐüÿÿÜ€þÿÿÜmØÝ]Ø‹Mƒé9Lýÿÿµ!‹•Lýÿÿ‰U„‹E„ƒÀkÀ‹M„kÉ‹U‹uÝÜ$ÝÐýÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜdÝØýÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜdÝàýÿÿÝ…ÐýÿÿÜÐýÿÿÝ…ØýÿÿÜØýÿÿÞÁÝXÿÿÿÝ…àýÿÿÜàýÿÿÜ…XÿÿÿÝ•XÿÿÿƒìÝ$èƃÄÝXÿÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝÜݰüÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜDݸüÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜDÝÀüÿÿÝ…°üÿÿܰüÿÿÝ…¸üÿÿܸüÿÿÞÁÝÈüÿÿÝ…ÀüÿÿÜÀüÿÿÜ…ÈüÿÿÝ•ÈüÿÿƒìÝ$èfŃÄÝÈüÿÿÝ…ÈüÿÿÜ  àÝÈüÿÿ‹E„ƒÀ‰E„Ý…XÿÿÿÜÈüÿÿßàöÄAz‹Mƒé9M„Œ]þÿÿ‹U„kÒUR‹…LýÿÿkÀEP‹M€kÉMQ•ÿÿÿRè“tƒÄ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝÜ$Ýpüÿÿ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝDÜdÝxüÿÿ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝDÜdÝ€üÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝÜ$Ýüÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝDÜdݘüÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝDÜdÝ üÿÿÝ…püÿÿÜpüÿÿÝ…xüÿÿÜxüÿÿÞÁݨüÿÿÝ…€üÿÿÜ€üÿÿÜ…¨üÿÿÝ•¨üÿÿƒìÝ$èßÃÄݨüÿÿÝ…üÿÿÜüÿÿÝ…˜üÿÿܘüÿÿÞÁÝhüÿÿÝ… üÿÿÜ üÿÿÜ…hüÿÿÝ•hüÿÿƒìÝ$è“ÃÄÝhüÿÿÝ àÜhüÿÿܨüÿÿßàöÄu~ݘàÝ…hüÿÿÚéßàöÄDzݘàÝU˜ÝUÝ]ˆÇ…,þÿÿëIݨàܵhüÿÿÝhüÿÿÝ…hüÿÿÜüÿÿÝ]ˆÝ…hüÿÿܘüÿÿÝ]Ý…hüÿÿÜ üÿÿÝ]˜Ç…,þÿÿéÂÇ…,þÿÿÝ àܨüÿÿÜhüÿÿßàöÄuDݨàܵ¨üÿÿݨüÿÿÝ…¨üÿÿÜpüÿÿÝ]ˆÝ…¨üÿÿÜxüÿÿÝ]Ý…¨üÿÿÜ€üÿÿÝ]˜é[ݨàܵ¨üÿÿݨüÿÿÝ…¨üÿÿÜpüÿÿÝpüÿÿÝ…¨üÿÿÜxüÿÿÝxüÿÿÝ…¨üÿÿÜ€üÿÿÝ€üÿÿݨàܵhüÿÿÝhüÿÿÝ…hüÿÿÜüÿÿÝüÿÿÝ…hüÿÿܘüÿÿݘüÿÿÝ…hüÿÿÜ üÿÿÝ üÿÿÝ…püÿÿÜ¥üÿÿÝ]ˆÝ…xüÿÿÜ¥˜üÿÿÝ]Ý…€üÿÿÜ¥ üÿÿÝ]˜ÝEˆÜMˆÝEÜMÞÁ݈üÿÿÝE˜ÜM˜Ü…ˆüÿÿÝ•ˆüÿÿƒìÝ$èžÁƒÄ݈üÿÿÝ…ˆüÿÿÜ àßàöÄzݘàÝU˜ÝUÝ]ˆÇ…,þÿÿë6ݨàܵˆüÿÿ݈üÿÿÝ…ˆüÿÿÜMˆÝ]ˆÝ…ˆüÿÿÜMÝ]Ý…ˆüÿÿÜM˜Ý]˜EÈP‹LýÿÿkÉMQ‹U€kÒUR…PýÿÿPèj¼ƒÄÿlàPýÿÿQÿhàÝ…PýÿÿÜÈþÿÿÝ…XýÿÿÜÐþÿÿÞÁÝ…`ýÿÿÜØþÿÿÞÁÝàþÿÿÝ…pýÿÿÜÈþÿÿÝ…xýÿÿÜÐþÿÿÞÁÝ…€ýÿÿÜØþÿÿÞÁÝèþÿÿÝ…ýÿÿÜÈþÿÿÝ…˜ýÿÿÜÐþÿÿÞÁÝ… ýÿÿÜØþÿÿÞÁÝðþÿÿÝ…PýÿÿÜMˆÝ…XýÿÿÜMÞÁÝ…`ýÿÿÜM˜ÞÁ݈þÿÿÝ…pýÿÿÜMˆÝ…xýÿÿÜMÞÁÝ…€ýÿÿÜM˜ÞÁÝþÿÿÝ…ýÿÿÜMˆÝ…˜ýÿÿÜMÞÁÝ… ýÿÿÜM˜ÞÁݘþÿÿÝ…PýÿÿÜpþÿÿÝ…XýÿÿÜxþÿÿÞÁÝ…`ýÿÿÜ€þÿÿÞÁݨþÿÿÝ…pýÿÿÜpþÿÿÝ…xýÿÿÜxþÿÿÞÁÝ…€ýÿÿÜ€þÿÿÞÁݰþÿÿÝ…ýÿÿÜpþÿÿÝ…˜ýÿÿÜxþÿÿÞÁÝ… ýÿÿÜ€þÿÿÞÁݸþÿÿÝ…PýÿÿÜÿÿÿÝ…XýÿÿÜÿÿÿÞÁÝ…`ýÿÿÜÿÿÿÞÁÝ ÿÿÿÝ…pýÿÿÜÿÿÿÝ…xýÿÿÜÿÿÿÞÁÝ…€ýÿÿÜÿÿÿÞÁÝ(ÿÿÿÝ…ýÿÿÜÿÿÿÝ…˜ýÿÿÜÿÿÿÞÁÝ… ýÿÿÜÿÿÿÞÁÝ0ÿÿÿÝEèÙàÝ]¸Ç…Hýÿÿë‹•HýÿÿƒÂ‰•Hýÿÿ‹…Hýÿÿ;Eäƒ}$…±‹HýÿÿÁá‹U Ý Ý8ÿÿÿ‹…HýÿÿÁà‹M ÝDÝ@ÿÿÿ‹•HýÿÿÁâ‹E ÝÝþÿÿ‹HýÿÿÁá‹U ÝD Ýþÿÿ‹…HýÿÿÁà‹M ÝÝ`ÿÿÿ‹•HýÿÿÁâ‹E ÝDÝhÿÿÿ‹HýÿÿÁá‹U Ý Ý0þÿÿ‹…HýÿÿÁà‹M ÝDÝ8þÿÿéü‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜLÞÁ‹•LýÿÿƒêkÒ0‹E$ÜDÝ8ÿÿÿ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜ ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹LýÿÿƒékÉ0‹U$ÜD (Ý@ÿÿÿ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝÜ ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝDÜLÞÁ‹…LýÿÿkÀ0‹M$ÜDÝ`ÿÿÿ‹•LýÿÿkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜ ‹•LýÿÿkÒ0‹…HýÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•LýÿÿkÒ0‹E$ÜD(Ýhÿÿÿ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹u ÝÜ ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜLÞÁ‹LýÿÿkÉ0‹U$ÜD Ýþÿÿ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝDÜ ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…LýÿÿkÀ0‹M$ÜD(Ýþÿÿ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜLÞÁ‹•LýÿÿƒêkÒ0‹E$ÜDÝ0þÿÿ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜ ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹LýÿÿƒékÉ0‹U$ÜD (Ý8þÿÿƒ}„‹…LýÿÿkÀ0‹M$ݘàÝDÚéßàöÄDzK‹•LýÿÿkÒ0‹E$ݘàÝDÚéßàöÄDz,‹LýÿÿkÉ0‹•LýÿÿkÒ0‹E$‹u$ÝD ÝÚéßàöÄD‹l‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝD Ü ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝDÜLÞé‹HýÿÿkÉ‹•hþÿÿÝÊ‹…LýÿÿkÀ0‹M$ÝDÙà‹•HýÿÿÁâ‹EÜ ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝÜLÞÁ‹HýÿÿkÉ‹•hþÿÿÝ\Ê‹…HýÿÿkÀ‹HýÿÿkÉ‹•hþÿÿ‹µhþÿÿÝÂÜ Î‹…HýÿÿkÀ‹HýÿÿkÉ‹•hþÿÿ‹µhþÿÿÝDÂÜLÎÞÁÝ•`üÿÿƒìÝ$詹ƒÄÜ=¨àÝ`üÿÿ‹…HýÿÿkÀ‹hþÿÿÝ…`üÿÿÜ Á‹•HýÿÿkÒ‹…hþÿÿÝЋHýÿÿkÉ‹•hþÿÿÝ…`üÿÿÜLÊ‹…HýÿÿkÀ‹hþÿÿÝ\ÁëD‹•HýÿÿÁâ‹…HýÿÿkÀ‹hþÿÿ‹uÝÝÁ‹•HýÿÿÁâ‹…HýÿÿkÀ‹hþÿÿ‹uÝDÝ\ÁݘàÝHÿÿÿݘàÝpÿÿÿÝEèÙàÝþÿÿÝEèÙàÝ@þÿÿƒ}¤„wƒ½dþÿÿ„jÝ…8ÿÿÿÜ¥þÿÿÜàþÿÿÝ@üÿÿÝ…@ÿÿÿÜ¥þÿÿÜèþÿÿÜ…@üÿÿÝ@üÿÿÝ…HÿÿÿÜ¥þÿÿÜðþÿÿÜ…@üÿÿÝ@üÿÿݘàÝ…@üÿÿÚéßàöÄDz3Ç…\üÿÿÝ…8ÿÿÿÝàþÿÿÝ…@ÿÿÿÝèþÿÿÝ…HÿÿÿÝðþÿÿéÇ…\üÿÿÝ…HþÿÿÜ¥þÿÿÜàþÿÿÝHüÿÿÝ…PþÿÿÜ¥þÿÿÜèþÿÿÜ…HüÿÿÝHüÿÿÝ…XþÿÿÜ¥þÿÿÜðþÿÿÜ…HüÿÿÝ•Hüÿÿܵ@üÿÿÝ8üÿÿݨàÜ¥8üÿÿÝPüÿÿÝ…8üÿÿÜ  àܨàßàöÄAtÝ…8üÿÿÜ  àÜØàßàöÄz Ç…\üÿÿÝ…8üÿÿÜ8ÿÿÿÝ…PüÿÿÜþÿÿÞÁÝèýÿÿÝ…8üÿÿÜ@ÿÿÿÝ…PüÿÿÜþÿÿÞÁÝðýÿÿÝ…8üÿÿÜHÿÿÿÝ…PüÿÿÜþÿÿÞÁÝøýÿÿÝ…ðþÿÿܘàßàöÄz6ÝØàÜàþÿÿÝàþÿÿÝØàÜèþÿÿÝèþÿÿÝØàÜðþÿÿÝðþÿÿÝ…àþÿÿÜ8ÿÿÿÝ]ðÝ…èþÿÿÜ@ÿÿÿÜEðÝ]ð‹•HýÿÿkÒ‹…ÿÿÿÝ…èýÿÿÝЋHýÿÿkÉ‹•ÿÿÿÝ…ðýÿÿÝ\Ê‹…HýÿÿkÀ‹ÿÿÿÝ…øýÿÿÝ\ÁëSݨàÝ]ð‹•HýÿÿkÒ‹…ÿÿÿÝ…8ÿÿÿÝЋHýÿÿkÉ‹•ÿÿÿÝ…@ÿÿÿÝ\Ê‹…HýÿÿkÀ‹ÿÿÿÝ…HÿÿÿÝ\ÁÝ…8ÿÿÿÜ¥0þÿÿܨþÿÿÝüÿÿÝ…@ÿÿÿÜ¥8þÿÿܰþÿÿÜ…üÿÿÝüÿÿÝ…HÿÿÿÜ¥@þÿÿܸþÿÿÜ…üÿÿÝüÿÿݘàÝ…üÿÿÚéßàöÄDz3Ç…4üÿÿÝ…8ÿÿÿݨþÿÿÝ…@ÿÿÿݰþÿÿÝ…HÿÿÿݸþÿÿéÇ…4üÿÿÝ…HþÿÿÜ¥0þÿÿܨþÿÿÝ üÿÿÝ…PþÿÿÜ¥8þÿÿܰþÿÿÜ… üÿÿÝ üÿÿÝ…XþÿÿÜ¥@þÿÿܸþÿÿÜ… üÿÿÝ• üÿÿܵüÿÿÝüÿÿݨàÜ¥üÿÿÝ(üÿÿÝ…üÿÿÜ  àܨàßàöÄAtÝ…üÿÿÜ  àÜØàßàöÄz Ç…4üÿÿÝ…üÿÿÜ8ÿÿÿÝ…(üÿÿÜ0þÿÿÞÁÝèýÿÿÝ…üÿÿÜ@ÿÿÿÝ…(üÿÿÜ8þÿÿÞÁÝðýÿÿÝ…üÿÿÜHÿÿÿÝ…(üÿÿÜ@þÿÿÞÁÝøýÿÿÝEðܘàßàöÄA{$‹•HýÿÿkÒ‹…ÿÿÿÝ…øýÿÿÜ\ÐßàöÄŠÏ‹HýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝÎÝЋHýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝDÎÝ\ЋHýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝDÎÝ\ЋHýÿÿkÉ‹•ÿÿÿÝ…èýÿÿÝÊ‹…HýÿÿkÀ‹ÿÿÿÝ…ðýÿÿÝ\Á‹•HýÿÿkÒ‹…ÿÿÿÝ…øýÿÿÝ\ЋHýÿÿ‹•þÿÿÇŠë‹…Hýÿÿ‹þÿÿÇ‹•HýÿÿkÒÝEèÙà‹…ÿÿÿÜ\ÐßàöÄAuJ‹HýÿÿkÉ‹•ÿÿÿÝ…þÿÿÝÊ‹…HýÿÿkÀ‹ÿÿÿÝ…þÿÿÝ\Á‹•HýÿÿkÒ‹…ÿÿÿÝ…þÿÿÝ\Ѓ½,þÿÿ„nƒ½dþÿÿ„aÝ…þÿÿÜ¥8ÿÿÿ܈þÿÿÝðûÿÿÝ…þÿÿÜ¥@ÿÿÿÜþÿÿÜ…ðûÿÿÝðûÿÿÝ…þÿÿÜ¥HÿÿÿܘþÿÿÜ…ðûÿÿÝðûÿÿݘàÝ…ðûÿÿÚéßàöÄDz3Ç… üÿÿÝ…þÿÿ݈þÿÿÝ…þÿÿÝþÿÿÝ…þÿÿݘþÿÿéÇ… üÿÿÝE¨Ü¥8ÿÿÿ܈þÿÿÝøûÿÿÝE°Ü¥@ÿÿÿÜþÿÿÜ…øûÿÿÝøûÿÿÝE¸Ü¥HÿÿÿܘþÿÿÜ…øûÿÿÝ•øûÿÿܵðûÿÿÝèûÿÿݨàÜ¥èûÿÿÝüÿÿÝ…èûÿÿÜ  àܨàßàöÄAtÝ…èûÿÿÜ  àÜØàßàöÄz Ç… üÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜ8ÿÿÿÞÁÝèýÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜ@ÿÿÿÞÁÝðýÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜHÿÿÿÞÁÝøýÿÿÝ…˜þÿÿܘàßàöÄAu6ÝØà܈þÿÿ݈þÿÿÝØàÜþÿÿÝþÿÿÝØàܘþÿÿݘþÿÿÝ…ˆþÿÿÜþÿÿÝ]ðÝ…þÿÿÜþÿÿÜEðÝ]ð‹HýÿÿkÉ‹•¤þÿÿÝ…èýÿÿÝÊ‹…HýÿÿkÀ‹¤þÿÿÝ…ðýÿÿÝ\Á‹•HýÿÿkÒ‹…¤þÿÿÝ…øýÿÿÝ\ÐëSݨàÝ]ð‹HýÿÿkÉ‹•¤þÿÿÝ…þÿÿÝÊ‹…HýÿÿkÀ‹¤þÿÿÝ…þÿÿÝ\Á‹•HýÿÿkÒ‹…¤þÿÿÝ…þÿÿÝ\ÐÝ…`ÿÿÿÜ¥þÿÿÜ ÿÿÿÝÈûÿÿÝ…hÿÿÿÜ¥þÿÿÜ(ÿÿÿÜ…ÈûÿÿÝÈûÿÿÝ…pÿÿÿÜ¥þÿÿÜ0ÿÿÿÜ…ÈûÿÿÝÈûÿÿݘàÝ…ÈûÿÿÚéßàöÄDz3Ç…äûÿÿÝ…`ÿÿÿÝ ÿÿÿÝ…hÿÿÿÝ(ÿÿÿÝ…pÿÿÿÝ0ÿÿÿéÇ…äûÿÿÝE¨Ü¥þÿÿÜ ÿÿÿÝÐûÿÿÝE°Ü¥þÿÿÜ(ÿÿÿÜ…ÐûÿÿÝÐûÿÿÝE¸Ü¥þÿÿÜ0ÿÿÿÜ…ÐûÿÿÝ•ÐûÿÿܵÈûÿÿÝÀûÿÿݨàÜ¥ÀûÿÿÝØûÿÿÝ…ÀûÿÿÜ  àܨàßàöÄAtÝ…ÀûÿÿÜ  àÜØàßàöÄz Ç…äûÿÿÝ…ÀûÿÿÜ`ÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝèýÿÿÝ…ÀûÿÿÜhÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝðýÿÿÝ…ÀûÿÿÜpÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝøýÿÿÝEðܘàßàöÄA{$‹HýÿÿkÉ‹•¤þÿÿÝ…øýÿÿÜ\ÊßàöÄA…Ì‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝÆÝÊ‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝDÆÝ\Ê‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝDÆÝ\Ê‹…HýÿÿkÀ‹¤þÿÿÝ…èýÿÿÝÁ‹•HýÿÿkÒ‹…¤þÿÿÝ…ðýÿÿÝ\ЋHýÿÿkÉ‹•¤þÿÿÝ…øýÿÿÝ\Ê‹…Hýÿÿ‹MÀÇë‹•Hýÿÿ‹EÀÇ‹HýÿÿkÉ‹•¤þÿÿÝDÊܘàßàöÄAuJ‹…HýÿÿkÀ‹¤þÿÿÝ…8ÿÿÿÝÁ‹•HýÿÿkÒ‹…¤þÿÿÝ…@ÿÿÿÝ\ЋHýÿÿkÉ‹•¤þÿÿÝ…HÿÿÿÝ\Êéþíÿÿƒ}$…ƒ} …¯ƒ}u/Ý…XÿÿÿƒìÝ$‹…LýÿÿP‹¤þÿÿQ‹•ÿÿÿR‹EPèmƒÄëu‹ ð‹Qât3Ý…XÿÿÿƒìÝ$‹…LýÿÿP‹MäQ‹•¤þÿÿR‹…ÿÿÿP‹MQèÉsƒÄë1Ý…XÿÿÿƒìÝ$‹•LýÿÿR‹EäP‹¤þÿÿQ‹•ÿÿÿR‹EPèÖoƒÄéƒ}uOÝ…XÿÿÿƒìÝ$‹LýÿÿQ‹•LýÿÿkÒ U R‹…LýÿÿƒèkÀ E P‹¤þÿÿQ‹•ÿÿÿR‹EPènƒÄ 鯋 ð‹QâtPÝ…XÿÿÿƒìÝ$‹…LýÿÿP‹LýÿÿkÉ M Q‹•LýÿÿƒêkÒ U R‹EäP‹¤þÿÿQ‹•ÿÿÿR‹EPèuƒÄ$ëNÝ…XÿÿÿƒìÝ$‹LýÿÿQ‹•LýÿÿkÒ U R‹…LýÿÿƒèkÀ E P‹MäQ‹•¤þÿÿR‹…ÿÿÿP‹MQèmpƒÄ$éæƒ} …Ń}u2Ý…XÿÿÿƒìÝ$‹•LýÿÿR‹…¤þÿÿP‹ÿÿÿQ‹URèÛkƒÄ鈡ð‹Hát=Ý…XÿÿÿƒìÝ$‹•LýÿÿR‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQè }ƒÄ ë;Ý…XÿÿÿƒìÝ$‹•LýÿÿR‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQè¾xƒÄ éƒ}uOÝ…XÿÿÿƒìÝ$‹•LýÿÿR‹…LýÿÿkÀ E P‹LýÿÿƒékÉ M Q‹•¤þÿÿR‹…ÿÿÿP‹MQè9lƒÄ é‹ð‹B%tZÝ…XÿÿÿƒìÝ$‹LýÿÿQ‹•LýÿÿkÒ U R‹…LýÿÿƒèkÀ E P‹hþÿÿQ‹•$þÿÿR‹…¤þÿÿP‹ÿÿÿQ‹URèüƒÄ(ëXÝ…XÿÿÿƒìÝ$‹…LýÿÿP‹LýÿÿkÉ M Q‹•LýÿÿƒêkÒ U R‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQè’yƒÄ(ƒ½ÄþÿÿtcÇ…Äþÿÿ‹•lþÿÿ‰•(þÿÿÇ…lþÿÿP<¡ð‹Hƒát6ƒ} t‹•LýÿÿƒêkÒ U Rÿ„à‹…ÿÿÿP¨þÿÿQ‹URèv¯ÿÿƒÄ ƒ} t&‹…LýÿÿƒèkÀ E ‰EÄ‹LýÿÿkÉ M ‰üþÿÿëÇEÄÇ…üþÿÿƒ}…'ƒ}¤t •àþÿÿ‰UüëÇEü‹…lþÿÿPj‹MüQ‹•üþÿÿR‹EÄP¨þÿÿQ•HþÿÿR‹…þÿÿP‹TÿÿÿQ‹•ÿÿÿR‹EPèP ƒÄ,‹Mƒé9LýÿÿuM‹ð‹Bƒàt=ƒ} t‹LýÿÿkÉ M Qÿ„à‹•¤þÿÿR… ÿÿÿP‹MQ葳ÿÿƒÄ Ç…lþÿÿP<ë ‹•(þÿÿ‰•lþÿÿƒ½,þÿÿt …ˆþÿÿ‰EüëÇEü‹lþÿÿQj‹UüR‹EÄP‹üþÿÿQ• ÿÿÿRE¨P‹MÀQ‹•`þÿÿR‹…¤þÿÿP‹MQè ƒÄ,é/ƒ}¤t •àþÿÿ‰UüëÇEü‹…lþÿÿPj‹MüQ‹•üþÿÿR‹EÄP‹$þÿÿQ•¨þÿÿR…HþÿÿP‹þÿÿQ‹•TÿÿÿR‹…ÿÿÿP‹MQèRƒÄ0‹Uƒê9•LýÿÿuL¡ð‹Hƒát=ƒ} t‹•LýÿÿkÒ U Rÿ„à‹…¤þÿÿP ÿÿÿQ‹URèd²ÿÿƒÄ Ç…lþÿÿP<ë ‹…(þÿÿ‰…lþÿÿƒ½,þÿÿt ˆþÿÿ‰MüëÇEü‹•lþÿÿRj‹EüP‹MÄQ‹•üþÿÿR‹…hþÿÿP ÿÿÿQU¨R‹EÀP‹`þÿÿQ‹•¤þÿÿR‹EP艃Ä0ÿˆà‹$þÿÿ‰ÿÿÿ‹•hþÿÿ‰•$þÿÿ‹…ÿÿÿ‰…hþÿÿÝ…XÿÿÿÝ]è‹Lýÿÿ‰M€‹U„‰•LýÿÿÝ…ÿÿÿÝpþÿÿÝ…ÿÿÿÝxþÿÿÝ…ÿÿÿÝ€þÿÿÝEˆÝÈþÿÿÝEÝÐþÿÿÝE˜ÝØþÿÿ‹…,þÿÿ‰E¤ÝEÈÜpþÿÿÝEÐÜxþÿÿÞÁÝEØÜ€þÿÿÞÁݸûÿÿÝààܸûÿÿÜpþÿÿÜmÈÝ]ÈÝààܸûÿÿÜxþÿÿÜmÐÝ]ÐÝààܸûÿÿÜ€þÿÿÜmØÝ]Øé9Þÿÿ‹|ÿÿÿQÿPàƒÄ^‹å]ÃÌÌU‹ììhVÇEüÇEô蛤‰Eð¡|àPh‡‹MðQè~¤‹xàRh‡‹EðPèi¤‹ tàQh‡‹UðRèT¤ƒ}t ‹EPÿ„àƒ} „«ƒ}tm‹MÝAܘàßàöÄz4‹UÝØàÜ ‹EÝ‹MÝØàÜI‹UÝZ‹EÝØàÜH‹MÝY‹ðƒzt‹EP‹ ðÿQƒÄ‹URÿpà‹EðP踣ÇEô‹MƒékÉM ‰MüÇEøë ‹UøƒÂ‰Uø‹Eƒè9Eøá‹MøkÉ‹U ‹EüÝ Ü Ý]¨‹MøkÉ‹U ‹EüÝD Ü`Ý]°‹MøkÉ‹U ‹EüÝD Ü`Ý]¸‹MøƒÁkÉ‹UøkÒ‹E ‹u ÝÜ$Ý]À‹MøƒÁkÉ‹UøkÒ‹E ‹u ÝDÜdÝ]È‹MøƒÁkÉ‹UøkÒ‹E ‹u ÝDÜdÝ]ÐÝE¨ÜM¨ÝE°ÜM°ÞÁÝE¸ÜM¸ÞÁÝ]ØÝEÀÜMÀÝEÈÜMÈÞÁÝEÐÜMÐÞÁÝ] Ý àÜMØÜ] ßàöÄu Ç…Äþÿÿë Ç…Äþÿÿ‹Äþÿÿ‰Mìƒ}ìuÝ àÜM Ü]ØßàöÄt Ç…Àþÿÿë Ç…Àþÿÿ‹•Àþÿÿ‰UìÝE¨ÜMÀÝE°ÜMÈÞÁÝE¸ÜMÐÞÁÝ]àƒ}ìu5ÝEØÜM ÝEàÜMàÞéÝEØÜM Ü  àÜ  àÞÙßàöÄt Ç…¼þÿÿë Ç…¼þÿÿ‹…¼þÿÿ‰Eìƒ}ìu5‹MøkÉM Q‹UøkÒU R‹EðPè·¡‹MøkÉM ‰Müƒ}ôu‹Uü‰Uôéþÿÿƒ}ôu‹E ‰Eô‹MƒékÉ‹U ‹EüÝ Ü Ý`ÿÿÿ‹MƒékÉ‹U ‹EüÝD Ü`Ýhÿÿÿ‹MƒékÉ‹U ‹EüÝD Ü`Ýpÿÿÿ‹MƒékÉ‹Uô‹E ÝÜ$Ýxÿÿÿ‹MƒékÉ‹Uô‹E ÝBÜdÝ]€‹MƒékÉ‹Uô‹E ÝBÜdÝ]ˆÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜhÿÿÿÞÁÝ…pÿÿÿÜpÿÿÿÞÁÝ]Ý…xÿÿÿÜxÿÿÿÝE€ÜM€ÞÁÝEˆÜMˆÞÁÝXÿÿÿÝ àÜMÜXÿÿÿßàöÄu Ç…¸þÿÿë Ç…¸þÿÿ‹¸þÿÿ‰Mìƒ}ìu"Ý àÜXÿÿÿÜ]ßàöÄt Ç…´þÿÿë Ç…´þÿÿ‹•´þÿÿ‰UìÝ…`ÿÿÿÜxÿÿÿÝ…hÿÿÿÜM€ÞÁÝ…pÿÿÿÜMˆÞÁÝ]˜ƒ}ìu;ÝEÜXÿÿÿÝE˜ÜM˜ÞéÝEÜXÿÿÿÜ  àÜ  àÞÙßàöÄt Ç…°þÿÿë Ç…°þÿÿ‹…°þÿÿ‰Eìƒ}ìu#‹MƒékÉM Q‹UƒêkÒU R‹EðP葟‹MðQ肟éóƒ}tl‹UÝBܘàßàöÄAu4‹EÝØàÜ‹MÝ‹UÝØàÜJ‹EÝX‹MÝØàÜI‹UÝZ¡ðƒxt‹MQ‹ðÿRƒÄ‹EPÿpà‹MðQèŸÇEô‹U ‰Uü‹Eƒè‰Eøë ‹Møƒé‰Møƒ}øŽP‹UøkÒ‹E ‹MüÝÜ!Ýÿÿÿ‹UøkÒ‹E ‹MüÝDÜaÝ ÿÿÿ‹UøkÒ‹E ‹MüÝDÜaÝ(ÿÿÿ‹UøƒêkÒ‹EøkÀ‹M ‹u ÝÜ$Ý0ÿÿÿ‹UøƒêkÒ‹EøkÀ‹M ‹u ÝDÜdÝ8ÿÿÿ‹UøƒêkÒ‹EøkÀ‹M ‹u ÝDÜdÝ@ÿÿÿÝ…ÿÿÿÜÿÿÿÝ… ÿÿÿÜ ÿÿÿÞÁÝ…(ÿÿÿÜ(ÿÿÿÞÁÝHÿÿÿÝ…0ÿÿÿÜ0ÿÿÿÝ…8ÿÿÿÜ8ÿÿÿÞÁÝ…@ÿÿÿÜ@ÿÿÿÞÁÝÿÿÿÝ àÜHÿÿÿÜÿÿÿßàöÄu Ç…¬þÿÿë Ç…¬þÿÿ‹•¬þÿÿ‰Uìƒ}ìu%Ý àÜÿÿÿÜHÿÿÿßàöÄt Ç…¨þÿÿë Ç…¨þÿÿ‹…¨þÿÿ‰EìÝ…ÿÿÿÜ0ÿÿÿÝ… ÿÿÿÜ8ÿÿÿÞÁÝ…(ÿÿÿÜ@ÿÿÿÞÁÝPÿÿÿƒ}ìuGÝ…HÿÿÿÜÿÿÿÝ…PÿÿÿÜPÿÿÿÞéÝ…HÿÿÿÜÿÿÿÜ  àÜ  àÞÙßàöÄt Ç…¤þÿÿë Ç…¤þÿÿ‹¤þÿÿ‰Mìƒ}ìu5‹UøkÒU R‹EøkÀE P‹MðQ誜‹UøkÒU ‰Uüƒ}ôu‹Eü‰Eôéýÿÿƒ}ôu‹MƒékÉM ‰Mô‹U ‹EüÝÜ ÝÐþÿÿ‹M ‹UüÝAÜbÝØþÿÿ‹E ‹MüÝ@ÜaÝàþÿÿ‹Uô‹E ÝÜ Ýèþÿÿ‹Mô‹U ÝAÜbÝðþÿÿ‹Eô‹M Ý@ÜaÝøþÿÿÝ…ÐþÿÿÜÐþÿÿÝ…ØþÿÿÜØþÿÿÞÁÝ…àþÿÿÜàþÿÿÞÁÝÿÿÿÝ…èþÿÿÜèþÿÿÝ…ðþÿÿÜðþÿÿÞÁÝ…øþÿÿÜøþÿÿÞÁÝÈþÿÿÝ àÜÿÿÿÜÈþÿÿßàöÄu Ç… þÿÿë Ç… þÿÿ‹• þÿÿ‰Uìƒ}ìu%Ý àÜÈþÿÿÜÿÿÿßàöÄt Ç…œþÿÿë Ç…œþÿÿ‹…œþÿÿ‰EìÝ…ÐþÿÿÜèþÿÿÝ…ØþÿÿÜðþÿÿÞÁÝ…àþÿÿÜøþÿÿÞÁÝÿÿÿƒ}ìuGÝ…ÿÿÿÜÈþÿÿÝ…ÿÿÿÜÿÿÿÞéÝ…ÿÿÿÜÈþÿÿÜ  àÜ  àÞÙßàöÄt Ç…˜þÿÿë Ç…˜þÿÿ‹˜þÿÿ‰Mìƒ}ìu‹U R‹E P‹MðQ虚‹UðR芚‹EðPè{š^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ì]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ììèVÇEÀÇE´‹EƒÀkÀÁàPÿTàƒÄ‰E¸èšÓþÿ‰EÀÇE¼ÇEü‹Mƒ9…‹ð‹Bƒà„­‹MÀá…ž‹U ‹EÝÜÝ]È‹M ‹UÝAÜBÝ]ЋE ‹MÝ@ÜAÝ]Ø‹U ÝÜeÈ‹EÜÝ]˜‹M ÝAÜeЋUÜJÜE˜Ý]˜‹E Ý@ÜeØ‹MÜIÜE˜Ý]˜Ý˜àÝE˜ÚéßàöÄDz.ÇE°‹U‹E ÝÝ‹M‹U ÝBÝY‹E‹M ÝAÝXéÁÇE°‹UÝÜeÈ‹EÜÝ] ‹MÝAÜeЋUÜJÜE Ý] ‹EÝ@ÜeØ‹MÜIÜE ÝU Üu˜Ý]ݨàÜeÝ]¨ÝEÜ  àܨàßàöÄAtÝEÜ  àÜØàßàöÄzÇE°‹U ÝEÜ ÝE¨ÜMÈÞÁÝ]à‹E ÝEÜHÝE¨ÜMÐÞÁÝ]è‹M ÝEÜIÝE¨ÜMØÞÁÝ]ð‹UükÒ‹E¸ÝEàÝЋMükÉ‹U¸ÝEèÝ\Ê‹EükÀ‹M¸ÝEðÝ\Á‹UüƒÂ‰Uü‹EükÀ‹M¸‹U ÝÝÁ‹EükÀ‹M¸‹U ÝBÝ\Á‹EükÀ‹M¸‹U ÝBÝ\Á‹EüƒÀ‰Eü‹M¼‰Mø‹U¼ƒÂ‰U¼ë>ÇE´‹E¼‹Mƒ<t+‹U¼‰Uø‹E¼ƒÀ‰E¼‹M¼;M|‹U¸RÿPàƒÄéL ëÉ¡ð‹Hát‹U‰UÄë ‹Eƒè‰EÄ‹MÀáÿïÿÿQèÏÐþÿƒÄë‹UøƒÂ‰Uø‹E¼ƒÀ‰E¼‹E¼™÷}‰U¼‹Mø;MÄ,‹Eø‹Mƒ<„Ó‹U¼‹Eƒ<…ËMøkÉ‹U¼kÒ‹E‹u ÝÜ$‹MÜ Ýpÿÿÿ‹UøkÒ‹E¼kÀ‹M‹u ÝDÜd‹UÜJÜ…pÿÿÿÝpÿÿÿ‹EøkÀ‹M¼kÉ‹U‹u ÝDÜd‹EÜHÜ…pÿÿÿÝpÿÿÿݘàÝ…pÿÿÿÚéßàöÄDzCÇEŒ‹MøkÉ‹U‹EÝÝ‹MøkÉ‹U‹EÝDÝZ‹MøkÉ‹U‹EÝDÝZé7ÇEŒ‹M¼kÉ‹U‹E ÝÜ$‹MÜ Ýxÿÿÿ‹U¼kÒ‹E‹M Ý@Üd‹UÜJÜ…xÿÿÿÝxÿÿÿ‹E¼kÀ‹M‹U ÝAÜd‹EÜHÜ…xÿÿÿÝ•xÿÿÿܵpÿÿÿÝhÿÿÿݨàÜ¥hÿÿÿÝ]€Ý…hÿÿÿÜ  àܨàßàöÄAtÝ…hÿÿÿÜ  àÜØàßàöÄzÇEŒ‹MøkÉ‹UÝ…hÿÿÿÜ ‹E¼kÀ‹M ÝE€Ü ÞÁÝ]à‹UøkÒ‹EÝ…hÿÿÿÜL‹M¼kÉ‹U ÝE€ÜL ÞÁÝ]è‹EøkÀ‹MÝ…hÿÿÿÜL‹U¼kÒ‹E ÝE€ÜLÞÁÝ]ð‹M$Q‹U R‹E,PMàQ‹U¼kÒU R‹EøkÀE P蟃ċMükÉ‹U¸ÝEàÝÊ‹EükÀ‹M¸ÝEèÝ\Á‹UükÒ‹E¸ÝEðÝ\ЋMüƒÁ‰Mü‹U¼kÒ‹EükÀ‹M¸‹u ÝÝÁ‹U¼kÒ‹EükÀ‹M¸‹u ÝDÝ\Á‹U¼kÒ‹EükÀ‹M¸‹u ÝDÝ\Á‹UüƒÂ‰Uü‹Eø‹Mƒ<ua‹U¼‹Eƒ<uU‹M¼kÉ‹UükÒ‹E¸‹u ÝÝЋM¼kÉ‹UükÒ‹E¸‹u ÝDÝ\ЋM¼kÉ‹UükÒ‹E¸‹u ÝDÝ\ЋMüƒÁ‰Mü‹Uø‹Eƒ<…Ç‹M¼‹Uƒ<Š„·ÇE´‹EøkÀ‹M¼kÉ‹U ‹uÝÜ$‹EÜÝHÿÿÿ‹MøkÉ‹U¼kÒ‹E ‹uÝDÜd‹MÜIÜ…HÿÿÿÝHÿÿÿ‹UøkÒ‹E¼kÀ‹M ‹uÝDÜd‹UÜJÜ…HÿÿÿÝHÿÿÿݘàÝ…HÿÿÿÚéßàöÄDzFÇ…dÿÿÿ‹EøkÀ‹M‹U ÝÝ‹EøkÀ‹M‹U ÝDÝY‹EøkÀ‹M‹U ÝDÝYéIÇ…dÿÿÿ‹E¼kÀ‹M‹UÝÜ$‹EÜÝPÿÿÿ‹M¼kÉ‹U‹EÝBÜd‹MÜIÜ…PÿÿÿÝPÿÿÿ‹U¼kÒ‹E‹MÝ@Üd‹UÜJÜ…PÿÿÿÝ•PÿÿÿܵHÿÿÿÝ@ÿÿÿݨàÜ¥@ÿÿÿÝXÿÿÿÝ…@ÿÿÿÜ  àܨàßàöÄAtÝ…@ÿÿÿÜ  àÜØàßàöÄz Ç…dÿÿÿ‹EøkÀ‹M Ý…@ÿÿÿÜ ‹U¼kÒ‹EÝ…XÿÿÿÜ ÞÁÝ]à‹MøkÉ‹U Ý…@ÿÿÿÜL ‹E¼kÀ‹MÝ…XÿÿÿÜLÞÁÝ]è‹UøkÒ‹E Ý…@ÿÿÿÜL‹M¼kÉ‹UÝ…XÿÿÿÜL ÞÁÝ]ð‹E$P‹M Q‹U,REàP‹M¼kÉM Q‹UøkÒU Rè3ƒÄ‹EükÀ‹M¸ÝEàÝÁ‹UükÒ‹E¸ÝEèÝ\ЋMükÉ‹U¸ÝEðÝ\Ê‹EüƒÀ‰Eüƒ}ü| ‹M,Qj‹UR‹E(P‹M Q‹U¸R‹EüPÿU0ƒÄÇEüé¬ùÿÿ‹M¼ƒé‰M¼‹U¼U‰U¼‹E¼™÷}‰U¼‹E¼‹Mƒ<…|ƒ}üŒr‹U¼kÒ‹E ‹MÝÜÝ]È‹U¼kÒ‹E ‹MÝDÜAÝ]ЋU¼kÒ‹E ‹MÝDÜAÝ]Ø‹U¼kÒ‹E ÝÜeÈ‹MÜ Ý ÿÿÿ‹U¼kÒ‹E ÝDÜeЋMÜIÜ… ÿÿÿÝ ÿÿÿ‹U¼kÒ‹E ÝDÜeØ‹MÜIÜ… ÿÿÿÝ ÿÿÿݘàÝ… ÿÿÿÚéßàöÄDzFÇ…<ÿÿÿ‹U¼kÒ‹E‹M ÝÝ‹U¼kÒ‹E‹M ÝDÝX‹U¼kÒ‹E‹M ÝDÝXéÇ…<ÿÿÿ‹UÝÜeÈ‹EÜÝ(ÿÿÿ‹MÝAÜeЋUÜJÜ…(ÿÿÿÝ(ÿÿÿ‹EÝ@ÜeØ‹MÜIÜ…(ÿÿÿÝ•(ÿÿÿܵ ÿÿÿÝÿÿÿݨàÜ¥ÿÿÿÝ0ÿÿÿÝ…ÿÿÿÜ  àܨàßàöÄAtÝ…ÿÿÿÜ  àÜØàßàöÄz Ç…<ÿÿÿ‹U¼kÒ‹E Ý…ÿÿÿÜ Ý…0ÿÿÿÜMÈÞÁÝ]à‹M¼kÉ‹U Ý…ÿÿÿÜL Ý…0ÿÿÿÜMÐÞÁÝ]è‹E¼kÀ‹M Ý…ÿÿÿÜLÝ…0ÿÿÿÜMØÞÁÝ]ð‹UükÒ‹E¸ÝEàÝЋMükÉ‹U¸ÝEèÝ\Ê‹EükÀ‹M¸ÝEðÝ\Á‹UüƒÂ‰Uüƒ}´u ‹EÀPèñÇþÿƒÄ‹M,Qj‹UR‹E(P‹M Q‹U¸R‹EüPÿU0ƒÄ‹MÀQèÅÇþÿƒÄ‹U¸RÿPàƒÄ^‹å]ÃU‹ìƒ}t ‹EPÿ„à‹ ðƒ9tݘàƒìÝ$jû‹ðÿƒÄ jÿ|àƒ}tT¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒytjj‹U R¡ðÿPƒÄ ‹M QÿxàëS‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒytjj‹UR¡ðÿPƒÄ ‹MQÿxà‹ðƒzt¡ðÿPÿtà]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììðVÇE¸ÇE¬èƒÆþÿ‰E¸‹EƒÀkÀÑàÁàPÿTàƒÄ‰E°‹MƒÁkÉ‹U°ʉEüÇE´ÇEø‹Mƒ9…~‹ð‹Bƒà„ä‹M¸á…Õ‹U ‹EÝÜÝ]À‹M ‹UÝAÜBÝ]È‹E ‹MÝ@ÜAÝ]ЋU ÝÜeÀ‹EÜÝ]‹M ÝAÜeÈ‹UÜJÜEÝ]‹E Ý@ÜeЋMÜIÜEÝ]ݘàÝEÚéßàöÄDz.ÇE¨‹U‹E ÝÝ‹M‹U ÝBÝY‹E‹M ÝAÝXéÁÇE¨‹UÝÜeÀ‹EÜÝ]˜‹MÝAÜeÈ‹UÜJÜE˜Ý]˜‹EÝ@ÜeЋMÜIÜE˜ÝU˜ÜuÝ]ˆÝ¨àÜeˆÝ] ÝEˆÜ  àܨàßàöÄAtÝEˆÜ  àÜØàßàöÄzÇE¨‹U ÝEˆÜ ÝE ÜMÀÞÁÝ]Ø‹E ÝEˆÜHÝE ÜMÈÞÁÝ]à‹M ÝEˆÜIÝE ÜMÐÞÁÝ]è‹UøkÒ‹E°ÝEØÝЋMøkÉ‹U°ÝEàÝ\Ê‹EøkÀ‹M°ÝEèÝ\Á‹UøkÒ‹Eü‹M ÝÝЋUøkÒ‹Eü‹M ÝAÝ\ЋUøkÒ‹Eü‹M ÝAÝ\ЋUøƒÂ‰Uø‹EøkÀ‹M°‹U ÝÝÁ‹EøkÀ‹M°‹U ÝBÝ\Á‹EøkÀ‹M°‹U ÝBÝ\Á‹EøkÀ‹Mü‹U ÝÝÁ‹EøkÀ‹Mü‹U ÝBÝ\Á‹EøkÀ‹Mü‹U ÝBÝ\Á‹EøƒÀ‰Eø‹M´‰Mô‹U´ƒÂ‰U´ë>ÇE¬‹E´‹Mƒ<t+‹U´‰Uô‹E´ƒÀ‰E´‹M´;M|‹U°RÿPàƒÄé ëÉ¡ð‹Hát‹U‰U¼ë ‹Eƒè‰E¼èWÃþÿ‰E¸‹M¸áÿïÿÿQèÃþÿƒÄë‹UôƒÂ‰Uô‹E´ƒÀ‰E´‹E´™÷}‰U´‹Mô;M¼ù‹Eô‹Mƒ<„‹‹U´‹Eƒ<…{‹MôkÉ‹U´kÒ‹E‹u ÝÜ$‹MÜ Ýhÿÿÿ‹UôkÒ‹E´kÀ‹M‹u ÝDÜd‹UÜJÜ…hÿÿÿÝhÿÿÿ‹EôkÀ‹M´kÉ‹U‹u ÝDÜd‹EÜHÜ…hÿÿÿÝhÿÿÿݘàÝ…hÿÿÿÚéßàöÄDzCÇE„‹MôkÉ‹U‹EÝÝ‹MôkÉ‹U‹EÝDÝZ‹MôkÉ‹U‹EÝDÝZéCÇE„‹M´kÉ‹U‹E ÝÜ$‹MÜ Ýpÿÿÿ‹U´kÒ‹E‹M Ý@Üd‹UÜJÜ…pÿÿÿÝpÿÿÿ‹E´kÀ‹M‹U ÝAÜd‹EÜHÜ…pÿÿÿÝ•pÿÿÿܵhÿÿÿÝ`ÿÿÿݨàÜ¥`ÿÿÿÝxÿÿÿÝ…`ÿÿÿÜ  àܨàßàöÄAtÝ…`ÿÿÿÜ  àÜØàßàöÄzÇE„‹MôkÉ‹UÝ…`ÿÿÿÜ ‹E´kÀ‹M Ý…xÿÿÿÜ ÞÁÝ]Ø‹UôkÒ‹EÝ…`ÿÿÿÜL‹M´kÉ‹U Ý…xÿÿÿÜL ÞÁÝ]à‹EôkÀ‹MÝ…`ÿÿÿÜL‹U´kÒ‹E Ý…xÿÿÿÜLÞÁÝ]è‹M´kÉM Q‹UôkÒU R‹E(P‹M$Q‹U0REØP‹M´kÉM Q‹UôkÒU RèÅƒÄ ‹EøkÀ‹M°ÝEØÝÁ‹UøkÒ‹E°ÝEàÝ\ЋMøkÉ‹U°ÝEèÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝÝÊ‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eø‹M´kÉ‹UøkÒ‹E°‹u ÝÝЋM´kÉ‹UøkÒ‹E°‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹E°‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹Eü‹u ÝÝЋM´kÉ‹UøkÒ‹Eü‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹Eü‹u ÝDÝ\ЋMøƒÁ‰Mø‹Uô‹Eƒ<…±‹M´‹Uƒ<Š…¡‹E´kÀ‹MøkÉ‹U°‹u ÝÝÊ‹E´kÀ‹MøkÉ‹U°‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹U°‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eø‹Mô‹Uƒ<Š…ˆ‹E´‹Mƒ<„xÇE¬‹UôkÒ‹E´kÀ‹M ‹uÝÜ$‹UÜ Ý@ÿÿÿ‹EôkÀ‹M´kÉ‹U ‹uÝDÜd‹EÜHÜ…@ÿÿÿÝ@ÿÿÿ‹MôkÉ‹U´kÒ‹E ‹uÝDÜd‹MÜIÜ…@ÿÿÿÝ@ÿÿÿݘàÝ…@ÿÿÿÚéßàöÄDzFÇ…\ÿÿÿ‹UôkÒ‹E‹M ÝÝ‹UôkÒ‹E‹M ÝDÝX‹UôkÒ‹E‹M ÝDÝXéIÇ…\ÿÿÿ‹U´kÒ‹E‹MÝÜ$‹UÜ ÝHÿÿÿ‹E´kÀ‹M‹UÝAÜd‹EÜHÜ…HÿÿÿÝHÿÿÿ‹M´kÉ‹U‹EÝBÜd‹MÜIÜ…HÿÿÿÝ•Hÿÿÿܵ@ÿÿÿÝ8ÿÿÿݨàÜ¥8ÿÿÿÝPÿÿÿÝ…8ÿÿÿÜ  àܨàßàöÄAtÝ…8ÿÿÿÜ  àÜØàßàöÄz Ç…\ÿÿÿ‹UôkÒ‹E Ý…8ÿÿÿÜ ‹M´kÉ‹UÝ…PÿÿÿÜ ÞÁÝ]Ø‹EôkÀ‹M Ý…8ÿÿÿÜL‹U´kÒ‹EÝ…PÿÿÿÜLÞÁÝ]à‹MôkÉ‹U Ý…8ÿÿÿÜL ‹E´kÀ‹MÝ…PÿÿÿÜLÞÁÝ]è‹U´kÒU R‹EôkÀE P‹M(Q‹U$R‹E0PMØQ‹U´kÒU R‹EôkÀE PèYƒÄ ‹MøkÉ‹U°ÝEØÝÊ‹EøkÀ‹M°ÝEàÝ\Á‹UøkÒ‹E°ÝEèÝ\Ћ ð‹QâtN‹EôkÀ‹MøkÉ‹Uü‹u ÝÝÊ‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\ÊëL‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eøƒ}ø|"‹M0Q‹UüR‹EP‹M,Q‹U$R‹E°P‹MøQÿU4ƒÄÇEøéß÷ÿÿ‹U´ƒê‰U´‹E´E‰E´‹E´™÷}‰U´‹M´‹Uƒ<Š…êƒ}øŒà¡ð‹Hƒá„›‹U¸â…Œ‹E´kÀ‹M ‹UÝÜÝ]À‹E´kÀ‹M ‹UÝDÜBÝ]È‹E´kÀ‹M ‹UÝDÜBÝ]ЋE´kÀ‹M ÝÜeÀ‹UÜ Ýÿÿÿ‹E´kÀ‹M ÝDÜeÈ‹UÜJÜ…ÿÿÿÝÿÿÿ‹E´kÀ‹M ÝDÜeЋUÜJÜ…ÿÿÿÝÿÿÿݘàÝ…ÿÿÿÚéßàöÄDzFÇ…4ÿÿÿ‹E´kÀ‹M‹U ÝÝ‹E´kÀ‹M‹U ÝDÝY‹E´kÀ‹M‹U ÝDÝYéÇ…4ÿÿÿ‹EÝÜeÀ‹MÜ Ý ÿÿÿ‹UÝBÜeÈ‹EÜHÜ… ÿÿÿÝ ÿÿÿ‹MÝAÜeЋUÜJÜ… ÿÿÿÝ• ÿÿÿܵÿÿÿÝÿÿÿݨàÜ¥ÿÿÿÝ(ÿÿÿÝ…ÿÿÿÜ  àܨàßàöÄAtÝ…ÿÿÿÜ  àÜØàßàöÄz Ç…4ÿÿÿ‹E´kÀ‹M Ý…ÿÿÿÜ Ý…(ÿÿÿÜMÀÞÁÝ]Ø‹U´kÒ‹E Ý…ÿÿÿÜLÝ…(ÿÿÿÜMÈÞÁÝ]à‹M´kÉ‹U Ý…ÿÿÿÜL Ý…(ÿÿÿÜMÐÞÁÝ]è‹EøkÀ‹M°ÝEØÝÁ‹UøkÒ‹E°ÝEàÝ\ЋMøkÉ‹U°ÝEèÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eøƒ}¬u ‹M¸Qèþ·þÿƒÄ‹U0R‹EüP‹MQ‹U,R‹E$P‹M°Q‹UøRÿU4ƒÄ‹E¸PèзþÿƒÄ‹M°QÿPàƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ìƒ}t ‹EPÿ„à‹ ðƒ9tݘàƒìÝ$jû‹ðÿƒÄ jÿ|à¡ð‹Há„‹ðƒzt‹E P‹ ðÿQƒÄ‹U Rÿpàƒ}tT¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒytjj‹U R¡ðÿPƒÄ ‹M QÿxàëS‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒytjj‹UR¡ðÿPƒÄ ‹MQÿxà陃}„£‹ðƒzt‹E P‹ ðÿQƒÄ‹U Rÿpà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒyt‹U$R¡ðÿPƒÄ‹M$Qÿpà‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxàé¡ðƒxt‹M$Q‹ðÿRƒÄ‹E$Pÿpà‹ ðƒytjj‹U R¡ðÿPƒÄ ‹M Qÿxà‹ðƒzt‹E P‹ ðÿQƒÄ‹U Rÿpà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒyt‹U$R¡ðÿPƒÄ‹M$Qÿpà‹ðƒztjj‹EP‹ ðÿQƒÄ ‹URÿxà¡ðƒxt ‹ ðÿQÿtà]ÃÌÌÌÌÌÌÌU‹ìƒì0V‹E‹MÝ@Ü!Ý]Ø‹U‹EÝB Ü`Ý]à‹M‹UÝA(ÜbÝ]èÝEØÜMØÝEàÜMàÞÁÝ]ðÝEèÜMèÜEðÝUðƒìÝ$èe{ƒÄÝ]ðݘàÝEðÚéßàöÄDŠÆÇEüë ‹EüƒÀ‰Eü‹M ƒé9Mü¥‹UüƒÂkÒ‹EükÀ‹M‹uÝÜ$Ý]Ø‹UüƒÂkÒ‹EükÀ‹M‹uÝDÜdÝ]à‹UüƒÂkÒ‹EükÀ‹M‹uÝDÜdÝ]èÝEØÜMØÝEàÜMàÞÁÝ]ðÝEèÜMèÜEðÝUðƒìÝ$è¢zƒÄÝ]ðݘàÝEðÚéßàöÄD{ëéCÿÿÿݨàÜuðÝ]ðÝEðÜMØÝ]ØÝEðÜMàÝ]àÝEðÜMèÝ]è‹UÝEØÜ ‹EÝEàÜHÞÁ‹MÝEèÜIÞÁÝ]ÐÝEÐÜMØ‹UÜ*‹EÝÝEÐÜMà‹MÜi‹UÝZÝEÐÜMè‹EÜh‹MÝY‹U‹EÝÜ‹M‹UÝAÜJÞÁÝ]ð‹E‹MÝ@ÜIÜEðÝUðƒìÝ$èÏyƒÄÝ]ðݘàÝEðÚéßàöÄDz‹UÝEØÝ‹EÝEàÝX‹MÝEèÝY^‹å]ÃÌÌÌÌÌÌÌÌU‹ìƒì V‹EkÀÁàPÿTàƒÄ‰Eüè&y‰Eø‹ |àQh‡‹UøRèy¡xàPh‡‹MøQèôx‹tàRh‡‹EøPèßx‹MøQèÐxƒ}„†ÇEôë ‹UôƒÂ‰Uô‹Eô;E}g‹MôÁá‹UôkÒ‹Eü‹u ÝÝЋMôÁá‹UôkÒ‹Eü‹u ÝDÝ\ЋMôkÉ‹UüÝEÝ\Ê‹EôkÀ‹MüÁR‹EôkÀ‹MüÁR‹EøPèAxëˆé‹Mƒé‰Môë ‹Uôƒê‰Uôƒ}ôÿ~g‹EôÁà‹MôkÉ‹Uü‹u ÝÝÊ‹EôÁà‹MôkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MüÝEÝ\Á‹UôkÒ‹Eü ÐQ‹UôkÒ‹Eü ÐQ‹UøRè»w늋EøPèªw‹MüQÿPàƒÄ‹UøRèŽw^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììpVÇEàÇEÔÇEÄÇE ÇE¤Ý˜àÝUÝ]ˆ3Àƒ}”Àf‰EÜ3Ƀ} ”Áf‰MÐ3Òƒ}$”Âf‰UÀ¿EÀ…ÀuL‹MÁákÉÁáQÿTàƒÄ‰Eà‹Uà‰UÔ‹EkÀ‹MÔÁ‰UÄ‹EkÀ‹MÄÁ‰U ‹EkÀ‹M Á‰U¤ƒ}uݘàÝ]èݨàÝ]ðݘàÝ]øë‹EÝÝ]è‹MÝAÝ]ð‹UÝBÝ]ø‹EP‹MQUèRèûÿÿƒÄ ÇEä‹E䉅ìþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜ$Ýpÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝxÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝ]€Ý…pÿÿÿÜpÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÈÝE€ÜM€ÜEÈÝUȃìÝ$è!vƒÄÝ]È‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜÝÈþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝÐþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝØþÿÿÝ…ÈþÿÿÜÈþÿÿÝ…ÐþÿÿÜÐþÿÿÞÁÝàþÿÿÝ…ØþÿÿÜØþÿÿÜ…àþÿÿÝ•àþÿÿƒìÝ$è_uƒÄÝàþÿÿÝ…àþÿÿÜ  àÝàþÿÿ‹ìþÿÿƒÁ‰ìþÿÿÝEÈÜàþÿÿßàöÄAz‹Uƒê9•ìþÿÿŒHþÿÿ¿EÀ…À…ŒÇ…èþÿÿë‹èþÿÿƒÁ‰èþÿÿ‹•èþÿÿ;Uí‹…ìþÿÿƒèkÀ0‹èþÿÿÁá‹U$‹u ÝÜ ‹…ìþÿÿƒèkÀ0‹èþÿÿÁá‹U$‹u ÝDÜLÞÁ‹…ìþÿÿƒèkÀ0‹M$ÜD‹•èþÿÿkÒ‹EÔÝЋìþÿÿƒékÉ0‹•èþÿÿÁâ‹E$‹u ÝDÜ ‹ìþÿÿƒékÉ0‹•èþÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹ìþÿÿƒékÉ0‹U$ÜD (‹…èþÿÿkÀ‹MÔÝ\Á‹•èþÿÿkÒ‹EÔݘàÝ\Ðéõþÿÿ¿MÜ…É…iÇ…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;E?‹ìþÿÿƒékÉ0‹U$ݘàÝD ÚéßàöÄDzT‹…ìþÿÿƒèkÀ0‹M$ݘàÝDÚéßàöÄDz2‹•ìþÿÿƒêkÒ0‹…ìþÿÿƒèkÀ0‹M$‹u$ÝD ÝÚéßàöÄD‹Z‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝD Ü ‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝDÜLÞé‹•èþÿÿkÒ‹E ÝЋìþÿÿƒékÉ0‹U$ÝD Ùà‹…èþÿÿÁà‹MÜ ‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝÜLÞÁ‹•èþÿÿkÒ‹E Ý\ЋèþÿÿkÉ‹•èþÿÿkÒ‹E ‹u ÝÈÜ Ö‹èþÿÿkÉ‹•èþÿÿkÒ‹E ‹u ÝDÈÜLÖÞÁÝ•ÀþÿÿƒìÝ$èErƒÄÜ=¨àÝÀþÿÿ‹èþÿÿkÉ‹U Ý…ÀþÿÿÜ Ê‹…èþÿÿkÀ‹M ÝÁ‹•èþÿÿkÒ‹E Ý…ÀþÿÿÜLЋèþÿÿkÉ‹U Ý\Êë>‹…èþÿÿÁà‹èþÿÿkÉ‹U ‹uÝÝÊ‹…èþÿÿÁà‹èþÿÿkÉ‹U ‹uÝDÝ\Ê‹…èþÿÿkÀ‹M Ý˜àÝ\Á‹•èþÿÿkÒ‹E¤Ý˜àÝ\Ðé£ýÿÿ‹Mƒé9ìþÿÿ ‹•ìþÿÿkÒUR‹EäkÀEP‹MäƒékÉMQU¨RèÜ ƒÄÝEèÜM¨ÝEðÜM°ÞÁÝEøÜM¸ÞÁݸþÿÿÝààܸþÿÿÜM¨ÜmèÝ]èÝààܸþÿÿÜM°ÜmðÝ]ðÝààܸþÿÿÜM¸ÜmøÝ]øEèP‹ìþÿÿkÉMQ‹UäkÒUR…ðþÿÿPèlƒÄÿlàðþÿÿQÿhà¿UÀ…Ò„*¿EÐ…À„‰¿MÜ…Ét"ÝEȃìÝ$‹•ìþÿÿR‹E P‹MQè” ƒÄëZ‹ð‹B%t&ÝEȃìÝ$‹ìþÿÿQ‹UR‹E P‹MQ较Äë$ÝEȃìÝ$‹•ìþÿÿR‹EP‹M Q‹URèHƒÄé¿EÜ…Àt&ÝEȃìÝ$‹ìþÿÿQ‹U R‹E P‹MQè× ƒÄëb‹ð‹B%t*ÝEȃìÝ$‹ìþÿÿQ‹UR‹E P‹M Q‹URè-ƒÄë(ÝEȃìÝ$‹…ìþÿÿP‹MQ‹U R‹E P‹MQ胃Äé(Ç…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;Eð‹ìþÿÿkÉ0‹•èþÿÿÁâ‹E$‹u ÝÜ ‹ìþÿÿkÉ0‹•èþÿÿÁâ‹E$‹u ÝDÜLÞÁ‹ìþÿÿkÉ0‹U$ÜD ‹…èþÿÿkÀ‹MÄÝÁ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹u ÝDÜ ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•ìþÿÿkÒ0‹E$ÜD(‹èþÿÿkÉ‹UÄÝ\ÊÝEÈÙà‹…èþÿÿkÀ‹MÄÝ\Á‹•èþÿÿkÒ‹EÔݘàÝ\Ðéòþÿÿ¿MÜ…É…%Ç…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;Eû‹ìþÿÿkÉ0‹U$ݘàÝD ÚéßàöÄDzK‹…ìþÿÿkÀ0‹M$ݘàÝDÚéßàöÄDz,‹•ìþÿÿkÒ0‹…ìþÿÿkÀ0‹M$‹u$ÝD ÝÚéßàöÄD‹N‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝD Ü ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝDÜLÞé‹•èþÿÿkÒ‹E¤ÝЋìþÿÿkÉ0‹U$ÝD Ùà‹…èþÿÿÁà‹MÜ ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝÜLÞÁ‹•èþÿÿkÒ‹E¤Ý\ЋèþÿÿkÉ‹•èþÿÿkÒ‹E¤‹u¤ÝÈÜ Ö‹èþÿÿkÉ‹•èþÿÿkÒ‹E¤‹u¤ÝDÈÜLÖÞÁÝ•°þÿÿƒìÝ$è¾lƒÄÜ=¨àݰþÿÿ‹èþÿÿkÉ‹U¤Ý…°þÿÿÜ Ê‹…èþÿÿkÀ‹M¤ÝÁ‹•èþÿÿkÒ‹E¤Ý…°þÿÿÜLЋèþÿÿkÉ‹U¤Ý\Êë>‹…èþÿÿÁà‹èþÿÿkÉ‹U¤‹uÝÝÊ‹…èþÿÿÁà‹èþÿÿkÉ‹U¤‹uÝDÝ\Êéçýÿÿ¿EÐ…À„'¿MÜ…Ét&ÝEȃìÝ$‹•ìþÿÿR‹EÄP‹MÔQ‹URèû,ƒÄëj¡ð‹Hát.ÝEȃìÝ$‹•ìþÿÿR‹E¤P‹M Q‹UÄR‹EÔP‹MQè=>ƒÄ ë,ÝEȃìÝ$‹•ìþÿÿR‹E¤P‹M Q‹UÄR‹EÔP‹MQèÿ9ƒÄ ‹ð‹Bƒàt|ݨàÝ]˜‹ ðƒytUˆR¡ðÿPƒÄMˆQÿpà‹UÔR‹EPèƒÄÝØàÝ]˜‹ ðƒytUˆR¡ðÿPƒÄMˆQÿpà‹UÄR‹EPèuƒÄ骿MÜ…ÉtFÝEȃìÝ$‹•ìþÿÿR‹…ìþÿÿkÀ E P‹ìþÿÿƒékÉ M Q‹UÄR‹EÔP‹MQè÷,ƒÄ 餋ð‹B%tKÝEȃìÝ$‹ìþÿÿQ‹•ìþÿÿkÒ U R‹…ìþÿÿƒèkÀ E P‹M¤Q‹U R‹EÄP‹MÔQ‹URèÉ@ƒÄ(ëIÝEȃìÝ$‹…ìþÿÿP‹ìþÿÿkÉ M Q‹•ìþÿÿƒêkÒ U R‹E¤P‹M Q‹UÄR‹EÔP‹MQèn:ƒÄ(‹ð‹Bƒà„¦‹ìþÿÿƒékÉ M Qÿ„àݨàÝ]˜‹ðƒztEˆP‹ ðÿQƒÄUˆRÿpà‹EÔP‹MQègƒÄ‹•ìþÿÿkÒ U Rÿ„àÝØàÝ]˜¡ðƒxtMˆQ‹ðÿRƒÄEˆPÿpà‹MÄQ‹URèÆƒÄÿˆà‹EÔ‰EØ‹MĉMÔ‹U؉UÄ‹E ‰EØ‹M¤‰M ‹U؉U¤‹…ìþÿÿ‰Eä‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜ$Ýpÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝxÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝ]€Ý…pÿÿÿÜpÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÈÝE€ÜM€ÜEÈÝUȃìÝ$èfhƒÄÝ]È‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜÝþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDݘþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝ þÿÿÝ…þÿÿÜþÿÿÝ…˜þÿÿܘþÿÿÞÁݨþÿÿÝ… þÿÿÜ þÿÿÜ…¨þÿÿÝ•¨þÿÿƒìÝ$è¤gƒÄݨþÿÿÝ…¨þÿÿÜ  àݨþÿÿ‹ìþÿÿƒÁ‰ìþÿÿÝEÈܨþÿÿßàöÄAz‹Uƒê9•ìþÿÿŒHþÿÿéØõÿÿ¿EÀ…Àu ‹MàQÿPàƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒìèÝf‰Eü¡|àPh‡‹MüQèÀf‹xàRh‡‹EüPè«f‹ tàQh‡‹UüRè–f‹EüPè‡fÇEøë ‹MøƒÁ‰Mø‹Uø;U}‹EøkÀE P‹MøkÉM Q‹UüRèJfëЋEüPè9f‹MüQè*f‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìè-f‰Eü¡|àPh‡‹MüQèf‹xàRh‡‹EüPèûe‹ tàQh‡‹UüRèæe‹EüPè×e‹Mƒé‰Møë ‹Uøƒê‰Uøƒ}øÿ~‹EøkÀE P‹MøkÉM Q‹UüRèšeëÒ‹EüPè‰e‹MüQèze‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEäë ‹EäƒÀ‰Eä‹Mä;M‹‹UäÁâ‹E ÝÝ]è‹MäÁá‹U ÝD Ý]ðݘàÝ]ø¡ðƒxtj‹MäQUèR¡ðÿPƒÄ MèQÿxàÝEÙàÝ]ø‹ðƒztj‹EäPMèQ‹ðÿRƒÄ EèPÿxàé`ÿÿÿ‹ ð‹Qâtu‹E ÝÝ]è‹M ÝAÝ]ðݘàÝ]ø‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø¡ðƒxtjjMèQ‹ðÿRƒÄ EèPÿxà‹ ðƒyt ‹ðÿRÿtà¡ð‹Hƒát;jݘàƒìÝ$‹U R‹EPèžêÿÿƒÄjÝEÙàƒìÝ$‹M Q‹URèêÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìƒì¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEäë ‹EäƒÀ‰Eä‹Mä;M°‹UäÁâ‹E ÝÝ]è‹MäÁá‹U ÝD Ý]ðݘàÝ]ø‹EƒèkÀ EPÿ„à‹ ðƒytj‹UäREèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø‹EkÀ EPÿ„à‹ ðƒytj‹UäREèP‹ ðÿQƒÄ UèRÿxàé;ÿÿÿ¡ð‹Hᄘ‹U ÝÝ]è‹E Ý@Ý]ðݘàÝ]ø‹MƒékÉ MQÿ„à‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø‹EkÀ EPÿ„à‹ ðƒytjjUèR¡ðÿPƒÄ MèQÿxà‹ðƒzt¡ðÿPÿtà‹ ð‹Qƒât^‹EƒèkÀ EPÿ„àjݘàƒìÝ$‹M Q‹URèpèÿÿƒÄ‹EkÀ EPÿ„àjÝEÙàƒìÝ$‹M Q‹URèCèÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ݘàÝ]à¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEÌë ‹ẼÀ‰EÌ‹MÌ;MÑ‹UÌÁâ‹EÝÝ]ЋMÌÁá‹UÝD Ý]Ø¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpà‹MÌÁá‹U Ý Ý]è‹EÌÁà‹M ÝDÝ]ðݘàÝ]ø‹ðƒztj‹EÌPMèQ‹ðÿRƒÄ EèPÿxàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ðÿQƒÄ UèRÿxàéÿÿÿ¡ð‹Há„´‹UÝÝ]ЋEÝ@Ý]ØÝ˜àÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpà‹U ÝÝ]è‹E Ý@Ý]ðݘàÝ]ø‹ ðƒytjjUèR¡ðÿPƒÄ MèQÿxàÝEÙàÝ]ø‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxà¡ðƒxt ‹ ðÿQÿtà‹ð‹Bƒà„£Ý˜àÝUØÝ]ÐݨàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjݘàƒìÝ$‹U R‹EPè¿åÿÿƒÄÝØàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjÝEÙàƒìÝ$‹U R‹EPètåÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ݘàÝ]à¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEÌë ‹ẼÀ‰EÌ‹MÌ;M‹UƒêkÒ URÿ„à‹EÌÁà‹MÝÝ]ЋUÌÁâ‹EÝDÝ]Ø‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpà‹UÌÁâ‹E ÝÝ]è‹MÌÁá‹U ÝD Ý]ðݘàÝ]ø¡ðƒxtj‹MÌQUèR¡ðÿPƒÄ MèQÿxà‹UkÒ URÿ„à¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ðÿQƒÄ UèRÿxàéÔþÿÿ¡ð‹Há„‹UƒêkÒ URÿ„à‹EÝÝ]ЋMÝAÝ]Ø‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpà‹E ÝÝ]è‹M ÝAÝ]ðݘàÝ]ø‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxà‹EkÀ EPÿ„à‹MÝÝ]ЋUÝBÝ]Ø¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytjjUèR¡ðÿPƒÄ MèQÿxà‹ðƒzt¡ðÿPÿtà‹ ð‹Qƒâ„Ç‹EƒèkÀ EPÿ„àݘàÝUØÝ]ÐݨàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjݘàƒìÝ$‹U R‹EPèEâÿÿƒÄ‹MkÉ MQÿ„àÝØàÝ]à‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpàjÝEÙàƒìÝ$‹E P‹MQèéáÿÿƒÄ‹å]ÃÌÌU‹ìƒì4ݘàÝ]à¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEÌë ‹ẼÀ‰EÌ‹Mƒé9MÌc‹UÌÁâ‹EÝÝ]ЋMÌÁá‹UÝD Ý]Ø¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpà‹MÌÁá‹U Ý Ý]è‹EÌÁà‹M ÝDÝ]ðݘàÝ]ø‹ðƒztj‹EÌPMèQ‹ðÿRƒÄ EèPÿxàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ðÿQƒÄ UèRÿxà‹ẼÀÁà‹M ÝÝ]è‹ŨÂÁâ‹E ÝDÝ]ðݘàÝ]ø‹ ðƒytj‹ŨÂREèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø¡ðƒxtj‹M̃ÁQUèR¡ðÿPƒÄ MèQÿxàé…þÿÿ‹ð‹B%„R‹MƒéÁá‹UÝ Ý]ЋEƒèÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpà‹EƒèÁà‹M ÝÝ]è‹UƒêÁâ‹E ÝDÝ]ðݘàÝ]ø‹ ðƒytj‹UƒêREèP‹ ðÿQƒÄ UèRÿxàÝEÙàÝ]ø¡ðƒxtj‹MƒéQUèR¡ðÿPƒÄ MèQÿxà‹U ÝÝ]è‹E Ý@Ý]ðݘàÝ]ø‹ ðƒytjjUèR¡ðÿPƒÄ MèQÿxàÝEÙàÝ]ø‹ðƒztjjEèP‹ ðÿQƒÄ UèRÿxà¡ðƒxt ‹ ðÿQÿtà‹ð‹Bƒà„£Ý˜àÝUØÝ]ÐݨàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjݘàƒìÝ$‹U R‹EPè<ÞÿÿƒÄÝØàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjÝEÙàƒìÝ$‹U R‹EPèñÝÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ݘàÝ]à¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEÌë ‹ẼÀ‰EÌ‹Mƒé9MÌ‹UƒêkÒ URÿ„à‹EÌÁà‹MÝÝ]ЋUÌÁâ‹EÝDÝ]Ø‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpà‹UÌÁâ‹E ÝÝ]è‹MÌÁá‹U ÝD Ý]ðݘàÝ]ø¡ðƒxtj‹MÌQUèR¡ðÿPƒÄ MèQÿxà‹UkÒ URÿ„à¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ðÿQƒÄ UèRÿxà‹EƒèkÀ EPÿ„à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpà‹ŨÂÁâ‹E ÝÝ]è‹M̃ÁÁá‹U ÝD Ý]ðݘàÝ]ø¡ðƒxtj‹M̃ÁQUèR¡ðÿPƒÄ MèQÿxà‹UkÒ URÿ„à¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytj‹ŨÂREèP‹ ðÿQƒÄ UèRÿxàéÒýÿÿ¡ð‹Há„‹UƒêÁâ‹E ÝÝ]è‹MƒéÁá‹U ÝD Ý]ðݘàÝ]ø‹EƒèkÀ EPÿ„à‹MƒéÁá‹UÝ Ý]ЋEƒèÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpà¡ðƒxtj‹MƒéQUèR¡ðÿPƒÄ MèQÿxà‹UkÒ URÿ„à¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàÝEÙàÝ]ø‹ ðƒytj‹UƒêREèP‹ ðÿQƒÄ UèRÿxà‹EƒèkÀ EPÿ„à‹MÝÝ]ЋUÝBÝ]Ø¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpà‹M ÝÝ]è‹U ÝBÝ]ðݘàÝ]ø¡ðƒxtjjMèQ‹ðÿRƒÄ EèPÿxà‹MkÉ MQÿ„à‹ðƒztEÐP‹ ðÿQƒÄUÐRÿpàÝEÙàÝ]ø¡ðƒxtjjMèQ‹ðÿRƒÄ EèPÿxà‹ ðƒyt ‹ðÿRÿtà¡ð‹Hƒá„Æ‹UƒêkÒ URÿ„àݘàÝUØÝ]ÐݨàÝ]à¡ðƒxtMÐQ‹ðÿRƒÄEÐPÿpàjݘàƒìÝ$‹M Q‹URè°ØÿÿƒÄ‹EkÀ EPÿ„àÝØàÝ]à‹ ðƒytUÐR¡ðÿPƒÄMÐQÿpàjÝEÙàƒìÝ$‹U R‹EPèUØÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì(‹E‹MÝÜ!‹UÜ Ý]à‹E‹MÝ@Üa‹UÜJÜEàÝ]à‹E‹MÝ@Üa‹UÜJÜEàÝ]àݘàÝEàÚéßàöÄDz.ÇEü‹E‹MÝÝ‹U‹EÝ@ÝZ‹M‹UÝBÝYéÙÇEü‹E ‹MÝÜ!‹UÜ Ý]è‹E ‹MÝ@Üa‹UÜJÜEèÝ]è‹E ‹MÝ@Üa‹UÜJÜEèÝUèÜuàÝ]ØÝ¨àÜeØÝ]ðÝEØÜ  àܨàßàöÄAtÝEØÜ  àÜØàßàöÄzÇEü‹EÝEØÜ‹MÝEðÜ ÞÁ‹UÝ‹EÝEØÜH‹MÝEðÜIÞÁ‹UÝZ‹EÝEØÜH‹MÝEðÜIÞÁ‹UÝZ‹Eü‹å]ÃÌÌÌÌÌÌÌÌU‹ìƒìX‹E‹M ÝÜ!Ý]¸‹U‹E ÝBÜ`Ý]À‹M‹U ÝAÜbÝ]È‹E‹MÝÜ!Ý]ЋU‹EÝBÜ`Ý]Ø‹M‹UÝAÜbÝ]àÝE¸ÜM¸ÝEÀÜMÀÞÁÝ]èÝEÈÜMÈÜEèÝUèƒìÝ$èÜOƒÄÝ]èÝEÐÜMÐÝEØÜMØÞÁÝ]°ÝEàÜMàÜE°ÝU°ƒìÝ$è®OƒÄÝ]°Ý àÜM°Ü]èßàöÄuyݘàÝE°ÚéßàöÄDz,‹EݘàÝX‹MݘàÝY‹UݘàÝÇEüë6ݨàÜu°Ý]°ÝE°ÜMЋEÝÝE°ÜMØ‹MÝYÝE°ÜMà‹UÝZÇEüé¹ÇEüÝ àÜMèÜ]°ßàöÄu4ݨàÜuèÝ]èÝEèÜM¸‹EÝÝEèÜMÀ‹MÝYÝEèÜMÈ‹UÝZékݨàÜuèÝ]èÝEèÜM¸Ý]¸ÝEèÜMÀÝ]ÀÝEèÜMÈÝ]ÈݨàÜu°Ý]°ÝE°ÜMÐÝ]ÐÝE°ÜMØÝ]ØÝE°ÜMàÝ]àÝEÐÜM¸ÝEØÜMÀÞÁÝEàÜMÈÞÁÝ]ðÝEðÜøàßàöÄtÝEðÜðàßàöÄAz‹EÝE¸Ý‹MÝEÀÝY‹UÝEÈÝZéÅÝEÐÜE¸ÜMðÜeÐÜe¸‹EÝÝEØÜEÀÜMðÜeØÜeÀ‹MÝYÝEàÜEÈÜMðÜeàÜeÈ‹UÝZ‹E‹MÝÜ ‹U‹EÝBÜHÞÁÝ]¨‹M‹UÝAÜJÜE¨ÝU¨ƒìÝ$è²MƒÄÝ]¨Ý˜àÝE¨ÚéßàöÄD{7ݨàÜu¨Ý]¨‹EÝE¨Ü‹MÝ‹UÝE¨ÜJ‹EÝX‹MÝE¨ÜI‹UÝZ‹Eü‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ì쀋EPÝEƒìÝ$M€Qè±7ƒÄU€Rÿhà‹å]ÃU‹ì쀋EPÝEƒìÝ$M€Qè‘9ƒÄU€Rÿhà‹å]ÃU‹ì쀋EPM€Qè*:ƒÄU€Rÿhà‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìŠEPÝE ƒìÝ$è·LÝ$ÝE ƒìÝ$è LÝ$‹MQèƒÄ]ÃÌÌÌÌÌÌÌÌÌU‹ìQ¾E‰Eü‹MüƒéX‰Müƒ}ü"wo‹Uü¶‚=‹ÿ$…-‹ÝEƒìÝ$ÝE ƒìÝ$‹MQèzƒÄë>ÝEƒìÝ$ÝE ƒìÝ$‹URèƒÄëÝEƒìÝ$ÝE ƒìÝ$‹EP躃ċå]ÃËŠëŠ ‹)‹U‹ì‹EݨàÝ‹MݘàÝY‹UݘàÝZ‹EݘàÝX‹MݘàÝY ‹UÝE ÝZ(‹EÝEÝX0‹MݘàÝY8‹UݘàÝZ@ÝEÙà‹EÝXH‹MÝE ÝYP‹UݘàÝZX‹EݘàÝX`‹MݘàÝYh‹UݘàÝZp‹EݨàÝXx]ÃÌÌÌÌÌÌU‹ì‹EݨàÝ‹MݘàÝY‹UݘàÝZ‹EݘàÝX‹MݘàÝY ‹UÝE ÝZ(‹EÝEÝX0‹MݘàÝY8‹UݘàÝZ@ÝEÙà‹EÝXH‹MÝE ÝYP‹UݘàÝZX‹EݘàÝX`‹MݘàÝYh‹UݘàÝZp‹EݨàÝXx]ÃÌÌÌÌÌÌU‹ì‹EݨàÝ‹MݘàÝY‹UݘàÝZ‹EݘàÝX‹MݘàÝY ‹UÝE ÝZ(‹EÝEÝX0‹MݘàÝY8‹UݘàÝZ@ÝEÙà‹EÝXH‹MÝE ÝYP‹UݘàÝZX‹EݘàÝX`‹MݘàÝYh‹UݘàÝZp‹EݨàÝXx]ÃÌÌÌÌÌÌU‹ì쀊EPÝEƒìÝ$M€Qè¡üÿÿƒÄU€Rÿhà‹å]ÃU‹ììøVƒ}t ‹EPÿ„àƒ}ué1 ‹MÝAܘàßàöÄAu4‹UÝØàÜ ‹EÝ‹MÝØàÜI‹UÝZ‹EÝØàÜH‹MÝY‹UÝBܘàßàöÄz4‹EÝØàÜ‹MÝ‹UÝØàÜJ‹EÝX‹MÝØàÜI‹UÝZ‹E‹MÝ@ÜI‹U‹EÝBÜHÞéÝ]è‹M‹UÝAÜ ‹E‹MÝÜIÞéÝ]ð‹U‹EÝÜH‹M‹UÝAÜ ÞéÝ]øƒ} u4‹EÝØàÜ‹MÝ‹UÝØàÜJ‹EÝX‹MÝØàÜI‹UÝZݘàÝ]ÀݘàÝ]ÈݨàÝ]ЋEÝEÀÜ‹MÝEÈÜIÞÁ‹UÝEÐÜJÞÁÝÿÿÿÝ…ÿÿÿÜMÀ‹EÜ(Ý]ÀÝ…ÿÿÿÜMÈ‹MÜiÝ]ÈÝ…ÿÿÿÜMЋUÜjÝ]ÐÝEÀÜMÀÝEÈÜMÈÞÁÝÿÿÿÝEÐÜMÐÜ…ÿÿÿÝ•ÿÿÿƒìÝ$èkGƒÄÝÿÿÿݘàÝ…ÿÿÿÚéßàöÄD{6ݨàܵÿÿÿÝÿÿÿÝEÀÜÿÿÿÝ]ÀÝEÈÜÿÿÿÝ]ÈÝEÐÜÿÿÿÝ]ЋEÝEÀÜ‹MÝEÈÜIÞÁ‹UÝEÐÜJÞÁÝ] ÝE ƒìÝ$èvGƒÄÝU Ü5èàÝ] EèPÝE ƒìÝ$ ÿÿÿQè@1ƒÄ‹UkÒ ÁâRÿTàƒÄ‰E¼‹E¼‰…ÿÿÿ‹MkÉ‹•ÿÿÿʉE¸‹MkÉ‹U¸ʉEÜ‹M‹UÜʉE°‹MkÉ‹U°ʉE¬ƒ} „CÇ…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹•ÿÿÿ;U„‹…ÿÿÿkÀ‹ÿÿÿkÉ‹•ÿÿÿ‹u ÝÝÊ‹…ÿÿÿkÀ‹ÿÿÿkÉ‹•ÿÿÿ‹u ÝDÝ\Ê‹…ÿÿÿkÀ‹ÿÿÿ‹UÜ‹u ÝDÝÊ‹…ÿÿÿkÀ‹ÿÿÿ‹•ÿÿÿ‹uÜÝÖÝ\Áé^ÿÿÿƒ}„†Ç…ÿÿÿë‹…ÿÿÿƒÀ‰…ÿÿÿ‹ÿÿÿ;M}`‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝÝÁ‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝDÝ\Á‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝDÝ\Áë†éïÇ…ÿÿÿë‹•ÿÿÿƒÂ‰•ÿÿÿ‹…ÿÿÿ;E„‹M+ÿÿÿƒé‰M´‹•ÿÿÿkÒ‹E´kÀ‹ÿÿÿ‹u ÝÝÁ‹•ÿÿÿkÒ‹E´kÀ‹ÿÿÿ‹u ÝDÝ\Á‹•ÿÿÿkÒ‹E´‹MÜ‹u ÝDÝÁ‹U´kÒ‹…ÿÿÿ‹M´‹uÜÝÎÝ\Ðé^ÿÿÿƒ}„7‹ð‹B%„—Ç…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹Uƒê9•ÿÿÿ}i‹E+…ÿÿÿƒè‰E´‹ÿÿÿkÉ‹U´kÒ‹E°‹uÝÝЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ÐézÿÿÿéŒÇ…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹•ÿÿÿ;U}f‹E+…ÿÿÿƒè‰E´‹ÿÿÿkÉ‹U´kÒ‹E°‹uÝÝЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\Ðë€ÇEäë ‹MäƒÁ‰Mäƒ}äÇ…ÿÿÿë‹•ÿÿÿƒÂ‰•ÿÿÿ‹…ÿÿÿ;EÚ‹ÿÿÿkÉ‹U¸‹…ÿÿÿ‹uÜÝDÊÜ$Æ‹ÿÿÿkÉ‹U¸Ý\Ê‹…ÿÿÿkÀ‹ÿÿÿ‹•ÿÿÿ‹uÜÝDÁÜ$Ö‹…ÿÿÿkÀ‹ÿÿÿÝ\Á‹•ÿÿÿkÒ‹…ÿÿÿÝ… ÿÿÿÜ Ð‹ÿÿÿkÉ‹•ÿÿÿÝ…(ÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹ÿÿÿÝ…0ÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E¸ÝЋÿÿÿkÉ‹•ÿÿÿÝ…@ÿÿÿÜ Ê‹…ÿÿÿkÀ‹ÿÿÿÝ…HÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹…ÿÿÿÝ…PÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U¸Ý\Ê‹…ÿÿÿkÀ‹ÿÿÿÝ…`ÿÿÿÜ Á‹•ÿÿÿkÒ‹…ÿÿÿÝ…hÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹•ÿÿÿÝ…pÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M¸Ý\Á‹•ÿÿÿkÒ‹E¸‹ÿÿÿ‹uÜÝDÐÜ΋•ÿÿÿkÒ‹E¸Ý\ЋÿÿÿkÉ‹•ÿÿÿ‹…ÿÿÿ‹uÜÝDÊÜÆ‹ÿÿÿkÉ‹•ÿÿÿÝ\Êéþÿÿƒ}„-Ç…ÿÿÿë‹…ÿÿÿƒÀ‰…ÿÿÿ‹ÿÿÿ;M‹•ÿÿÿkÒ‹E°Ý… ÿÿÿÜ Ð‹ÿÿÿkÉ‹U°Ý…(ÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M°Ý…0ÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E¬ÝЋÿÿÿkÉ‹U°Ý…@ÿÿÿÜ Ê‹…ÿÿÿkÀ‹M°Ý…HÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E°Ý…PÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U¬Ý\Ê‹…ÿÿÿkÀ‹M°Ý…`ÿÿÿÜ Á‹•ÿÿÿkÒ‹E°Ý…hÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U°Ý…pÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M¬Ý\Áéßþÿÿƒ}u'ݘàƒìÝ$j‹•ÿÿÿR‹E¸P‹MQè·ƒÄël‹ð‹B%t/ݘàƒìÝ$j‹M°Q‹U¬R‹…ÿÿÿP‹M¸Q‹URèøƒÄ ë-ݘàƒìÝ$j‹E°P‹M¬Q‹•ÿÿÿR‹E¸P‹MQè¹ ƒÄ ‹U¸‰Uà‹…ÿÿÿ‰E¸‹Mà‰ÿÿÿ‹U¬‰Uà‹E°‰E¬‹Mà‰M°éêûÿÿ‹U¼RÿPàƒÄ^‹å]ÃÌÌÌÌÌU‹ìQ¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mü;M}u‹ðƒztj‹EüP‹MükÉM Q‹ðÿRƒÄ ‹EükÀE Pÿxà‹ ðƒytj‹UüR‹EükÀEP‹ ðÿQƒÄ ‹UükÒURÿxàézÿÿÿ¡ð‹HátS‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒyt ‹ðÿRÿtà‹å]ÃÌU‹ìQ¡ðƒ8tÝE ƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mü;M…‹URÿ„à¡ðƒxtj‹MüQ‹UükÒU R¡ðÿPƒÄ ‹MükÉM Qÿxà‹URÿ„à¡ðƒxtj‹MüQ‹UükÒUR¡ðÿPƒÄ ‹MükÉMQÿxàéfÿÿÿ‹ð‹B%tg‹MQÿ„à‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà‹EPÿ„à‹ ðƒytjj‹UR¡ðÿPƒÄ ‹MQÿxà‹ðƒzt¡ðÿPÿtà‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mü;M¥‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxtj‹MüQ‹UükÒU R¡ðÿPƒÄ ‹MükÉM Qÿxà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxàéFÿÿÿ‹ ð‹Qâtx¡ðƒxt‹MQ‹ðÿRƒÄ‹EPÿpà‹ ðƒytjj‹U R¡ðÿPƒÄ ‹M Qÿxà‹ðƒztjj‹EP‹ ðÿQƒÄ ‹URÿxà¡ðƒxt ‹ ðÿQÿtà‹å]ÃÌÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tÝE$ƒìÝ$‹M Q‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mü;Më‹URÿ„à¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒytj‹UüR‹EükÀE P‹ ðÿQƒÄ ‹UükÒU Rÿxà‹EPÿ„à‹ ðƒyt‹UükÒUR¡ðÿPƒÄ‹MükÉMQÿpà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxàéÿÿÿ‹ ð‹QℲ‹EPÿ„à‹ ðƒyt‹UR¡ðÿPƒÄ‹MQÿpà‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà‹EPÿ„à‹ ðƒyt‹UR¡ðÿPƒÄ‹MQÿpà‹ðƒztjj‹EP‹ ðÿQƒÄ ‹URÿxà¡ðƒxt ‹ ðÿQÿtà‹å]ÃÌÌÌÌU‹ìQ¡ðƒ8tÝEƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mƒé9Mü%‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxtj‹MüQ‹UükÒU R¡ðÿPƒÄ ‹MükÉM Qÿxà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxà‹ ðƒyt"j‹UüƒÂR‹EüƒÀkÀE P‹ ðÿQƒÄ ‹UüƒÂkÒU Rÿxà¡ðƒxt!j‹MüƒÁQ‹UüƒÂkÒUR¡ðÿPƒÄ ‹MüƒÁkÉMQÿxàéÃþÿÿ‹ð‹B%„ ‹ ðƒyt‹UƒêkÒUR¡ðÿPƒÄ‹MƒékÉMQÿpà‹ðƒzt"j‹EƒèP‹MƒékÉM Q‹ðÿRƒÄ ‹EƒèkÀE Pÿxà‹ ðƒyt"j‹UƒêR‹EƒèkÀEP‹ ðÿQƒÄ ‹UƒêkÒURÿxà¡ðƒxtjj‹M Q‹ðÿRƒÄ ‹E Pÿxà‹ ðƒytjj‹UR¡ðÿPƒÄ ‹MQÿxà‹ðƒzt¡ðÿPÿtà‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tÝE$ƒìÝ$‹M Q‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mƒé9Müâ‹URÿ„à¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒytj‹UüR‹EükÀE P‹ ðÿQƒÄ ‹UükÒU Rÿxà‹EPÿ„à‹ ðƒyt‹UükÒUR¡ðÿPƒÄ‹MükÉMQÿpà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxà‹MQÿ„à‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxt!j‹MüƒÁQ‹UüƒÂkÒU R¡ðÿPƒÄ ‹MüƒÁkÉM Qÿxà‹URÿ„à¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒyt"j‹UüƒÂR‹EüƒÀkÀEP‹ ðÿQƒÄ ‹UüƒÂkÒURÿxàéþÿÿ¡ð‹Há„Ú‹URÿ„à¡ðƒxt‹MƒékÉMQ‹ðÿRƒÄ‹EƒèkÀEPÿpà‹ ðƒyt"j‹UƒêR‹EƒèkÀE P‹ ðÿQƒÄ ‹UƒêkÒU Rÿxà‹EPÿ„à‹ ðƒyt‹UƒêkÒUR¡ðÿPƒÄ‹MƒékÉMQÿpà‹ðƒzt"j‹EƒèP‹MƒékÉMQ‹ðÿRƒÄ ‹EƒèkÀEPÿxà‹MQÿ„à‹ðƒzt‹EƒèkÀEP‹ ðÿQƒÄ‹UƒêkÒURÿpà¡ðƒxtjj‹M Q‹ðÿRƒÄ ‹E Pÿxà‹MQÿ„à‹ðƒzt‹EƒèkÀEP‹ ðÿQƒÄ‹UƒêkÒURÿpà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒyt ‹ðÿRÿtà‹å]ÃÌÌU‹ìQ¡ðƒ8tÝE ƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mü;MÕ‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxtj‹MüQ‹UükÒU R¡ðÿPƒÄ ‹MükÉM Qÿxà‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxtj‹MüQ‹UükÒUR¡ðÿPƒÄ ‹MükÉMQÿxàéÿÿÿ‹ð‹B%„‹ ðƒyt‹UR¡ðÿPƒÄ‹MQÿpà‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà¡ðƒxt‹MQ‹ðÿRƒÄ‹EPÿpà‹ ðƒytjj‹UR¡ðÿPƒÄ ‹MQÿxà‹ðƒzt¡ðÿPÿtà‹å]ÃU‹ìQ¡ðƒ8tÝE(ƒìÝ$‹M$Q‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mü;Më‹URÿ„à¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒytj‹UüR‹EükÀE P‹ ðÿQƒÄ ‹UükÒU Rÿxà‹E Pÿ„à‹ ðƒyt‹UükÒUR¡ðÿPƒÄ‹MükÉMQÿpà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxàéÿÿÿ‹ ð‹QℲ‹EPÿ„à‹ ðƒyt‹UR¡ðÿPƒÄ‹MQÿpà‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà‹E Pÿ„à‹ ðƒyt‹UR¡ðÿPƒÄ‹MQÿpà‹ðƒztjj‹EP‹ ðÿQƒÄ ‹URÿxà¡ðƒxt ‹ ðÿQÿtà‹å]ÃÌÌÌÌU‹ìQ¡ðƒ8tÝE ƒìÝ$‹MQ‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mƒé9Mü·‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxtj‹MüQ‹UükÒU R¡ðÿPƒÄ ‹MükÉM Qÿxà‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxtj‹MüQ‹UükÒUR¡ðÿPƒÄ ‹MükÉMQÿxà‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxt!j‹MüƒÁQ‹UüƒÂkÒU R¡ðÿPƒÄ ‹MüƒÁkÉM Qÿxà‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxt!j‹MüƒÁQ‹UüƒÂkÒUR¡ðÿPƒÄ ‹MüƒÁkÉMQÿxàé1þÿÿ‹ð‹B%„±‹ ðƒyt‹UƒêkÒUR¡ðÿPƒÄ‹MƒékÉMQÿpà‹ðƒzt"j‹EƒèP‹MƒékÉM Q‹ðÿRƒÄ ‹EƒèkÀE Pÿxà‹ ðƒyt‹UƒêkÒUR¡ðÿPƒÄ‹MƒékÉMQÿpà‹ðƒzt"j‹EƒèP‹MƒékÉMQ‹ðÿRƒÄ ‹EƒèkÀEPÿxà‹ ðƒyt‹UƒêkÒUR¡ðÿPƒÄ‹MƒékÉMQÿpà‹ðƒztjj‹E P‹ ðÿQƒÄ ‹U Rÿxà¡ðƒxt‹MƒékÉMQ‹ðÿRƒÄ‹EƒèkÀEPÿpà‹ ðƒytjj‹UR¡ðÿPƒÄ ‹MQÿxà‹ðƒzt¡ðÿPÿtà‹å]ÃÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tÝE(ƒìÝ$‹M$Q‹ðÿƒÄ jÿ|àÇEüë ‹EüƒÀ‰Eü‹Mƒé9Müâ‹URÿ„à¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒytj‹UüR‹EükÀE P‹ ðÿQƒÄ ‹UükÒU Rÿxà‹E Pÿ„à‹ ðƒyt‹UükÒUR¡ðÿPƒÄ‹MükÉMQÿpà‹ðƒztj‹EüP‹MükÉMQ‹ðÿRƒÄ ‹EükÀEPÿxà‹MQÿ„à‹ðƒzt‹EükÀEP‹ ðÿQƒÄ‹UükÒURÿpà¡ðƒxt!j‹MüƒÁQ‹UüƒÂkÒU R¡ðÿPƒÄ ‹MüƒÁkÉM Qÿxà‹U Rÿ„à¡ðƒxt‹MükÉMQ‹ðÿRƒÄ‹EükÀEPÿpà‹ ðƒyt"j‹UüƒÂR‹EüƒÀkÀEP‹ ðÿQƒÄ ‹UüƒÂkÒURÿxàéþÿÿ¡ð‹Há„Ú‹URÿ„à¡ðƒxt‹MƒékÉMQ‹ðÿRƒÄ‹EƒèkÀEPÿpà‹ ðƒyt"j‹UƒêR‹EƒèkÀE P‹ ðÿQƒÄ ‹UƒêkÒU Rÿxà‹E Pÿ„à‹ ðƒyt‹UƒêkÒUR¡ðÿPƒÄ‹MƒékÉMQÿpà‹ðƒzt"j‹EƒèP‹MƒékÉMQ‹ðÿRƒÄ ‹EƒèkÀEPÿxà‹MQÿ„à‹ðƒzt‹EƒèkÀEP‹ ðÿQƒÄ‹UƒêkÒURÿpà¡ðƒxtjj‹M Q‹ðÿRƒÄ ‹E Pÿxà‹M Qÿ„à‹ðƒzt‹EƒèkÀEP‹ ðÿQƒÄ‹UƒêkÒURÿpà¡ðƒxtjj‹MQ‹ðÿRƒÄ ‹EPÿxà‹ ðƒyt ‹ðÿRÿtà‹å]ÃÌÌU‹ìQhˆÿTàƒÄ‰Eü‹EüÇ‹MüÇA‹UüÇB‹EüÇ@ ‹MüÇA‹UüÇB‹EüÇ@p‹MüÇAt‹UüÇBx‹EüÇ@|‹MüÇ€‹UüÇ‚„‹EüÇ@‹MüÇA‹UüÇB ‹EüÇ@$j‹MüQè˃Ä‹UüÇB(‹EüÇ@8‹MüÇAH‹UüÇBL‹EüݘàÝXP‹MüݘàÝYX‹UüݘàÝZ`‹EüݘàÝXh‹Eü‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒ=ðt:¡ðƒx t‹ ð‹Q RÿPàƒÄ¡ðÇ@ ‹ ðQÿPàƒÄÇð]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìƒ}uéGƒ} }é<‹E‹M ;Hué,‹U‹E ;B~/‹M ÁáQ‹U‹B PÿDàƒÄ‹M‰A ‹U Áâ‹EP ‹M‰Q$ÛE Ü=ÀàƒìÝ$èB#ƒÄÝ]ðÛE Ü=ÀàƒìÝ$è"#ƒÄÝ]è‹U‹B$ݨàÝ‹M‹Q$ݘàÝZÇEüë ‹EüƒÀ‰Eü‹Mü;M }~‹UüƒêÁâ‹E‹H$ÝEèÜ ‹UüƒêÁâ‹E‹H$ÝEðÜLÞé‹UüÁâ‹E‹H$Ý ‹UüƒêÁâ‹E‹H$ÝEðÜ ‹UüƒêÁâ‹E‹H$ÝEèÜLÞÁ‹UüÁâ‹E‹H$Ý\éqÿÿÿ‹U‹E ‰B‹å]ÃÌÌÌÌU‹ìƒ=ðuèÿüÿÿ£ðh³è"ƒÄ¡ð‹@]ÃÌÌÌU‹ìƒ=ðuèÏüÿÿ£ðh³èä!ƒÄ‹EP‹ ðQè=þÿÿƒÄ]ÃÌÌÌÌÌÌÌÌU‹ìQƒ=ðuèŽüÿÿ£ðh³è£!ƒÄ¡ð‹ ð‹Qp‰¡ð‹ ð‹Qt‰P¡ð‹ ð‹Qx‰P¡ð‹ ð‹Q|‰P ¡ð‹ ð‹‘€‰P¡ð‹ ð‹‘„‰P‹E%ÿ‰Eü‹Müƒé‰Müƒ}ü ‡ô‹Uüÿ$•¯¸¡ðÇ ¼‹ ðÇAÀ‹ðÇBéÀ¡ðÇ ¼‹ ðÇA À‹ðÇBà¸é–¡ðÇ ¼‹ ðÇAàÀ‹ðÇBél¡ðÇ ¼‹ ðÇA@Á‹ðÇBéB¡ðÇ ¼‹ ðÇA½‹ðÇBé¡ðÇ ¼‹ ðÇAÀ¾‹ðÇBà¸éî¡ðÇ ¼‹ ðÇA¿‹ðÇBéÄ¡ðÇ ¼‹ ðÇA ¿‹ðÇBéš¡ðǹ‹ ðÇA@¹‹ðÇBës¡ðǹ‹ ðÇA@»‹ðÇBà¸ëL¡ðǹ‹ ðÇA€»‹ðÇBë%¡ðǹ‹ ðÇA@¼‹ðÇB‹E%…¼‹ ð‹ð‹‰Ap‹ ð‹ð‹B‰At‹ ð‹ð‹B‰Ax‹ ð‹ð‹B ‰A|‹ ð‹ð‹B‰€‹ ð‹ð‹B‰„‹ ðÇ‹ðÇB¡ðÇ@‹ ðÇA ‹ðÇB¡ðÇ@‹å]Ã÷µ!¶Ÿ¶ɶG·n·K¶u¶ó¶·•·¼·ÌU‹ì‹EÝÝ ð‹MÝAÝ(ð‹UÝBÝ0ð]ÃÌÌÌÌÌÌÌÌU‹ì‹Eƒè‹ ð‰AL‹ðÝE ÝZP¡ðÇ@H]ÃÌÌÌÌU‹ìƒì ‹EÝÝ]ð‹MÝAÝ]ø‹UÝBÝ]èÝEðÜMðÝEøÜMøÞÁÝEèÜMèÞÁƒìÝ$蟃ÄÜ=¨àÝ]àÝEðÜMàÝ]ðÝEøÜMàÝ]øÝEèÜMàÝ]è‹EP‹M QÝEèƒìÝ$ÝEøƒìÝ$ÝEðƒìÝ$èƒÄ ‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒìÝEƒìÝ$ÝEƒìÝ$è·ƒÄÜ áÜ5áÝUøÜáÝ]øÝEƒìÝ$舃ÄÜ5áÜ-¨àÝ]ð¡ðƒxHu1‹ ðÝEøÝY`‹ðÝEðÝZh¡ð‹HHƒÁ‹ð‰JH鮡ðÝ@hÜeðÜáßàöÄAuÝEðܨàÝ]ðë%‹ ðÝAhÜeðÜáßàöÄz ÝEðÜ%¨àÝ]ð‹ðÝEðÝZh¡ðÝ@`ÜeøÜáßàöÄAuÝEøÜ¨àÝ]øë%‹ ðÝA`ÜeøÜáßàöÄz ÝEøÜ%¨àÝ]ø‹ðÝEøÝZ`ÝEðƒìÝ$ÝEøƒìÝ$ÿ€à‹å]ÃÌÌU‹ì‹EP‹M QÝ0ðƒìÝ$Ý(ðƒìÝ$Ý ðƒìÝ$èlþÿÿƒÄ ]ÃÌÌÌÌÌÌÌU‹ìƒì ‹E Áà‹ ð‹Q,ÝÝ]ð‹E Áà‹ ð‹Q,ÝDÝ]ø‹EÝ@Ý]èÝEðÜMðÝEøÜMøÞÁÝEèÜMèÞÁƒìÝ$èEƒÄÜ=¨àÝ]àÝEðÜMàÝ]ðÝEøÜMàÝ]øÝEèÜMàÝ]è‹MQ‹U RÝEèƒìÝ$ÝEøƒìÝ$ÝEðƒìÝ$è¶ýÿÿƒÄ ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ì¡ðƒx0uëM‹MQ‹U RݘàƒìÝ$‹E Áà‹ ð‹Q0ÝDƒìÝ$‹E Áà‹ ð‹Q0݃ìÝ$èFýÿÿƒÄ ]ÃÌU‹ì¡ðÝ@P‹ ðÜAX‹ðÝZX‹Eƒè‹ ð‰AL‹ðÝE ÝZP¡ðƒxL‹ ðݘàÝYX‹ðÇBH]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì ‹EÝÝ]ð‹MÝAÝ]ø‹UÝBÝ]èÝEðÜMðÝEøÜMøÞÁƒìÝ$è׃ÄÜ=¨àÝ]àÝEðÜMàÝ]ðÝEøÜMàÝ]ø‹EP‹M QÝEèƒìÝ$ÝEøƒìÝ$ÝEðƒìÝ$èƒÄ ‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìƒìÝEƒìÝ$ÝEƒìÝ$è÷ƒÄÜ áÜ5áÝUøÜáÝ]ø¡ðƒxHu#‹ ðÝEøÝY`‹ð‹BHƒÀ‹ ð‰AHëW‹ðÝB`ÜeøÜáßàöÄAuÝEøÜ¨àÝ]øë$¡ðÝ@`ÜeøÜáßàöÄz ÝEøÜ%¨àÝ]ø‹ ðÝEøÝY`ƒ}$u‹ðÝBXƒìÝ$ÝEøƒìÝ$ÿ€àƒ}$u&¡ðÝ@X‹ ðÜAPƒìÝ$ÝEøƒìÝ$ÿ€à‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ì‹EP‹M QÝ0ðƒìÝ$Ý(ðƒìÝ$Ý ðƒìÝ$è¬þÿÿƒÄ ]ÃÌÌÌÌÌÌÌU‹ìƒì ‹E Áà‹ ð‹Q,ÝÝ]ð‹E Áà‹ ð‹Q,ÝDÝ]ø‹EÝ@Ý]èÝEðÜMðÝEøÜMøÞÁƒìÝ$è̓ÄÜ=¨àÝ]àÝEðÜMàÝ]ðÝEøÜMàÝ]ø‹MQ‹U RÝEèƒìÝ$ÝEøƒìÝ$ÝEðƒìÝ$èþÿÿƒÄ ‹å]ÃU‹ì¡ðƒx0uëM‹MQ‹U RݘàƒìÝ$‹E Áà‹ ð‹Q0ÝDƒìÝ$‹E Áà‹ ð‹Q0݃ìÝ$è¦ýÿÿƒÄ ]ÃÌU‹ì‹EP‹M Q‹UÝBƒìÝ$‹EÝ@ƒìÝ$‹M݃ìÝ$è ƒÄ ]ÃÌÌÌÌÌÌÌÌU‹ìƒ}$u¡ðÝ@XƒìÝ$ÝEƒìÝ$ÿ€àƒ}$u'‹ ðÝAX‹ðÜBPƒìÝ$ÝEƒìÝ$ÿ€à]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ì‹EP‹M QÝ0ðƒìÝ$Ý(ðƒìÝ$Ý ðƒìÝ$èlÿÿÿƒÄ ]ÃÌÌÌÌÌÌÌU‹ì‹EP‹M Q‹UÝBƒìÝ$‹E Áà‹ ð‹Q,ÝDƒìÝ$‹E Áà‹ ð‹Q,݃ìÝ$èÿÿÿƒÄ ]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ì¡ðƒx0uëM‹MQ‹U RݘàƒìÝ$‹E Áà‹ ð‹Q0ÝDƒìÝ$‹E Áà‹ ð‹Q0݃ìÝ$è¦þÿÿƒÄ ]ÃÌU‹ìƒì0ÝE Ü5ààÝUèƒìÝ$èoƒÄÝ]ðÝEèƒìÝ$èUƒÄÝ]ÐÝEðÜMðÝ]øÝEÐÜMÐÝUØÜeø‹EÝXP‹M‹UÝBPÝY(‹E‹MÝA(ÝÝEøÜÀÝ]ø‹UÝEøÜ ‹EÜ‹MÜ‹UÝ‹EÝEøÜH‹MÜI‹UÜB(‹EÝX(‹MÝEøÜI‹UÜJ‹EÜ@P‹MÝYP‹U‹EÝÜHÜMø‹MÝY ‹U‹EÝ@ ÝZ‹M‹UÝAÜJÜMø‹EÝXH‹M‹UÝBHÝY0‹E‹MÝ@Ü ÜMø‹UÝZ‹E‹MÝAÝX@ÝààÜMÐÜMðÝ]à‹UÝEàÜJÝ]è‹EÝEèÜ@‹MÝY‹UÝB Üeè‹EÝX ‹MÝEàÜ Ý]è‹UÝEèÜB0‹EÝX0‹MÝAHÜeè‹UÝZH‹EÝEàÜHÝ]è‹MÝEèÜA@‹UÝZ@‹EÝ@Üeè‹MÝY‹UݘàÝZ`‹EݘàÝXh‹MݘàÝYp‹UݘàÝZX‹EݘàÝX8‹MݘàÝY‹UݨàÝZx‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì ÝE Ü °àÝ] ‹E‹MÝÜ ‹U‹EÝBÜHÞÁ‹M‹UÝAÜJÞÁÝ]àƒ}àu }äð?tXÝEàƒìÝ$èƒÄÜ=¨àÝ]à‹EÝEàÜÝ]è‹MÝEàÜIÝ]ð‹UÝEàÜJÝ]øEèPÝE ƒìÝ$‹MQèSýÿÿƒÄë‹URÝE ƒìÝ$‹EPè8ýÿÿƒÄ‹å]ÃÌU‹ìƒì ‹E ‹M ÝÜ ‹U ‹E ÝBÜHÞÁ‹M ‹U ÝAÜJÞÁÝUàƒìÝ$èvƒÄÜ=¨àÝ]à‹E ÝEàÜÝ]è‹M ÝEàÜIÝ]ð‹U ÝEàÜJÝ]øEèPÝEàƒìÝ$‹MQè±üÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìì‹E ÝÝ þÿÿ‹M ÝAÝ(þÿÿ‹U ÝBÝ0þÿÿÝ… þÿÿÜ þÿÿÝ…(þÿÿÜ(þÿÿÞÁÝþÿÿÝ…0þÿÿÜ0þÿÿÜ…þÿÿÝ•þÿÿƒìÝ$豃ÄÝþÿÿݘàÝ…þÿÿÚéßàöÄD‹ ݨàܵþÿÿÝþÿÿÝ…þÿÿÜ þÿÿÝ þÿÿÝ…þÿÿÜ(þÿÿÝ(þÿÿÝ…þÿÿÜ0þÿÿÝ0þÿÿÝ…0þÿÿÜ0þÿÿÜ-¨àƒìÝ$è*ƒÄÝþÿÿÝ…0þÿÿÙàÝ]€Ý˜àÝ]ˆÝ…þÿÿÙàÙàÝ]ݘàÝ]˜Ý˜àÝ] Ý¨àÝ]¨Ý˜àÝ]°Ý˜àÝ]¸Ý…þÿÿÙàÝ]ÀݘàÝ]ÈÝ…0þÿÿÙàÝ]ÐݘàÝ]ØÝ˜àÝ]àݘàÝ]èݘàÝ]ðݨàÝ]øéݨàÝ]€Ý˜àÝ]ˆÝ˜àÝ]ݘàÝ]˜Ý˜àÝ] Ý¨àÝ]¨Ý˜àÝ]°Ý˜àÝ]¸Ý˜àÝ]ÀݘàÝ]ÈݨàÝ]ÐݘàÝ]ØÝ˜àÝ]àݘàÝ]èݘàÝ]ðݨàÝ]ø‹E ÝÝhÿÿÿ‹M ÝAÝpÿÿÿݘàÝxÿÿÿÝ…hÿÿÿÜhÿÿÿÝ…pÿÿÿÜpÿÿÿÞÁÝþÿÿÝ…xÿÿÿÜxÿÿÿÜ…þÿÿÝ•þÿÿƒìÝ$范ÄÝþÿÿݘàÝ…þÿÿÚéßàöÄD‹Ý¨àܵþÿÿÝþÿÿÝ…þÿÿÜhÿÿÿÝhÿÿÿÝ…þÿÿÜpÿÿÿÝpÿÿÿÝ…þÿÿÜxÿÿÿÝxÿÿÿÝ…hÿÿÿÝÐþÿÿÝ…pÿÿÿÝØþÿÿݘàÝàþÿÿݘàÝèþÿÿÝ…pÿÿÿÙàÝðþÿÿÝ…hÿÿÿÝøþÿÿݘàÝÿÿÿݘàÝÿÿÿݘàÝÿÿÿݘàÝÿÿÿݨàÝ ÿÿÿݘàÝ(ÿÿÿݘàÝ0ÿÿÿݘàÝ8ÿÿÿݘàÝ@ÿÿÿݨàÝHÿÿÿÝE€ÜÐþÿÿÝEˆÜðþÿÿÞÁÝEÜÿÿÿÞÁÝE˜Ü0ÿÿÿÞÁÝ8þÿÿÝE€ÜØþÿÿÝEˆÜøþÿÿÞÁÝEÜÿÿÿÞÁÝE˜Ü8ÿÿÿÞÁÝ@þÿÿÝE€ÜàþÿÿÝEˆÜÿÿÿÞÁÝEÜ ÿÿÿÞÁÝE˜Ü@ÿÿÿÞÁÝHþÿÿÝE€ÜèþÿÿÝEˆÜÿÿÿÞÁÝEÜ(ÿÿÿÞÁÝE˜ÜHÿÿÿÞÁÝPþÿÿÝE ÜÐþÿÿÝE¨ÜðþÿÿÞÁÝE°ÜÿÿÿÞÁÝE¸Ü0ÿÿÿÞÁÝXþÿÿÝE ÜØþÿÿÝE¨ÜøþÿÿÞÁÝE°ÜÿÿÿÞÁÝE¸Ü8ÿÿÿÞÁÝ`þÿÿÝE ÜàþÿÿÝE¨ÜÿÿÿÞÁÝE°Ü ÿÿÿÞÁÝE¸Ü@ÿÿÿÞÁÝhþÿÿÝE ÜèþÿÿÝE¨ÜÿÿÿÞÁÝE°Ü(ÿÿÿÞÁÝE¸ÜHÿÿÿÞÁÝpþÿÿÝEÀÜÐþÿÿÝEÈÜðþÿÿÞÁÝEÐÜÿÿÿÞÁÝEØÜ0ÿÿÿÞÁÝxþÿÿÝEÀÜØþÿÿÝEÈÜøþÿÿÞÁÝEÐÜÿÿÿÞÁÝEØÜ8ÿÿÿÞÁÝ€þÿÿÝEÀÜàþÿÿÝEÈÜÿÿÿÞÁÝEÐÜ ÿÿÿÞÁÝEØÜ@ÿÿÿÞÁ݈þÿÿÝEÀÜèþÿÿÝEÈÜÿÿÿÞÁÝEÐÜ(ÿÿÿÞÁÝEØÜHÿÿÿÞÁÝþÿÿÝEàÜÐþÿÿÝEèÜðþÿÿÞÁÝEðÜÿÿÿÞÁÝEøÜ0ÿÿÿÞÁݘþÿÿÝEàÜØþÿÿÝEèÜøþÿÿÞÁÝEðÜÿÿÿÞÁÝEøÜ8ÿÿÿÞÁÝ þÿÿÝEàÜàþÿÿÝEèÜÿÿÿÞÁÝEðÜ ÿÿÿÞÁÝEøÜ@ÿÿÿÞÁݨþÿÿÝEàÜèþÿÿÝEèÜÿÿÿÞÁÝEðÜ(ÿÿÿÞÁÝEøÜHÿÿÿÞÁݰþÿÿéÝE€Ý8þÿÿÝEˆÝ@þÿÿÝEÝHþÿÿÝE˜ÝPþÿÿÝE ÝXþÿÿÝE¨Ý`þÿÿÝE°ÝhþÿÿÝE¸ÝpþÿÿÝEÀÝxþÿÿÝEÈÝ€þÿÿÝEÐ݈þÿÿÝEØÝþÿÿÝEàݘþÿÿÝEèÝ þÿÿÝEðݨþÿÿÝEøÝ°þÿÿ‹UÝ… þÿÿÜ ‹EÝ…(þÿÿÜHÞÁ‹MÝ…0þÿÿÜIÞÁÝþÿÿÝ…þÿÿÜ þÿÿ‹UÜ*ÝPÿÿÿÝ…þÿÿÜ(þÿÿ‹EÜhÝXÿÿÿÝ…þÿÿÜ0þÿÿ‹MÜiÝ`ÿÿÿÝ…PÿÿÿÜPÿÿÿÝ…XÿÿÿÜXÿÿÿÞÁÝþÿÿÝ…`ÿÿÿÜ`ÿÿÿÜ…þÿÿÝ•þÿÿƒìÝ$è ƒÄÝþÿÿݘàÝ…þÿÿÚéßàöÄD‹†Ý¨àܵþÿÿÝþÿÿÝ…þÿÿÜPÿÿÿÝPÿÿÿÝ…þÿÿÜXÿÿÿÝXÿÿÿÝ…þÿÿÜ`ÿÿÿÝ`ÿÿÿÝ…XþÿÿݸþÿÿÝ…`þÿÿÝÀþÿÿÝ…hþÿÿÝÈþÿÿÝ…¸þÿÿÜPÿÿÿÝ…ÀþÿÿÜXÿÿÿÞÁÝ…ÈþÿÿÜ`ÿÿÿÞÁÝþÿÿÝ…8þÿÿݸþÿÿÝ…@þÿÿÝÀþÿÿÝ…HþÿÿÝÈþÿÿÝ…¸þÿÿÜPÿÿÿÝ…ÀþÿÿÜXÿÿÿÞÁÝ…ÈþÿÿÜ`ÿÿÿÞÁÝþÿÿÝ…þÿÿÝ]€Ý…þÿÿÙàÝ]ˆÝ˜àÝ]ݘàÝ]˜Ý…þÿÿÙàÙàÝ] Ý…þÿÿÝ]¨Ý˜àÝ]°Ý˜àÝ]¸Ý˜àÝ]ÀݘàÝ]ÈݨàÝ]ÐݘàÝ]ØÝ˜àÝ]àݘàÝ]èݘàÝ]ðݨàÝ]øÝE€Ü8þÿÿÝEˆÜXþÿÿÞÁÝEÜxþÿÿÞÁÝE˜Ü˜þÿÿÞÁ‹UÝÝE€Ü@þÿÿÝEˆÜ`þÿÿÞÁÝEÜ€þÿÿÞÁÝE˜Ü þÿÿÞÁ‹EÝXÝE€ÜHþÿÿÝEˆÜhþÿÿÞÁÝE܈þÿÿÞÁÝE˜Ü¨þÿÿÞÁ‹MÝYÝE€ÜPþÿÿÝEˆÜpþÿÿÞÁÝEÜþÿÿÞÁÝE˜Ü°þÿÿÞÁ‹UÝZÝE Ü8þÿÿÝE¨ÜXþÿÿÞÁÝE°ÜxþÿÿÞÁÝE¸Ü˜þÿÿÞÁ‹EÝX ÝE Ü@þÿÿÝE¨Ü`þÿÿÞÁÝE°Ü€þÿÿÞÁÝE¸Ü þÿÿÞÁ‹MÝY(ÝE ÜHþÿÿÝE¨ÜhþÿÿÞÁÝE°ÜˆþÿÿÞÁÝE¸Ü¨þÿÿÞÁ‹UÝZ0ÝE ÜPþÿÿÝE¨ÜpþÿÿÞÁÝE°ÜþÿÿÞÁÝE¸Ü°þÿÿÞÁ‹EÝX8ÝEÀÜ8þÿÿÝEÈÜXþÿÿÞÁÝEÐÜxþÿÿÞÁÝEØÜ˜þÿÿÞÁ‹MÝY@ÝEÀÜ@þÿÿÝEÈÜ`þÿÿÞÁÝEÐÜ€þÿÿÞÁÝEØÜ þÿÿÞÁ‹UÝZHÝEÀÜHþÿÿÝEÈÜhþÿÿÞÁÝEÐ܈þÿÿÞÁÝEØÜ¨þÿÿÞÁ‹EÝXPÝEÀÜPþÿÿÝEÈÜpþÿÿÞÁÝEÐÜþÿÿÞÁÝEØÜ°þÿÿÞÁ‹MÝYXÝEàÜ8þÿÿÝEèÜXþÿÿÞÁÝEðÜxþÿÿÞÁÝEøÜ˜þÿÿÞÁ‹UÝZ`ÝEàÜ@þÿÿÝEèÜ`þÿÿÞÁÝEðÜ€þÿÿÞÁÝEøÜ þÿÿÞÁ‹EÝXhÝEàÜHþÿÿÝEèÜhþÿÿÞÁÝEð܈þÿÿÞÁÝEøÜ¨þÿÿÞÁ‹MÝYpÝEàÜPþÿÿÝEèÜpþÿÿÞÁÝEðÜþÿÿÞÁÝEøÜ°þÿÿÞÁ‹UÝZxé¿‹EÝ…8þÿÿÝ‹MÝ…@þÿÿÝY‹UÝ…HþÿÿÝZ‹EÝ…PþÿÿÝX‹MÝ…XþÿÿÝY ‹UÝ…`þÿÿÝZ(‹EÝ…hþÿÿÝX0‹MÝ…pþÿÿÝY8‹UÝ…xþÿÿÝZ@‹EÝ…€þÿÿÝXH‹MÝ…ˆþÿÿÝYP‹UÝ…þÿÿÝZX‹EÝ…˜þÿÿÝX`‹MÝ… þÿÿÝYh‹UÝ…¨þÿÿÝZp‹EÝ…°þÿÿÝXx‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìì‹E‹M ÝÜ!Ýèþÿÿ‹U‹E ÝBÜ`Ýðþÿÿ‹M‹U ÝAÜbÝøþÿÿ‹EPèþÿÿQU€Rè/òÿÿƒÄ ݨàÝÿÿÿݘàÝÿÿÿݘàÝÿÿÿݘàÝÿÿÿݘàÝ ÿÿÿݨàÝ(ÿÿÿݘàÝ0ÿÿÿݘàÝ8ÿÿÿݘàÝ@ÿÿÿݘàÝHÿÿÿݨàÝPÿÿÿݘàÝXÿÿÿݘàÝ`ÿÿÿݘàÝhÿÿÿݘàÝpÿÿÿݨàÝxÿÿÿ‹E ÝÝ`ÿÿÿ‹M ÝAÝhÿÿÿ‹U ÝBÝpÿÿÿÝE€ÜÿÿÿÝEˆÜ ÿÿÿÞÁÝEÜ@ÿÿÿÞÁÝE˜Ü`ÿÿÿÞÁ‹EÝÝE€ÜÿÿÿÝEˆÜ(ÿÿÿÞÁÝEÜHÿÿÿÞÁÝE˜ÜhÿÿÿÞÁ‹MÝYÝE€ÜÿÿÿÝEˆÜ0ÿÿÿÞÁÝEÜPÿÿÿÞÁÝE˜ÜpÿÿÿÞÁ‹UÝZÝE€ÜÿÿÿÝEˆÜ8ÿÿÿÞÁÝEÜXÿÿÿÞÁÝE˜ÜxÿÿÿÞÁ‹EÝXÝE ÜÿÿÿÝE¨Ü ÿÿÿÞÁÝE°Ü@ÿÿÿÞÁÝE¸Ü`ÿÿÿÞÁ‹MÝY ÝE ÜÿÿÿÝE¨Ü(ÿÿÿÞÁÝE°ÜHÿÿÿÞÁÝE¸ÜhÿÿÿÞÁ‹UÝZ(ÝE ÜÿÿÿÝE¨Ü0ÿÿÿÞÁÝE°ÜPÿÿÿÞÁÝE¸ÜpÿÿÿÞÁ‹EÝX0ÝE ÜÿÿÿÝE¨Ü8ÿÿÿÞÁÝE°ÜXÿÿÿÞÁÝE¸ÜxÿÿÿÞÁ‹MÝY8ÝEÀÜÿÿÿÝEÈÜ ÿÿÿÞÁÝEÐÜ@ÿÿÿÞÁÝEØÜ`ÿÿÿÞÁ‹UÝZ@ÝEÀÜÿÿÿÝEÈÜ(ÿÿÿÞÁÝEÐÜHÿÿÿÞÁÝEØÜhÿÿÿÞÁ‹EÝXHÝEÀÜÿÿÿÝEÈÜ0ÿÿÿÞÁÝEÐÜPÿÿÿÞÁÝEØÜpÿÿÿÞÁ‹MÝYPÝEÀÜÿÿÿÝEÈÜ8ÿÿÿÞÁÝEÐÜXÿÿÿÞÁÝEØÜxÿÿÿÞÁ‹UÝZXÝEàÜÿÿÿÝEèÜ ÿÿÿÞÁÝEðÜ@ÿÿÿÞÁÝEøÜ`ÿÿÿÞÁ‹EÝX`ÝEàÜÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜHÿÿÿÞÁÝEøÜhÿÿÿÞÁ‹MÝYhÝEàÜÿÿÿÝEèÜ0ÿÿÿÞÁÝEðÜPÿÿÿÞÁÝEøÜpÿÿÿÞÁ‹UÝZpÝEàÜÿÿÿÝEèÜ8ÿÿÿÞÁÝEðÜXÿÿÿÞÁÝEøÜxÿÿÿÞÁ‹EÝXx‹å]Ãÿ%àÿ%àÿ%àÿ%àÿ% àÿ%àƒ=Hðÿuÿ%8àhDðhHðÿt$ è\ƒÄ Ãÿt$èÑÿÿÿ÷ØÀ÷ØYHÃÌÌÌÌÌÌÌÌÌÌÿ%Làÿ%Xàÿ%$àÿ%\àU‹ìƒì ƒäðÙÀÙT$ß|$ßl$‹T$‹D$…Àt<Þé…ÒyÙ$‹ $ñ€ÁÿÿÿƒÐ‹T$ƒÒë,Ù$‹ $ÁÿÿÿƒØ‹T$ƒÚë‹T$÷Âÿÿÿu¸Ù\$Ù\$ÉÃÌÿ%Hàÿ%@à‹D$…Àu98ð~.ÿ 8ðƒø‹ 0à‹ ‰ <ðuOh€ÿTà…ÀY£Hðu3Àëyƒ ¡Hð£DðèZh¬ÙèìþÿÿÇ$ðhðè9ÿ8ðYë?…Àu<¡Hð…Àt3ë‹ Dð‹ …ÉtÿÑ¡Hðƒ-Dð9DðsÞPÿPàƒ%HðY3À@ j h áè”3À@‰Eä3ÿ‰}ü‹u ;÷u 9=8ð„¬;ðtƒþu1¡@ð;Çt ÿuVÿuÿЉEä9}ä„…ÿuVÿuèåþÿÿ‰Eä;Çtr‹]SVÿuè ‰Eäƒþu;Çu SWÿuè»þÿÿ;÷tƒþu)SVÿuè¨þÿÿ…Àu‰}ä9}ät¡@ð;Çt SVÿuÿЉEäƒMüÿ‹Eäë‹Eì‹‹ PQè¨YYËeèƒMüÿ3Àèú ÿ%<àÿ%4àj h0áè¤ÇEä¨á}ä¨ás"ƒeü‹Eä‹…Àt ÿÐë3À@ËeèƒMüÿƒEäëÕè¨Ãj h@áè`ÇEä°á}ä°ás"ƒeü‹Eä‹…Àt ÿÐë3À@ËeèƒMüÿƒEäëÕèdÃÿ%,àƒ|$uƒ=@ðu ÿt$ÿà3À@ ÌÌhdÚd¡P‹D$‰l$l$+àSVW‹Eø‰eèP‹EüÇEüÿÿÿÿ‰EøEðd£Ã‹Mðd‰ Y_^[ÉQÃÿ%(à`ãpã¤ã’ã€ãPãjäÜãVäDä4ä(äääüãòãêã¼ãÄãÌãÖãâãÈâÖâæâöâã ãã2ã$ãºâ¬âíµ ÷ÆÀ>ð?9R¢Fß‘?@@-DTû!@€v@2@ð¿@@ÓBÎûÿï¿ÓBÎûÿï?333333ã¿333333ã?-DTû! @à?ÿÿÿÿ:ÙKÙÿÿÿÿ•Ù™ÙÿÿÿÿÙÙÝÙHð ádÚ|âBãdàâ²ãà<âä$à4â†äà`ãpã¤ã’ã€ãPãjäÜãVäDä4ä(äääüãòãêã¼ãÄãÌãÖãâãÈâÖâæâöâã ãã2ã$ãºâ¬â–glIsEnabledÔglPopMatrix,glColor4fv¶glMultMatrixdÙglPushMatrix¼glNormal3dvQglEndFglVertex3dv glBeginglColor3fvglTexCoord2dOPENGL32.dll gluDeleteTess gluEndPolygon2gluTessVertexgluBeginPolygon-gluTessCallbackgluNewTessGLU32.dllsqrt¬freeßmalloc’cosþsin™fabs„acosõreallocˆatan2k__dllonexit¸_onexitMSVCR71.dll?_initterm»_adjust_fdivL__CppXcptFilterñ_except_handler3‹DisableThreadLibraryCallsKERNEL32.dllóɇFÂåÈä,åå 0дP!€ðа#µ`@µP#àŠЉ0Š °Ã ÁpÄ`ŠÅ€ÒÌåÙåéåøåæ ææ)æ2æBæQæ[æmæ|æ†æ˜æ§æ°æºæÅæÕæßæêæöæç gle32.dllgleExtrusiongleGetJoinStylegleGetNumSidesgleHelicoidgleLatheglePolyConeglePolyCylindergleScrewgleSetJoinStylegleSetNumSidesgleSpiralgleSuperExtrusiongleTextureModegleToroidgleTwistExtrusionrot_about_axisrot_axisrot_omegarot_princeurot_about_axisurot_axisurot_omegaurot_princeuview_directionuviewpointNæ@»°000$050B0G0T0f0s0x0…0‘00¨0´0À0Ë0×0ã0 11‘1•1™1 222(242@2R2Ñ3 4404A4M4V4a4p4~4Û45D5W5j5“5¦5Ê5ï56z6­6è6 777*737w7Ÿ7Ã7é7Q8!:8:k:û=>>>(>Y>i>Ž>¬>ì>þ>9?B?è?ô? „00;0P0‚0‹0”00¦0¯0¸0Ä0Ö0ß0 1 1T1·1Ã1Ï1/2;2D2O2^2f2u2ƒ273T3»3á3ô3Z4l4Ð4Ý45 55M5Y5e5q5z5ƒ5,7Ä7Ü7ô78ú8D9f9¿:v;;/=À=Í=3?R?0@™0A1®183Q3ô3l5…5ì7N8÷899(9.9Y;ç;ÿ;<<<·<è<0=W=¨=n>Z?@\40ð0{1“1«1Ì12,2B2N2W2`2™2¥2±2½2Æ2Ï2ó2;56d6†6ß7–8¯8u:’:§:È:#;<;‰;Ñ;¡<®<Ï<<=T=l= ?PPØ0ñ01!1y1’1Ö12Ó2à2û2[3h3V9u9¼:d;p;ý;¯<Ç<Í<à<æº>l?„?Š??£?``02°2È2Î2á2ç2d3q3ƒ3•34»4d5|5‚5•5›5657Ú7©8ž9:f;k;;c<„<¨<=±=Õ=L>þ>?.?R??–?«?Ê?æ?ö?p`00'070G0]1•1ú12e3 34 4‘4¡4±4Ã4Ñ4á4ñ476u67 7T8’8$9*9Ç9õ9{:;;;';-;3!>'>:>@>€t’0i11‡1š1 1 3Z4r4x4‹4‘4„5Ÿ5¥5°5¾5Ë5Ö5ê5ú566#6+6?6O6T6h6x6~6‘6¡6§6²6»6797¿7F8U8[8k8q8å9ô9õ:Æ;Þ;ä;÷;ý;X?¸/0G0M0`0f0k1ˆ2G34442484y5Ÿ5¥5°5¾5Ë5Ð5å5õ566$646:6M6]6e6y6‰6Ž6¢6²6¸6Ë6Û6ð6777)797?7N7^7d7x7ˆ7’7¢7²7¸7Ë7Û7á7ñ7888*808?8O8U8i8y8~8Š8“8Ï89\9e9n92;ƒ<×<ù<@>â>ø>e?z??Î?Û? Ø#0°0"2s2’2Ç3›4555,5<5R5[5j5z5ã5‡6©6¯6¸6È6Ø6û67 77)7?7í8;9_9t9‰9:$:9:·:Ï:Ü:;';<;L;Z;p;€;‹;­;¶;Ê;Ú;ç;û; <<<&<+<;<‡<Ÿ<¬<ï<= =!=1=I=O=e=u==¥=»=Á=Õ=å=ý=>>&>,>7>@>F>a>i>>È>Ð>è>õ>7?G?W?|?…?›?«?¹?Ï?ß?é?°Ð00'070N0W0j0z0ˆ0œ0¬0±0½0Æ0Ì0Þ0ê0ó011161?1N1^1˜1 1¸1Å1ö12*2:2_2g2|2Œ2œ2¡2±2Á2Ï2å2õ2ÿ2!383H3X3o3x3Œ3œ3¬3Â3Ò3â3ð3444$4-434R4X4d4m4|4Œ4”4º4À4É4Ù4é45 585E5Š5š5ª5Ï5Ø5î5þ5 6"626]6f666œ6´6Ä6Ï677(7S7\7u7…7’7ª7º7Ñ7Ú7í7ý7 88/848@8I8O8a8m8v8…8•88¹8Â8Ñ8á89 989E9y9ž9­9½9â9ê9ÿ9::$:4:D:R:h:x:‹:‘: :°:Û:ã:û: ;; ;0;@;N;g;w;;»;Ñ;ü; <>!>)>O>U>^>m>}>¶>Ã>È>Õ>á>í>ø>???'?3?Y?Ý?á?å?é?À|Y0f0k0x0„00¢0!2\2n2€2‘22¦2±2À2Î2+3P3”3§3º3ã3ö34?4o4Ê4ý485f5}555¯5Ä5Ô5ä5ö5a6q6ƒ6’6›6¤6@7U7À7ï7E:Ù>????Ÿ?µ?Í?Ú?ÐÐ00"080B0G0b0x0ƒ0—00±0Á0Ë0Ñ0ä0ô0ú011%1=1J1r1w11£1©1Å1Û1å1ë122282N2Y2r2x2‡2—22±2Á2Ë2Ñ2à2ð2ö2 333+343E3]3j3•3š3°3Æ3Ì3è3þ344#494?4[4q4{44—4­4²4Ó4ì4ö4û45'5-5O5h5r5‹55©5Â5È5ê56 66+6D6J6l6…66•6®6Ç6Ì6à6ð6ú6772777K7[7a7m7v7…77ª7Ò7×7í78 8%8;8E8K8`8v8|8˜8®8¹8Ò8Ø8ç8÷8ý89!9+919@9P9V9j9z99‹9”9¥9½9Ê9õ9ú9:&:,:H:^:h:n:ƒ:™:Ÿ:»:Ñ:Û:á:÷: ;;3;L;V;[;q;‡;;¯;È;Ò;ë;ð; <"<(> >2>A>P>`>n>ƒ>—>¼?ô?àdY0_0Ä1ÿ1y223 303B3Q3`3p3~3“3§3À4ø4]5c5•6Ð6J7P7Â7Ë7Ô7 88%818:8C8ì9„:œ:´:ß:º;<&<=6>O>ï?ð@€00ó12Y34n4ø56´6,8E8¬:;·;Ï;Õ;è;î;>§>¿>Å>Ø>Þ>w?¨?ð?\0h0.12ô2°3;4S4k4Œ4Ð4ì4555 5Y5e5q5}5†55³5û7Ú8$9F9Ÿ:V;o;5=R=g=ˆ=ã=ü=I>‘>a?n??ü?@0,0Ë1˜3±3Æ3á394R4–4Þ4“5 5»56(6<5<|=$>0>½>o?‡?? ?¦? \#000B0T0Ó0z1,2D2J2]2c2Ý2Ç4p5ˆ5Ž5¡5§5$616C6U6Ô6{7$8<8B8U8[8Õ8õ9š:i;^+>O>#?D?h?0tP0q0•0 1¾1Ö1î12A2V2k2Š2¦2¶2Æ2Ø2ç2÷234U4º4À4%6`6Ú6à6Q7a7q7ƒ7‘7¡7±7÷859Ç9Í9;R;ä;ê;‡<µ<;=Â=Ñ=×=ç=í=ó>?û?@|Ì0á0ç0ú01R3)4A4G4Z4`4`672787K7Q7D8_8e8p8~8‹8–8ª8º8À8Ó8ã8ë8ÿ899(989>9Q9a9g9r9{9Á9ù9:;;;+;1;¥<´<µ=†>ž>¤>·>½>P°2ï23 3 3&3+4H56Á6Ù6ß6ò6ø698_8e8p8~8‹88¥8µ8Å8Ð8ä8ô8ú8 99%999I9N9b9r9x9‹9›9°9À9Ð9Õ9é9ù9ÿ9::$:8:H:R:b:r:x:‹:›:¡:±:Á:Æ:Ú:ê:ð:ÿ:;;);9;>;J;S;Ã;†<Ÿ%>2>J>Z>q>z>>>«>¿>Ï>Ô>à>é>ï>? ??%?5?=?Y?b?q??¸?À?Ø?å?€H0>0M0]0‚0Š0Ÿ0¯0¿0Ä0Ô0ä0ò011+111@1P1{1ƒ1›1«1»1À1Ð1à1î122!2[2q2œ2¬2¼2Á2Ù2é2ù2þ233,3E3U3h3~3Ž3ž3µ3½3Ñ3á3ñ3÷344$484H4N4Z4c4h4‡44™4¡4±4Á4É4ï4õ4þ4 55š5)686>6N6T6z77¢7®7º7Ë7 8 8T8{8¾8Î8v9ˆ9ø9(:O:À:Ç:-;1;5;9;h;s;;‹;—;µ;Á;á;í;ù;<<(<3>/>D>T>d>v>á>ñ>???$?À?Õ?@0o0Å2Y7€77¿7858M8Z8z8–8¬8²8Î8ä8î8ÿ89#9(9<9L9R9^9g9u99š9Â9Ç9â9ø9::":8:C:W:]:q::‹:‘:¤:´:º:Å:Î:å:ý: ;.;D;Z;_;z;;–;²;È;Ó;ã;ó;< <<,<2!>+>1>@>P>V>j>z>>‹>”>¥>½>Ê>ñ>??"?=?S?Y?u?‹?‘?³?Ì?Ñ?ò? ä 00*0B0[0a0ƒ0œ0¢0Ä0Ý0â0ö01 11/151@1I1e1}1Š1µ1º1Ð1æ1ì122(2.2C2Y2_2{2‘2›2¡2·2Í2Ò2ó2 33313G3M3o3ˆ3’3«3°3É3â3è3 4#4-434K4d4j4Œ4¥4¯4µ4Î4ç4ì4555 595R5W5k5{555–5¥5½5Ê5î5666:6P6V6l6‚6‡6¢6¸6Ã6×6æ6ö6ü67 7%757E7K7^7n7t77ˆ7•7­7º7â7ç7ý78858K8U8[8p8†8Œ8¨8¾8É8â8è8÷89 9!919;9A9P9`9f9z9Š99›9¤9µ9Í9Ú9::-:2:M:c:i::•:š:µ:Ë:Ñ:ç:ý:;#;<;B;X;n;s;”;­;¸;Ì;ä;ý;<%<>&>,>H>^>h>n>ƒ>™>Ÿ>»>Ñ>Û>á>÷> ??3?L?V?[?q?‡??¯?È?Ò?ë?ð?°ô 0"0(0J0c0m0s0‹0¤0ª0Ì0å0ï0õ01'1,1@1P1Z1`1y1’1—1«1»1Á1Í1Ö1ë1Õ2á2í2ù233)333;3H3O3X3·3Û3õ34 4Õ4â4ç4ô4555)5F5S5X5e5k5u5{5†5Œ5—55¨5®5¼5Â5ó5ø5þ56 66"6(6.656;6B6L6R6X6_6e6v6|6‚6‰66 6¦6¬6³6¹6Ê6Ð6Ö6Ý6ã6ê6ô6ú677 77$7*71777H7N7T7[7a7o7u7{7‚7ˆ77–7œ7¢7©7¯7½7Ã7É7Ð7Ö7ñ7÷78888&8,888>8M8S8b8n8z8‡8”8 8¯8³8·8»8¿8Ã8Ç8Ë8Ï8Ó8×8Û8ê8ö899$9/9†9:::+:1:9:E:Q:\:h:u::‘:œ:¨:¸:Á:Ì:Ø:è:ó:ÿ:;;6;M;Y;e;Ž;£;à;D>$>.>:>J>S>e>}>ˆ>‘>©>Í>Ù>å>?#?X?¤?º?Ì?å?À´J0b0n0w00­0¹0Å0ÿ01D1Z1l1…1«1Á2P3\3h3t3€3Œ3˜3»3 4¯4z5“5ç5 6"6+646=6F6Z6n6w6€6‰6’6 6©6²6»6Ä6Í6Ö6ß6è6ñ6ú67 777'7G7Ÿ7¸78$8J8V8b8n8z8†8’8ž8ª8¶8=0=0>9>X>a>j>s>|>…>Ž>—> >©>ÐÖ2â2î2ú2333*363B3N3Z3f3r3~3Š3¼6Â6È6Î6Ô6Ú6à6é6î6ó6"7(7.747°7¶7Ä7Ì7Õ7Ý7ê7ò78888 8+878C8P8V8]8f8l8{8˜8¬89^9d9k9w9~9¯9»9Â9ò9ÿ9 ::f:à$1(14181D1H1Œ11PyOpenGL-3.0.2/OpenGL/DLLS/glut_README.txt0000644000175000001440000006352612025001653020536 0ustar mcfletchusers00000000000000 GLUT for Win32 README --------------------- VERSION/INFO: This is GLUT for Win32 version 3.7.6 as of Nov 8th 2001. See the COPYRIGHT section for distribution and copyright notices. Send all bug reports and questions for this version of GLUT to Nate Robins [nate@pobox.com]. For more information about GLUT for Win32, see the web page: www.pobox.com/~nate/glut.html or subscribe to the GLUT for Win32 mailing list by sending e-mail to majordomo@perp.com with "subscribe glut" in the body of the message. For general information about GLUT, see the GLUT web page: http://reality.sgi.com/opengl/glut3/glut3.html and be sure to check the GLUT FAQ first for any questions that you may have: http://reality.sgi.com/opengl/glut3/glut-faq.html COMPILING/INSTALLATION: o Precompiled versions of the DLL and import library can be found on the GLUT for Win32 web page mentioned above. o Microsoft Developer Studio 6 workspace and project files have been included in the source code distribution. To build the glut dll: First, open Microsoft Developer Studio. Then, select File -> Open Workspace and find the glut.dsw file in the file dialog and double-click on it. Finally, select Build -> Build glut32.dll. When the build is finished, it will copy: glut32.dll to %WinDir%\System, glut32.lib to $(MSDevDir)\..\..\VC98\lib, and glut.h to $(MSDevDir)\..\..\VC98\include\GL. Additional workspace files have been included in the progs, test and lib directories to build the progs, tests and libs respectively. BORLAND NOTES: From what I understand, Borland supplies a utility that converts Microsoft Visual C++ .libs into Borland compatible files. Therefore, the best method for Borland users is probably to get the precompiled versions of the library and convert the library. To create an import library for Borland from the DLLs, use the following command (from a command prompt): IMPLIB glut32.lib glut32.dll If IMPLIB crashes when called this way, try IMPLIB glut32.lib glut32.def using the glut32.def file in this distribution. FORTRAN NOTES: Bill Mitchell [william.mitchell@nist.gov] has put considerable effort into getting GLUT to work with different compilers for Fortran 90. He indicates that you should copy the f90glut.h file to your $(MSDevDir)\..\..\VC98\include\GL directory. Then, just build GLUT as usual. The Fortran 90 interface, f90gl, can be obtained at http://math.nist.gov/f90gl and contains installation instructions and usage examples. MISC NOTES: o Overlay support is not implemented, nor are there any plans to implement it in the near future. o To customize the windows icon, you can use the resource name GLUT_ICON. For example, create an icon named "glut.ico", and create a file called glut.rc that contains the following: GLUT_ICON ICON glut.ico then compile the glut.rc file with the following: rc /r glut and link the resulting glut.res file into your executable (just like you would an object file). Alternatively, you can simply add the glut.rc file to your project if you are using Microsoft Developer Studio. IMPLEMENTATION DEPENDENT DIFFERENCES: There are a few differences between the Win32 version of GLUT and the X11 version of GLUT. Those are outlined here. Note that MOST of these differences are allowed by the GLUT specification. Bugs and unsupported features are outlined in the UNSUPPORTED/BUGS section. o glutInit: The following command line options have no meaning (and are ignored) in GLUT for Win32: -display, -indirect, -direct, -sync. o glutInitWindowPosition, glutPositionWindow: Win32 has two different coordinate systems for windows. One is in terms of client space and the other is the whole window space (including the decorations). If you glutPositionWindow(0, 0), GLUT for Win32 will place the window CLIENT area at 0, 0. This will cause the window decorations (title bar and left edge) to be OFF-SCREEN, but it gives the user the most flexibility in positioning. HOWEVER, if the user specifies glutInitWindowPosition(0, 0), the window is placed relative to window space at 0, 0. This will cause the window to be opened in the upper left corner with all the decorations showing. This behaviour is acceptable under the current GLUT specification. o glutSetIconTitle, glutSetWindowTitle: There is no separation between Icon title and Window title in Win32. Therefore, setting an icon title in Win32 has no effect. o glutSetCursor: As indicated in the GLUT specification, cursors may be different on different platforms. This is the case in GLUT for Win32. For the most part, the cursors will match the meaning, but not necessarily the shape. Notable exceptions are the GLUT_CURSOR_INFO & GLUT_CURSOR_SPRAY which use the crosshair cursor and the GLUT_CURSOR_CYCLE which uses the 'no' or 'destroy' cursor in Win32. o glutVisibilityFunc: Win32 seems to be unable to determine if a window is fully obscured. Therefore, the visibility of a GLUT window is only reflected by its Iconic, Hidden or Shown state. That is, even if a window is fully obscured, in GLUT for Win32, it is still "visible". o glutEntryFunc: Window Focus is handled differently in Win32 and X. Specifically, the "window manager" in Win32 uses a "click to focus" policy. That is, in order for a window to receive focus, a mouse button must be clicked in it. Likewise, in order for a window to loose focus, a mouse button must be clicked outside the window (or in another window). Therefore, the Enter and Leave notification provided by GLUT may behave differently in the Win32 and in X11 versions. There is a viable workaround for this. A program called "Tweak UI" is provided by Microsoft which can be used to change the focus policy in Win32 to "focus follows mouse". It is available from the Microsoft Web Pages: http://www.microsoft.com/windows/software/PowerToy.htm o glutCopyColormap: GLUT for Win32 always copies the colormap. There is never any sharing of colormaps. This is probably okay, since Win32 merges the logical palette and the physical palette anyway, so even if there are two windows with totally different colors in their colormaps, Win32 will find a (hopefully) good match between them. o glutIdleFunc + menus: The glut idle function will NOT be called when a menu is active. This causes all animation to stop when a menu is active (in general, this is probably okay). Timer functions will still fire, however. If the timer callback draws into the rendering context, the drawing will not show up until after the menu has finished, though. UNSUPPORTED/BUGS: o glutAttachMenu: Win32 only likes to work with left and right mouse buttons. Especially so with popup menus. Therefore, when attaching the menu to the middle mouse button, the LEFT mouse button must be used to select from the menu. o glutSpaceball*, glutButtonBox*, glutTablet*, glutDials*: None of the special input devices are supported at this time. o When resizing or moving a GLUT for Win32 window, no updating is performed. This causes the window to leave "tracks" on the screen when getting bigger or when previously obscured parts are being revealed. I put in a bit of a kludgy workaround for those that absolutely can't have the weird lines. The reshape callback is called multiple times for reshapes. Therefore, in the reshape callback, some drawing can be done. It should probably be limited to a color buffer clear. o The video resizing capabilities of GLUT 3.3+ for X11 is currently unimplemented (this is probably ok, since it really isn't part of the spec until 4.0). I doubt that this will ever be part of GLUT for Win32, since there is no hardware to support it. A hack could simply change the resolution of the desktop. CHANGES/FIXES: (Nov 8, '01) x Released 3.7.6 (Nov 8, '01) x Changed fullscreen mode from TOPMOST back to simply TOP, since (it turns out) many people use windows atop a GLUT window. (Nov 8, '01) x Added code to prevent CPU spiking when no idle function is registered. Otherwise, if an idle function is registered, spike CPU so that the idle function gets all the attention it needs and if this is a problem on the program side, the user can stick a sleep() in their idle function. I believe that this strikes the best balance betweeen GLUT being fast, and also being "nice" to other processes. Thanks to James Wright for reporting this bug. (Nov 8, '01) x Fixed bug in motion callback handler which wasn't setting the current window, so multiple window apps (e.g., any GLUI app) wouldn't get the callback correctly. (Oct 4, '01) x Fixed bug in glutEnterGameMode() that caused new windows to not be in "fullscreen" mode, so they got window decorations. (Oct 4, '01) x Fixed bug in glutEnterGameMode() that caused new windows to not be in "fullscreen" mode, so they got window decorations. (Oct 3, '01) x Fixed bug in getVisualInfoFromString(): visuals not reloaded on display mode change. Reload visuals each time they are queried. This fixes a problem with Win32 because the list of availabe Visuals (Pixelformats) changes after a change in displaymode. The problem occurs when switching to gamemode and back. Thanks to Michael Wimmer for pointing this out & providing the fix. (Oct 3, '01) x Fixed bug in XGetVisualInfo(): pixelformats enumerated incorrectly. Passing 0 as a pixelformat index to DescribePixelFormat gives unpredictible results (e.g., this fails on the Voodoo opengl32.dll and always reports 0 as the last available pixelformat index). Thanks to Michael Wimmer for pointing this out & providing the fix. (Oct 3, '01) x Fixed bug in glXGetConfig(): pixelformats enumerated incorrectly. The test was OpenGL support OR draw to window, but should be AND. Thanks to Michael Wimmer for pointing this out & providing the fix. (Sep 28, '01) x Fixed glutChangeToSubMenu()/glutChangeToMenuEntry() bug where if you went back and forth between a submenu and a plain entry, the submenu wouldn't be updated properly. (Sep 28, '01) x glutSetIconTitle() is now a nop. (Sep 28, '01) x glutFullScreen() now sets the window as TOPMOST, therefore, the window will always be on top (this essentially disables alt-tabbing). (Sep 28, '01) x The key repeat ignore flag is now honored correctly. (Sep 28, '01) x Key presses are now reported more accurately and fully, in particular, modified up events (i.e., SHIFT-2) are now reported correctly. (Sep 28, '01) x Subwindows nested arbitrarily deep get their keyboard callbacks correctly now. (Sep 28, '01) x Major rewrite of the window procedure code to clean it up and make way for other bug fixes. (Sep 23, '01) x Fixed noof example program to use RAND_MAX instead of assumed max of 2147483647.0. (Now it looks _much_ better!) (Sep 22, '01) x Fixed sunlight example program. globe.raw data file was corrupt, added a new one. (Sep 22, '01) x Fixed zcomposite example program to print message if overlay support is not found (instead of crashing). (Jan 22, '01) x Fixed malloc(0) bug in Win32 version of XGetVisualInfo. Thanks to Kekoa Proudfoot for bringing this to my attention. (Dec 12, '00) x Added data files for the advanced & advanced97 programs. (Dec 12, '00) x Added Developer Studio 6 project and workspace files for pretty much everything (the stuff left out was usually unix specific). (Dec 7, '00) x Fixed several compilation problems & corrupt files. Thanks to Alexander Stohr for bringing these to my attention and providing detailed fixes. (Dec 6, '00) x Fixed compiler support for lcc. Thanks to Gordon for bringing this to my attention and debugging fixes. (Nov 8, '00) x Fixed submenu problem (sometimes the menu callback was not called for valid items). Thanks to Michael Keeley. (Oct 16, '00) x Corrected corrupt duck.iv file. Thanks to Jon Willeke for finding this problem. (Sept 27, '00) x Fixed bug in processWorkList that could cause a hang. Thanks to Bill Volz & Daniel Azuma. (Sept 26, '00) x Added mui DLL project file (thanks to DMWeldy@ugsolutions.com). (Sept 9, '00) x Fixed Delete key bug (crash when no keyboard callback was registered, but a special key callback was). Thanks to Kent Bowling (kent_bowling@hotmail.com) for finding this bug. (May 18, '00) x Fixed subwindow keyboard callbacks. (May 22, '97) o Menus don't work under Windows 95 x Fixed! Added a unique identifier to each menu item, and a search function to grab a menu item given the unique identifier. (May 21, '97) o A few minor bug fixes here and there. x Thanks to Bruce Silberman and Chris Vale for their help with this. We now have a DLL! (Apr 25, '97) o DLL version of the library is coming (as soon as I figure out how to do it -- if you know, let me know). x Thanks to Bruce Silberman and Chris Vale for their help with this. We now have a DLL! (Apr 24, '97) x Added returns to KEY_DOWN etc messages so that the F10 key doesn't toggle the system menu anymore. (Apr 7, '97) o Palette is incorrect for modes other than TrueColor. x Fixed this by forcing a default palette in modes that aren't Truecolor in order to 'simulate' it. The applications program shouldn't have to do this IMHO, but I guess we can't argue with Microsoft (well, we can, but what good will it do?). (Apr 2, '97) x Added glut.ide file for Borland users. (Apr 2, '97) x Fixed a bug in the WM_QUERYNEWPALETTE message. Wasn't checking for a null colormap, then de-ref'd it. Oops. (Mar 13, '97) o glutTimerFunc: Currently, GLUT for Win32 programs busy waits when there is an outstanding timer event (i.e., there is no select() call). I haven't found this to be a problem, but I plan to fix it just because I can't bear the thought of a busy wait. x Added a timer event and a wait in the main loop. This fixes the CPU spike. (Mar 11, '97) x Fixed subwindow visibility. The visibility callback of subwindows wasn't being called, now it is. (Mar 11, '97) o glutGetHDC, glutGetHWND: In order to support additional dialog boxes, wgl fonts, and a host of other Win32 dependent structures, two functions have been added that operate on the current window in GLUT. The first (glutGetHDC) returns a handle to the current windows device context. The second (glutGetHWND) returns handle to the current window. x Took these out to preserve GLUT portability. (Mar 11, '97) x Fixed the glutWarpPointer() coordinates. Were relative to the screen, now relative to window (client area) origin (which is what they're supposed to be). (Mar 11, '97) o glutCreateMenu, glutIdleFunc: Menu's are modal in Win32. That is, they don't allow any messages to be processed while they are up. Therefore, if an idle function exists, it will not be called while processing a menu. x Fixed! I've put in a timer function that fires every millisecond while a menu is up. The timer function handles idle and timer events only (which should be the only functions that are firing when a menu is up anyway). (Mar 7 '97) x Fixed minor bugs tracked down by the example programs. (Mar 6, '97) x Merged 3.3 GLUT for X11 into 3.2 GLUT for Win32. New code structure allows for EASY merging! o In Win32, the parent gets the right to set the cursor of any of its children. Therefore, a child windows cursor will 'blink' between its cursor and its parent. x Fixed this by checking whether the cursor is in a child window or not. (Feb 28 '97) o On initial bringup apps are getting 2 display callbacks. x Fixed by the Fev 28 re-write. o Some multiple window (not subwindow) functionality is messed up. See the sphere.exe program. x Fixed by the Feb 28 re-write. o GLUT for Win32 supports color index mode ONLY in a paletted display mode (i.e., 256 or 16 color mode). x Fixed this in the re-write. If you can get a color index visual (pixel format) you can use color index mode. (Feb 28 '97) o Quite a few bugs (and incompatibilities) were being caused by the structure that I used in the previous port of GLUT. Therefore I decided that it would be best to "get back to the roots". I re-implemented most of glut trying to stick with the structure layed out by Mark. The result is a much more stable version that passes ALL (!) (except overlay) the tests provided by Mark. In addition, this new structure will allow future enhancements by Mark to be integrated much more quickly into the Win32 version. Also, I'm now ordering the bugs in reverse, so that the most recently fixed appear at the top of the list. (9/8/96) o Changed the glutGetModifiers code to produce an error if not called in the core input callbacks. (9/11/96) o If the alt key is pressed with more than one other modifier key it acts as if it is stuck -- it stays selected until pressed and released again. x Fixed. (9/12/96) o When a submenu is attached to a menu, sometimes a GPF occurs. Fixed. Needed to set the submenu before referencing it's members. o Kenny: Also, one little problem, I attached the menu to the right-button, but when the left-button is pressed I detach it to give the right-button new meaning; if I pop-up the menu and I don't want to select anything, like most users, I click off of the menu to make it disappear. When I do this, I get a GLUT error and the program terminates because I am altering the menu attachment from within the button press while the menu is active. x Fixed. Needed to finish the menu when the user presses the button, not just when a button is released. o GLUT for Win32 emulates a middle mouse button by checking if both mouse buttons are down. This causes a lot of problems with the menu and other multiple mouse button things. x Fixed. No more middle mouse button emulation. Perhaps it would be a good idea to emulate the middle mouse button (if not present) with a key? (9/15/96) o Added code to accept a user defined icon. If no icon is provided, a default icon is loaded. (9/19/96) o Shane: Command line options seem to be screwed up. (9/13) x Fixed. The geometry command line was broken, and so was the gldebug command line. o Fixed a bug in the default glut reshape. It was looking for the parent of the current window and GPF'ing if there wasn't a parent. Put in a check for a parent, and if none is there, use the child. o Idle function sucks up all processor cycles. (9/8/96) x I don't know if this is avoidable. If you have a tight rendering loop, it may be that the processor time is going to be sucked up no matter what. You can add a sleep() to the end of your render loop if you would like to yeild to other processes and you don't care too much about the speed of your rendering loop. If you have Hardware that supports OpenGL (like a 3Dpro card, or GLint card) then this should be less of a problem, since it won't be rendering in software. (9/11/96) o If a window is fully obscured by another window, the visibility callback is NOT called. As far as I can tell, this is a limitation of the Win32 api, but a workaround is being searched for. (9/8/96) x Limitation of the Win32 API o Fixed the entry functions. They only work if the keyboard focus changes. Therefore, in most Win32 systems, the mouse must be pressed outside of the window to get a GLUT_LEFT message and then pressed inside the window for a GLUT_ENTERED message. o Alt modifier key doesn't work with keyboard callback. (9/8/96) x Probably okay, because the glut spec says that these keys can be intercepted by the system (which the alt key is...) (9/11/96) (11/17/96) o glutRemoveMenuItem() not working properly. x Thanks to Gary (grc@maple.civeng.rutgers.edu) for the fix to this one. o Timer functions are messed up. x Thanks to Joseph Galbraith for the fix to this one. (12/9/96) o One (minor) difference came up between the X version of glut and the nt one which you should know about. It is not a new problem, and it concerns co-ords returned to the pointer callbacks. (glutMotionFunc, glutMouseFunc) Under X, you get co-ords in the range 0 +/- 2^15, under NT you get 0..2^16. This is only really a problem when moving above or to the left of the window. eg dragging one pixel ABOVE the window will give :- under x11 : y = -1 under nt : y = 2^16 -1 x Put in fix provided by Shane Clauson. (12/17/96) o Idle functions not working properly for multiple windows. x Fixed this by posting an idle message to every window in the window list when idle. (12/18/96) o glutSetCursor() was misbehaving (lthomas@cco.caltech.edu). x Win32 requires that the hCursor member of the window class be set to NULL when the class is registered or whenever the mouse is moved, the original cursor is replaced (go figure!). Now sets the cursor whenever a WM_MOUSEMOVE message is received, because the WM_SETCURSOR event resets the cursor even when in the decoration area. o Geometry is not being handled quite right. The numbers don't take into account the window decorations. That is, if I say make a window 100x100, then the WHOLE window (not just the client area) is 100x100. Therefore, the client (opengl) area is smaller than 100x100. (9/8/96) x Fixed. Added code to subtract the decoration size on glutGet() and add the decoration size on glutReshapeWindow(). o Multiple glutPostRedisplay() calls are NOT being combined. To get round the "coalesce" problem on glutPostRedisplay, the easiest solution is to roll-your-own coalesce by keeping a global "dirty" flag in the app (eg replace all calls to glutPostRedisplay with image_dirty=TRUE;), and to handle image_dirty with a single glutPostRedisplay in the idle callback when required. (erk - but increases performance for my particular app (a rendering engine on the end of a pipleine with a stream of graphics updates) by a couple of orders of magnitude ! ) (9/8/96) x Added code to coalesce redisplays. Every idle cycle, a check is made to see which windows need redisplay, if they need it, a redisplay is posted. The glutPostRedisplay() call is just a stub that sets a flag. THANKS: Special thanks to the following people for extensive testing, suggestions, fixes and help: Alexander Stohr Shane Clauson Kenny Hoff Richard Readings Paul McQuesten Philip Winston JaeWoo Ahn Joseph Galbraith Paula Higgins Sam Fortin Chris Vale Bill Mitchell and of course, the original author of GLUT: Mark Kilgard. and many others... COPYRIGHT: The OpenGL Utility Toolkit distribution for Win32 (Windows NT & Windows 95) contains source code modified from the original source code for GLUT version 3.3 which was developed by Mark J. Kilgard. The original source code for GLUT is Copyright 1997 by Mark J. Kilgard. GLUT for Win32 is Copyright 1997 by Nate Robins and is not in the public domain, but it is freely distributable without licensing fees. It is provided without guarantee or warrantee expressed or implied. It was ported with the permission of Mark J. Kilgard by Nate Robins. THIS SOURCE CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OR MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. OpenGL (R) is a registered trademark of Silicon Graphics, Inc. PyOpenGL-3.0.2/OpenGL/DLLS/opengle64.vc9.dll0000755000175000001440000056000012025001653020775 0ustar mcfletchusers00000000000000MZÿÿ¸@躴 Í!¸LÍ!This program cannot be run in DOS mode. $Á ´…kÚU…kÚU…kÚUŒIU‡kÚUŒ^U‡kÚU¢­¡U‚kÚU…kÛUªkÚUŒYUkÚUŒHU„kÚUŒKU„kÚURich…kÚUPEd†L3NOð"  Â(΀ °ëyÀæd¸ à˜.textQÁ `.rdata)àÆ@@.data€ðÖ@À.pdata¸Ø@@.reloc Þ@B‰L$Hƒì(Hƒ=àuè¹€H‰àH ;‚èιH‹ ïß‹D$0‰A0HƒÄ(ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌHƒì(Hƒ=Äßuèm€H‰¶ßH ï肹H‹£ß‹@0HƒÄ(ÃÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HƒìXHƒ=qßuè€H‰cßH œè/¹H‹ Pß‹D$`‰AHH‹ BßH‹D$hH‰APH‹ 2ßH‹D$pH‰AXH‹ "ßH‹D$xH‰A`H‹ ß‹„$€‰AhH‹ ßH‹„$ˆH‰ApH‹ îÞH‹„$H‰AxH‹ ÛÞH‹„$˜H‰€H‹ÅÞ‹@0ƒà‰D$@ƒ|$@t"ƒ|$@tjƒ|$@Žõƒ|$@Ž éåH‹„$˜H‰D$8H‹„$H‰D$0H‹„$ˆH‰D$(‹„$€‰D$ L‹L$xL‹D$pH‹T$h‹L$`è é–H‹„$˜H‰D$8H‹„$H‰D$0H‹„$ˆH‰D$(‹„$€‰D$ L‹L$xL‹D$pH‹T$h‹L$`è©KëJH‹„$˜H‰D$8H‹„$H‰D$0H‹„$ˆH‰D$(‹„$€‰D$ L‹L$xL‹D$pH‹T$h‹L$`èÝwHƒÄXÃÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HƒìHHÇD$8H‹„$€H‰D$0H‹D$xH‰D$(‹D$p‰D$ L‹L$hL‹D$`H‹T$X‹L$Pè¹ýÿÿHƒÄHÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌò\$ L‰D$H‰T$‰L$Hƒì8HÇD$ ò\$XL‹D$PH‹T$H‹L$@èHƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌò\$ L‰D$H‰T$‰L$HìÈHƒ=½Üuèf}H‰¯ÜH è~è{¶H‹œÜ‹@4‰D$@H‹ŽÜH‹@8H‰D$pH‹~ÜH‹@@H‰D$HHƒ¼$ðtòÎò„$èÇD$Të ‹D$TƒÀ‰D$T‹D$@9D$T}bHcL$THkÉH‹D$Hò„$èòYHcL$THkÉH‹D$pòHcL$THkÉH‹D$Hò„$èòYDHcL$THkÉH‹D$pòDë‰ÇD$T‹D$TƒÀLcÀMkÀHcT$THkÒH‹Œ$ØH‹„$ØòBò\ò„$€‹D$TƒÀLcÀMkÀHcT$THkÒH‹Œ$ØH‹„$ØòBDò\Dò„$ˆ‹D$TƒÀLcÀMkÀHcT$THkÒH‹Œ$ØH‹„$ØòBDò\Dò„$ò„$€òY„$€òŒ$ˆòYŒ$ˆòXÁòD$xòŒ$òYŒ$òD$xòXÁòD$xòD$xè°´òD$x‹D$TƒÀLcÀMkÀHcT$THkÒH‹Œ$ØH‹„$ØòBòXò„$ ‹D$TƒÀLcÀMkÀHcT$THkÒH‹Œ$ØH‹„$ØòBDòXDò„$¨‹D$TƒÀLcÀMkÀHcT$THkÒH‹Œ$ØH‹„$ØòBDòXDò„$°ò„$ òY„$ òŒ$¨òYŒ$¨òXÁò„$˜òŒ$°òYŒ$°ò„$˜òXÁò„$˜ò„$˜è޳ò„$˜ò„$˜òY,Ëò„$˜‹D$TƒÀ‰D$Tò„$˜f/D$xr‹„$Ѓè9D$TŒ{ýÿÿ‹„$Ð9D$TuéRò„$€f.ÈÊz?u=ò„$f.³Êz*u(ò·ÊòD$hòD$hòD$`òD$`òD$Xë$fWÀòD$hòD$hòD$XòyÊòD$`H‹¼Ø‹@0‰D$PH‹®Ø‹H0ÉH‹žØ‰H0¹P ÿøÉ¶À…ÀuJH‹„$ðH‰D$8H‹„$àH‰D$0H‹„$ØH‰D$(‹„$ЉD$ LL$XE3ÀH‹T$p‹L$@è±øÿÿëJH‹„$ðH‰D$8H‹„$àH‰D$0H‹„$ØH‰D$(‹„$ЉD$ LL$XL‹D$HH‹T$p‹L$@èeøÿÿH‹ î׋D$P‰A0HÄÈÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HƒìHHcL$PHkÉ0ÿ*ÈH‰D$0ÇD$8ë ‹D$8ƒÀ‰D$8‹D$P9D$8¬LcD$8HcT$8HkÒ0H‹L$0H‹D$hòBÀòHcL$8HkÉ0H‹D$0fWÀòDHcL$8HkÉ0H‹D$0fWÀòDHcL$8HkÉ0H‹D$0fWÀòDLcD$8HcT$8HkÒ0H‹L$0H‹D$hòBÀòD HcL$8HkÉ0H‹D$0fWÀòD(é;ÿÿÿH‹D$0H‰D$ òtÈL‹D$`H‹T$X‹L$PèÑùÿÿH‹L$0ÿÇHƒÄHÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HƒìxHcŒ$ HkÉ0ÿçÆH‰D$@ÇD$`ë ‹D$`ƒÀ‰D$`‹„$ 9D$`æHcL$`H‹„$¸ò÷ÇòYÈòD$HòD$Hè °òD$XòD$Hèö¯òD$PHcL$`HkÉ0H‹D$@òD$PòòD$XfW“ÇHcL$`HkÉ0H‹D$@òDHcL$`HkÉ0H‹D$@fWÀòDHcL$`HkÉ0H‹D$@òD$XòDHcL$`HkÉ0H‹D$@òD$PòD HcL$`HkÉ0H‹D$@fWÀòD(éþþÿÿH‹D$@H‰D$8H‹„$°H‰D$0H‹„$¨H‰D$(‹„$ ‰D$ L‹Œ$˜L‹„$H‹”$ˆ‹Œ$€èsõÿÿH‹L$@ÿpÅHƒÄxÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìH)´$0Hƒ=¶Ôuè_uH‰¨ÔH ávèt®H‹•Ôfnp4óæöò^5lÆò„$¨èx®f(èf(ÆòYÅò,ÀƒÀ‰„$àHƒ¼$u4‹„$àkÀHcÈHÁáÿºÄH‰D$`H‹D$`H‰„$¨HÇD$@ëG‹„$àkÀ HcÈHÁáÿ†ÄH‰D$`H‹D$`H‰„$¨‹„$àkÀHcÈH‹„$¨HÈH‰D$@òžÅòY„$¨‹„$àƒèfnÈóæÉò^ÁòD$Hò„$ òYhÅò„$ ò„$ ò\D$Hò„$ ò„$ è_­ò„$ðò„$ èN­ò„$ òD$Hè4­ò„$ òD$Hè&­ò„$èòD$Hò^óÄò„$øò„$ˆòY„$øò„$ˆò„$xòY„$øò„$xò„$€ò\„$ˆò„$€ò„$pò\„$xò„$pÇD$\ë ‹D$\ƒÀ‰D$\‹„$à9D$\3ò„$pòY„$ð‹D$\kÀHcÈH‹„$¨òÈò„$pòY„$ ‹D$\kÀƒÀHcÈH‹„$¨òÈ‹D$\kÀƒÀHcÈH‹„$¨ò„$€òÈò„$€òX„$ˆò„$€ò„$pòX„$xò„$pò„$ðòY„$ òŒ$ òYŒ$èò\ÁòD$Pò„$ðòY„$èòŒ$ òYŒ$ òXÁò„$ˆòD$Pò„$ðò„$ˆò„$ é±þÿÿHƒ¼$„NHƒ¼$˜…ôÇD$\ë ‹D$\ƒÀ‰D$\‹„$à9D$\ÉHcT$\HkÒ0H‹L$@H‹„$òòHcT$\HkÒ0H‹L$@H‹„$ò@òDHcT$\HkÒ0H‹L$@H‹„$ò@òDHcT$\HkÒ0H‹L$@H‹„$ò@òDHcT$\HkÒ0H‹L$@H‹„$ò@ òD HcT$\HkÒ0H‹L$@H‹„$ò@(òD(éÿÿÿéKH‹„$˜ò„$øòY@ò„$H‹„$˜ò„$øòY@(ò„$˜H‹„$ò@ò„$°H‹„$ò@(ò„$¸ò„$øò^Áò„$øH‹„$˜òŒ$øòYòBÁòXÁòD$hH‹„$˜ò„$øòY@òD$pH‹„$˜ò„$øòY@òD$xH‹„$˜òŒ$øòYH òâÀòXÁò„$€òD$hòYD$hòL$pòYL$xòXÁò„$ÀòD$hòYD$pòL$pòYŒ$€òXÁò„$ÈòD$xòYD$hòŒ$€òYL$xòXÁò„$ÐòD$xòYD$pòŒ$€òYŒ$€òXÁò„$Øò„$ÀòY„$ÀòŒ$ÈòYŒ$ÐòXÁòD$hò„$ÀòY„$ÈòŒ$ÈòYŒ$ØòXÁòD$pò„$ÐòY„$ÀòŒ$ØòYŒ$ÐòXÁòD$xò„$ÐòY„$ÈòŒ$ØòYŒ$ØòXÁò„$€òD$hòYD$hòL$pòYL$xòXÁò„$ÀòD$hòYD$pòL$pòYŒ$€òXÁò„$ÈòD$xòYD$hòŒ$€òYL$xòXÁò„$ÐòD$xòYD$pòŒ$€òYŒ$€òXÁò„$Øò„$ÀòY„$ÀòŒ$ÈòYŒ$ÐòXÁòD$hò„$ÀòY„$ÈòŒ$ÈòYŒ$ØòXÁòD$pò„$ÐòY„$ÀòŒ$ØòYŒ$ÐòXÁòD$xò„$ÐòY„$ÈòŒ$ØòYŒ$ØòXÁò„$€òD$hòYD$hòL$pòYL$xòXÁò„$ÀòD$hòYD$pòL$pòYŒ$€òXÁò„$ÈòD$xòYD$hòŒ$€òYL$xòXÁò„$ÐòD$xòYD$pòŒ$€òYŒ$€òXÁò„$ØH‹„$òò„$H‹„$ò@ò„$H‹„$ò@ò„$H‹„$ò@ ò„$H‹L$@H‹„$òòH‹L$@H‹„$ò@òAH‹L$@H‹„$ò@òAH‹L$@H‹„$ò@òAH‹L$@H‹„$ò@ òA H‹L$@H‹„$ò@(òA(ÇD$\ë ‹D$\ƒÀ‰D$\‹„$à9D$\âHcL$\HkÉ0H‹D$@ò„$òHcL$\HkÉ0H‹D$@ò„$òDHcL$\HkÉ0H‹D$@ò„$òDHcL$\HkÉ0H‹D$@ò„$òD ò„$ÀòY„$òŒ$ÈòYŒ$òXÁòD$hò„$ÀòY„$òŒ$ÈòYŒ$òXÁòD$pò„$ÐòY„$òŒ$ØòYŒ$òXÁòD$xò„$ÐòY„$òŒ$ØòYŒ$òXÁò„$€òD$hò„$òD$pò„$òD$xò„$ò„$€ò„$HcL$\HkÉ0H‹D$@ò„$°òDHcL$\HkÉ0H‹D$@ò„$¸òD(ò„$°òX„$ò„$°ò„$¸òX„$˜ò„$¸éþÿÿH‹áÈ‹@0‰D$XH‹ÓÈ‹H0ƒáðH‹ÆÈ‰H0H‹¼È‹H0ƒÉH‹¯È‰H0H‹D$@H‰D$8HÇD$0H‹„$¨H‰D$(‹„$à‰D$ L‹Œ$hL‹„$`H‹”$X‹Œ$PèÍèÿÿL‹VÈ‹D$XA‰C0H‹L$`ÿ»¸(´$0HÄHÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìøH‹„$ò@f.‘¹z„H‹„$òòD$`fWÀòD$hH‹„$ò@òD$pòD$`òYD$`òL$hòYL$hòXÁòD$xòL$pòYL$pòD$xòXÁòD$xòD$xèa¡òD$xòD$xf.ý¸ztpò¹ò^D$xòD$xòD$`òYD$xòD$`òD$pòYD$xòD$pòD$xòYD$`òD$`òD$xòYD$hòD$hòD$xòYD$pòD$pëfWÀòD$`ò‡¸òD$pë8H‹„$òòD$`H‹„$ò@òD$hH‹„$ò@òD$pòD$pòY„$(òL$`òYŒ$8ò\Áò„$°òD$`òY„$(òL$pòYŒ$8òXÁò„$¸Hƒ¼$@„µHƒ¼$H„»H‹„$Hòò„$ÀH‹„$Hò@ò„$ÈH‹„$Hò@ò„$ÐH‹„$Hò@ò„$ØH‹„$Hò@ ò„$àH‹„$Hò@(ò„$èò„$ÐòX„$°ò„$Ðò„$èòX„$¸ò„$èëXfWÀò„$ÀfWÀò„$Èò„$°ò„$ÐfWÀò„$ØfWÀò„$àò„$¸ò„$èò„$XòD$Xò„$PòD$PH„$ÀH‰D$HH‹„$@H‰D$@fWÀòD$8ò„$0òD$0fWÀòD$(ò„$ òD$ L‹Œ$L‹„$H‹”$‹Œ$è¢ïÿÿé<ò%¶ò„$€fWÀò„$ˆfWÀò„$fWÀò„$˜òíµò„$ fWÀò„$¨fWÀò„$ÀfWÀò„$Èò„$°ò„$ÐfWÀò„$ØfWÀò„$àò„$¸ò„$èò„$XòD$Xò„$PòD$PH„$ÀH‰D$HH„$€H‰D$@fWÀòD$8ò„$0òD$0fWÀòD$(ò„$ òD$ L‹Œ$L‹„$H‹”$‹Œ$èaîÿÿHÄøÃÌÌÌÌÌÌÌÌÌò\$ òT$òL$òD$HƒìXH-îÿÿH‰D$Hò„$ òD$@ò„$˜òD$8H‹„$H‰D$0H‹„$ˆH‰D$(ò„$€òD$ ò\$xòT$pòL$hòD$`èHƒÄXÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌò\$ òT$òL$òD$Hì¨H‹j‹@4‰D$`H‹\ÂH‹@8H‰„$H‹IÂH‹@@H‰D$hÇD$të ‹D$tƒÀ‰D$t‹D$`9D$t}hHcL$tHkÉH‹D$hò„$°òYHcL$tHkÉH‹„$òHcL$tHkÉH‹D$hò„$°òYDHcL$tHkÉH‹„$òDëƒfWÀò„$ˆò„$ˆò„$€òB³òD$xH‹…Á‹@0‰D$pH‹wÁ‹H0ÉH‹gÁ‰H0H‹]Á‹H0ÉH‹MÁ‰H0¹P ÿ§²¶À…À…”ò„$ðòD$Xò„$èòD$PH‹„$àH‰D$HH‹„$ØH‰D$@ò„$ÐòD$8ò„$ÈòD$0ò„$ÀòD$(ò„$¸òD$ LL$xE3ÀH‹”$‹L$`ÿ”$øé‘ò„$ðòD$Xò„$èòD$PH‹„$àH‰D$HH‹„$ØH‰D$@ò„$ÐòD$8ò„$ÈòD$0ò„$ÀòD$(ò„$¸òD$ LL$xL‹D$hH‹”$‹L$`ÿ”$øH‹ À‹D$p‰A0HĨÃÌÌÌÌÌÌÌÌÌò\$ òT$òL$òD$HƒìXH­÷ÿÿH‰D$Hò„$ òD$@ò„$˜òD$8H‹„$H‰D$0H‹„$ˆH‰D$(ò„$€òD$ ò\$xòT$pòL$hòD$`èÔüÿÿHƒÄXÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hìˆò„$Àò^±è"™ò,ÀƒÀ‰D$xHcL$xHkÉÿ†¯H‰D$pHcL$xHÁáÿr¯H‰D$hò„$¸ò\„$°‹D$xƒèfnÈóæÉò^ÁòD$`ò„$°ò\D$`òD$X‹D$xƒèfnÈóæÉò„$Àò^ÁòD$PòD$PfW=°òD$HÇD$@ë ‹D$@ƒÀ‰D$@‹D$x9D$@‡HcL$@HkÉH‹D$pfWÀòHcL$@HkÉH‹D$pfWÀòDHcL$@HkÉH‹D$pòD$XòDòD$XòXD$`òD$XHcL$@H‹D$hòD$HòÈòD$HòXD$PòD$Hé`ÿÿÿH‹D$hH‰D$8HÇD$0H‹D$pH‰D$(‹D$x‰D$ L‹Œ$¨L‹„$ H‹”$˜‹Œ$èôæÿÿH‹L$pÿñ­H‹L$hÿæ­HĈÃÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìHƒ¼$(u$fWÀòD$XòÙ®òD$`fWÀòD$hë8H‹„$(òòD$XH‹„$(ò@òD$`H‹„$(ò@òD$hL‹„$8‹”$0HL$Xè–áfWíò¬$@fWÀò„$HfWÀò„$PfWÀòD$pfWÀòD$xò3®ò„$€Ç„$Œ‹„$Œ‰„$ ‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBò\ò„$€‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBDò\Dò„$ˆ‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBDò\Dò„$ò„$€òY„$€òŒ$ˆòYŒ$ˆòXÁò„$ðòŒ$òYŒ$ò„$ðòXÁò„$ðò„$ðè#•ò„$ð‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBòXò„$0‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBDòXDò„$8‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBDòXDò„$@ò„$0òY„$0òŒ$8òYŒ$8òXÁò„$(òŒ$@òYŒ$@ò„$(òXÁò„$(ò„$(èì“ò„$(ò„$(òYŠ«ò„$(‹„$ ƒÀ‰„$ ò„$(f/„$ðr‹„$0ƒè9„$ Œ<ýÿÿò„$ðò„$XHc„$ HkÀL‹Œ$8LÈL‹„$8IƒÀH‹”$8HŒ$ èSòD$XòY„$ òL$`òYŒ$(òXÁòL$hòYŒ$0òXÁò„$Hò «òYŒ$HòYŒ$ òD$Xò\ÁòD$Xò ãªòYŒ$HòYŒ$(òD$`ò\ÁòD$`ò ¹ªòYŒ$HòYŒ$0òD$hò\ÁòD$h‹„$kÀHcÈ‹„$kÀH˜HÁàH Èÿð¨H‰„$H‹„$H‰„$Ћ„$kÀHcÈH‹„$ÐHÈH‰„$‹„$kÀHcÈH‹„$HÈH‰„$`‹„$kÀHcÈH‹„$`HÈH‰„$8H‹„$`H‰D$PHƒ¼$ „•Hƒ¼$H…ÀÇ„$$ë‹„$$ƒÀ‰„$$‹„$9„$$‰Lc„$$MkÀ‹„$$kÀHcÐH‹L$PH‹„$ òBòÑLc„$$MkÀ‹„$$kÀƒÀHcÐH‹L$PH‹„$ òBDòÑ‹„$$kÀƒÀHcÈH‹D$PfWÀòÈéRÿÿÿéÆÇ„$$ë‹„$$ƒÀ‰„$$‹„$9„$$”‹„$ ƒèHcÈHkÉ0H‹„$HòDf.Q¨zsuq‹„$ ƒèHcÈHkÉ0H‹„$HòDf.&¨zHuF‹„$ ƒèLcÀMkÀ0‹„$ ƒèHcÐHkÒ0H‹Œ$HH‹„$HòBf.D z„G‹„$ ƒèLcÀMkÀ0Hc”$$HkÒH‹Œ$HH‹„$ òBD òY‹„$ ƒèLcÀMkÀ0Hc”$$HkÒH‹Œ$HH‹„$ òBLòYLò\Á‹„$$kÀHcÈH‹„$`òÈ‹„$ ƒèHcÈHkÉ0H‹„$HòDfWD§HcŒ$$HkÉH‹„$ òY‹„$ ƒèLcÀMkÀ0Hc”$$HkÒH‹Œ$HH‹„$ òB òYLòXÁ‹„$$kÀHcÈH‹„$`òDÈ‹„$$kÀLcÀ‹„$$kÀHcÐH‹Œ$`H‹„$`òBÁòYЋ„$$kÀLcÀ‹„$$kÀHcÐH‹Œ$`H‹„$`òBLÁòYLÐòXÁò„$Pò„$Pè|Žf(èò0¦ò^Åò„$P‹„$$kÀHcÈH‹„$`òÈòY„$P‹„$$kÀHcÈH‹„$`òÈ‹„$$kÀHcÈH‹„$`òDÈòY„$P‹„$$kÀHcÈH‹„$`òDÈëjLc„$$MkÀ‹„$$kÀHcÐH‹Œ$`H‹„$ òBòÑLc„$$MkÀ‹„$$kÀHcÐH‹Œ$`H‹„$ òBDòDÑ‹„$$kÀƒÀHcÈH‹„$`fWÀòÈ‹„$$kÀƒÀHcÈH‹„$8fWÀòÈéGüÿÿÇ„$ø‹„$0ƒè9„$  "‹„$ ‰„$ˆ‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBò\ò„$€‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBDò\Dò„$ˆ‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBDò\Dò„$ò„$€òY„$€òŒ$ˆòYŒ$ˆòXÁò„$ðòŒ$òYŒ$ò„$ðòXÁò„$ðò„$ðèÖ‹ò„$ð‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBòXò„$`‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBDòXDò„$h‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBDòXDò„$pò„$`òY„$`òŒ$hòYŒ$hòXÁò„$XòŒ$pòYŒ$pò„$XòXÁò„$Xò„$X蟊ò„$Xò„$XòY=¢ò„$X‹„$ˆƒÀ‰„$ˆò„$Xf/„$ðr‹„$0ƒè9„$ˆŒ<ýÿÿHc„$ˆHkÀL‹Œ$8LÈHc„$ HkÀL‹„$8LÀHc„$ŒHkÀH‹”$8HÐHŒ$ØèþHc„$ HkÀL‹„$8LÀHc„$ŒHkÀH‹”$8HÐLL$XHŒ$ è~ÿ¡HŒ$ ÿú ò„$ òY„$ òŒ$¨òYŒ$(òXÁòŒ$°òYŒ$0òXÁò„$ò„$ÀòY„$ òŒ$ÈòYŒ$(òXÁòŒ$ÐòYŒ$0òXÁò„$ò„$àòY„$ òŒ$èòYŒ$(òXÁòŒ$ðòYŒ$0òXÁò„$ò„$ òY„$ØòŒ$¨òYŒ$àòXÁòŒ$°òYŒ$èòXÁò„$°ò„$ÀòY„$ØòŒ$ÈòYŒ$àòXÁòŒ$ÐòYŒ$èòXÁò„$¸ò„$àòY„$ØòŒ$èòYŒ$àòXÁòŒ$ðòYŒ$èòXÁò„$Àò„$XfW¯Ÿò„$€Ç„$$ë‹„$$ƒÀ‰„$$‹„$9„$$XHƒ¼$ „V Hƒ¼$H„%HcŒ$ HkÉ0H‹„$HòDf.ŸzdubHcŒ$ HkÉ0H‹„$HòDf.îžz>uLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBòYLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBLòYLòXÁHcŒ$ HkÉ0H‹„$HòXDò„$˜Lc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBDòYLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBL òYLòXÁHcŒ$ HkÉ0H‹„$HòXD(ò„$ Lc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBòYLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBLòYLòXÁHcŒ$ HkÉ0H‹„$HòXDò„$hLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBDòYLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBL òYLòXÁHcŒ$ HkÉ0H‹„$HòXD(ò„$pò„$˜ò\„$hòY„$°ò„$àòŒ$ ò\Œ$pòYŒ$¸ò„$àòXÁò„$àòŒ$¨ò\Œ$xòYŒ$Àò„$àòXÁò„$àò„$àf.ŒzHuFÇ„$Èò„$˜ò„$°ò„$ ò„$¸ò„$¨ò„$ÀéÍÇ„$ÈòD$pò\„$hòY„$°ò„$ØòL$xò\Œ$pòYŒ$¸ò„$ØòXÁò„$ØòŒ$€ò\Œ$xòYŒ$Àò„$ØòXÁò„$Øò„$Øò^„$àò„$èò0‹ò\„$èò„$Ðò„$èòY‹f/‹wòŒ$èòY êŠò2‹f/Áv Ç„$Èò„$èòY„$˜òŒ$ÐòYŒ$hòXÁ‹„$$kÀHcÈH‹„$òÈò„$èòY„$ òŒ$ÐòYŒ$pòXÁ‹„$$kÀHcÈH‹„$òDÈò„$èòY„$¨òŒ$ÐòYŒ$xòXÁ‹„$$kÀHcÈH‹„$òDÈéƒêÿÿH‹U˜‹@0ƒà…À„´ƒ¼$øtSHƒ¼$@t!‹„$ ƒèH˜HkÀH‹Œ$@HÈÿi‰Ç„$øL‹„$ÐH”$‹Œ$è ö‹„$0ƒè9„$ uDHƒ¼$@tHc„$ HkÀH‹Œ$@HÈÿ‰L‹„$H”$°‹Œ$èÃýHƒ¼$H…~H‹}—‹@0%…À…gHƒ¼$@…ÓHƒ¼$ u8ò„$XòD$ D‹Œ$ L‹„$H‹”$ЋŒ$è é‹H‹—‹@0%…Àt=ò„$XòD$(‹„$ ‰D$ L‹L$PL‹„$H‹”$ЋŒ$èíë;ò„$XòD$(‹„$ ‰D$ L‹L$PL‹„$H‹”$ЋŒ$èé€Hƒ¼$ urHc„$ HkÀH‹Œ$@HÈ‹„$ ƒèH˜HkÀL‹Œ$@LÈò„$XòD$0‹„$ ‰D$(H‰L$ L‹„$H‹”$ЋŒ$èCâéH‹–‹@0%…ÀtyHc„$ HkÀH‹”$@HЋ„$ ƒèH˜HkÀH‹Œ$@HÈò„$XòD$8‹„$ ‰D$0H‰T$(H‰L$ L‹L$PL‹„$H‹”$ЋŒ$è$æëwHc„$ HkÀH‹”$@HЋ„$ ƒèH˜HkÀH‹Œ$@HÈò„$XòD$8‹„$ ‰D$0H‰T$(H‰L$ L‹L$PL‹„$H‹”$ЋŒ$è ãé©Hƒ¼$@…óHƒ¼$ u8ò„$XòD$ D‹Œ$ L‹„$H‹”$ЋŒ$è¹é«H‹­”‹@0%…ÀtMò„$XòD$0‹„$ ‰D$(H‹„$8H‰D$ L‹Œ$`L‹„$H‹”$ЋŒ$èv*ëKò„$XòD$0‹„$ ‰D$(H‹„$8H‰D$ L‹Œ$`L‹„$H‹”$ЋŒ$è%é§Hƒ¼$ urHc„$ HkÀH‹Œ$@HÈ‹„$ ƒèH˜HkÀL‹Œ$@LÈò„$XòD$0‹„$ ‰D$(H‰L$ L‹„$H‹”$ЋŒ$è¼ßé*H‹€“‹@0%…À„ŒHc„$ HkÀH‹”$@HЋ„$ ƒèH˜HkÀH‹Œ$@HÈò„$XòD$@‹„$ ‰D$8H‰T$0H‰L$(H‹„$8H‰D$ L‹Œ$`L‹„$H‹”$ЋŒ$è™ëé‡Hc„$ HkÀH‹”$@HЋ„$ ƒèH˜HkÀH‹Œ$@HÈò„$XòD$@‹„$ ‰D$8H‰T$0H‰L$(H‹„$8H‰D$ L‹Œ$`L‹„$H‹”$ЋŒ$èmèÿ·ƒò¬$ðò¬$X‹„$ ‰„$Œ‹„$ˆ‰„$ ò„$Øò„$ ò„$àò„$(ò„$èò„$0H‹„$`H‰„$ÈH‹„$8H‰„$`H‹„$ÈH‰„$8òD$XòY„$ òL$`òYŒ$(òXÁòL$hòYŒ$0òXÁò„$ðò }ƒòYŒ$ðòYŒ$ òD$Xò\ÁòD$Xò SƒòYŒ$ðòYŒ$(òD$`ò\ÁòD$`ò )ƒòYŒ$ðòYŒ$0òD$hò\ÁòD$héÉÝÿÿH‹Œ$ÿlHÄÃÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìèHÇD$xHÇ„$HÇ„$XÇ„$¨H‹“‹@0ƒà…ÀtÇ„$HEH‰„$ëÇ„$H›ËH‰„$Hƒ¼$u-fWÀò„$€òãò„$ˆfWÀò„$ëAH‹„$òò„$€H‹„$ò@ò„$ˆH‹„$ò@ò„$L‹„$‹”$HŒ$€èŽ´fWíò¬$ fWÀò„$(fWÀò„$0fWÀò„$¨fWÀò„$°ò%ò„$¸‹„$ðkÀ HcÈ‹„$ðkÀH˜HÁàH È‹„$ðÑàH˜H ÿ¶H‰„$èH‹„$èH‰„$`‹„$ðkÀHcÈH‹„$`HÈH‰„$‹„$ðkÀHcÈH‹„$HÈH‰„$P‹„$ðkÀHcÈH‹„$PHÈH‰„$È‹„$ðkÀHcÈH‹„$ÈHÈH‰„$‹„$ðkÀHcÈH‹„$HÈH‰„$‹„$ðkÀHcÈH‹„$HÈH‰„$€HcŒ$ðH‹„$€HˆH‰„$ Ç„$ä‹„$䉄$@‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBò\ò„$ ‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBDò\Dò„$¨‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBDò\Dò„$°ò„$ òY„$ òŒ$¨òYŒ$¨òXÁò„$òŒ$°òYŒ$°ò„$òXÁò„$ò„$èåfò„$‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBòXò„$P‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBDòXDò„$X‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBDòXDò„$`ò„$PòY„$PòŒ$XòYŒ$XòXÁò„$HòŒ$`òYŒ$`ò„$HòXÁò„$Hò„$Hè®eò„$Hò„$HòYL}ò„$H‹„$@ƒÀ‰„$@ò„$Hf/„$r‹„$ƒè9„$@Œ<ýÿÿò„$òD$pHƒ¼$„±Hƒ¼$(…ÚH‹„$`H‰D$xH‹D$xH‰„$Ç„$Dë‹„$DƒÀ‰„$D‹„$ð9„$D‰Lc„$DMkÀ‹„$DkÀHcÐH‹L$xH‹„$òBòÑLc„$DMkÀ‹„$DkÀƒÀHcÐH‹L$xH‹„$òBDòÑ‹„$DkÀƒÀHcÈH‹D$xfWÀòÈéRÿÿÿéÆÇ„$Dë‹„$DƒÀ‰„$D‹„$ð9„$D”‹„$@ƒèHcÈHkÉ0H‹„$(òDf.Ÿ{zsuq‹„$@ƒèHcÈHkÉ0H‹„$(òDf.t{zHuF‹„$@ƒèLcÀMkÀ0‹„$@ƒèHcÐHkÒ0H‹Œ$(H‹„$(òBf.D z„G‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$òBD òY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$òBLòYLò\Á‹„$DkÀHcÈH‹„$`òÈ‹„$@ƒèHcÈHkÉ0H‹„$(òDfW’zHcŒ$DHkÉH‹„$òY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$òB òYLòXÁ‹„$DkÀHcÈH‹„$`òDÈ‹„$DkÀLcÀ‹„$DkÀHcÐH‹Œ$`H‹„$`òBÁòYЋ„$DkÀLcÀ‹„$DkÀHcÐH‹Œ$`H‹„$`òBLÁòYLÐòXÁò„$hò„$hèÊaf(èò~yò^Åò„$h‹„$DkÀHcÈH‹„$`òÈòY„$h‹„$DkÀHcÈH‹„$`òÈ‹„$DkÀHcÈH‹„$`òDÈòY„$h‹„$DkÀHcÈH‹„$`òDÈëjLc„$DMkÀ‹„$DkÀHcÐH‹Œ$`H‹„$òBòÑLc„$DMkÀ‹„$DkÀHcÐH‹Œ$`H‹„$òBDòDÑ‹„$DkÀƒÀHcÈH‹„$`fWÀòÈ‹„$DkÀƒÀHcÈH‹„$fWÀòÈéGüÿÿë&HÇD$xH‹D$xH‰„$H‹„$H‰„$`Hc„$@HkÀL‹Œ$LÈHc„$äHkÀL‹„$LÀ‹„$äƒèH˜HkÀH‹”$HÐHŒ$èèêLc„$äMkÀ‹„$äƒèHcÐHkÒH‹Œ$H‹„$òBò\ò„$˜Lc„$äMkÀ‹„$äƒèHcÐHkÒH‹Œ$H‹„$òBDò\Dò„$ Lc„$äMkÀ‹„$äƒèHcÐHkÒH‹Œ$H‹„$òBDò\Dò„$¨Lc„$@MkÀHc”$äHkÒH‹Œ$H‹„$òBò\ò„$xLc„$@MkÀHc”$äHkÒH‹Œ$H‹„$òBDò\Dò„$€Lc„$@MkÀHc”$äHkÒH‹Œ$H‹„$òBDò\Dò„$ˆò„$˜òY„$˜òŒ$ òYŒ$ òXÁò„$pòŒ$¨òYŒ$¨ò„$pòXÁò„$pò„$pè^ò„$pò„$xòY„$xòŒ$€òYŒ$€òXÁò„$°òŒ$ˆòYŒ$ˆò„$°òXÁò„$°ò„$°è®]ò„$°òUuòY„$°f/„$p‚Îò„$°f.$uz@u>fWÀò„$ ò„$ ò„$˜ò„$˜ò„$Ç„$Àëvòêtò^„$°ò„$°ò„$°òY„$xò„$ò„$°òY„$€ò„$˜ò„$°òY„$ˆò„$ Ç„$ÀéêÇ„$Àò\tòY„$pf/„$°rpòHtò^„$pò„$pò„$pòY„$˜ò„$ò„$pòY„$ ò„$˜ò„$pòY„$¨ò„$ éSòØsò^„$pò„$pò„$pòY„$˜ò„$˜ò„$pòY„$ ò„$ ò„$pòY„$¨ò„$¨òmsò^„$°ò„$°ò„$°òY„$xò„$xò„$°òY„$€ò„$€ò„$°òY„$ˆò„$ˆò„$˜ò\„$xò„$ò„$ ò\„$€ò„$˜ò„$¨ò\„$ˆò„$ ò„$òY„$òŒ$˜òYŒ$˜òXÁò„$òŒ$ òYŒ$ ò„$òXÁò„$ò„$è’Zò„$ò9rf/„$v>fWÀò„$ ò„$ ò„$˜ò„$˜ò„$Ç„$Àëkòðqò^„$ò„$ò„$òY„$ò„$ò„$òY„$˜ò„$˜ò„$òY„$ ò„$ ò„$€òY„$èòŒ$ˆòYŒ$ðòXÁòŒ$òYŒ$øòXÁò„$¸ò ŽqòYŒ$¸òYŒ$èò„$€ò\Áò„$€ò ^qòYŒ$¸òYŒ$ðò„$ˆò\Áò„$ˆò .qòYŒ$¸òYŒ$øò„$ò\Áò„$‹„$ƒè9„$@\3‹„$@‰„$à‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBò\ò„$ ‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBDò\Dò„$¨‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBDò\Dò„$°ò„$ òY„$ òŒ$¨òYŒ$¨òXÁò„$òŒ$°òYŒ$°ò„$òXÁò„$ò„$è£Wò„$‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBòXò„$È‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBDòXDò„$Ћ„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBDòXDò„$Øò„$ÈòY„$ÈòŒ$ÐòYŒ$ÐòXÁò„$ÀòŒ$ØòYŒ$Øò„$ÀòXÁò„$Àò„$ÀèlVò„$Àò„$ÀòY nò„$À‹„$àƒÀ‰„$àò„$Àf/„$r‹„$ƒè9„$àŒ<ýÿÿHc„$àHkÀL‹Œ$LÈHc„$@HkÀL‹„$LÀHc„$äHkÀH‹”$HÐHŒ$XèËßLc„$@MkÀHc”$äHkÒH‹Œ$H‹„$òBò\ò„$Lc„$@MkÀHc”$äHkÒH‹Œ$H‹„$òBDò\Dò„$Lc„$@MkÀHc”$äHkÒH‹Œ$H‹„$òBDò\Dò„$Lc„$àMkÀHc”$@HkÒH‹Œ$H‹„$òBò\ò„$èLc„$àMkÀHc”$@HkÒH‹Œ$H‹„$òBDò\Dò„$ðLc„$àMkÀHc”$@HkÒH‹Œ$H‹„$òBDò\Dò„$øò„$òY„$òŒ$òYŒ$òXÁò„$àòŒ$òYŒ$ò„$àòXÁò„$àò„$àèäSò„$àò„$èòY„$èòŒ$ðòYŒ$ðòXÁò„$ òŒ$øòYŒ$øò„$ òXÁò„$ ò„$ ètSò„$ òkòY„$ f/„$à‚Îò„$ f.êjz@u>fWÀò„$Øò„$Øò„$Ðò„$Ðò„$ÈÇ„$Pëvò°jò^„$ ò„$ ò„$ òY„$èò„$Èò„$ òY„$ðò„$Ðò„$ òY„$øò„$ØÇ„$PéêÇ„$Pò"jòY„$àf/„$ rpòjò^„$àò„$àò„$àòY„$ò„$Èò„$àòY„$ò„$Ðò„$àòY„$ò„$ØéSòžiò^„$àò„$àò„$àòY„$ò„$ò„$àòY„$ò„$ò„$àòY„$ò„$ò3iò^„$ ò„$ ò„$ òY„$èò„$èò„$ òY„$ðò„$ðò„$ òY„$øò„$øò„$ò\„$èò„$Èò„$ò\„$ðò„$Ðò„$ò\„$øò„$Øò„$ÈòY„$ÈòŒ$ÐòYŒ$ÐòXÁò„$òŒ$ØòYŒ$Øò„$òXÁò„$ò„$èXPò„$òÿgf/„$v>fWÀò„$Øò„$Øò„$Ðò„$Ðò„$ÈÇ„$Pëkò¶gò^„$ò„$ò„$òY„$Èò„$Èò„$òY„$Ðò„$Ðò„$òY„$Øò„$ØHc„$@HkÀL‹„$LÀHc„$äHkÀH‹”$HÐLŒ$€HŒ$Àè Gÿ¢fHŒ$Àÿœfò„$ÀòY„$òŒ$ÈòYŒ$˜òXÁòŒ$ÐòYŒ$ òXÁò„$xò„$àòY„$òŒ$èòYŒ$˜òXÁòŒ$ðòYŒ$ òXÁò„$€ò„$òY„$òŒ$òYŒ$˜òXÁòŒ$òYŒ$ òXÁò„$ˆò„$ÀòY„$ÈòŒ$ÈòYŒ$ÐòXÁòŒ$ÐòYŒ$ØòXÁò„$Ðò„$àòY„$ÈòŒ$èòYŒ$ÐòXÁòŒ$ðòYŒ$ØòXÁò„$Øò„$òY„$ÈòŒ$òYŒ$ÐòXÁòŒ$òYŒ$ØòXÁò„$àò„$ÀòY„$èòŒ$ÈòYŒ$ðòXÁòŒ$ÐòYŒ$øòXÁò„$°ò„$àòY„$èòŒ$èòYŒ$ðòXÁòŒ$ðòYŒ$øòXÁò„$¸ò„$òY„$èòŒ$òYŒ$ðòXÁòŒ$òYŒ$øòXÁò„$Àò„$ÀòY„$XòŒ$ÈòYŒ$`òXÁòŒ$ÐòYŒ$hòXÁò„$0ò„$àòY„$XòŒ$èòYŒ$`òXÁòŒ$ðòYŒ$hòXÁò„$8ò„$òY„$XòŒ$òYŒ$`òXÁòŒ$òYŒ$hòXÁò„$@òD$pfWªcò„$¸Ç„$Dë‹„$DƒÀ‰„$D‹„$ð9„$D©Hƒ¼$(…HcŒ$DHkÉH‹„$øòò„$HcŒ$DHkÉH‹„$øòDò„$ HcŒ$DHkÉH‹„$øòò„$hHcŒ$DHkÉH‹„$øòDò„$pHcŒ$DHkÉH‹„$øòò„$ðHcŒ$DHkÉH‹„$øòDò„$øHcŒ$DHkÉH‹„$øòò„$8HcŒ$DHkÉH‹„$øòDò„$@éì‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBòY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBLòYLòXÁ‹„$@ƒèHcÈHkÉ0H‹„$(òXDò„$‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBDòY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBL òYLòXÁ‹„$@ƒèHcÈHkÉ0H‹„$(òXD(ò„$ Lc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBòYLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBLòYLòXÁHcŒ$@HkÉ0H‹„$(òXDò„$ðLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBDòYLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBL òYLòXÁHcŒ$@HkÉ0H‹„$(òXD(ò„$øLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBòYLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBLòYLòXÁHcŒ$@HkÉ0H‹„$(òXDò„$hLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBDòYLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBL òYLòXÁHcŒ$@HkÉ0H‹„$(òXD(ò„$p‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBòY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBLòYLòXÁ‹„$@ƒèHcÈHkÉ0H‹„$(òXDò„$8‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBDòY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBL òYLòXÁ‹„$@ƒèHcÈHkÉ0H‹„$(òXD(ò„$@Hƒ¼$„%HcŒ$@HkÉ0H‹„$(òDf.>]zdubHcŒ$@HkÉ0H‹„$(òDf.]z>uL‹œ$`L‰œ$HH‹„$H‰„$`H‹„$HH‰„$ò„$òD$p‹„$@‰„$ä‹„$à‰„$@ò„$Xò„$èò„$`ò„$ðò„$hò„$øò„$Èò„$ò„$Ðò„$˜ò„$Øò„$ ‹„$P‰„$Àò„$€òY„$èòŒ$ˆòYŒ$ðòXÁòŒ$òYŒ$øòXÁò„$Ðò >òYŒ$ÐòYŒ$èò„$€ò\Áò„$€ò ð=òYŒ$ÐòYŒ$ðò„$ˆò\Áò„$ˆò À=òYŒ$ÐòYŒ$øò„$ò\Áò„$éÌÿÿH‹Œ$èÿý;HÄèÃÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hì¨HÇD$ HÇD$0èa$H‰D$8L‹[<º‡H‹L$8è@$L‹M<º‡H‹L$8è*$L‹?<º‡H‹L$8è$Hƒ¼$ÀtH‹Œ$Àÿ7<ƒ¼$à„’Hƒ¼$È„¥H‹„$ÈfWÀf/@vdH‹„$Èò—<òYH‹„$ÈòH‹„$Èòw<òY@H‹„$Èò@H‹„$ÈòU<òY@H‹„$Èò@H‹DJHƒxtH‹Œ$ÈH‹.JÿPH‹Œ$Èÿ];H‹L$8è)#HÇD$0‹„$°ƒèHcÈHkÉH‹„$¸HÁH‰D$ ÇD$(ë ‹D$(ƒÀ‰D$(‹„$°ƒè9D$(HcT$(HkÒH‹Œ$¸H‹D$ òò\òD$pHcT$(HkÒH‹Œ$¸H‹D$ òDò\@òD$xHcT$(HkÒH‹Œ$¸H‹D$ òDò\@ò„$€‹D$(ƒÀLcÀMkÀHcT$(HkÒH‹Œ$¸H‹„$¸òBò\òD$X‹D$(ƒÀLcÀMkÀHcT$(HkÒH‹Œ$¸H‹„$¸òBDò\DòD$`‹D$(ƒÀLcÀMkÀHcT$(HkÒH‹Œ$¸H‹„$¸òBDò\DòD$hòD$pòYD$pòL$xòYL$xòXÁòŒ$€òYŒ$€òXÁòD$PòD$XòYD$XòL$`òYL$`òXÁòL$hòYL$hòXÁò„$ˆòÑ9òYD$Pf/„$ˆr Ç„$hë Ç„$h‹„$h‰D$@ƒ|$@u&òŽ9òY„$ˆf/D$Ps Ç„$lë Ç„$l‹„$l‰D$@òD$pòYD$XòL$xòYL$`òXÁòŒ$€òYL$hòXÁòD$Hƒ|$@uQòL$PòYŒ$ˆòD$HòYD$Hò\ÈòD$PòY„$ˆòYè8òYà8f/Ás Ç„$pë Ç„$p‹„$p‰D$@ƒ|$@u]HcD$(HkÀL‹„$¸LÀHcD$(HkÀH‹”$¸HÐH‹L$8èæHcL$(HkÉH‹„$¸HÁH‰D$ Hƒ|$0u H‹D$ H‰D$0éÇüÿÿHƒ|$0u H‹„$¸H‰D$0‹„$°ƒèHcÐHkÒH‹Œ$¸H‹D$ òò\ò„$¸‹„$°ƒèHcÐHkÒH‹Œ$¸H‹D$ òDò\@ò„$À‹„$°ƒèHcÐHkÒH‹Œ$¸H‹D$ òDò\@ò„$È‹„$°ƒèHcÐHkÒH‹L$0H‹„$¸òò\ò„$ ‹„$°ƒèHcÐHkÒH‹L$0H‹„$¸òAò\Dò„$¨‹„$°ƒèHcÐHkÒH‹L$0H‹„$¸òAò\Dò„$°ò„$¸òY„$¸òŒ$ÀòYŒ$ÀòXÁòŒ$ÈòYŒ$ÈòXÁò„$˜ò„$ òY„$ òŒ$¨òYŒ$¨òXÁòŒ$°òYŒ$°òXÁò„$Ðò{6òY„$˜f/„$Ðr Ç„$të Ç„$t‹„$t‰D$@ƒ|$@u)ò56òY„$Ðf/„$˜s Ç„$xë Ç„$x‹„$x‰D$@ò„$¸òY„$ òŒ$ÀòYŒ$¨òXÁòŒ$ÈòYŒ$°òXÁò„$ƒ|$@u]òŒ$˜òYŒ$Ðò„$òY„$ò\Èò„$˜òY„$ÐòYn5òYf5f/Ás Ç„$|ë Ç„$|‹„$|‰D$@ƒ|$@u@‹„$°ƒèH˜HkÀL‹„$¸LÀ‹„$°ƒèH˜HkÀH‹”$¸HÐH‹L$8è^H‹L$8èNéPHƒ¼$È„©H‹„$Èò@f/»4vdH‹„$Èò5òYH‹„$ÈòH‹„$Èòá4òY@H‹„$Èò@H‹„$Èò¿4òY@H‹„$Èò@H‹®BHƒxtH‹Œ$ÈH‹˜BÿPH‹Œ$ÈÿÇ3H‹L$8è“HÇD$0H‹„$¸H‰D$ ‹„$°ƒè‰D$(ë ‹D$(ƒè‰D$(ƒ|$(ŽnHcT$(HkÒH‹Œ$¸H‹D$ òò\ò„$HcT$(HkÒH‹Œ$¸H‹D$ òDò\@ò„$HcT$(HkÒH‹Œ$¸H‹D$ òDò\@ò„$‹D$(ƒèLcÀMkÀHcT$(HkÒH‹Œ$¸H‹„$¸òBò\ò„$è‹D$(ƒèLcÀMkÀHcT$(HkÒH‹Œ$¸H‹„$¸òBDò\Dò„$ð‹D$(ƒèLcÀMkÀHcT$(HkÒH‹Œ$¸H‹„$¸òBDò\Dò„$øò„$òY„$òŒ$òYŒ$òXÁòŒ$òYŒ$òXÁò„$àò„$èòY„$èòŒ$ðòYŒ$ðòXÁòŒ$øòYŒ$øòXÁò„$ò"2òY„$àf/„$r Ç„$€ë Ç„$€‹„$€‰D$@ƒ|$@u)òÜ1òY„$f/„$às Ç„$„ë Ç„$„‹„$„‰D$@ò„$òY„$èòŒ$òYŒ$ðòXÁòŒ$òYŒ$øòXÁò„$؃|$@u]òŒ$àòYŒ$ò„$ØòY„$Øò\Èò„$àòY„$òY1òY 1f/Ás Ç„$ˆë Ç„$ˆ‹„$ˆ‰D$@ƒ|$@u]HcD$(HkÀL‹„$¸LÀHcD$(HkÀH‹”$¸HÐH‹L$8èHcL$(HkÉH‹„$¸HÁH‰D$ Hƒ|$0u H‹D$ H‰D$0é|üÿÿHƒ|$0u!‹„$°ƒèHcÈHkÉH‹„$¸HÁH‰D$0H‹Œ$¸H‹D$ òò\ò„$HH‹Œ$¸H‹D$ òAò\@ò„$PH‹Œ$¸H‹D$ òAò\@ò„$XH‹L$0H‹„$¸òò\ò„$0H‹L$0H‹„$¸òAò\@ò„$8H‹L$0H‹„$¸òAò\@ò„$@ò„$HòY„$HòŒ$PòYŒ$PòXÁòŒ$XòYŒ$XòXÁò„$(ò„$0òY„$0òŒ$8òYŒ$8òXÁòŒ$@òYŒ$@òXÁò„$`ò/òY„$(f/„$`r Ç„$Œë Ç„$Œ‹„$Œ‰D$@ƒ|$@u)òº.òY„$`f/„$(s Ç„$ë Ç„$‹„$‰D$@ò„$HòY„$0òŒ$PòYŒ$8òXÁòŒ$XòYŒ$@òXÁò„$ ƒ|$@u]òŒ$(òYŒ$`ò„$ òY„$ ò\Èò„$(òY„$`òYó-òYë-f/Ás Ç„$”ë Ç„$”‹„$”‰D$@ƒ|$@uL‹„$¸H‹”$¸H‹L$8è H‹L$8èùH‹L$8èéHĨÃÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$ÃÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hì8ÇD$|Ç„$‹„$@ƒÀkÀHcÈHÁáÿé+H‰„$ˆèŒ[ÿÿ‰D$|Ç„$€ÇD$@H‹„$Xƒ8…&H‹-;‹@0ƒà…À„{‹D$|%…À…jH‹Œ$HH‹„$hòòXòD$`H‹Œ$HH‹„$hòAòX@òD$hH‹Œ$HH‹„$hòAòX@òD$pH‹„$Hòò\D$`H‹„$hòYò„$¨H‹„$HòHò\L$hH‹„$hòYHò„$¨òXÁò„$¨H‹„$HòHò\L$pH‹„$hòYHò„$¨òXÁò„$¨ò„$¨f.¬+z^u\Ç„$”H‹Œ$hH‹„$HòòH‹Œ$hH‹„$Hò@òAH‹Œ$hH‹„$Hò@òAé¤Ç„$”H‹„$`òò\D$`H‹„$hòYò„$ H‹„$`òHò\L$hH‹„$hòYHò„$ òXÁò„$ H‹„$`òHò\L$pH‹„$hòYHò„$ òXÁò„$ ò„$ ò^„$¨ò„$°ò›*ò\„$°ò„$˜ò„$°òYp*f/p*wòŒ$°òY U*ò*f/Áv Ç„$”H‹„$Hò„$°òYòŒ$˜òYL$`òXÁòD$HH‹„$Hò„$°òY@òŒ$˜òYL$hòXÁòD$PH‹„$Hò„$°òY@òŒ$˜òYL$pòXÁòD$X‹D$@kÀHcÈH‹„$ˆòD$HòÈ‹D$@kÀHcÈH‹„$ˆòD$PòDÈ‹D$@kÀHcÈH‹„$ˆòD$XòDÈ‹D$@ƒÀ‰D$@‹D$@kÀHcÐH‹Œ$ˆH‹„$HòòÑ‹D$@kÀHcÐH‹Œ$ˆH‹„$Hò@òDÑ‹D$@kÀHcÐH‹Œ$ˆH‹„$Hò@òDÑ‹D$@ƒÀ‰D$@‹„$€‰D$D‹„$€ƒÀ‰„$€ëbÇ„$HcŒ$€H‹„$Xƒ<ˆtA‹„$€‰D$D‹„$€ƒÀ‰„$€‹„$@9„$€|H‹Œ$ˆÿ+'éŸë©H‹¥6‹@0%…Àt ‹„$@‰D$xë‹„$@ƒè‰D$x‹L$|áÿïÿÿèOVÿÿë2‹D$DƒÀ‰D$D‹„$€ƒÀ‰„$€‹„$€™÷¼$@‰”$€‹D$x9D$D? HcL$DH‹„$Xƒ<ˆtHcŒ$€H‹„$XHcL$DH‹„$Xƒ<ˆ„-HcŒ$€H‹„$Xƒ<ˆ…LcD$DMkÀHc”$€HkÒH‹Œ$PH‹„$HòBò\H‹„$hòYò„$ÐLcD$DMkÀHc”$€HkÒH‹Œ$PH‹„$HòBLò\LH‹„$hòYHò„$ÐòXÁò„$ÐLcD$DMkÀHc”$€HkÒH‹Œ$PH‹„$HòBLò\LH‹„$hòYHò„$ÐòXÁò„$Ðò„$Ðf.y&z|uzÇ„$¸HcT$DHkÒH‹Œ$hH‹„$PòòHcT$DHkÒH‹Œ$hH‹„$PòDòAHcT$DHkÒH‹Œ$hH‹„$PòDòAé8Ç„$¸Hc”$€HkÒH‹Œ$`H‹„$Hòò\H‹„$hòYò„$ÈHc”$€HkÒH‹Œ$`H‹„$HòIò\LH‹„$hòYHò„$ÈòXÁò„$ÈHc”$€HkÒH‹Œ$`H‹„$HòIò\LH‹„$hòYHò„$ÈòXÁò„$Èò„$Èò^„$Ðò„$Øò%ò\„$Øò„$Àò„$ØòYä$f/ä$wòŒ$ØòY É$ò%f/Áv Ç„$¸HcL$DHkÉH‹„$Pò„$ØòYHcŒ$€HkÉH‹„$HòŒ$ÀòY òXÁòD$HHcL$DHkÉH‹„$Pò„$ØòYDHcŒ$€HkÉH‹„$HòŒ$ÀòYLòXÁòD$PHcL$DHkÉH‹„$Pò„$ØòYDHcŒ$€HkÉH‹„$HòŒ$ÀòYLòXÁòD$XHc„$€HkÀH‹”$HHÐHcD$DHkÀH‹Œ$HHÈH‹„$xH‰D$(H‹„$pH‰D$ D‹Œ$ˆLD$HèÌ ‹D$@kÀHcÈH‹„$ˆòD$HòÈ‹D$@kÀHcÈH‹„$ˆòD$PòDÈ‹D$@kÀHcÈH‹„$ˆòD$XòDÈ‹D$@ƒÀ‰D$@Lc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBòÑLc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBDòDÑLc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBDòDÑ‹D$@ƒÀ‰D$@HcL$DH‹„$Xƒ<ˆ…¼HcŒ$€H‹„$Xƒ<ˆ…¢Lc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBòÑLc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBDòDÑLc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBDòDÑ‹D$@ƒÀ‰D$@HcL$DH‹„$Xƒ<ˆ…éHcŒ$€H‹„$Xƒ<ˆ„ÏÇ„$LcD$DMkÀHc”$€HkÒH‹Œ$HH‹„$PòBò\H‹„$hòYò„$øLcD$DMkÀHc”$€HkÒH‹Œ$HH‹„$PòBLò\LH‹„$hòYHò„$øòXÁò„$øLcD$DMkÀHc”$€HkÒH‹Œ$HH‹„$PòBLò\LH‹„$hòYHò„$øòXÁò„$øò„$øf.W z|uzÇ„$àHcT$DHkÒH‹Œ$hH‹„$HòòHcT$DHkÒH‹Œ$hH‹„$HòDòAHcT$DHkÒH‹Œ$hH‹„$HòDòAé8Ç„$àHc”$€HkÒH‹Œ$`H‹„$Pòò\H‹„$hòYò„$ðHc”$€HkÒH‹Œ$`H‹„$PòIò\LH‹„$hòYHò„$ðòXÁò„$ðHc”$€HkÒH‹Œ$`H‹„$PòIò\LH‹„$hòYHò„$ðòXÁò„$ðò„$ðò^„$øò„$òíò\„$ò„$èò„$òYÂf/ÂwòŒ$òY §òïf/Áv Ç„$àHcL$DHkÉH‹„$Hò„$òYHcŒ$€HkÉH‹„$PòŒ$èòY òXÁòD$HHcL$DHkÉH‹„$Hò„$òYDHcŒ$€HkÉH‹„$PòŒ$èòYLòXÁòD$PHcL$DHkÉH‹„$Hò„$òYDHcŒ$€HkÉH‹„$PòŒ$èòYLòXÁòD$XHc„$€HkÀH‹”$HHÐHcD$DHkÀH‹Œ$HHÈH‹„$xH‰D$(H‹„$pH‰D$ D‹Œ$ˆLD$H誋D$@kÀHcÈH‹„$ˆòD$HòÈ‹D$@kÀHcÈH‹„$ˆòD$PòDÈ‹D$@kÀHcÈH‹„$ˆòD$XòDÈ‹D$@ƒÀ‰D$@ƒ|$@|D‹„$ˆ‰D$0HÇD$(H‹„$hH‰D$ L‹Œ$€L‹„$pH‹”$ˆ‹L$@ÿ”$ÇD$@éôÿÿ‹„$€ƒè‰„$€‹Œ$@‹„$€Á‰„$€‹„$€™÷¼$@‰”$€HcŒ$€H‹„$Xƒ<ˆ…pƒ|$@ŒeHc”$€HkÒH‹Œ$HH‹„$hòòXòD$`Hc”$€HkÒH‹Œ$HH‹„$hòDòX@òD$hHc”$€HkÒH‹Œ$HH‹„$hòDòX@òD$pHcŒ$€HkÉH‹„$Hòò\D$`H‹„$hòYò„$ HcŒ$€HkÉH‹„$HòLò\L$hH‹„$hòYHò„$ òXÁò„$ HcŒ$€HkÉH‹„$HòLò\L$pH‹„$hòYHò„$ òXÁò„$ ò„$ f.ÛЉ…ƒÇ„$Hc”$€HkÒH‹Œ$hH‹„$HòòHc”$€HkÒH‹Œ$hH‹„$HòDòAHc”$€HkÒH‹Œ$hH‹„$HòDòAéËÇ„$H‹„$`òò\D$`H‹„$hòYò„$H‹„$`òHò\L$hH‹„$hòYHò„$òXÁò„$H‹„$`òHò\L$pH‹„$hòYHò„$òXÁò„$ò„$ò^„$ ò„$(ò›ò\„$(ò„$ò„$(òYpf/pwòŒ$(òY Uòf/Áv Ç„$HcŒ$€HkÉH‹„$Hò„$(òYòŒ$òYL$`òXÁòD$HHcŒ$€HkÉH‹„$Hò„$(òYDòŒ$òYL$hòXÁòD$PHcŒ$€HkÉH‹„$Hò„$(òYDòŒ$òYL$pòXÁòD$X‹D$@kÀHcÈH‹„$ˆòD$HòÈ‹D$@kÀHcÈH‹„$ˆòD$PòDÈ‹D$@kÀHcÈH‹„$ˆòD$XòDÈ‹D$@ƒÀ‰D$@ƒ¼$u ‹L$|èJFÿÿ‹„$ˆ‰D$0HÇD$(H‹„$hH‰D$ L‹Œ$€L‹„$pH‹”$ˆ‹L$@ÿ”$‹L$|èýEÿÿH‹Œ$ˆÿ‡HÄ8ÃÌÌÌÌÌÌÌD‰L$ L‰D$H‰T$H‰L$Hƒì(Hƒ|$Pt H‹L$Pÿ-H‹Î%Hƒ8tfWɹûÿÿÿH‹¸%ÿ¹ÿÓƒ|$HtbH‹%Hƒx tA¸3ÒH‹L$0H‹‚%ÿP H‹L$0ÿ¤H‹m%Hƒx tA¸3ÒH‹L$8H‹R%ÿP H‹L$8ÿtë`H‹;%Hƒx tA¸3ÒH‹L$8H‹ %ÿP H‹L$8ÿBH‹ %Hƒx tA¸3ÒH‹L$0H‹ð$ÿP H‹L$0ÿH‹Û$Hƒx tA¸3ÒH‹L$@H‹À$ÿP H‹L$@ÿâH‹«$Hƒx(t H‹$ÿP(ÿÌHƒÄ(ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìHÇ„$„Ç„$˜è{Dÿÿ‰„$„‹„$PƒÀkÀÑàHcÈHÁáÿ¨H‰„$‹„$PƒÀkÀHcÈH‹„$HÈH‰D$@Ç„$ˆÇD$HH‹„$hƒ8…ñH‹Ô#‹@0ƒà…À„â‹„$„%…À…ÎH‹Œ$XH‹„$xòòXòD$hH‹Œ$XH‹„$xòAòX@òD$pH‹Œ$XH‹„$xòAòX@òD$xH‹„$Xòò\D$hH‹„$xòYò„$°H‹„$XòHò\L$pH‹„$xòYHò„$°òXÁò„$°H‹„$XòHò\L$xH‹„$xòYHò„$°òXÁò„$°ò„$°f.Pz^u\Ç„$œH‹Œ$xH‹„$XòòH‹Œ$xH‹„$Xò@òAH‹Œ$xH‹„$Xò@òAé¤Ç„$œH‹„$pòò\D$hH‹„$xòYò„$¨H‹„$pòHò\L$pH‹„$xòYHò„$¨òXÁò„$¨H‹„$pòHò\L$xH‹„$xòYHò„$¨òXÁò„$¨ò„$¨ò^„$°ò„$¸ò?ò\„$¸ò„$ ò„$¸òYf/wòŒ$¸òY ùòAf/Áv Ç„$œH‹„$Xò„$¸òYòŒ$ òYL$hòXÁòD$PH‹„$Xò„$¸òY@òŒ$ òYL$pòXÁòD$XH‹„$Xò„$¸òY@òŒ$ òYL$xòXÁòD$`‹D$HkÀHcÈH‹„$òD$PòÈ‹D$HkÀHcÈH‹„$òD$XòDÈ‹D$HkÀHcÈH‹„$òD$`òDÈ‹D$HkÀHcÐH‹L$@H‹„$€òòÑ‹D$HkÀHcÐH‹L$@H‹„$€ò@òDÑ‹D$HkÀHcÐH‹L$@H‹„$€ò@òDÑ‹D$HƒÀ‰D$H‹D$HkÀHcÐH‹Œ$H‹„$XòòÑ‹D$HkÀHcÐH‹Œ$H‹„$Xò@òDÑ‹D$HkÀHcÐH‹Œ$H‹„$Xò@òDÑ‹D$HkÀHcÐH‹L$@H‹„$€òòÑ‹D$HkÀHcÐH‹L$@H‹„$€ò@òDÑ‹D$HkÀHcÐH‹L$@H‹„$€ò@òDÑ‹D$HƒÀ‰D$H‹„$ˆ‰D$L‹„$ˆƒÀ‰„$ˆëbÇ„$˜HcŒ$ˆH‹„$hƒ<ˆtA‹„$ˆ‰D$L‹„$ˆƒÀ‰„$ˆ‹„$P9„$ˆ|H‹Œ$ÿé°ë©H‹‹@0%…Àt‹„$P‰„$€ë‹„$Pƒè‰„$€è>ÿÿ‰„$„‹Œ$„áÿïÿÿè>ÿÿë2‹D$LƒÀ‰D$L‹„$ˆƒÀ‰„$ˆ‹„$ˆ™÷¼$P‰”$ˆ‹„$€9D$LzHcL$LH‹„$hƒ<ˆtHcŒ$ˆH‹„$hHcL$LH‹„$hƒ<ˆ„uHcŒ$ˆH‹„$hƒ<ˆ…[LcD$LMkÀHc”$ˆHkÒH‹Œ$`H‹„$XòBò\H‹„$xòYò„$ØLcD$LMkÀHc”$ˆHkÒH‹Œ$`H‹„$XòBLò\LH‹„$xòYHò„$ØòXÁò„$ØLcD$LMkÀHc”$ˆHkÒH‹Œ$`H‹„$XòBLò\LH‹„$xòYHò„$ØòXÁò„$Øò„$Øf.=z|uzÇ„$ÀHcT$LHkÒH‹Œ$xH‹„$`òòHcT$LHkÒH‹Œ$xH‹„$`òDòAHcT$LHkÒH‹Œ$xH‹„$`òDòAé8Ç„$ÀHc”$ˆHkÒH‹Œ$pH‹„$Xòò\H‹„$xòYò„$ÐHc”$ˆHkÒH‹Œ$pH‹„$XòIò\LH‹„$xòYHò„$ÐòXÁò„$ÐHc”$ˆHkÒH‹Œ$pH‹„$XòIò\LH‹„$xòYHò„$ÐòXÁò„$Ðò„$Ðò^„$Øò„$àòÓ ò\„$àò„$Èò„$àòY¨ f/¨ wòŒ$àòY òÕ f/Áv Ç„$ÀHcL$LHkÉH‹„$`ò„$àòYHcŒ$ˆHkÉH‹„$XòŒ$ÈòY òXÁòD$PHcL$LHkÉH‹„$`ò„$àòYDHcŒ$ˆHkÉH‹„$XòŒ$ÈòYLòXÁòD$XHcL$LHkÉH‹„$`ò„$àòYDHcŒ$ˆHkÉH‹„$XòŒ$ÈòYLòXÁòD$`Hc„$ˆHkÀL‹Œ$€LÈHcD$LHkÀL‹„$€LÀHc„$ˆHkÀH‹”$XHÐHcD$LHkÀH‹Œ$XHÈL‰L$8L‰D$0H‹„$H‰D$(H‹„$ˆH‰D$ D‹Œ$ LD$P蛋D$HkÀHcÈH‹„$òD$PòÈ‹D$HkÀHcÈH‹„$òD$XòDÈ‹D$HkÀHcÈH‹„$òD$`òDÈLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$HLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$HHcL$LH‹„$hƒ<ˆ…JHcŒ$ˆH‹„$hƒ<ˆ…0Lc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$HHcL$LH‹„$hƒ<ˆ…NHcŒ$ˆH‹„$hƒ<ˆ„4Ç„$˜LcD$LMkÀHc”$ˆHkÒH‹Œ$XH‹„$`òBò\H‹„$xòYò„$LcD$LMkÀHc”$ˆHkÒH‹Œ$XH‹„$`òBLò\LH‹„$xòYHò„$òXÁò„$LcD$LMkÀHc”$ˆHkÒH‹Œ$XH‹„$`òBLò\LH‹„$xòYHò„$òXÁò„$ò„$f.Ez|uzÇ„$èHcT$LHkÒH‹Œ$xH‹„$XòòHcT$LHkÒH‹Œ$xH‹„$XòDòAHcT$LHkÒH‹Œ$xH‹„$XòDòAé8Ç„$èHc”$ˆHkÒH‹Œ$pH‹„$`òò\H‹„$xòYò„$øHc”$ˆHkÒH‹Œ$pH‹„$`òIò\LH‹„$xòYHò„$øòXÁò„$øHc”$ˆHkÒH‹Œ$pH‹„$`òIò\LH‹„$xòYHò„$øòXÁò„$øò„$øò^„$ò„$òÛò\„$ò„$ðò„$òY°f/°wòŒ$òY •òÝf/Áv Ç„$èHcL$LHkÉH‹„$Xò„$òYHcŒ$ˆHkÉH‹„$`òŒ$ðòY òXÁòD$PHcL$LHkÉH‹„$Xò„$òYDHcŒ$ˆHkÉH‹„$`òŒ$ðòYLòXÁòD$XHcL$LHkÉH‹„$Xò„$òYDHcŒ$ˆHkÉH‹„$`òŒ$ðòYLòXÁòD$`Hc„$ˆHkÀL‹Œ$€LÈHcD$LHkÀL‹„$€LÀHc„$ˆHkÀH‹”$XHÐHcD$LHkÀH‹Œ$XHÈL‰L$8L‰D$0H‹„$H‰D$(H‹„$ˆH‰D$ D‹Œ$ LD$P裋D$HkÀHcÈH‹„$òD$PòÈ‹D$HkÀHcÈH‹„$òD$XòDÈ‹D$HkÀHcÈH‹„$òD$`òDÈH‹‹@0%…À„ŠLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑéŽLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$Hƒ|$H|E‹„$ ‰D$0H‹D$@H‰D$(H‹„$xH‰D$ L‹Œ$˜L‹„$ˆH‹”$‹L$Hÿ”$¨ÇD$HéCñÿÿ‹„$ˆƒè‰„$ˆ‹Œ$P‹„$ˆÁ‰„$ˆ‹„$ˆ™÷¼$P‰”$ˆHcŒ$ˆH‹„$hƒ<ˆ…+ƒ|$HŒ H‹ ‹@0ƒà…À„°‹„$„%…À…œHc”$ˆHkÒH‹Œ$XH‹„$xòòXòD$hHc”$ˆHkÒH‹Œ$XH‹„$xòDòX@òD$pHc”$ˆHkÒH‹Œ$XH‹„$xòDòX@òD$xHcŒ$ˆHkÉH‹„$Xòò\D$hH‹„$xòYò„$(HcŒ$ˆHkÉH‹„$XòLò\L$pH‹„$xòYHò„$(òXÁò„$(HcŒ$ˆHkÉH‹„$XòLò\L$xH‹„$xòYHò„$(òXÁò„$(ò„$(f.;ÿЉ…ƒÇ„$Hc”$ˆHkÒH‹Œ$xH‹„$XòòHc”$ˆHkÒH‹Œ$xH‹„$XòDòAHc”$ˆHkÒH‹Œ$xH‹„$XòDòAéËÇ„$H‹„$pòò\D$hH‹„$xòYò„$ H‹„$pòHò\L$pH‹„$xòYHò„$ òXÁò„$ H‹„$pòHò\L$xH‹„$xòYHò„$ òXÁò„$ ò„$ ò^„$(ò„$0òûýò\„$0ò„$ò„$0òYÐýf/ÐýwòŒ$0òY µýòýýf/Áv Ç„$HcŒ$ˆHkÉH‹„$Xò„$0òYòŒ$òYL$hòXÁòD$PHcŒ$ˆHkÉH‹„$Xò„$0òYDòŒ$òYL$pòXÁòD$XHcŒ$ˆHkÉH‹„$Xò„$0òYDòŒ$òYL$xòXÁòD$`‹D$HkÀHcÈH‹„$òD$PòÈ‹D$HkÀHcÈH‹„$òD$XòDÈ‹D$HkÀHcÈH‹„$òD$`òDÈLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$Hƒ¼$˜u ‹Œ$„è*ÿÿ‹„$ ‰D$0H‹D$@H‰D$(H‹„$xH‰D$ L‹Œ$˜L‹„$ˆH‹”$‹L$Hÿ”$¨‹Œ$„èÈ)ÿÿH‹Œ$ÿRúHÄHÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌD‰L$ L‰D$H‰T$H‰L$Hƒì(Hƒ|$Pt H‹L$PÿíúH‹Ž Hƒ8tfWɹûÿÿÿH‹x ÿ¹ÿ“úH‹d ‹@0%…À„&H‹M HƒxtH‹L$`H‹: ÿPH‹L$`ÿlúƒ|$HtbH‹ Hƒx tA¸3ÒH‹L$0H‹ ÿP H‹L$0ÿ%úH‹îHƒx tA¸3ÒH‹L$8H‹ÓÿP H‹L$8ÿõùë`H‹¼Hƒx tA¸3ÒH‹L$8H‹¡ÿP H‹L$8ÿÃùH‹ŒHƒx tA¸3ÒH‹L$0H‹qÿP H‹L$0ÿ“ùH‹\Hƒx tA¸3ÒH‹L$@H‹AÿP H‹L$@ÿcùéȃ|$H„µH‹HƒxtH‹L$`H‹ ÿPH‹L$`ÿ;ùH‹ôHƒx tA¸3ÒH‹L$0H‹ÙÿP H‹L$0ÿûøH‹ÄHƒxtH‹L$hH‹±ÿPH‹L$hÿãøH‹œHƒx tA¸3ÒH‹L$8H‹ÿP H‹L$8ÿ£øéØH‹gHƒxtH‹L$hH‹TÿPH‹L$hÿ†øH‹?Hƒx tA¸3ÒH‹L$8H‹$ÿP H‹L$8ÿFøH‹HƒxtH‹L$`H‹üÿPH‹L$`ÿ.øH‹çHƒx tA¸3ÒH‹L$0H‹ÌÿP H‹L$0ÿî÷H‹·HƒxtH‹L$hH‹¤ÿPH‹L$hÿÖ÷H‹Hƒx tA¸3ÒH‹L$@H‹tÿP H‹L$@ÿ–÷H‹_Hƒx(t H‹QÿP(ÿ€÷HƒÄ(ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìHÇD$pHÇ„$ˆHÇ„$ HÇ„$ÐHÇ„$ÈfWÀò„$àò„$àò„$ØHƒ¼$ u Ç„$ðë Ç„$ð·„$ðf‰D$xHƒ¼$@u Ç„$ôë Ç„$ô·„$ôf‰„$Hƒ¼$Hu Ç„$øë Ç„$ø·„$øf‰„$¨¿„$¨…À…‹„$ÁàkÀHcÈHÁáÿ~õH‰D$pH‹D$pH‰„$ˆ‹„$kÀHcÈH‹„$ˆHÈH‰„$ ‹„$kÀHcÈH‹„$ HÈH‰„$Ћ„$kÀHcÈH‹„$ÐHÈH‰„$ÈHƒ¼$(u$fWÀòD$PòöòD$XfWÀòD$`ë8H‹„$(òòD$PH‹„$(ò@òD$XH‹„$(ò@òD$`L‹„$8‹”$0HL$PèÙ(ÇD$h‹D$h‰„$‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBò\ò„$ð‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBDò\Dò„$ø‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBDò\Dò„$ò„$ðòY„$ðòŒ$øòYŒ$øòXÁò„$˜òŒ$òYŒ$ò„$˜òXÁò„$˜ò„$˜è¸Üò„$˜‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBòXò„$ ‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBDòXDò„$¨‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBDòXDò„$°ò„$ òY„$ òŒ$¨òYŒ$¨òXÁò„$˜òŒ$°òYŒ$°ò„$˜òXÁò„$˜ò„$˜èÛò„$˜ò„$˜òYóò„$˜‹„$ƒÀ‰„$ò„$˜f/„$˜r‹„$0ƒè9„$Œ<ýÿÿ¿„$¨…À…‹Ç„$”ë‹„$”ƒÀ‰„$”‹„$9„$”†‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBòY‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBLòYLòXÁ‹„$ƒèHcÈHkÉ0H‹„$HòXD‹„$”kÀHcÈH‹„$ˆòÈ‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBDòY‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBL òYLòXÁ‹„$ƒèHcÈHkÉ0H‹„$HòXD(‹„$”kÀHcÈH‹„$ˆòDÈ‹„$”kÀƒÀHcÈH‹„$ˆfWÀòÈéUþÿÿ¿D$x…À…ÆÇ„$”ë‹„$”ƒÀ‰„$”‹„$9„$””‹„$ƒèHcÈHkÉ0H‹„$HòDf.¤ðzsuq‹„$ƒèHcÈHkÉ0H‹„$HòDf.yðzHuF‹„$ƒèLcÀMkÀ0‹„$ƒèHcÐHkÒ0H‹Œ$HH‹„$HòBf.D z„G‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$ òBD òY‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$ òBLòYLò\Á‹„$”kÀHcÈH‹„$ÐòÈ‹„$ƒèHcÈHkÉ0H‹„$HòDfW—ïHcŒ$”HkÉH‹„$ òY‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$ òB òYLòXÁ‹„$”kÀHcÈH‹„$ÐòDÈ‹„$”kÀLcÀ‹„$”kÀHcÐH‹Œ$ÐH‹„$ÐòBÁòYЋ„$”kÀLcÀ‹„$”kÀHcÐH‹Œ$ÐH‹„$ÐòBLÁòYLÐòXÁò„$¸ò„$¸èÏÖf(èòƒîò^Åò„$¸‹„$”kÀHcÈH‹„$ÐòÈòY„$¸‹„$”kÀHcÈH‹„$ÐòÈ‹„$”kÀHcÈH‹„$ÐòDÈòY„$¸‹„$”kÀHcÈH‹„$ÐòDÈëjLc„$”MkÀ‹„$”kÀHcÐH‹Œ$ÐH‹„$ òBòÑLc„$”MkÀ‹„$”kÀHcÐH‹Œ$ÐH‹„$ òBDòDÑ‹„$”kÀƒÀHcÈH‹„$ÐfWÀòÈ‹„$”kÀƒÀHcÈH‹„$ÈfWÀòÈéGüÿÿ‹„$0ƒè9„$ËHc„$HkÀL‹Œ$8LÈHcD$hHkÀL‹„$8LÀ‹D$hƒèH˜HkÀH‹”$8HÐHŒ$°è0_òD$PòY„$°òL$XòYŒ$¸òXÁòL$`òYŒ$ÀòXÁò„$Àò êìòYŒ$ÀòYŒ$°òD$Pò\ÁòD$Pò ÀìòYŒ$ÀòYŒ$¸òD$Xò\ÁòD$Xò –ìòYŒ$ÀòYŒ$ÀòD$`ò\ÁòD$`Hc„$HkÀL‹„$8LÀHcD$hHkÀH‹”$8HÐLL$PHŒ$è÷ËÿyëHŒ$ÿsëD¿œ$¨E…Û„—¿„$…À„°¿D$x…Àt'òœ$˜D‹„$H‹”$‹Œ$èãë{H‹Êù‹@0%…Àt5ò„$˜òD$ D‹Œ$L‹„$ H‹”$‹Œ$è;ë3ò„$˜òD$ D‹Œ$L‹„$ H‹”$‹Œ$è–éÒ¿D$x…Àt8ò„$˜òD$ D‹Œ$L‹„$@H‹”$‹Œ$èué‘H‹ ù‹@0%…Àt@ò„$˜òD$(‹„$‰D$ L‹Œ$ L‹„$@H‹”$‹Œ$è¿!ë>ò„$˜òD$(‹„$‰D$ L‹Œ$ L‹„$@H‹”$‹Œ$è_é‹ Ç„$”ë‹„$”ƒÀ‰„$”‹„$9„$”–Lc„$MkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBòYLc„$MkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBLòYLòXÁHcŒ$HkÉ0H‹„$HòXD‹„$”kÀHcÈH‹„$ òÈLc„$MkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBDòYLc„$MkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBL òYLòXÁHcŒ$HkÉ0H‹„$HòXD(‹„$”kÀHcÈH‹„$ òDÈò„$˜fWµè‹„$”kÀƒÀHcÈH‹„$ òÈ‹„$”kÀƒÀHcÈH‹„$ˆfWÀòÈéEþÿÿ¿D$x…À…\Ç„$”ë‹„$”ƒÀ‰„$”‹„$9„$”*HcŒ$HkÉ0H‹„$HòDf.ñçzdubHcŒ$HkÉ0H‹„$HòDf.Ëçz>u¼‹@0%…À„ùÇ„$@ë‹„$@ƒÀ‰„$@‹„$pƒè9„$@¿‹Œ$@‹„$p+Áƒè‰„$˜Lc„$@MkÀ‹„$˜kÀHcÐH‹Œ$ H‹„$˜òBòÑLc„$@MkÀ‹„$˜kÀHcÐH‹Œ$ H‹„$˜òBDòDÑLc„$@MkÀ‹„$˜kÀHcÐH‹Œ$ H‹„$˜òBDòDÑéÿÿÿéñÇ„$@ë‹„$@ƒÀ‰„$@‹„$p9„$@¿‹Œ$@‹„$p+Áƒè‰„$˜Lc„$@MkÀ‹„$˜kÀHcÐH‹Œ$ H‹„$˜òBòÑLc„$@MkÀ‹„$˜kÀHcÐH‹Œ$ H‹„$˜òBDòDÑLc„$@MkÀ‹„$˜kÀHcÐH‹Œ$ H‹„$˜òBDòDÑéÿÿÿÇD$Xë ‹D$XƒÀ‰D$Xƒ|$X0Ç„$@ë‹„$@ƒÀ‰„$@‹„$p9„$@â‹„$@kÀƒÀLcÀHc”$@H‹Œ$H‹D$hòBÁò\Ћ„$@kÀƒÀHcÈH‹„$òÈ‹„$@kÀƒÀLcÀHc”$@H‹Œ$HH‹D$hòBÁò\Ћ„$@kÀƒÀHcÈH‹„$HòÈ‹„$@kÀHcÈH‹„$Hò„$ÀòYÈ‹„$@kÀHcÈH‹„$HòŒ$ÈòYLÈòXÁ‹„$@kÀHcÈH‹„$HòŒ$ÐòYLÈòXÁ‹„$@kÀHcÈH‹„$òÈ‹„$@kÀHcÈH‹„$Hò„$àòYÈ‹„$@kÀHcÈH‹„$HòŒ$èòYLÈòXÁ‹„$@kÀHcÈH‹„$HòŒ$ðòYLÈòXÁ‹„$@kÀHcÈH‹„$òDÈ‹„$@kÀHcÈH‹„$Hò„$òYÈ‹„$@kÀHcÈH‹„$HòŒ$òYLÈòXÁ‹„$@kÀHcÈH‹„$HòŒ$òYLÈòXÁ‹„$@kÀHcÈH‹„$òDÈ‹„$@kÀƒÀLcÀHc”$@H‹Œ$H‹D$hòBÁòXЋ„$@kÀƒÀHcÈH‹„$òÈ‹„$@kÀƒÀLcÀHc”$@H‹Œ$HH‹D$hòBÁòXЋ„$@kÀƒÀHcÈH‹„$HòÈéùüÿÿHƒ¼$˜„àÇ„$@ë‹„$@ƒÀ‰„$@‹„$p9„$@®‹„$@kÀHcÈH‹„$ ò„$ÀòYÈ‹„$@kÀHcÈH‹„$ òŒ$ÈòYLÈòXÁ‹„$@kÀHcÈH‹„$ òŒ$ÐòYLÈòXÁ‹„$@kÀHcÈH‹„$¨òÈ‹„$@kÀHcÈH‹„$ ò„$àòYÈ‹„$@kÀHcÈH‹„$ òŒ$èòYLÈòXÁ‹„$@kÀHcÈH‹„$ òŒ$ðòYLÈòXÁ‹„$@kÀHcÈH‹„$¨òDÈ‹„$@kÀHcÈH‹„$ ò„$òYÈ‹„$@kÀHcÈH‹„$ òŒ$òYLÈòXÁ‹„$@kÀHcÈH‹„$ òŒ$òYLÈòXÁ‹„$@kÀHcÈH‹„$¨òDÈé-þÿÿHƒ¼$˜u.fWÀòD$ E3ÉL‹„$HH‹”$‹Œ$pèí4é›H‹á´‹@0%…ÀtEfWÀòD$0ÇD$(H‹„$ H‰D$ L‹Œ$¨L‹„$HH‹”$‹Œ$pè²JëCfWÀòD$0ÇD$(H‹„$ H‰D$ L‹Œ$¨L‹„$HH‹”$‹Œ$pè]EH‹„$H‰D$`H‹„$HH‰„$H‹D$`H‰„$HH‹„$¨H‰D$`H‹„$ H‰„$¨H‹D$`H‰„$ éºùÿÿH‹Œ$ˆÿ^¤HÄhÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hƒì8H‹²³Hƒ8tòL$p‹L$hH‹›³ÿ¹ÿ¶¤ÇD$ ë ‹D$ ƒÀ‰D$ ‹D$@9D$ ¯H‹L$Xÿ¸¤H‹Y³Hƒx t%HcD$ HkÀH‹L$HHÈA¸‹T$ H‹0³ÿP HcD$ HkÀH‹L$HHÈÿF¤H‹L$`ÿc¤H‹³Hƒx t%HcD$ HkÀH‹L$PHÈA¸‹T$ H‹Û²ÿP HcD$ HkÀH‹L$PHÈÿñ£é8ÿÿÿH‹µ²‹@0%…ÀtvH‹L$Xÿö£H‹—²Hƒx tA¸3ÒH‹L$HH‹|²ÿP H‹L$Hÿž£H‹L$`ÿ»£H‹\²Hƒx tA¸3ÒH‹L$PH‹A²ÿP H‹L$Pÿc£H‹,²Hƒx(t H‹²ÿP(ÿM£HƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hƒì8H‹â±Hƒ8tòL$x‹L$pH‹˱ÿ¹ÿæ¢ÇD$ ë ‹D$ ƒÀ‰D$ ‹D$@9D$ /H‹L$`ÿè¢H‹‰±HƒxtHcD$ HkÀH‹L$XHÈH‹j±ÿPHcD$ HkÀH‹L$XHÈÿ¢H‹I±Hƒx t%HcD$ HkÀH‹L$HHÈA¸‹T$ H‹ ±ÿP HcD$ HkÀH‹L$HHÈÿ6¢H‹L$hÿS¢H‹ô°HƒxtHcD$ HkÀH‹L$XHÈH‹Õ°ÿPHcD$ HkÀH‹L$XHÈÿû¡H‹´°Hƒx t%HcD$ HkÀH‹L$PHÈA¸‹T$ H‹‹°ÿP HcD$ HkÀH‹L$PHÈÿ¡¡é¸þÿÿH‹e°‹@0%…À„ÆH‹L$`ÿ¢¡H‹C°HƒxtH‹L$XH‹0°ÿPH‹L$Xÿb¡H‹°Hƒx tA¸3ÒH‹L$HH‹°ÿP H‹L$Hÿ"¡H‹L$hÿ?¡H‹à¯HƒxtH‹L$XH‹ͯÿPH‹L$Xÿÿ H‹¸¯Hƒx tA¸3ÒH‹L$PH‹¯ÿP H‹L$Pÿ¿ H‹ˆ¯Hƒx(t H‹z¯ÿP(ÿ© HƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hƒì8H‹B¯Hƒ8tòL$x‹L$pH‹+¯ÿ¹ÿF ÇD$ ë ‹D$ ƒÀ‰D$ ‹D$@ƒè9D$ oH‹L$`ÿE H‹æ®HƒxtHcD$ HkÀH‹L$XHÈH‹Ç®ÿPHcD$ HkÀH‹L$XHÈÿíŸH‹¦®Hƒx t%HcD$ HkÀH‹L$HHÈA¸‹T$ H‹}®ÿP HcD$ HkÀH‹L$HHÈÿ“ŸH‹L$hÿ°ŸH‹Q®HƒxtHcD$ HkÀH‹L$XHÈH‹2®ÿPHcD$ HkÀH‹L$XHÈÿXŸH‹®Hƒx t%HcD$ HkÀH‹L$PHÈA¸‹T$ H‹è­ÿP HcD$ HkÀH‹L$PHÈÿþžH‹L$`ÿŸH‹¼­HƒxtHcD$ HkÀH‹L$XHÈH‹­ÿPHcD$ HkÀH‹L$XHÈÿÞH‹|­Hƒx t,‹T$ ƒÂ‹D$ ƒÀH˜HkÀH‹L$HHÈA¸H‹L­ÿP ‹D$ ƒÀH˜HkÀH‹L$HHÈÿ^žH‹L$hÿ{žH‹­HƒxtHcD$ HkÀH‹L$XHÈH‹ý¬ÿPHcD$ HkÀH‹L$XHÈÿ#žH‹ܬHƒx t,‹T$ ƒÂ‹D$ ƒÀH˜HkÀH‹L$PHÈA¸H‹¬¬ÿP ‹D$ ƒÀH˜HkÀH‹L$PHÈÿ¾éuýÿÿH‹‚¬‹@0%…À„VH‹L$`ÿ¿H‹`¬Hƒxt‹D$@ƒèH˜HkÀH‹L$XHÈH‹=¬ÿP‹D$@ƒèH˜HkÀH‹L$XHÈÿ_H‹¬Hƒx t,‹T$@ƒê‹D$@ƒèH˜HkÀH‹L$HHÈA¸H‹è«ÿP ‹D$@ƒèH˜HkÀH‹L$HHÈÿúœH‹L$hÿH‹¸«Hƒxt‹D$@ƒèH˜HkÀH‹L$XHÈH‹•«ÿP‹D$@ƒèH˜HkÀH‹L$XHÈÿ·œH‹p«Hƒx t,‹T$@ƒê‹D$@ƒèH˜HkÀH‹L$PHÈA¸H‹@«ÿP ‹D$@ƒèH˜HkÀH‹L$PHÈÿRœH‹L$`ÿoœH‹«Hƒxt‹D$@ƒèH˜HkÀH‹L$XHÈH‹íªÿP‹D$@ƒèH˜HkÀH‹L$XHÈÿœH‹ȪHƒx tA¸3ÒH‹L$HH‹­ªÿP H‹L$HÿÏ›H‹L$hÿì›H‹ªHƒxt‹D$@ƒèH˜HkÀH‹L$XHÈH‹jªÿP‹D$@ƒèH˜HkÀH‹L$XHÈÿŒ›H‹EªHƒx tA¸3ÒH‹L$PH‹*ªÿP H‹L$PÿL›H‹ªHƒx(t H‹ªÿP(ÿ6›HƒÄ8ÃÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hƒì8H‹Ò©Hƒ8tòŒ$€‹L$xH‹¸©ÿ¹ÿÓšÇD$ ë ‹D$ ƒÀ‰D$ ‹D$@9D$ /H‹L$hÿÕšH‹v©HƒxtHcD$ HkÀH‹L$XHÈH‹W©ÿPHcD$ HkÀH‹L$XHÈÿ}šH‹6©Hƒx t%HcD$ HkÀH‹L$HHÈA¸‹T$ H‹ ©ÿP HcD$ HkÀH‹L$HHÈÿ#šH‹L$pÿ@šH‹á¨HƒxtHcD$ HkÀH‹L$`HÈH‹¨ÿPHcD$ HkÀH‹L$`HÈÿè™H‹¡¨Hƒx t%HcD$ HkÀH‹L$PHÈA¸‹T$ H‹x¨ÿP HcD$ HkÀH‹L$PHÈÿŽ™é¸þÿÿH‹R¨‹@0%…À„ÆH‹L$hÿ™H‹0¨HƒxtH‹L$XH‹¨ÿPH‹L$XÿO™H‹¨Hƒx tA¸3ÒH‹L$HH‹í§ÿP H‹L$Hÿ™H‹L$pÿ,™H‹ͧHƒxtH‹L$`H‹º§ÿPH‹L$`ÿì˜H‹¥§Hƒx tA¸3ÒH‹L$PH‹ЧÿP H‹L$Pÿ¬˜H‹u§Hƒx(t H‹g§ÿP(ÿ–˜HƒÄ8ÃÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hƒì8H‹2§Hƒ8tòŒ$€‹L$xH‹§ÿ¹ÿ3˜ÇD$ ë ‹D$ ƒÀ‰D$ ‹D$@ƒè9D$ oH‹L$hÿ2˜H‹Ó¦HƒxtHcD$ HkÀH‹L$XHÈH‹´¦ÿPHcD$ HkÀH‹L$XHÈÿÚ—H‹“¦Hƒx t%HcD$ HkÀH‹L$HHÈA¸‹T$ H‹j¦ÿP HcD$ HkÀH‹L$HHÈÿ€—H‹L$pÿ—H‹>¦HƒxtHcD$ HkÀH‹L$`HÈH‹¦ÿPHcD$ HkÀH‹L$`HÈÿE—H‹þ¥Hƒx t%HcD$ HkÀH‹L$PHÈA¸‹T$ H‹Õ¥ÿP HcD$ HkÀH‹L$PHÈÿë–H‹L$hÿ—H‹©¥HƒxtHcD$ HkÀH‹L$XHÈH‹Š¥ÿPHcD$ HkÀH‹L$XHÈÿ°–H‹i¥Hƒx t,‹T$ ƒÂ‹D$ ƒÀH˜HkÀH‹L$HHÈA¸H‹9¥ÿP ‹D$ ƒÀH˜HkÀH‹L$HHÈÿK–H‹L$pÿh–H‹ ¥HƒxtHcD$ HkÀH‹L$`HÈH‹ê¤ÿPHcD$ HkÀH‹L$`HÈÿ–H‹ɤHƒx t,‹T$ ƒÂ‹D$ ƒÀH˜HkÀH‹L$PHÈA¸H‹™¤ÿP ‹D$ ƒÀH˜HkÀH‹L$PHÈÿ«•éuýÿÿH‹o¤‹@0%…À„VH‹L$hÿ¬•H‹M¤Hƒxt‹D$@ƒèH˜HkÀH‹L$XHÈH‹*¤ÿP‹D$@ƒèH˜HkÀH‹L$XHÈÿL•H‹¤Hƒx t,‹T$@ƒê‹D$@ƒèH˜HkÀH‹L$HHÈA¸H‹Õ£ÿP ‹D$@ƒèH˜HkÀH‹L$HHÈÿç”H‹L$pÿ•H‹¥£Hƒxt‹D$@ƒèH˜HkÀH‹L$`HÈH‹‚£ÿP‹D$@ƒèH˜HkÀH‹L$`HÈÿ¤”H‹]£Hƒx t,‹T$@ƒê‹D$@ƒèH˜HkÀH‹L$PHÈA¸H‹-£ÿP ‹D$@ƒèH˜HkÀH‹L$PHÈÿ?”H‹L$hÿ\”H‹ý¢Hƒxt‹D$@ƒèH˜HkÀH‹L$XHÈH‹Ú¢ÿP‹D$@ƒèH˜HkÀH‹L$XHÈÿü“H‹µ¢Hƒx tA¸3ÒH‹L$HH‹š¢ÿP H‹L$Hÿ¼“H‹L$pÿÙ“H‹z¢Hƒxt‹D$@ƒèH˜HkÀH‹L$`HÈH‹W¢ÿP‹D$@ƒèH˜HkÀH‹L$`HÈÿy“H‹2¢Hƒx tA¸3ÒH‹L$PH‹¢ÿP H‹L$Pÿ9“H‹¢Hƒx(t H‹ô¡ÿP(ÿ#“HƒÄ8ÃÌÌÌÌÌÌL‰D$H‰T$‰L$HìøHÇD$ HÇD$(H‹„$fWÀf/@vdH‹„$òŽ“òYH‹„$òH‹„$òn“òY@H‹„$ò@H‹„$òL“òY@H‹„$ò@H‹;¡HƒxtH‹Œ$H‹%¡ÿPH‹Œ$ÿT’è1zH‰D$8L‹+’º‡H‹L$8èzL‹’º‡H‹L$8èúyL‹’º‡H‹L$8èäyH‹L$8èÔyHÇD$(‹„$ƒèHcÈHkÉH‹„$HÁH‰D$ ÇD$@ë ‹D$@ƒÀ‰D$@‹„$ƒè9D$@HcT$@HkÒH‹Œ$H‹D$ òò\òD$pHcT$@HkÒH‹Œ$H‹D$ òDò\@òD$xHcT$@HkÒH‹Œ$H‹D$ òDò\@ò„$€‹D$@ƒÀLcÀMkÀHcT$@HkÒH‹Œ$H‹„$òBò\òD$X‹D$@ƒÀLcÀMkÀHcT$@HkÒH‹Œ$H‹„$òBDò\DòD$`‹D$@ƒÀLcÀMkÀHcT$@HkÒH‹Œ$H‹„$òBDò\DòD$hòD$pòYD$pòL$xòYL$xòXÁòŒ$€òYŒ$€òXÁòD$PòD$XòYD$XòL$`òYL$`òXÁòL$hòYL$hòXÁò„$ˆò|òYD$Pf/„$ˆr Ç„$Øë Ç„$Ø‹„$؉D$0ƒ|$0u&ò9òY„$ˆf/D$Ps Ç„$Üë Ç„$Ü‹„$܉D$0òD$pòYD$XòL$xòYL$`òXÁòŒ$€òYL$hòXÁòD$Hƒ|$0uQòL$PòYŒ$ˆòD$HòYD$Hò\ÈòD$PòY„$ˆòY“òY‹f/Ás Ç„$àë Ç„$à‹„$à‰D$0ƒ|$0u]HcD$@HkÀL‹„$LÀHcD$@HkÀH‹”$HÐH‹L$8è‘vHcL$@HkÉH‹„$HÁH‰D$ Hƒ|$(u H‹D$ H‰D$(éÇüÿÿHƒ|$(u H‹„$H‰D$(‹„$ƒèHcÐHkÒH‹Œ$H‹D$ òò\ò„$¸‹„$ƒèHcÐHkÒH‹Œ$H‹D$ òDò\@ò„$À‹„$ƒèHcÐHkÒH‹Œ$H‹D$ òDò\@ò„$È‹„$ƒèHcÐHkÒH‹L$(H‹„$òò\ò„$ ‹„$ƒèHcÐHkÒH‹L$(H‹„$òAò\Dò„$¨‹„$ƒèHcÐHkÒH‹L$(H‹„$òAò\Dò„$°ò„$¸òY„$¸òŒ$ÀòYŒ$ÀòXÁòŒ$ÈòYŒ$ÈòXÁò„$˜ò„$ òY„$ òŒ$¨òYŒ$¨òXÁòŒ$°òYŒ$°òXÁò„$Ðò&òY„$˜f/„$Ðr Ç„$äë Ç„$ä‹„$ä‰D$0ƒ|$0u)òàŒòY„$Ðf/„$˜s Ç„$èë Ç„$è‹„$è‰D$0ò„$¸òY„$ òŒ$ÀòYŒ$¨òXÁòŒ$ÈòYŒ$°òXÁò„$ƒ|$0u]òŒ$˜òYŒ$Ðò„$òY„$ò\Èò„$˜òY„$ÐòYŒòYŒf/Ás Ç„$ìë Ç„$ì‹„$ì‰D$0ƒ|$0u@‹„$ƒèH˜HkÀL‹„$LÀ‹„$ƒèH˜HkÀH‹”$HÐH‹L$8è sH‹L$8èùrH‹L$8èérHÄøÃÌÌÌÌÌÌÌÌÌÌÌÌÌL‰D$H‰T$‰L$HìøHÇD$ HÇD$(H‹„$ò@f/4‹vdH‹„$òz‹òYH‹„$òH‹„$òZ‹òY@H‹„$ò@H‹„$ò8‹òY@H‹„$ò@H‹'™HƒxtH‹Œ$H‹™ÿPH‹Œ$ÿ@ŠèrH‰D$8L‹Šº‡H‹L$8èüqL‹ Šº‡H‹L$8èæqL‹û‰º‡H‹L$8èÐqH‹L$8èÀqHÇD$(H‹„$H‰D$ ‹„$ƒè‰D$@ë ‹D$@ƒè‰D$@ƒ|$@ŽHcT$@HkÒH‹Œ$H‹D$ òò\òD$pHcT$@HkÒH‹Œ$H‹D$ òDò\@òD$xHcT$@HkÒH‹Œ$H‹D$ òDò\@ò„$€‹D$@ƒèLcÀMkÀHcT$@HkÒH‹Œ$H‹„$òBò\òD$X‹D$@ƒèLcÀMkÀHcT$@HkÒH‹Œ$H‹„$òBDò\DòD$`‹D$@ƒèLcÀMkÀHcT$@HkÒH‹Œ$H‹„$òBDò\DòD$hòD$pòYD$pòL$xòYL$xòXÁòŒ$€òYŒ$€òXÁòD$PòD$XòYD$XòL$`òYL$`òXÁòL$hòYL$hòXÁò„$ˆòˆòYD$Pf/„$ˆr Ç„$Øë Ç„$Ø‹„$؉D$0ƒ|$0u&ò<ˆòY„$ˆf/D$Ps Ç„$Üë Ç„$Ü‹„$܉D$0òD$pòYD$XòL$xòYL$`òXÁòŒ$€òYL$hòXÁòD$Hƒ|$0uQòL$PòYŒ$ˆòD$HòYD$Hò\ÈòD$PòY„$ˆòY–‡òYއf/Ás Ç„$àë Ç„$à‹„$à‰D$0ƒ|$0u]HcD$@HkÀL‹„$LÀHcD$@HkÀH‹”$HÐH‹L$8è”nHcL$@HkÉH‹„$HÁH‰D$ Hƒ|$(u H‹D$ H‰D$(éÐüÿÿHƒ|$(u!‹„$ƒèHcÈHkÉH‹„$HÁH‰D$(H‹Œ$H‹D$ òò\ò„$¸H‹Œ$H‹D$ òAò\@ò„$ÀH‹Œ$H‹D$ òAò\@ò„$ÈH‹L$(H‹„$òò\ò„$ H‹L$(H‹„$òAò\@ò„$¨H‹L$(H‹„$òAò\@ò„$°ò„$¸òY„$¸òŒ$ÀòYŒ$ÀòXÁòŒ$ÈòYŒ$ÈòXÁò„$˜ò„$ òY„$ òŒ$¨òYŒ$¨òXÁòŒ$°òYŒ$°òXÁò„$Ðò…òY„$˜f/„$Ðr Ç„$äë Ç„$ä‹„$ä‰D$0ƒ|$0u)ò;…òY„$Ðf/„$˜s Ç„$èë Ç„$è‹„$è‰D$0ò„$¸òY„$ òŒ$ÀòYŒ$¨òXÁòŒ$ÈòYŒ$°òXÁò„$ƒ|$0u]òŒ$˜òYŒ$Ðò„$òY„$ò\Èò„$˜òY„$ÐòYt„òYl„f/Ás Ç„$ìë Ç„$ì‹„$ì‰D$0ƒ|$0uL‹„$H‹”$H‹L$8èŠkH‹L$8èzkH‹L$8èjkHÄøÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìHƒ¼$(u$fWÀòD$XòɃòD$`fWÀòD$hë8H‹„$(òòD$XH‹„$(ò@òD$`H‹„$(ò@òD$hL‹„$8‹”$0HL$X膶fWíò¬$@fWÀò„$HfWÀò„$PfWÀòD$pfWÀòD$xò#ƒò„$€Ç„$Œ‹„$Œ‰„$ ‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBò\ò„$€‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBDò\Dò„$ˆ‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBDò\Dò„$ò„$€òY„$€òŒ$ˆòYŒ$ˆòXÁò„$ðòŒ$òYŒ$ò„$ðòXÁò„$ðò„$ðèjò„$ð‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBòXò„$0‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBDòXDò„$8‹„$ ƒÀLcÀMkÀHc”$ HkÒH‹Œ$8H‹„$8òBDòXDò„$@ò„$0òY„$0òŒ$8òYŒ$8òXÁò„$(òŒ$@òYŒ$@ò„$(òXÁò„$(ò„$(èÜhò„$(ò„$(òYz€ò„$(‹„$ ƒÀ‰„$ ò„$(f/„$ðr‹„$0ƒè9„$ Œ<ýÿÿò„$ðò„$XHc„$ HkÀL‹Œ$8LÈL‹„$8IƒÀH‹”$8HŒ$ èCòòD$XòY„$ òL$`òYŒ$(òXÁòL$hòYŒ$0òXÁò„$Hò ýòYŒ$HòYŒ$ òD$Xò\ÁòD$Xò ÓòYŒ$HòYŒ$(òD$`ò\ÁòD$`ò ©òYŒ$HòYŒ$0òD$hò\ÁòD$h‹„$kÀHcÈ‹„$kÀH˜HÁàH Èÿà}H‰„$H‹„$H‰„$Ћ„$kÀHcÈH‹„$ÐHÈH‰„$‹„$kÀHcÈH‹„$HÈH‰„$`‹„$kÀHcÈH‹„$`HÈH‰„$8H‹„$`H‰D$PHƒ¼$ „•Hƒ¼$H…ÀÇ„$$ë‹„$$ƒÀ‰„$$‹„$9„$$‰Lc„$$MkÀ‹„$$kÀHcÐH‹L$PH‹„$ òBòÑLc„$$MkÀ‹„$$kÀƒÀHcÐH‹L$PH‹„$ òBDòÑ‹„$$kÀƒÀHcÈH‹D$PfWÀòÈéRÿÿÿéÆÇ„$$ë‹„$$ƒÀ‰„$$‹„$9„$$”‹„$ ƒèHcÈHkÉ0H‹„$HòDf.A}zsuq‹„$ ƒèHcÈHkÉ0H‹„$HòDf.}zHuF‹„$ ƒèLcÀMkÀ0‹„$ ƒèHcÐHkÒ0H‹Œ$HH‹„$HòBf.D z„G‹„$ ƒèLcÀMkÀ0Hc”$$HkÒH‹Œ$HH‹„$ òBD òY‹„$ ƒèLcÀMkÀ0Hc”$$HkÒH‹Œ$HH‹„$ òBLòYLò\Á‹„$$kÀHcÈH‹„$`òÈ‹„$ ƒèHcÈHkÉ0H‹„$HòDfW4|HcŒ$$HkÉH‹„$ òY‹„$ ƒèLcÀMkÀ0Hc”$$HkÒH‹Œ$HH‹„$ òB òYLòXÁ‹„$$kÀHcÈH‹„$`òDÈ‹„$$kÀLcÀ‹„$$kÀHcÐH‹Œ$`H‹„$`òBÁòYЋ„$$kÀLcÀ‹„$$kÀHcÐH‹Œ$`H‹„$`òBLÁòYLÐòXÁò„$Pò„$Pèlcf(èò {ò^Åò„$P‹„$$kÀHcÈH‹„$`òÈòY„$P‹„$$kÀHcÈH‹„$`òÈ‹„$$kÀHcÈH‹„$`òDÈòY„$P‹„$$kÀHcÈH‹„$`òDÈëjLc„$$MkÀ‹„$$kÀHcÐH‹Œ$`H‹„$ òBòÑLc„$$MkÀ‹„$$kÀHcÐH‹Œ$`H‹„$ òBDòDÑ‹„$$kÀƒÀHcÈH‹„$`fWÀòÈ‹„$$kÀƒÀHcÈH‹„$8fWÀòÈéGüÿÿÇ„$ø‹„$0ƒè9„$  "‹„$ ‰„$ˆ‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBò\ò„$€‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBDò\Dò„$ˆ‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBDò\Dò„$ò„$€òY„$€òŒ$ˆòYŒ$ˆòXÁò„$ðòŒ$òYŒ$ò„$ðòXÁò„$ðò„$ðèÆ`ò„$ð‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBòXò„$`‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBDòXDò„$h‹„$ˆƒÀLcÀMkÀHc”$ˆHkÒH‹Œ$8H‹„$8òBDòXDò„$pò„$`òY„$`òŒ$hòYŒ$hòXÁò„$XòŒ$pòYŒ$pò„$XòXÁò„$Xò„$Xè_ò„$Xò„$XòY-wò„$X‹„$ˆƒÀ‰„$ˆò„$Xf/„$ðr‹„$0ƒè9„$ˆŒ<ýÿÿHc„$ˆHkÀL‹Œ$8LÈHc„$ HkÀL‹„$8LÀHc„$ŒHkÀH‹”$8HÐHŒ$ØèîèHc„$ HkÀL‹„$8LÀHc„$ŒHkÀH‹”$8HÐLL$XHŒ$ ènVÿðuHŒ$ ÿêuò„$ òY„$ òŒ$¨òYŒ$(òXÁòŒ$°òYŒ$0òXÁò„$ò„$ÀòY„$ òŒ$ÈòYŒ$(òXÁòŒ$ÐòYŒ$0òXÁò„$ò„$àòY„$ òŒ$èòYŒ$(òXÁòŒ$ðòYŒ$0òXÁò„$ò„$ òY„$ØòŒ$¨òYŒ$àòXÁòŒ$°òYŒ$èòXÁò„$°ò„$ÀòY„$ØòŒ$ÈòYŒ$àòXÁòŒ$ÐòYŒ$èòXÁò„$¸ò„$àòY„$ØòŒ$èòYŒ$àòXÁòŒ$ðòYŒ$èòXÁò„$Àò„$XfWŸtò„$€Ç„$$ë‹„$$ƒÀ‰„$$‹„$9„$$XHƒ¼$ „V Hƒ¼$H„%HcŒ$ HkÉ0H‹„$HòDf.tzdubHcŒ$ HkÉ0H‹„$HòDf.Þsz>uLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBòYLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBLòYLòXÁHcŒ$ HkÉ0H‹„$HòXDò„$˜Lc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBDòYLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBL òYLòXÁHcŒ$ HkÉ0H‹„$HòXD(ò„$ Lc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBòYLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBLòYLòXÁHcŒ$ HkÉ0H‹„$HòXDò„$hLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBDòYLc„$ MkÀ0Hc”$$HkÒH‹Œ$HH‹„$òBL òYLòXÁHcŒ$ HkÉ0H‹„$HòXD(ò„$pò„$˜ò\„$hòY„$°ò„$àòŒ$ ò\Œ$pòYŒ$¸ò„$àòXÁò„$àòŒ$¨ò\Œ$xòYŒ$Àò„$àòXÁò„$àò„$àf.azHuFÇ„$Èò„$˜ò„$°ò„$ ò„$¸ò„$¨ò„$ÀéÍÇ„$ÈòD$pò\„$hòY„$°ò„$ØòL$xò\Œ$pòYŒ$¸ò„$ØòXÁò„$ØòŒ$€ò\Œ$xòYŒ$Àò„$ØòXÁò„$Øò„$Øò^„$àò„$èò `ò\„$èò„$Ðò„$èòYõ_f/õ_wòŒ$èòY Ú_ò"`f/Áv Ç„$Èò„$èòY„$˜òŒ$ÐòYŒ$hòXÁ‹„$$kÀHcÈH‹„$òÈò„$èòY„$ òŒ$ÐòYŒ$pòXÁ‹„$$kÀHcÈH‹„$òDÈò„$èòY„$¨òŒ$ÐòYŒ$xòXÁ‹„$$kÀHcÈH‹„$òDÈéƒêÿÿH‹Em‹@0ƒà…À„´ƒ¼$øtSHƒ¼$@t!‹„$ ƒèH˜HkÀ H‹Œ$@HÈÿ!^Ç„$øL‹„$ÐH”$‹Œ$èúÊÿÿ‹„$0ƒè9„$ uDHƒ¼$@tHc„$ HkÀ H‹Œ$@HÈÿ¿]L‹„$H”$°‹Œ$è³ÒÿÿHƒ¼$H…~H‹ml‹@0%…À…gHƒ¼$@…ÓHƒ¼$ u8ò„$XòD$ D‹Œ$ L‹„$H‹”$ЋŒ$èìé‹H‹l‹@0%…Àt=ò„$XòD$(‹„$ ‰D$ L‹L$PL‹„$H‹”$ЋŒ$èÝóë;ò„$XòD$(‹„$ ‰D$ L‹L$PL‹„$H‹”$ЋŒ$èðîé€Hƒ¼$ urHc„$ HkÀ H‹Œ$@HÈ‹„$ ƒèH˜HkÀ L‹Œ$@LÈò„$XòD$0‹„$ ‰D$(H‰L$ L‹„$H‹”$ЋŒ$è£ìéH‹÷j‹@0%…ÀtyHc„$ HkÀ H‹”$@HЋ„$ ƒèH˜HkÀ H‹Œ$@HÈò„$XòD$8‹„$ ‰D$0H‰T$(H‰L$ L‹L$PL‹„$H‹”$ЋŒ$èöëwHc„$ HkÀ H‹”$@HЋ„$ ƒèH˜HkÀ H‹Œ$@HÈò„$XòD$8‹„$ ‰D$0H‰T$(H‰L$ L‹L$PL‹„$H‹”$ЋŒ$è{ïé©Hƒ¼$@…óHƒ¼$ u8ò„$XòD$ D‹Œ$ L‹„$H‹”$ЋŒ$è©éé«H‹i‹@0%…ÀtMò„$XòD$0‹„$ ‰D$(H‹„$8H‰D$ L‹Œ$`L‹„$H‹”$ЋŒ$èfÿëKò„$XòD$0‹„$ ‰D$(H‹„$8H‰D$ L‹Œ$`L‹„$H‹”$ЋŒ$è úé§Hƒ¼$ urHc„$ HkÀ H‹Œ$@HÈ‹„$ ƒèH˜HkÀ L‹Œ$@LÈò„$XòD$0‹„$ ‰D$(H‰L$ L‹„$H‹”$ЋŒ$èêé*H‹ph‹@0%…À„ŒHc„$ HkÀ H‹”$@HЋ„$ ƒèH˜HkÀ H‹Œ$@HÈò„$XòD$@‹„$ ‰D$8H‰T$0H‰L$(H‹„$8H‰D$ L‹Œ$`L‹„$H‹”$ЋŒ$èé‡Hc„$ HkÀ H‹”$@HЋ„$ ƒèH˜HkÀ H‹Œ$@HÈò„$XòD$@‹„$ ‰D$8H‰T$0H‰L$(H‹„$8H‰D$ L‹Œ$`L‹„$H‹”$ЋŒ$èÍúÿ§Xò¬$ðò¬$X‹„$ ‰„$Œ‹„$ˆ‰„$ ò„$Øò„$ ò„$àò„$(ò„$èò„$0H‹„$`H‰„$ÈH‹„$8H‰„$`H‹„$ÈH‰„$8òD$XòY„$ òL$`òYŒ$(òXÁòL$hòYŒ$0òXÁò„$ðò mXòYŒ$ðòYŒ$ òD$Xò\ÁòD$Xò CXòYŒ$ðòYŒ$(òD$`ò\ÁòD$`ò XòYŒ$ðòYŒ$0òD$hò\ÁòD$héÉÝÿÿH‹Œ$ÿ\VHÄÃÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìèHÇD$xHÇ„$HÇ„$XÇ„$¨H‹ƒe‹@0ƒà…ÀtÇ„$HEH‰„$ëÇ„$H[ÔH‰„$Hƒ¼$u-fWÀò„$€òÓVò„$ˆfWÀò„$ëAH‹„$òò„$€H‹„$ò@ò„$ˆH‹„$ò@ò„$L‹„$‹”$HŒ$€è~‰fWíò¬$ fWÀò„$(fWÀò„$0fWÀò„$¨fWÀò„$°òVò„$¸‹„$ðkÀ HcÈ‹„$ðkÀH˜HÁàH È‹„$ðÑàH˜H ÿ¦TH‰„$èH‹„$èH‰„$`‹„$ðkÀHcÈH‹„$`HÈH‰„$‹„$ðkÀHcÈH‹„$HÈH‰„$P‹„$ðkÀHcÈH‹„$PHÈH‰„$È‹„$ðkÀHcÈH‹„$ÈHÈH‰„$‹„$ðkÀHcÈH‹„$HÈH‰„$‹„$ðkÀHcÈH‹„$HÈH‰„$€HcŒ$ðH‹„$€HˆH‰„$ Ç„$ä‹„$䉄$@‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBò\ò„$ ‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBDò\Dò„$¨‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBDò\Dò„$°ò„$ òY„$ òŒ$¨òYŒ$¨òXÁò„$òŒ$°òYŒ$°ò„$òXÁò„$ò„$èÕ;ò„$‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBòXò„$P‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBDòXDò„$X‹„$@ƒÀLcÀMkÀHc”$@HkÒH‹Œ$H‹„$òBDòXDò„$`ò„$PòY„$PòŒ$XòYŒ$XòXÁò„$HòŒ$`òYŒ$`ò„$HòXÁò„$Hò„$Hèž:ò„$Hò„$HòYfWÀò„$ ò„$ ò„$˜ò„$˜ò„$Ç„$ÀëvòÚIò^„$°ò„$°ò„$°òY„$xò„$ò„$°òY„$€ò„$˜ò„$°òY„$ˆò„$ Ç„$ÀéêÇ„$ÀòLIòY„$pf/„$°rpò8Iò^„$pò„$pò„$pòY„$˜ò„$ò„$pòY„$ ò„$˜ò„$pòY„$¨ò„$ éSòÈHò^„$pò„$pò„$pòY„$˜ò„$˜ò„$pòY„$ ò„$ ò„$pòY„$¨ò„$¨ò]Hò^„$°ò„$°ò„$°òY„$xò„$xò„$°òY„$€ò„$€ò„$°òY„$ˆò„$ˆò„$˜ò\„$xò„$ò„$ ò\„$€ò„$˜ò„$¨ò\„$ˆò„$ ò„$òY„$òŒ$˜òYŒ$˜òXÁò„$òŒ$ òYŒ$ ò„$òXÁò„$ò„$è‚/ò„$ò)Gf/„$v>fWÀò„$ ò„$ ò„$˜ò„$˜ò„$Ç„$ÀëkòàFò^„$ò„$ò„$òY„$ò„$ò„$òY„$˜ò„$˜ò„$òY„$ ò„$ ò„$€òY„$èòŒ$ˆòYŒ$ðòXÁòŒ$òYŒ$øòXÁò„$¸ò ~FòYŒ$¸òYŒ$èò„$€ò\Áò„$€ò NFòYŒ$¸òYŒ$ðò„$ˆò\Áò„$ˆò FòYŒ$¸òYŒ$øò„$ò\Áò„$‹„$ƒè9„$@\3‹„$@‰„$à‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBò\ò„$ ‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBDò\Dò„$¨‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBDò\Dò„$°ò„$ òY„$ òŒ$¨òYŒ$¨òXÁò„$òŒ$°òYŒ$°ò„$òXÁò„$ò„$è“,ò„$‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBòXò„$È‹„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBDòXDò„$Ћ„$àƒÀLcÀMkÀHc”$àHkÒH‹Œ$H‹„$òBDòXDò„$Øò„$ÈòY„$ÈòŒ$ÐòYŒ$ÐòXÁò„$ÀòŒ$ØòYŒ$Øò„$ÀòXÁò„$Àò„$Àè\+ò„$Àò„$ÀòYúBò„$À‹„$àƒÀ‰„$àò„$Àf/„$r‹„$ƒè9„$àŒ<ýÿÿHc„$àHkÀL‹Œ$LÈHc„$@HkÀL‹„$LÀHc„$äHkÀH‹”$HÐHŒ$Xè»´Lc„$@MkÀHc”$äHkÒH‹Œ$H‹„$òBò\ò„$Lc„$@MkÀHc”$äHkÒH‹Œ$H‹„$òBDò\Dò„$Lc„$@MkÀHc”$äHkÒH‹Œ$H‹„$òBDò\Dò„$Lc„$àMkÀHc”$@HkÒH‹Œ$H‹„$òBò\ò„$èLc„$àMkÀHc”$@HkÒH‹Œ$H‹„$òBDò\Dò„$ðLc„$àMkÀHc”$@HkÒH‹Œ$H‹„$òBDò\Dò„$øò„$òY„$òŒ$òYŒ$òXÁò„$àòŒ$òYŒ$ò„$àòXÁò„$àò„$àèÔ(ò„$àò„$èòY„$èòŒ$ðòYŒ$ðòXÁò„$ òŒ$øòYŒ$øò„$ òXÁò„$ ò„$ èd(ò„$ ò @òY„$ f/„$à‚Îò„$ f.Ú?z@u>fWÀò„$Øò„$Øò„$Ðò„$Ðò„$ÈÇ„$Pëvò ?ò^„$ ò„$ ò„$ òY„$èò„$Èò„$ òY„$ðò„$Ðò„$ òY„$øò„$ØÇ„$PéêÇ„$Pò?òY„$àf/„$ rpòþ>ò^„$àò„$àò„$àòY„$ò„$Èò„$àòY„$ò„$Ðò„$àòY„$ò„$ØéSòŽ>ò^„$àò„$àò„$àòY„$ò„$ò„$àòY„$ò„$ò„$àòY„$ò„$ò#>ò^„$ ò„$ ò„$ òY„$èò„$èò„$ òY„$ðò„$ðò„$ òY„$øò„$øò„$ò\„$èò„$Èò„$ò\„$ðò„$Ðò„$ò\„$øò„$Øò„$ÈòY„$ÈòŒ$ÐòYŒ$ÐòXÁò„$òŒ$ØòYŒ$Øò„$òXÁò„$ò„$èH%ò„$òï<f/„$v>fWÀò„$Øò„$Øò„$Ðò„$Ðò„$ÈÇ„$Pëkò¦<ò^„$ò„$ò„$òY„$Èò„$Èò„$òY„$Ðò„$Ðò„$òY„$Øò„$ØHc„$@HkÀL‹„$LÀHc„$äHkÀH‹”$HÐLŒ$€HŒ$Àèÿ’;HŒ$ÀÿŒ;ò„$ÀòY„$òŒ$ÈòYŒ$˜òXÁòŒ$ÐòYŒ$ òXÁò„$xò„$àòY„$òŒ$èòYŒ$˜òXÁòŒ$ðòYŒ$ òXÁò„$€ò„$òY„$òŒ$òYŒ$˜òXÁòŒ$òYŒ$ òXÁò„$ˆò„$ÀòY„$ÈòŒ$ÈòYŒ$ÐòXÁòŒ$ÐòYŒ$ØòXÁò„$Ðò„$àòY„$ÈòŒ$èòYŒ$ÐòXÁòŒ$ðòYŒ$ØòXÁò„$Øò„$òY„$ÈòŒ$òYŒ$ÐòXÁòŒ$òYŒ$ØòXÁò„$àò„$ÀòY„$èòŒ$ÈòYŒ$ðòXÁòŒ$ÐòYŒ$øòXÁò„$°ò„$àòY„$èòŒ$èòYŒ$ðòXÁòŒ$ðòYŒ$øòXÁò„$¸ò„$òY„$èòŒ$òYŒ$ðòXÁòŒ$òYŒ$øòXÁò„$Àò„$ÀòY„$XòŒ$ÈòYŒ$`òXÁòŒ$ÐòYŒ$hòXÁò„$0ò„$àòY„$XòŒ$èòYŒ$`òXÁòŒ$ðòYŒ$hòXÁò„$8ò„$òY„$XòŒ$òYŒ$`òXÁòŒ$òYŒ$hòXÁò„$@òD$pfWš8ò„$¸Ç„$Dë‹„$DƒÀ‰„$D‹„$ð9„$D©Hƒ¼$(…HcŒ$DHkÉH‹„$øòò„$HcŒ$DHkÉH‹„$øòDò„$ HcŒ$DHkÉH‹„$øòò„$hHcŒ$DHkÉH‹„$øòDò„$pHcŒ$DHkÉH‹„$øòò„$ðHcŒ$DHkÉH‹„$øòDò„$øHcŒ$DHkÉH‹„$øòò„$8HcŒ$DHkÉH‹„$øòDò„$@éì‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBòY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBLòYLòXÁ‹„$@ƒèHcÈHkÉ0H‹„$(òXDò„$‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBDòY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBL òYLòXÁ‹„$@ƒèHcÈHkÉ0H‹„$(òXD(ò„$ Lc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBòYLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBLòYLòXÁHcŒ$@HkÉ0H‹„$(òXDò„$ðLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBDòYLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBL òYLòXÁHcŒ$@HkÉ0H‹„$(òXD(ò„$øLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBòYLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBLòYLòXÁHcŒ$@HkÉ0H‹„$(òXDò„$hLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBDòYLc„$@MkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBL òYLòXÁHcŒ$@HkÉ0H‹„$(òXD(ò„$p‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBòY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBLòYLòXÁ‹„$@ƒèHcÈHkÉ0H‹„$(òXDò„$8‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBDòY‹„$@ƒèLcÀMkÀ0Hc”$DHkÒH‹Œ$(H‹„$øòBL òYLòXÁ‹„$@ƒèHcÈHkÉ0H‹„$(òXD(ò„$@Hƒ¼$„%HcŒ$@HkÉ0H‹„$(òDf..2zdubHcŒ$@HkÉ0H‹„$(òDf.2z>uñéPHƒ¼$È„©H‹„$Èò@f/« vdH‹„$Èòñ òYH‹„$ÈòH‹„$ÈòÑ òY@H‹„$Èò@H‹„$Èò¯ òY@H‹„$Èò@H‹žHƒxtH‹Œ$ÈH‹ˆÿPH‹Œ$Èÿ·H‹L$8èƒðHÇD$0H‹„$¸H‰D$ ‹„$°ƒè‰D$(ë ‹D$(ƒè‰D$(ƒ|$(ŽnHcT$(HkÒH‹Œ$¸H‹D$ òò\ò„$HcT$(HkÒH‹Œ$¸H‹D$ òDò\@ò„$HcT$(HkÒH‹Œ$¸H‹D$ òDò\@ò„$‹D$(ƒèLcÀMkÀHcT$(HkÒH‹Œ$¸H‹„$¸òBò\ò„$è‹D$(ƒèLcÀMkÀHcT$(HkÒH‹Œ$¸H‹„$¸òBDò\Dò„$ð‹D$(ƒèLcÀMkÀHcT$(HkÒH‹Œ$¸H‹„$¸òBDò\Dò„$øò„$òY„$òŒ$òYŒ$òXÁòŒ$òYŒ$òXÁò„$àò„$èòY„$èòŒ$ðòYŒ$ðòXÁòŒ$øòYŒ$øòXÁò„$òòY„$àf/„$r Ç„$€ë Ç„$€‹„$€‰D$@ƒ|$@u)òÌòY„$f/„$às Ç„$„ë Ç„$„‹„$„‰D$@ò„$òY„$èòŒ$òYŒ$ðòXÁòŒ$òYŒ$øòXÁò„$؃|$@u]òŒ$àòYŒ$ò„$ØòY„$Øò\Èò„$àòY„$òYòYýf/Ás Ç„$ˆë Ç„$ˆ‹„$ˆ‰D$@ƒ|$@u]HcD$(HkÀL‹„$¸LÀHcD$(HkÀH‹”$¸HÐH‹L$8èíHcL$(HkÉH‹„$¸HÁH‰D$ Hƒ|$0u H‹D$ H‰D$0é|üÿÿHƒ|$0u!‹„$°ƒèHcÈHkÉH‹„$¸HÁH‰D$0H‹Œ$¸H‹D$ òò\ò„$HH‹Œ$¸H‹D$ òAò\@ò„$PH‹Œ$¸H‹D$ òAò\@ò„$XH‹L$0H‹„$¸òò\ò„$0H‹L$0H‹„$¸òAò\@ò„$8H‹L$0H‹„$¸òAò\@ò„$@ò„$HòY„$HòŒ$PòYŒ$PòXÁòŒ$XòYŒ$XòXÁò„$(ò„$0òY„$0òŒ$8òYŒ$8òXÁòŒ$@òYŒ$@òXÁò„$`òðòY„$(f/„$`r Ç„$Œë Ç„$Œ‹„$Œ‰D$@ƒ|$@u)òªòY„$`f/„$(s Ç„$ë Ç„$‹„$‰D$@ò„$HòY„$0òŒ$PòYŒ$8òXÁòŒ$XòYŒ$@òXÁò„$ ƒ|$@u]òŒ$(òYŒ$`ò„$ òY„$ ò\Èò„$(òY„$`òYãòYÛf/Ás Ç„$”ë Ç„$”‹„$”‰D$@ƒ|$@uL‹„$¸H‹”$¸H‹L$8èùéH‹L$8èééH‹L$8èÙéHĨÃÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$ÃÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hì8ÇD$|Ç„$‹„$@ƒÀkÀHcÈHÁáÿÙH‰„$ˆè|0þÿ‰D$|Ç„$€ÇD$@H‹„$Xƒ8…&H‹‹@0ƒà…À„{‹D$|%…À…jH‹Œ$HH‹„$hòòXòD$`H‹Œ$HH‹„$hòAòX@òD$hH‹Œ$HH‹„$hòAòX@òD$pH‹„$Hòò\D$`H‹„$hòYò„$¨H‹„$HòHò\L$hH‹„$hòYHò„$¨òXÁò„$¨H‹„$HòHò\L$pH‹„$hòYHò„$¨òXÁò„$¨ò„$¨f.œz^u\Ç„$”H‹Œ$hH‹„$HòòH‹Œ$hH‹„$Hò@òAH‹Œ$hH‹„$Hò@òAé¤Ç„$”H‹„$`òò\D$`H‹„$hòYò„$ H‹„$`òHò\L$hH‹„$hòYHò„$ òXÁò„$ H‹„$`òHò\L$pH‹„$hòYHò„$ òXÁò„$ ò„$ ò^„$¨ò„$°ò‹ÿò\„$°ò„$˜ò„$°òY`ÿf/`ÿwòŒ$°òY Eÿòÿf/Áv Ç„$”H‹„$Hò„$°òYòŒ$˜òYL$`òXÁòD$HH‹„$Hò„$°òY@òŒ$˜òYL$hòXÁòD$PH‹„$Hò„$°òY@òŒ$˜òYL$pòXÁòD$X‹D$@kÀHcÈH‹„$ˆòD$HòÈ‹D$@kÀHcÈH‹„$ˆòD$PòDÈ‹D$@kÀHcÈH‹„$ˆòD$XòDÈ‹D$@ƒÀ‰D$@‹D$@kÀHcÐH‹Œ$ˆH‹„$HòòÑ‹D$@kÀHcÐH‹Œ$ˆH‹„$Hò@òDÑ‹D$@kÀHcÐH‹Œ$ˆH‹„$Hò@òDÑ‹D$@ƒÀ‰D$@‹„$€‰D$D‹„$€ƒÀ‰„$€ëbÇ„$HcŒ$€H‹„$Xƒ<ˆtA‹„$€‰D$D‹„$€ƒÀ‰„$€‹„$@9„$€|H‹Œ$ˆÿüéŸë©H‹• ‹@0%…Àt ‹„$@‰D$xë‹„$@ƒè‰D$x‹L$|áÿïÿÿè?+þÿë2‹D$DƒÀ‰D$D‹„$€ƒÀ‰„$€‹„$€™÷¼$@‰”$€‹D$x9D$D? HcL$DH‹„$Xƒ<ˆtHcŒ$€H‹„$XHcL$DH‹„$Xƒ<ˆ„-HcŒ$€H‹„$Xƒ<ˆ…LcD$DMkÀHc”$€HkÒH‹Œ$PH‹„$HòBò\H‹„$hòYò„$ÐLcD$DMkÀHc”$€HkÒH‹Œ$PH‹„$HòBLò\LH‹„$hòYHò„$ÐòXÁò„$ÐLcD$DMkÀHc”$€HkÒH‹Œ$PH‹„$HòBLò\LH‹„$hòYHò„$ÐòXÁò„$Ðò„$Ðf.iûz|uzÇ„$¸HcT$DHkÒH‹Œ$hH‹„$PòòHcT$DHkÒH‹Œ$hH‹„$PòDòAHcT$DHkÒH‹Œ$hH‹„$PòDòAé8Ç„$¸Hc”$€HkÒH‹Œ$`H‹„$Hòò\H‹„$hòYò„$ÈHc”$€HkÒH‹Œ$`H‹„$HòIò\LH‹„$hòYHò„$ÈòXÁò„$ÈHc”$€HkÒH‹Œ$`H‹„$HòIò\LH‹„$hòYHò„$ÈòXÁò„$Èò„$Èò^„$Ðò„$Øòÿùò\„$Øò„$Àò„$ØòYÔùf/ÔùwòŒ$ØòY ¹ùòúf/Áv Ç„$¸HcL$DHkÉH‹„$Pò„$ØòYHcŒ$€HkÉH‹„$HòŒ$ÀòY òXÁòD$HHcL$DHkÉH‹„$Pò„$ØòYDHcŒ$€HkÉH‹„$HòŒ$ÀòYLòXÁòD$PHcL$DHkÉH‹„$Pò„$ØòYDHcŒ$€HkÉH‹„$HòŒ$ÀòYLòXÁòD$XHc„$€HkÀH‹”$HHÐHcD$DHkÀH‹Œ$HHÈH‹„$xH‰D$(H‹„$pH‰D$ D‹Œ$ˆLD$HèÌ ‹D$@kÀHcÈH‹„$ˆòD$HòÈ‹D$@kÀHcÈH‹„$ˆòD$PòDÈ‹D$@kÀHcÈH‹„$ˆòD$XòDÈ‹D$@ƒÀ‰D$@Lc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBòÑLc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBDòDÑLc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBDòDÑ‹D$@ƒÀ‰D$@HcL$DH‹„$Xƒ<ˆ…¼HcŒ$€H‹„$Xƒ<ˆ…¢Lc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBòÑLc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBDòDÑLc„$€MkÀ‹D$@kÀHcÐH‹Œ$ˆH‹„$HòBDòDÑ‹D$@ƒÀ‰D$@HcL$DH‹„$Xƒ<ˆ…éHcŒ$€H‹„$Xƒ<ˆ„ÏÇ„$LcD$DMkÀHc”$€HkÒH‹Œ$HH‹„$PòBò\H‹„$hòYò„$øLcD$DMkÀHc”$€HkÒH‹Œ$HH‹„$PòBLò\LH‹„$hòYHò„$øòXÁò„$øLcD$DMkÀHc”$€HkÒH‹Œ$HH‹„$PòBLò\LH‹„$hòYHò„$øòXÁò„$øò„$øf.Gõz|uzÇ„$àHcT$DHkÒH‹Œ$hH‹„$HòòHcT$DHkÒH‹Œ$hH‹„$HòDòAHcT$DHkÒH‹Œ$hH‹„$HòDòAé8Ç„$àHc”$€HkÒH‹Œ$`H‹„$Pòò\H‹„$hòYò„$ðHc”$€HkÒH‹Œ$`H‹„$PòIò\LH‹„$hòYHò„$ðòXÁò„$ðHc”$€HkÒH‹Œ$`H‹„$PòIò\LH‹„$hòYHò„$ðòXÁò„$ðò„$ðò^„$øò„$òÝóò\„$ò„$èò„$òY²óf/²ówòŒ$òY —óòßóf/Áv Ç„$àHcL$DHkÉH‹„$Hò„$òYHcŒ$€HkÉH‹„$PòŒ$èòY òXÁòD$HHcL$DHkÉH‹„$Hò„$òYDHcŒ$€HkÉH‹„$PòŒ$èòYLòXÁòD$PHcL$DHkÉH‹„$Hò„$òYDHcŒ$€HkÉH‹„$PòŒ$èòYLòXÁòD$XHc„$€HkÀH‹”$HHÐHcD$DHkÀH‹Œ$HHÈH‹„$xH‰D$(H‹„$pH‰D$ D‹Œ$ˆLD$H誋D$@kÀHcÈH‹„$ˆòD$HòÈ‹D$@kÀHcÈH‹„$ˆòD$PòDÈ‹D$@kÀHcÈH‹„$ˆòD$XòDÈ‹D$@ƒÀ‰D$@ƒ|$@|D‹„$ˆ‰D$0HÇD$(H‹„$hH‰D$ L‹Œ$€L‹„$pH‹”$ˆ‹L$@ÿ”$ÇD$@éôÿÿ‹„$€ƒè‰„$€‹Œ$@‹„$€Á‰„$€‹„$€™÷¼$@‰”$€HcŒ$€H‹„$Xƒ<ˆ…pƒ|$@ŒeHc”$€HkÒH‹Œ$HH‹„$hòòXòD$`Hc”$€HkÒH‹Œ$HH‹„$hòDòX@òD$hHc”$€HkÒH‹Œ$HH‹„$hòDòX@òD$pHcŒ$€HkÉH‹„$Hòò\D$`H‹„$hòYò„$ HcŒ$€HkÉH‹„$HòLò\L$hH‹„$hòYHò„$ òXÁò„$ HcŒ$€HkÉH‹„$HòLò\L$pH‹„$hòYHò„$ òXÁò„$ ò„$ f.ËïЉ…ƒÇ„$Hc”$€HkÒH‹Œ$hH‹„$HòòHc”$€HkÒH‹Œ$hH‹„$HòDòAHc”$€HkÒH‹Œ$hH‹„$HòDòAéËÇ„$H‹„$`òò\D$`H‹„$hòYò„$H‹„$`òHò\L$hH‹„$hòYHò„$òXÁò„$H‹„$`òHò\L$pH‹„$hòYHò„$òXÁò„$ò„$ò^„$ ò„$(ò‹îò\„$(ò„$ò„$(òY`îf/`îwòŒ$(òY Eîòîf/Áv Ç„$HcŒ$€HkÉH‹„$Hò„$(òYòŒ$òYL$`òXÁòD$HHcŒ$€HkÉH‹„$Hò„$(òYDòŒ$òYL$hòXÁòD$PHcŒ$€HkÉH‹„$Hò„$(òYDòŒ$òYL$pòXÁòD$X‹D$@kÀHcÈH‹„$ˆòD$HòÈ‹D$@kÀHcÈH‹„$ˆòD$PòDÈ‹D$@kÀHcÈH‹„$ˆòD$XòDÈ‹D$@ƒÀ‰D$@ƒ¼$u ‹L$|è:þÿ‹„$ˆ‰D$0HÇD$(H‹„$hH‰D$ L‹Œ$€L‹„$pH‹”$ˆ‹L$@ÿ”$‹L$|èíþÿH‹Œ$ˆÿwëHÄ8ÃÌÌÌÌÌÌÌD‰L$ L‰D$H‰T$H‰L$Hƒì(Hƒ|$Pt H‹L$PÿåëH‹¾úHƒ8tfWɹûÿÿÿH‹¨úÿ¹ÿÃëƒ|$HtbH‹úHƒx tA¸3ÒH‹L$0H‹rúÿP H‹L$0ÿ”ëH‹]úHƒx tA¸3ÒH‹L$8H‹BúÿP H‹L$8ÿdëë`H‹+úHƒx tA¸3ÒH‹L$8H‹úÿP H‹L$8ÿ2ëH‹ûùHƒx tA¸3ÒH‹L$0H‹àùÿP H‹L$0ÿëH‹ËùHƒx tA¸3ÒH‹L$@H‹°ùÿP H‹L$@ÿÒêH‹›ùHƒx(t H‹ùÿP(ÿ¼êHƒÄ(ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìHÇ„$„Ç„$˜èkþÿ‰„$„‹„$PƒÀkÀÑàHcÈHÁáÿ˜éH‰„$‹„$PƒÀkÀHcÈH‹„$HÈH‰D$@Ç„$ˆÇD$HH‹„$hƒ8…ñH‹Äø‹@0ƒà…À„â‹„$„%…À…ÎH‹Œ$XH‹„$xòòXòD$hH‹Œ$XH‹„$xòAòX@òD$pH‹Œ$XH‹„$xòAòX@òD$xH‹„$Xòò\D$hH‹„$xòYò„$°H‹„$XòHò\L$pH‹„$xòYHò„$°òXÁò„$°H‹„$XòHò\L$xH‹„$xòYHò„$°òXÁò„$°ò„$°f.@éz^u\Ç„$œH‹Œ$xH‹„$XòòH‹Œ$xH‹„$Xò@òAH‹Œ$xH‹„$Xò@òAé¤Ç„$œH‹„$pòò\D$hH‹„$xòYò„$¨H‹„$pòHò\L$pH‹„$xòYHò„$¨òXÁò„$¨H‹„$pòHò\L$xH‹„$xòYHò„$¨òXÁò„$¨ò„$¨ò^„$°ò„$¸ò/èò\„$¸ò„$ ò„$¸òYèf/èwòŒ$¸òY éçò1èf/Áv Ç„$œH‹„$Xò„$¸òYòŒ$ òYL$hòXÁòD$PH‹„$Xò„$¸òY@òŒ$ òYL$pòXÁòD$XH‹„$Xò„$¸òY@òŒ$ òYL$xòXÁòD$`‹D$HkÀHcÈH‹„$òD$PòÈ‹D$HkÀHcÈH‹„$òD$XòDÈ‹D$HkÀHcÈH‹„$òD$`òDÈ‹D$HkÀHcÐH‹L$@H‹„$€òòÑ‹D$HkÀHcÐH‹L$@H‹„$€ò@òDÑ‹D$HkÀHcÐH‹L$@H‹„$€ò@òDÑ‹D$HƒÀ‰D$H‹D$HkÀHcÐH‹Œ$H‹„$XòòÑ‹D$HkÀHcÐH‹Œ$H‹„$Xò@òDÑ‹D$HkÀHcÐH‹Œ$H‹„$Xò@òDÑ‹D$HkÀHcÐH‹L$@H‹„$€òòÑ‹D$HkÀHcÐH‹L$@H‹„$€ò@òDÑ‹D$HkÀHcÐH‹L$@H‹„$€ò@òDÑ‹D$HƒÀ‰D$H‹„$ˆ‰D$L‹„$ˆƒÀ‰„$ˆëbÇ„$˜HcŒ$ˆH‹„$hƒ<ˆtA‹„$ˆ‰D$L‹„$ˆƒÀ‰„$ˆ‹„$P9„$ˆ|H‹Œ$ÿ÷ãé°ë©H‹qó‹@0%…Àt‹„$P‰„$€ë‹„$Pƒè‰„$€èoþÿ‰„$„‹Œ$„áÿïÿÿèþÿë2‹D$LƒÀ‰D$L‹„$ˆƒÀ‰„$ˆ‹„$ˆ™÷¼$P‰”$ˆ‹„$€9D$LzHcL$LH‹„$hƒ<ˆtHcŒ$ˆH‹„$hHcL$LH‹„$hƒ<ˆ„uHcŒ$ˆH‹„$hƒ<ˆ…[LcD$LMkÀHc”$ˆHkÒH‹Œ$`H‹„$XòBò\H‹„$xòYò„$ØLcD$LMkÀHc”$ˆHkÒH‹Œ$`H‹„$XòBLò\LH‹„$xòYHò„$ØòXÁò„$ØLcD$LMkÀHc”$ˆHkÒH‹Œ$`H‹„$XòBLò\LH‹„$xòYHò„$ØòXÁò„$Øò„$Øf.-ãz|uzÇ„$ÀHcT$LHkÒH‹Œ$xH‹„$`òòHcT$LHkÒH‹Œ$xH‹„$`òDòAHcT$LHkÒH‹Œ$xH‹„$`òDòAé8Ç„$ÀHc”$ˆHkÒH‹Œ$pH‹„$Xòò\H‹„$xòYò„$ÐHc”$ˆHkÒH‹Œ$pH‹„$XòIò\LH‹„$xòYHò„$ÐòXÁò„$ÐHc”$ˆHkÒH‹Œ$pH‹„$XòIò\LH‹„$xòYHò„$ÐòXÁò„$Ðò„$Ðò^„$Øò„$àòÃáò\„$àò„$Èò„$àòY˜áf/˜áwòŒ$àòY }áòÅáf/Áv Ç„$ÀHcL$LHkÉH‹„$`ò„$àòYHcŒ$ˆHkÉH‹„$XòŒ$ÈòY òXÁòD$PHcL$LHkÉH‹„$`ò„$àòYDHcŒ$ˆHkÉH‹„$XòŒ$ÈòYLòXÁòD$XHcL$LHkÉH‹„$`ò„$àòYDHcŒ$ˆHkÉH‹„$XòŒ$ÈòYLòXÁòD$`Hc„$ˆHkÀL‹Œ$€LÈHcD$LHkÀL‹„$€LÀHc„$ˆHkÀH‹”$XHÐHcD$LHkÀH‹Œ$XHÈL‰L$8L‰D$0H‹„$H‰D$(H‹„$ˆH‰D$ D‹Œ$ LD$P蛋D$HkÀHcÈH‹„$òD$PòÈ‹D$HkÀHcÈH‹„$òD$XòDÈ‹D$HkÀHcÈH‹„$òD$`òDÈLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$HLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$HHcL$LH‹„$hƒ<ˆ…JHcŒ$ˆH‹„$hƒ<ˆ…0Lc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹Œ$H‹„$XòBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$HHcL$LH‹„$hƒ<ˆ…NHcŒ$ˆH‹„$hƒ<ˆ„4Ç„$˜LcD$LMkÀHc”$ˆHkÒH‹Œ$XH‹„$`òBò\H‹„$xòYò„$LcD$LMkÀHc”$ˆHkÒH‹Œ$XH‹„$`òBLò\LH‹„$xòYHò„$òXÁò„$LcD$LMkÀHc”$ˆHkÒH‹Œ$XH‹„$`òBLò\LH‹„$xòYHò„$òXÁò„$ò„$f.5Ûz|uzÇ„$èHcT$LHkÒH‹Œ$xH‹„$XòòHcT$LHkÒH‹Œ$xH‹„$XòDòAHcT$LHkÒH‹Œ$xH‹„$XòDòAé8Ç„$èHc”$ˆHkÒH‹Œ$pH‹„$`òò\H‹„$xòYò„$øHc”$ˆHkÒH‹Œ$pH‹„$`òIò\LH‹„$xòYHò„$øòXÁò„$øHc”$ˆHkÒH‹Œ$pH‹„$`òIò\LH‹„$xòYHò„$øòXÁò„$øò„$øò^„$ò„$òËÙò\„$ò„$ðò„$òY Ùf/ ÙwòŒ$òY …ÙòÍÙf/Áv Ç„$èHcL$LHkÉH‹„$Xò„$òYHcŒ$ˆHkÉH‹„$`òŒ$ðòY òXÁòD$PHcL$LHkÉH‹„$Xò„$òYDHcŒ$ˆHkÉH‹„$`òŒ$ðòYLòXÁòD$XHcL$LHkÉH‹„$Xò„$òYDHcŒ$ˆHkÉH‹„$`òŒ$ðòYLòXÁòD$`Hc„$ˆHkÀL‹Œ$€LÈHcD$LHkÀL‹„$€LÀHc„$ˆHkÀH‹”$XHÐHcD$LHkÀH‹Œ$XHÈL‰L$8L‰D$0H‹„$H‰D$(H‹„$ˆH‰D$ D‹Œ$ LD$P裋D$HkÀHcÈH‹„$òD$PòÈ‹D$HkÀHcÈH‹„$òD$XòDÈ‹D$HkÀHcÈH‹„$òD$`òDÈH‹óå‹@0%…À„ŠLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLcD$LMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑéŽLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$Hƒ|$H|E‹„$ ‰D$0H‹D$@H‰D$(H‹„$xH‰D$ L‹Œ$˜L‹„$ˆH‹”$‹L$Hÿ”$¨ÇD$HéCñÿÿ‹„$ˆƒè‰„$ˆ‹Œ$P‹„$ˆÁ‰„$ˆ‹„$ˆ™÷¼$P‰”$ˆHcŒ$ˆH‹„$hƒ<ˆ…+ƒ|$HŒ H‹ýã‹@0ƒà…À„°‹„$„%…À…œHc”$ˆHkÒH‹Œ$XH‹„$xòòXòD$hHc”$ˆHkÒH‹Œ$XH‹„$xòDòX@òD$pHc”$ˆHkÒH‹Œ$XH‹„$xòDòX@òD$xHcŒ$ˆHkÉH‹„$Xòò\D$hH‹„$xòYò„$(HcŒ$ˆHkÉH‹„$XòLò\L$pH‹„$xòYHò„$(òXÁò„$(HcŒ$ˆHkÉH‹„$XòLò\L$xH‹„$xòYHò„$(òXÁò„$(ò„$(f.+ÔЉ…ƒÇ„$Hc”$ˆHkÒH‹Œ$xH‹„$XòòHc”$ˆHkÒH‹Œ$xH‹„$XòDòAHc”$ˆHkÒH‹Œ$xH‹„$XòDòAéËÇ„$H‹„$pòò\D$hH‹„$xòYò„$ H‹„$pòHò\L$pH‹„$xòYHò„$ òXÁò„$ H‹„$pòHò\L$xH‹„$xòYHò„$ òXÁò„$ ò„$ ò^„$(ò„$0òëÒò\„$0ò„$ò„$0òYÀÒf/ÀÒwòŒ$0òY ¥ÒòíÒf/Áv Ç„$HcŒ$ˆHkÉH‹„$Xò„$0òYòŒ$òYL$hòXÁòD$PHcŒ$ˆHkÉH‹„$Xò„$0òYDòŒ$òYL$pòXÁòD$XHcŒ$ˆHkÉH‹„$Xò„$0òYDòŒ$òYL$xòXÁòD$`‹D$HkÀHcÈH‹„$òD$PòÈ‹D$HkÀHcÈH‹„$òD$XòDÈ‹D$HkÀHcÈH‹„$òD$`òDÈLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBòÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑLc„$ˆMkÀ‹D$HkÀHcÐH‹L$@H‹„$€òBDòDÑ‹D$HƒÀ‰D$Hƒ¼$˜u ‹Œ$„è ÿýÿ‹„$ ‰D$0H‹D$@H‰D$(H‹„$xH‰D$ L‹Œ$˜L‹„$ˆH‹”$‹L$Hÿ”$¨‹Œ$„è¸þýÿH‹Œ$ÿBÏHÄHÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌD‰L$ L‰D$H‰T$H‰L$Hƒì(Hƒ|$Pt H‹L$Pÿ¥ÏH‹~ÞHƒ8tfWɹûÿÿÿH‹hÞÿ¹ÿƒÏH‹TÞ‹@0%…À„&H‹=ÞHƒxtH‹L$`H‹*ÞÿPH‹L$`ÿ\σ|$HtbH‹ÞHƒx tA¸3ÒH‹L$0H‹óÝÿP H‹L$0ÿÏH‹ÞÝHƒx tA¸3ÒH‹L$8H‹ÃÝÿP H‹L$8ÿåÎë`H‹¬ÝHƒx tA¸3ÒH‹L$8H‹‘ÝÿP H‹L$8ÿ³ÎH‹|ÝHƒx tA¸3ÒH‹L$0H‹aÝÿP H‹L$0ÿƒÎH‹LÝHƒx tA¸3ÒH‹L$@H‹1ÝÿP H‹L$@ÿSÎéȃ|$H„µH‹ ÝHƒxtH‹L$`H‹ùÜÿPH‹L$`ÿ+ÎH‹äÜHƒx tA¸3ÒH‹L$0H‹ÉÜÿP H‹L$0ÿëÍH‹´ÜHƒxtH‹L$hH‹¡ÜÿPH‹L$hÿÓÍH‹ŒÜHƒx tA¸3ÒH‹L$8H‹qÜÿP H‹L$8ÿ“ÍéØH‹WÜHƒxtH‹L$hH‹DÜÿPH‹L$hÿvÍH‹/ÜHƒx tA¸3ÒH‹L$8H‹ÜÿP H‹L$8ÿ6ÍH‹ÿÛHƒxtH‹L$`H‹ìÛÿPH‹L$`ÿÍH‹×ÛHƒx tA¸3ÒH‹L$0H‹¼ÛÿP H‹L$0ÿÞÌH‹§ÛHƒxtH‹L$hH‹”ÛÿPH‹L$hÿÆÌH‹ÛHƒx tA¸3ÒH‹L$@H‹dÛÿP H‹L$@ÿ†ÌH‹OÛHƒx(t H‹AÛÿP(ÿpÌHƒÄ(ÃÌÌÌL‰D$‰T$H‰L$HƒìXH‹L$pH‹D$pòAò\òD$0H‹L$pH‹D$pòA ò\@òD$8H‹L$pH‹D$pòA(ò\@òD$@òD$0òYD$0òL$8òYL$8òXÁòD$(òL$@òYL$@òD$(òXÁòD$(òD$(èx´òD$(òD$(f.ÌŠ.…(ÇD$ ë ‹D$ ƒÀ‰D$ ‹D$hƒè9D$ ‹D$ ƒÀLcÀMkÀHcT$ HkÒH‹L$pH‹D$pòBò\òD$0‹D$ ƒÀLcÀMkÀHcT$ HkÒH‹L$pH‹D$pòBDò\DòD$8‹D$ ƒÀLcÀMkÀHcT$ HkÒH‹L$pH‹D$pòBDò\DòD$@òD$0òYD$0òL$8òYL$8òXÁòD$(òL$@òYL$@òD$(òXÁòD$(òD$(èO³òD$(òD$(f.ëÊztëéâþÿÿòèÊò^D$(òD$(òD$(òYD$0òD$0òD$(òYD$8òD$8òD$(òYD$@òD$@H‹D$`òòYD$0H‹D$`òHòYL$8òXÁH‹D$`òHòYL$@òXÁòD$HòL$HòYL$0H‹D$`òò\ÁH‹D$`òòL$HòYL$8H‹D$`ò@ò\ÁH‹D$`ò@òL$HòYL$@H‹D$`ò@ò\ÁH‹D$`ò@H‹L$`H‹D$`òòYH‹L$`H‹D$`òIòYHòXÁòD$(H‹L$`H‹D$`òIòYHòD$(òXÁòD$(òD$(èà±òD$(òD$(f.|Éz1u/H‹D$`òD$0òH‹D$`òD$8ò@H‹D$`òD$@ò@HƒÄXÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌD‰L$ òT$H‰T$‰L$HƒìH‹D$PkÀHcÈHÁáÿäÇH‰D$ è|°H‰D$(L‹vȺ‡H‹L$(è[°L‹hȺ‡H‹L$(èE°L‹ZȺ‡H‹L$(è/°H‹L$(è°ƒ|$h„ÎÇD$0ë ‹D$0ƒÀ‰D$0‹D$P9D$0¦LcD$0MkÀ‹D$0kÀHcÐH‹L$ H‹D$XòBòÑLcD$0MkÀ‹D$0kÀƒÀHcÐH‹L$ H‹D$XòBDòÑ‹D$0kÀƒÀHcÈH‹D$ òD$`òÈ‹D$0kÀHcÈH‹D$ LÈ‹D$0kÀHcÈH‹D$ HÈH‹L$(èJ¯éAÿÿÿéÉ‹D$Pƒè‰D$0ë ‹D$0ƒè‰D$0ƒ|$0ÿަLcD$0MkÀ‹D$0kÀHcÐH‹L$ H‹D$XòBòÑLcD$0MkÀ‹D$0kÀƒÀHcÐH‹L$ H‹D$XòBDòÑ‹D$0kÀƒÀHcÈH‹D$ òD$`òÈ‹D$0kÀHcÈH‹D$ LÈ‹D$0kÀHcÈH‹D$ HÈH‹L$(è|®éDÿÿÿH‹L$(èg®H‹L$ ÿÊÅH‹L$(èL®HƒÄHÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$HìHÇD$pHÇ„$ˆHÇ„$ HÇ„$ÐHÇ„$ÈfWÀò„$àò„$àò„$ØHƒ¼$ u Ç„$ðë Ç„$ð·„$ðf‰D$xHƒ¼$@u Ç„$ôë Ç„$ô·„$ôf‰„$Hƒ¼$Hu Ç„$øë Ç„$ø·„$øf‰„$¨¿„$¨…À…‹„$ÁàkÀHcÈHÁáÿ~ÄH‰D$pH‹D$pH‰„$ˆ‹„$kÀHcÈH‹„$ˆHÈH‰„$ ‹„$kÀHcÈH‹„$ HÈH‰„$Ћ„$kÀHcÈH‹„$ÐHÈH‰„$ÈHƒ¼$(u$fWÀòD$PòÅòD$XfWÀòD$`ë8H‹„$(òòD$PH‹„$(ò@òD$XH‹„$(ò@òD$`L‹„$8‹”$0HL$PèÙ÷ÿÿÇD$h‹D$h‰„$‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBò\ò„$ð‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBDò\Dò„$ø‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBDò\Dò„$ò„$ðòY„$ðòŒ$øòYŒ$øòXÁò„$˜òŒ$òYŒ$ò„$˜òXÁò„$˜ò„$˜è¸«ò„$˜‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBòXò„$ ‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBDòXDò„$¨‹„$ƒÀLcÀMkÀHc”$HkÒH‹Œ$8H‹„$8òBDòXDò„$°ò„$ òY„$ òŒ$¨òYŒ$¨òXÁò„$˜òŒ$°òYŒ$°ò„$˜òXÁò„$˜ò„$˜èªò„$˜ò„$˜òYÂò„$˜‹„$ƒÀ‰„$ò„$˜f/„$˜r‹„$0ƒè9„$Œ<ýÿÿ¿„$¨…À…‹Ç„$”ë‹„$”ƒÀ‰„$”‹„$9„$”†‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBòY‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBLòYLòXÁ‹„$ƒèHcÈHkÉ0H‹„$HòXD‹„$”kÀHcÈH‹„$ˆòÈ‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBDòY‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBL òYLòXÁ‹„$ƒèHcÈHkÉ0H‹„$HòXD(‹„$”kÀHcÈH‹„$ˆòDÈ‹„$”kÀƒÀHcÈH‹„$ˆfWÀòÈéUþÿÿ¿D$x…À…ÆÇ„$”ë‹„$”ƒÀ‰„$”‹„$9„$””‹„$ƒèHcÈHkÉ0H‹„$HòDf.¤¿zsuq‹„$ƒèHcÈHkÉ0H‹„$HòDf.y¿zHuF‹„$ƒèLcÀMkÀ0‹„$ƒèHcÐHkÒ0H‹Œ$HH‹„$HòBf.D z„G‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$ òBD òY‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$ òBLòYLò\Á‹„$”kÀHcÈH‹„$ÐòÈ‹„$ƒèHcÈHkÉ0H‹„$HòDfW—¾HcŒ$”HkÉH‹„$ òY‹„$ƒèLcÀMkÀ0Hc”$”HkÒH‹Œ$HH‹„$ òB òYLòXÁ‹„$”kÀHcÈH‹„$ÐòDÈ‹„$”kÀLcÀ‹„$”kÀHcÐH‹Œ$ÐH‹„$ÐòBÁòYЋ„$”kÀLcÀ‹„$”kÀHcÐH‹Œ$ÐH‹„$ÐòBLÁòYLÐòXÁò„$¸ò„$¸èÏ¥f(èòƒ½ò^Åò„$¸‹„$”kÀHcÈH‹„$ÐòÈòY„$¸‹„$”kÀHcÈH‹„$ÐòÈ‹„$”kÀHcÈH‹„$ÐòDÈòY„$¸‹„$”kÀHcÈH‹„$ÐòDÈëjLc„$”MkÀ‹„$”kÀHcÐH‹Œ$ÐH‹„$ òBòÑLc„$”MkÀ‹„$”kÀHcÐH‹Œ$ÐH‹„$ òBDòDÑ‹„$”kÀƒÀHcÈH‹„$ÐfWÀòÈ‹„$”kÀƒÀHcÈH‹„$ÈfWÀòÈéGüÿÿ‹„$0ƒè9„$ËHc„$HkÀL‹Œ$8LÈHcD$hHkÀL‹„$8LÀ‹D$hƒèH˜HkÀH‹”$8HÐHŒ$°è0.òD$PòY„$°òL$XòYŒ$¸òXÁòL$`òYŒ$ÀòXÁò„$Àò ê»òYŒ$ÀòYŒ$°òD$Pò\ÁòD$Pò À»òYŒ$ÀòYŒ$¸òD$Xò\ÁòD$Xò –»òYŒ$ÀòYŒ$ÀòD$`ò\ÁòD$`Hc„$HkÀL‹„$8LÀHcD$hHkÀH‹”$8HÐLL$PHŒ$è÷šÿyºHŒ$ÿsºD¿œ$¨E…Û„—¿„$…À„°¿D$x…Àt'òœ$˜D‹„$H‹”$‹Œ$èãë{H‹ÊÈ‹@0%…Àt5ò„$˜òD$ D‹Œ$L‹„$ H‹”$‹Œ$è;ë3ò„$˜òD$ D‹Œ$L‹„$ H‹”$‹Œ$è–éÒ¿D$x…Àt8ò„$˜òD$ D‹Œ$L‹„$@H‹”$‹Œ$èué‘H‹ È‹@0%…Àt@ò„$˜òD$(‹„$‰D$ L‹Œ$ L‹„$@H‹”$‹Œ$è¿!ë>ò„$˜òD$(‹„$‰D$ L‹Œ$ L‹„$@H‹”$‹Œ$è_é‹ Ç„$”ë‹„$”ƒÀ‰„$”‹„$9„$”–Lc„$MkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBòYLc„$MkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBLòYLòXÁHcŒ$HkÉ0H‹„$HòXD‹„$”kÀHcÈH‹„$ òÈLc„$MkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBDòYLc„$MkÀ0Hc”$”HkÒH‹Œ$HH‹„$òBL òYLòXÁHcŒ$HkÉ0H‹„$HòXD(‹„$”kÀHcÈH‹„$ òDÈò„$˜fWµ·‹„$”kÀƒÀHcÈH‹„$ òÈ‹„$”kÀƒÀHcÈH‹„$ˆfWÀòÈéEþÿÿ¿D$x…À…\Ç„$”ë‹„$”ƒÀ‰„$”‹„$9„$”*HcŒ$HkÉ0H‹„$HòDf.ñ¶zdubHcŒ$HkÉ0H‹„$HòDf.˶z>uuhÿPHcD$ HkÀH‹L$XHÈÿdYH‹hHƒx t,‹T$ ƒÂ‹D$ ƒÀH˜HkÀH‹L$HHÈA¸H‹ígÿP ‹D$ ƒÀH˜HkÀH‹L$HHÈÿÿXH‹ÈgHƒxtHcD$ HkÀH‹L$`HÈH‹©gÿPHcD$ HkÀH‹L$`HÈÿÏXH‹ˆgHƒx t,‹T$ ƒÂ‹D$ ƒÀH˜HkÀH‹L$PHÈA¸H‹XgÿP ‹D$ ƒÀH˜HkÀH‹L$PHÈÿjXé¡ýÿÿH‹.g‹@0%…À„*H‹gHƒxt‹D$@ƒèH˜HkÀH‹L$XHÈH‹ôfÿP‹D$@ƒèH˜HkÀH‹L$XHÈÿXH‹ÏfHƒx t,‹T$@ƒê‹D$@ƒèH˜HkÀH‹L$HHÈA¸H‹ŸfÿP ‹D$@ƒèH˜HkÀH‹L$HHÈÿ±WH‹zfHƒxt‹D$@ƒèH˜HkÀH‹L$`HÈH‹WfÿP‹D$@ƒèH˜HkÀH‹L$`HÈÿyWH‹2fHƒx t,‹T$@ƒê‹D$@ƒèH˜HkÀH‹L$PHÈA¸H‹fÿP ‹D$@ƒèH˜HkÀH‹L$PHÈÿWH‹ÝeHƒxt‹D$@ƒèH˜HkÀH‹L$XHÈH‹ºeÿP‹D$@ƒèH˜HkÀH‹L$XHÈÿÜVH‹•eHƒx tA¸3ÒH‹L$HH‹zeÿP H‹L$HÿœVH‹eeHƒxt‹D$@ƒèH˜HkÀH‹L$`HÈH‹BeÿP‹D$@ƒèH˜HkÀH‹L$`HÈÿdVH‹eHƒx tA¸3ÒH‹L$PH‹eÿP H‹L$Pÿ$VH‹ídHƒx(t H‹ßdÿP(ÿVHƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$‰L$Hƒì8H‹¢dHƒ8tòŒ$€‹L$xH‹ˆdÿ¹ÿ£UÇD$ ë ‹D$ ƒÀ‰D$ ‹D$@ƒè9D$ oH‹L$hÿjUH‹CdHƒxtHcD$ HkÀH‹L$XHÈH‹$dÿPHcD$ HkÀH‹L$XHÈÿJUH‹dHƒx t%HcD$ HkÀH‹L$HHÈA¸‹T$ H‹ÚcÿP HcD$ HkÀH‹L$HHÈÿðTH‹L$pÿÕTH‹®cHƒxtHcD$ HkÀH‹L$`HÈH‹cÿPHcD$ HkÀH‹L$`HÈÿµTH‹ncHƒx t%HcD$ HkÀH‹L$PHÈA¸‹T$ H‹EcÿP HcD$ HkÀH‹L$PHÈÿ[TH‹L$hÿ@TH‹cHƒxtHcD$ HkÀH‹L$XHÈH‹úbÿPHcD$ HkÀH‹L$XHÈÿ TH‹ÙbHƒx t,‹T$ ƒÂ‹D$ ƒÀH˜HkÀH‹L$HHÈA¸H‹©bÿP ‹D$ ƒÀH˜HkÀH‹L$HHÈÿ»SH‹L$pÿ SH‹ybHƒxtHcD$ HkÀH‹L$`HÈH‹ZbÿPHcD$ HkÀH‹L$`HÈÿ€SH‹9bHƒx t,‹T$ ƒÂ‹D$ ƒÀH˜HkÀH‹L$PHÈA¸H‹ bÿP ‹D$ ƒÀH˜HkÀH‹L$PHÈÿSéuýÿÿH‹ßa‹@0%…À„VH‹L$hÿäRH‹½aHƒxt‹D$@ƒèH˜HkÀH‹L$XHÈH‹šaÿP‹D$@ƒèH˜HkÀH‹L$XHÈÿ¼RH‹uaHƒx t,‹T$@ƒê‹D$@ƒèH˜HkÀH‹L$HHÈA¸H‹EaÿP ‹D$@ƒèH˜HkÀH‹L$HHÈÿWRH‹L$pÿƒ|$`u.H‹ÊMòˆ˜H‹»Mò€òXÈòD$ ÿ»>HƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌD‰D$‰T$H‰L$Hƒì8‹D$P‰D$ D‹L$HòMò qMòaMè4þÿÿHƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌD‰D$‰T$H‰L$HƒìXHcL$hHkÉH‹MH‹@PòòD$8HcL$hHkÉH‹ÿLH‹@PòDòD$0H‹D$`ò@òD$@òD$8òYD$8òL$0òYL$0òXÁè®&f(èòb>ò^ÅòD$HòD$8òYD$HòD$8òD$0òYD$HòD$0‹D$p‰D$ D‹L$hòT$@òL$0òD$8è@ýÿÿHƒÄXÃÌÌÌÌÌÌÌÌÌÌÌD‰D$‰T$H‰L$Hƒì8H‹7LHƒxXuëJLcT$HMkÒL‹LM‹@XHcT$HHkÒH‹ LH‹IX‹D$P‰D$ D‹L$HfWÒòCLòèÄüÿÿHƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌD‰D$‰T$H‰L$Hƒì8‹D$P‰D$ D‹L$HH‹D$@òPH‹D$@òHH‹D$@òèHƒÄ8ÃÌÌÌÌÌÌÌÌÌÌD‰L$ òT$òL$òD$Hƒì(ƒ|$PuH‹WKòˆ˜òD$0ÿ[<ƒ|$Pu.H‹5Kòˆ˜H‹&Kò€òXÈòD$0ÿ&<HƒÄ(ÃÌÌÌÌÌÌÌÌÌD‰D$‰T$H‰L$Hƒì8‹D$P‰D$ D‹L$HòñJò áJòÑJèDÿÿÿHƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌD‰D$‰T$H‰L$Hƒì8LcT$HMkÒL‹ŽJM‹@PHcT$HHkÒH‹ zJH‹IP‹D$P‰D$ D‹L$HH‹D$@òPòCLòèÎþÿÿHƒÄ8ÃÌÌÌÌÌÌÌÌÌD‰D$‰T$H‰L$Hƒì8H‹'JHƒxXuëJLcT$HMkÒL‹JM‹@XHcT$HHkÒH‹ úIH‹IX‹D$P‰D$ D‹L$HfWÒòCLòèTþÿÿHƒÄ8ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰D$òL$H‰L$HƒìXòD$hò^ž;òD$0òD$0è‰#òD$(òD$0èr#òD$HòD$(òYD$(òD$ òD$HòYD$HòD$@òD$@ò\D$ H‹D$`ò@PH‹L$`H‹D$`ò@PòA(H‹L$`H‹D$`ò@(òòD$ òY;òD$ H‹D$pòL$ òYH‹D$pòYH‹D$`òòXÁH‹D$`òH‹D$pòL$ òYHH‹D$pòYHH‹D$`ò@(òXÁH‹D$`ò@(H‹D$pòL$ òYHH‹D$pòYHH‹D$`ò@PòXÁH‹D$`ò@PH‹L$pH‹D$pòòY@òYD$ H‹D$`ò@ H‹L$`H‹D$`ò@ òAH‹L$pH‹D$pòAòY@òYD$ H‹D$`ò@HH‹L$`H‹D$`ò@HòA0H‹L$pH‹D$pòAòYòYD$ H‹D$`ò@H‹L$`H‹D$`ò@òA@òÁ9òYD$HòYD$(òD$8H‹D$pòD$8òY@òD$0H‹D$`ò@òXD$0H‹D$`ò@H‹D$`ò@ ò\D$0H‹D$`ò@ H‹D$pòD$8òYòD$0H‹D$`ò@0òXD$0H‹D$`ò@0H‹D$`ò@Hò\D$0H‹D$`ò@HH‹D$pòD$8òY@òD$0H‹D$`ò@@òXD$0H‹D$`ò@@H‹D$`ò@ò\D$0H‹D$`ò@H‹D$`fWÀò@`H‹D$`fWÀò@hH‹D$`fWÀò@pH‹D$`fWÀò@XH‹D$`fWÀò@8H‹D$`fWÀò@H‹D$`ò!8ò@xHƒÄXÃÌÌÌÌÌÌÌL‰D$òL$H‰L$HƒìHòD$XòY8òD$XH‹L$`H‹D$`òòYH‹L$`H‹D$`òIòYHòXÁH‹L$`H‹D$`òIòYHòXÁòD$8òD$8f.’7ztyòD$8èÃf(èòw7ò^ÅòD$8H‹D$`òòYD$8òD$ H‹D$`ò@òYD$8òD$(H‹D$`ò@òYD$8òD$0LD$ òL$XH‹L$Pè§ûÿÿëL‹D$`òL$XH‹L$PèûÿÿHƒÄHÃÌÌÌÌÌÌÌÌÌÌÌH‰T$H‰L$HƒìHH‹L$XH‹D$XòòYH‹L$XH‹D$XòIòYHòXÁH‹L$XH‹D$XòIòYHòXÁòD$8òD$8èÏf(èòƒ6ò^ÅòD$8H‹D$XòòYD$8òD$ H‹D$Xò@òYD$8òD$(H‹D$Xò@òYD$8òD$0LD$ òL$8H‹L$Pè³úÿÿHƒÄHÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌL‰D$H‰T$H‰L$Hì8H‹„$Hòò„$ðH‹„$Hò@ò„$øH‹„$Hò@ò„$ò„$ðòY„$ðòŒ$øòYŒ$øòXÁò„$òŒ$òYŒ$ò„$òXÁò„$ò„$è’ò„$ò„$f.(5z„Œò(5ò^„$ò„$ò„$òY„$ðò„$ðò„$òY„$øò„$øò„$òY„$ò„$òŒ$òYŒ$ò«4ò\Áèâò„$ò„$fW˜4òD$ fWÀòD$(ò„$fWw4fWo4òD$0fWÀòD$8fWÀòD$@ò=4òD$HfWÀòD$PfWÀòD$Xò„$fW"4òD$`fWÀòD$hò„$fW4òD$pfWÀòD$xfWÀò„$€fWÀò„$ˆfWÀò„$ò²3ò„$˜é¼òœ3òD$ fWÀòD$(fWÀòD$0fWÀòD$8fWÀòD$@òf3òD$HfWÀòD$PfWÀòD$XfWÀòD$`fWÀòD$hò03òD$pfWÀòD$xfWÀò„$€fWÀò„$ˆfWÀò„$òñ2ò„$˜H‹„$Hòò„$ H‹„$Hò@ò„$¨fWÀò„$°ò„$ òY„$ òŒ$¨òYŒ$¨òXÁò„$òŒ$°òYŒ$°ò„$òXÁò„$ò„$è‰ò„$ò„$f.2z„¤ò2ò^„$ò„$ò„$òY„$ ò„$ ò„$òY„$¨ò„$¨ò„$òY„$°ò„$°ò„$ ò„$Ðò„$¨ò„$ØfWÀò„$àfWÀò„$èò„$¨fW}1ò„$ðò„$ ò„$øfWÀò„$fWÀò„$fWÀò„$fWÀò„$ò1ò„$ fWÀò„$(fWÀò„$0fWÀò„$8fWÀò„$@òÑ0ò„$HòD$ òY„$ÐòL$(òYŒ$ðòXÁòL$0òYŒ$òXÁòL$8òYŒ$0òXÁò„$pòD$ òY„$ØòL$(òYŒ$øòXÁòL$0òYŒ$òXÁòL$8òYŒ$8òXÁò„$xòD$ òY„$àòL$(òYŒ$òXÁòL$0òYŒ$ òXÁòL$8òYŒ$@òXÁò„$€òD$ òY„$èòL$(òYŒ$òXÁòL$0òYŒ$(òXÁòL$8òYŒ$HòXÁò„$ˆòD$@òY„$ÐòL$HòYŒ$ðòXÁòL$PòYŒ$òXÁòL$XòYŒ$0òXÁò„$òD$@òY„$ØòL$HòYŒ$øòXÁòL$PòYŒ$òXÁòL$XòYŒ$8òXÁò„$˜òD$@òY„$àòL$HòYŒ$òXÁòL$PòYŒ$ òXÁòL$XòYŒ$@òXÁò„$ òD$@òY„$èòL$HòYŒ$òXÁòL$PòYŒ$(òXÁòL$XòYŒ$HòXÁò„$¨òD$`òY„$ÐòL$hòYŒ$ðòXÁòL$pòYŒ$òXÁòL$xòYŒ$0òXÁò„$°òD$`òY„$ØòL$hòYŒ$øòXÁòL$pòYŒ$òXÁòL$xòYŒ$8òXÁò„$¸òD$`òY„$àòL$hòYŒ$òXÁòL$pòYŒ$ òXÁòL$xòYŒ$@òXÁò„$ÀòD$`òY„$èòL$hòYŒ$òXÁòL$pòYŒ$(òXÁòL$xòYŒ$HòXÁò„$Èò„$€òY„$ÐòŒ$ˆòYŒ$ðòXÁòŒ$òYŒ$òXÁòŒ$˜òYŒ$0òXÁò„$Ðò„$€òY„$ØòŒ$ˆòYŒ$øòXÁòŒ$òYŒ$òXÁòŒ$˜òYŒ$8òXÁò„$Øò„$€òY„$àòŒ$ˆòYŒ$òXÁòŒ$òYŒ$ òXÁòŒ$˜òYŒ$@òXÁò„$àò„$€òY„$èòŒ$ˆòYŒ$òXÁòŒ$òYŒ$(òXÁòŒ$˜òYŒ$HòXÁò„$èéüòD$ ò„$pòD$(ò„$xòD$0ò„$€òD$8ò„$ˆòD$@ò„$òD$Hò„$˜òD$Pò„$ òD$Xò„$¨òD$`ò„$°òD$hò„$¸òD$pò„$ÀòD$xò„$Èò„$€ò„$Ðò„$ˆò„$Øò„$ò„$àò„$˜ò„$èH‹„$PòòY„$ðH‹„$PòHòYŒ$øòXÁH‹„$PòHòYŒ$òXÁò„$ òŒ$ òYŒ$ðH‹„$Pòò\Áò„$¸òŒ$ òYŒ$øH‹„$Pò@ò\Áò„$ÀòŒ$ òYŒ$H‹„$Pò@ò\Áò„$Èò„$¸òY„$¸òŒ$ÀòYŒ$ÀòXÁò„$òŒ$ÈòYŒ$Èò„$òXÁò„$ò„$è‹ò„$ò„$f.!)z„Éò!)ò^„$ò„$ò„$òY„$¸ò„$¸ò„$òY„$Àò„$Àò„$òY„$Èò„$Èò„$ò„$Pò„$˜ò„$Xò„$ ò„$`ò„$PòY„$¸òŒ$XòYŒ$ÀòXÁòŒ$`òYŒ$ÈòXÁò„$ò„$pò„$Pò„$xò„$Xò„$€ò„$`ò„$PòY„$¸òŒ$XòYŒ$ÀòXÁòŒ$`òYŒ$ÈòXÁò„$ò„$òD$ ò„$fW´'òD$(fWÀòD$0fWÀòD$8ò„$fW‰'fW'òD$@ò„$òD$HfWÀòD$PfWÀòD$XfWÀòD$`fWÀòD$hò,'òD$pfWÀòD$xfWÀò„$€fWÀò„$ˆfWÀò„$òí&ò„$˜òD$ òY„$pòL$(òYŒ$òXÁòL$0òYŒ$°òXÁòL$8òYŒ$ÐòXÁH‹„$@òòD$ òY„$xòL$(òYŒ$˜òXÁòL$0òYŒ$¸òXÁòL$8òYŒ$ØòXÁH‹„$@ò@òD$ òY„$€òL$(òYŒ$ òXÁòL$0òYŒ$ÀòXÁòL$8òYŒ$àòXÁH‹„$@ò@òD$ òY„$ˆòL$(òYŒ$¨òXÁòL$0òYŒ$ÈòXÁòL$8òYŒ$èòXÁH‹„$@ò@òD$@òY„$pòL$HòYŒ$òXÁòL$PòYŒ$°òXÁòL$XòYŒ$ÐòXÁH‹„$@ò@ òD$@òY„$xòL$HòYŒ$˜òXÁòL$PòYŒ$¸òXÁòL$XòYŒ$ØòXÁH‹„$@ò@(òD$@òY„$€òL$HòYŒ$ òXÁòL$PòYŒ$ÀòXÁòL$XòYŒ$àòXÁH‹„$@ò@0òD$@òY„$ˆòL$HòYŒ$¨òXÁòL$PòYŒ$ÈòXÁòL$XòYŒ$èòXÁH‹„$@ò@8òD$`òY„$pòL$hòYŒ$òXÁòL$pòYŒ$°òXÁòL$xòYŒ$ÐòXÁH‹„$@ò@@òD$`òY„$xòL$hòYŒ$˜òXÁòL$pòYŒ$¸òXÁòL$xòYŒ$ØòXÁH‹„$@ò@HòD$`òY„$€òL$hòYŒ$ òXÁòL$pòYŒ$ÀòXÁòL$xòYŒ$àòXÁH‹„$@ò@PòD$`òY„$ˆòL$hòYŒ$¨òXÁòL$pòYŒ$ÈòXÁòL$xòYŒ$èòXÁH‹„$@ò@Xò„$€òY„$pòŒ$ˆòYŒ$òXÁòŒ$òYŒ$°òXÁòŒ$˜òYŒ$ÐòXÁH‹„$@ò@`ò„$€òY„$xòŒ$ˆòYŒ$˜òXÁòŒ$òYŒ$¸òXÁòŒ$˜òYŒ$ØòXÁH‹„$@ò@hò„$€òY„$€òŒ$ˆòYŒ$ òXÁòŒ$òYŒ$ÀòXÁòŒ$˜òYŒ$àòXÁH‹„$@ò@pò„$€òY„$ˆòŒ$ˆòYŒ$¨òXÁòŒ$òYŒ$ÈòXÁòŒ$˜òYŒ$èòXÁH‹„$@ò@xé_H‹„$@ò„$pòH‹„$@ò„$xò@H‹„$@ò„$€ò@H‹„$@ò„$ˆò@H‹„$@ò„$ò@ H‹„$@ò„$˜ò@(H‹„$@ò„$ ò@0H‹„$@ò„$¨ò@8H‹„$@ò„$°ò@@H‹„$@ò„$¸ò@HH‹„$@ò„$Àò@PH‹„$@ò„$Èò@XH‹„$@ò„$Ðò@`H‹„$@ò„$Øò@hH‹„$@ò„$àò@pH‹„$@ò„$èò@xHÄ8ÃÌÌÌÌÌÌÌÌÌL‰L$ L‰D$H‰T$H‰L$HìHH‹Œ$`H‹„$Xòò\ò„$ H‹Œ$`H‹„$XòAò\@ò„$(H‹Œ$`H‹„$XòAò\@ò„$0L‹„$hH”$ HL$ èDéÿÿòLò„$ fWÀò„$¨fWÀò„$°fWÀò„$¸fWÀò„$Àòò„$ÈfWÀò„$ÐfWÀò„$ØfWÀò„$àfWÀò„$èòÂò„$ðfWÀò„$øfWÀò„$fWÀò„$fWÀò„$ò}ò„$H‹„$Xòò„$H‹„$Xò@ò„$H‹„$Xò@ò„$òD$ òY„$ òL$(òYŒ$ÀòXÁòL$0òYŒ$àòXÁòL$8òYŒ$òXÁH‹„$PòòD$ òY„$¨òL$(òYŒ$ÈòXÁòL$0òYŒ$èòXÁòL$8òYŒ$òXÁH‹„$Pò@òD$ òY„$°òL$(òYŒ$ÐòXÁòL$0òYŒ$ðòXÁòL$8òYŒ$òXÁH‹„$Pò@òD$ òY„$¸òL$(òYŒ$ØòXÁòL$0òYŒ$øòXÁòL$8òYŒ$òXÁH‹„$Pò@òD$@òY„$ òL$HòYŒ$ÀòXÁòL$PòYŒ$àòXÁòL$XòYŒ$òXÁH‹„$Pò@ òD$@òY„$¨òL$HòYŒ$ÈòXÁòL$PòYŒ$èòXÁòL$XòYŒ$òXÁH‹„$Pò@(òD$@òY„$°òL$HòYŒ$ÐòXÁòL$PòYŒ$ðòXÁòL$XòYŒ$òXÁH‹„$Pò@0òD$@òY„$¸òL$HòYŒ$ØòXÁòL$PòYŒ$øòXÁòL$XòYŒ$òXÁH‹„$Pò@8òD$`òY„$ òL$hòYŒ$ÀòXÁòL$pòYŒ$àòXÁòL$xòYŒ$òXÁH‹„$Pò@@òD$`òY„$¨òL$hòYŒ$ÈòXÁòL$pòYŒ$èòXÁòL$xòYŒ$òXÁH‹„$Pò@HòD$`òY„$°òL$hòYŒ$ÐòXÁòL$pòYŒ$ðòXÁòL$xòYŒ$òXÁH‹„$Pò@PòD$`òY„$¸òL$hòYŒ$ØòXÁòL$pòYŒ$øòXÁòL$xòYŒ$òXÁH‹„$Pò@Xò„$€òY„$ òŒ$ˆòYŒ$ÀòXÁòŒ$òYŒ$àòXÁòŒ$˜òYŒ$òXÁH‹„$Pò@`ò„$€òY„$¨òŒ$ˆòYŒ$ÈòXÁòŒ$òYŒ$èòXÁòŒ$˜òYŒ$òXÁH‹„$Pò@hò„$€òY„$°òŒ$ˆòYŒ$ÐòXÁòŒ$òYŒ$ðòXÁòŒ$˜òYŒ$òXÁH‹„$Pò@pò„$€òY„$¸òŒ$ˆòYŒ$ØòXÁòŒ$òYŒ$øòXÁòŒ$˜òYŒ$òXÁH‹„$Pò@xHÄHÃÿ%Þÿ%Ðÿ%òÿ%Ôÿ%Öÿ%Ø@SHƒì H‹ÙH‹ 'ÿªH‰D$8Hƒøÿu H‹ËÿŽë~¹èúH‹ ò&ÿ|H‰D$8H‹ Ø&ÿjH‰D$@H‹ËÿDH‹ÈLD$@HT$8è´H‹ØH‹L$8ÿ$H‰¥&H‹L$@ÿH‰‹&¹è}H‹ÃHƒÄ [ÃHƒì(èGÿÿÿH÷ØÀ÷ØÿÈHƒÄ(ÃÌÿ%zÿ%Œÿ%Žÿ%ÿ%’ÿ%œ@SHƒì ¹ÿËH‹ÈH‹ØÿŸH‰ &H‰&H…ÛuCë#Hƒ#èH KèzÿÿÿH ûènÿÿÿ3ÀHƒÄ [ÃÌÌH‹ÄH‰XH‰hH‰xL‰` AUAVAWHƒì 3ÿM‹àL‹é;×…8‹y%;ÇŽ#ÿÈD‹ï‰f%eH‹%0H‹XëH;Ãt¹èÿg3ÀðH±\%uãëA½‹D%ƒøt¹è«é¡H‹ I%ÿÓL‹àH;Ç„–H‹ (%ÿºM‹üL‹ðH‹èHƒíI;ìrZH9}tñÿ¼H9EtåH‹MÿŒH‹Øÿ£H‰EÿÓH‹ æ$ÿpH‹ Ñ$H‹Øÿ`L;ûuL;ðt¥L‹ûL‹ãë—I‹ÌÿÕÿ_H‰ $H‰¡$‰={$D;ï…ãH‡=s$é×3ÀéÕƒú…ÇeH‹%0‹ïH‹XëH;Ãt¹èÿ=3ÀðH±2$uã뽋$;Çt ¹èƒë>HdH MÇó#è^;Çu„H+H èAÇÍ#;ïu H‹ÇH‡Ç#H9=È#t!H ¿#èÒ;ÇtM‹ÄºI‹Íÿ¥#ÿw#¸H‹\$@H‹l$HH‹|$PL‹d$XHƒÄ A_A^A]ÃÌÌÌH‹ÄH‰XH‰pH‰xATHƒì0I‹ð‹úL‹á»‰Xè‰é"…Òu9#u 3Û‰Xèéʃútƒúu3H‹H…ÀtÿЋ؉D$ …ÛtL‹Æ‹×I‹Ìè4ýÿÿ‹Ø‰D$ …Û„L‹Æ‹×I‹Ìèa‹Ø‰D$ ƒÿu5…Àu1L‹Æ3ÒI‹ÌèEL‹Æ3ÒI‹ÌèðüÿÿL‹µM…Ût L‹Æ3ÒI‹ÌAÿÓ…ÿtƒÿu7L‹Æ‹×I‹ÌèÃüÿÿ÷ØÉ#ˋىL$ tH‹zH…ÀtL‹Æ‹×I‹ÌÿЋ؉D$ ë3Û‰\$ Ç÷!ÿÿÿÿ‹ÃH‹\$@H‹t$HH‹|$PHƒÄ0A\ÃÌÌÌH‰\$H‰t$WHƒì I‹ø‹ÚH‹ñƒúuè·L‹Ç‹ÓH‹ÎH‹\$0H‹t$8HƒÄ _é‹þÿÿÌÿ%lÿ%nÿ%pÿ%zÌÌH Á!é(H‰\$WHƒì HÓH=ÌëH‹H…ÀtÿÐHƒÃH;ßríH‹\$0HƒÄ _ÃH‰\$WHƒì H«H=¤ëH‹H…ÀtÿÐHƒÃH;ßríH‹\$0HƒÄ _ÃÌÌÌÌH‹Á¹MZf9t3ÀÃHcHð?€€9R¢Fß‘?@@-DTû!@€v@2@ð¿@@ÓBÎûÿï¿ÓBÎûÿï?333333ã¿333333ã?-DTû! @à?BB¢‚b‚â""h)¢¢a5'B)BA  b  b‚‚¢‚b‚â-bbbbba5'B)B¢‚A  b  b‚‚ÂÂÂÂb  hbb-bbbbbbbbbbbB  ‚BBb¢bb¢b¢bb¢bbBbbb¢‚‚G)20fÎÉåÉÀÐ20 Ä t T 42ðàÐ2Pt d 4RÀfÎÍýÍÙÐýÍÍÎ Ñd42 p  4 2p Bf·ϺÏ0ѺÏB  4 2p`èVé8á(çÆéà ç~êxà`çšë8àtédé”é¦é¸é„é*ëDëTëjë€ëëëÐêâêÂêÐéØéàéêéðéöéþéêêê0ê:êHêZêbêlêŠê˜ê¤ê²êFé8é.é éé éúèêèÜèÎèÀè–glIsEnabledÔglPopMatrix,glColor4fv¶glMultMatrixdÙglPushMatrix¼glNormal3dvQglEndFglVertex3dv glBeginglColor3fvglTexCoord2dOPENGL32.dll gluDeleteTess gluEndPolygon2gluTessVertexgluBeginPolygon-gluTessCallbackgluNewTessGLU32.dllsqrt¬freeåmallocŒcossin”fabsuacosrealloc|atan2Y__C_specific_handler¤_unlock…__dllonexit7_encode_pointer=_lockä_onexit-_decode_pointerMSVCR90.dllN_malloc_crtÎ_inittermÏ_initterm_e8_encoded_nullâ_amsg_exitZ__CppXcptFilter{__clean_type_info_names_internal%SleepÌDisableThreadLibraryCallsNQueryPerformanceCounterfGetTickCount®GetCurrentThreadId«GetCurrentProcessIdOGetSystemTimeAsFileTimeKERNEL32.dllL3NOÒìØë<ì ì€P°”ð,(PðÐ0ð”@@•00ðY Y@Zð^À©`¦àª€ZÀ«àÁäìñìííí%í1íAíJíZíiísí…í”íží°í¿íÈíÒíÝííí÷íîîî opengle64.vc9.dllgleExtrusiongleGetJoinStylegleGetNumSidesgleHelicoidgleLatheglePolyConeglePolyCylindergleScrewgleSetJoinStylegleSetNumSidesgleSpiralgleSuperExtrusiongleTextureModegleToroidgleTwistExtrusionrot_about_axisrot_axisrot_omegarot_princeurot_about_axisurot_axisurot_omegaurot_princeuview_directionuviewpointu˜ÿÿÿÿÿÿÿÿ2¢ß-™+Í] ÒfÔÿÿ=ˆâP…âx˜â€Ü âð/¨â@A°âP¸â-Àâ@í'Èâ(ç,Ôâð,-Üâ-'0äâ00Á0ìâÐ0º2ôâÀ24_üâ@_£¤ã°¤C´ ãp´Êã Ê‘Ëã ËNæ$ã`æÝé,ãðéŠ4ãY<ã`)Dã0oLã€T Tã` õ\ã¼dãÐ lã ¨ tã° ˜"|ã "ü"„ã#O#Œã`#a(”ãp(Ÿ)œã°)M+¤ã`+B<¬ãP<>´ã >´@¼ãÀ@'FÄã0FÇHÌãÐH:NÔã@NCVÜãPVÂ]äãÐ]DŠìãPгÏôãÀÏSßüã€ß)õä0õ¡ö ä°ö^äpíäð|$äÝ,äðŠ54ä5Y6<ä`6)7Dä07o9Lä€9T<Tä`<õ?\ä@¼DdäÐD Jlä J¨Qtä°QT|ä TŸY„ä YàYŒäðY0Z”ä@ZqZœä€ZÕZ¤äàZ³[°äð^0_¸ä0_pÀä p´qÈäÀq€sÐäsuØä u4xàä@x·{èäÀ{'ðä0˜ƒøä ƒ7†å@†O‹å`‹ÊåÐW’å`’¹’ åÀ’©”(å°”å”0åð”/•8å@•š@å°š—›Hå ›œPå°ñX垟`域hå0 õ på¡‚¢xå¢Ñ¢€åà¢Å£ˆåУA¤åP¤–¤˜å ¤¥ å ¥a¥¨åp¥×¥°åà¥Q¦¸å`¦¹©ÀåÀ©ÕªÈåલ«ÐåÀ«×ÁØåàÁ$ÉàåHÉøÉèåøÉʬæ4Ê’Êæ”ÊíÌæðÌ%Î4æ(ÎeÎpæŒÎÄ΀æÄÎü΀æ€ÏÁÏŒæÜÏÿϬæÐ³Ð´æÀÐÙÐ,æÙÐüÐ,æ Ñ"Ñ,æ0ÑQÑ,æà °¡PyOpenGL-3.0.2/OpenGL/DLLS/gle_COPYING.src0000644000175000001440000000627512025001653020453 0ustar mcfletchusers00000000000000The following agreement applies to the source code in this directory only! It does *NOT* apply to the HTML documentation or to the demo programs, or to other items distributed with this package! --------------------------------------------------------------------- SOFTWARE AGREEMENT PLEASE READ THIS AGREEMENT CAREFULLY BEFORE INSTALLING OR USING THIS SOFTWARE. IF YOU INSTALL OR USE THIS SOFTWARE, YOU AGREE TO THESE TERMS. This software is owned by International Business Machines Corporation ("IBM"), or its subsidiaries or IBM's suppliers, and is copyrighted and licensed, not sold. IBM retains title to the software, and grants you a nonexclusive license for the software. Under this license, you may: 1) use the software on one or more machines at a time; 2) make copies of the software for use or backup purposes within your enterprise; 3) modify this software and merge it with another program; and 4) make copies of the original file you downloaded and distribute it, provided that you transfer a copy of this license to the other party. The other party agrees to these terms by its first use of this software. You must reproduce the copyright notice and any other legend of ownership on each copy or partial copy of the software. This software, as provided by IBM, is only intended to assist in the development of a working software program. The software may not function as written: additional code is required. In addition, the software may not compile and/or bind successfully as written. IBM PROVIDES THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD ANY PART OF THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT, UNLESS REQUIRED BY APPLICABLE LAW, SHALL IBM BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF IBM HAS BEEN ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES. IBM does not warrant that the contents of the software will meet your requirements, that the software is error-free or that the software does not infringe on any intellectual property rights of any third party. IBM may make improvements and/or changes in the software at any time. Changes may or may not be made periodically to the information in the software; these changes may be reported, for the software included herein, in new editions. References, if any, in the software to IBM products, programs, or services do not imply that IBM intends to make these available in all countries in which IBM operates. Any reference to an IBM licensed program in the software is not intended to state or imply that only IBM's licensed program may be used. Any functionally equivalent program may be used. The laws of New York State govern this agreement. PyOpenGL-3.0.2/OpenGL/DLLS/GLE_WIN32_README.txt0000644000175000001440000000032112025001653021034 0ustar mcfletchusers00000000000000This is a Win32 version of the GLE library compiled as a shared library (DLL) for use with e.g. Python's ctypes foreign-function interface. To install, copy the file gle32.dll to your system32 directory.PyOpenGL-3.0.2/OpenGL/DLLS/opengle32.vc9.dll0000755000175000001440000037200012025001653020771 0ustar mcfletchusers00000000000000MZÿÿ¸@躴 Í!¸LÍ!This program cannot be run in DOS mode. $yø¢V–ñV–ñV–ñ_`ñT–ñ_`ñU–ñ_`ñT–ñqÞíñQ–ñV—ñn–ñ_`ñK–ñ_`ñW–ñ_`ñW–ñRichV–ñPEL™dfNà!  Î$¦Øà çu|âd`˜á@àð.textÈÍÎ `.rdata à Ò@@.data€ðÞ@À.relocÎà@BU‹ìQ¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uü;U}u¡ðƒxtj‹MüQ‹UükÒU R¡ð‹HÿÑƒÄ ‹UükÒU Rÿäà¡ðƒxtj‹MüQ‹UükÒUR¡ð‹HÿÑƒÄ ‹UükÒURÿäàézÿÿÿ¡ð‹HátW‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxt ‹ ð‹QÿÒÿèà‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE Ý$‹MQ‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uü;U‹EPÿÜà‹ ðƒytj‹UüR‹EükÀE P‹ ð‹QÿÒƒÄ ‹EükÀE Pÿäà‹MQÿÜà‹ðƒztj‹EüP‹MükÉMQ‹ð‹BÿÐƒÄ ‹MükÉMQÿäàé^ÿÿÿ‹ð‹B%tl‹MQÿÜà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹MQÿÜà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒyt ‹ð‹BÿÐÿèà‹å]ÃÌÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uü;U¬¡ðƒxt‹MükÉMQ‹ð‹BÿЃÄ‹MükÉMQÿØà‹ðƒztj‹EüP‹MükÉM Q‹ð‹BÿÐƒÄ ‹MükÉM Qÿäà‹ðƒztj‹EüP‹MükÉMQ‹ð‹BÿÐƒÄ ‹MükÉMQÿäàé?ÿÿÿ‹ð‹B%t~‹ ðƒyt‹UR¡ð‹HÿуÄ‹URÿØà¡ðƒxtjj‹M Q‹ð‹BÿÐƒÄ ‹M Qÿäà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒyt ‹ð‹BÿÐÿèà‹å]ÃÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE$Ý$‹M Q‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uü;Uï‹EPÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒU R¡ð‹HÿÑƒÄ ‹UükÒU Rÿäà‹EPÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒUR¡ð‹HÿÑƒÄ ‹UükÒURÿäàéüþÿÿ¡ð‹Hᄺ‹URÿÜà¡ðƒxt‹MQ‹ð‹BÿЃÄ‹MQÿØà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹MQÿÜà‹ðƒzt‹EP‹ ð‹Qÿ҃ċEPÿØà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxt ‹ ð‹QÿÒÿèà‹å]ÃÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uƒê9Uü2¡ðƒxt‹MükÉMQ‹ð‹BÿЃÄ‹MükÉMQÿØà‹ðƒztj‹EüP‹MükÉM Q‹ð‹BÿÐƒÄ ‹MükÉM Qÿäà‹ðƒztj‹EüP‹MükÉMQ‹ð‹BÿÐƒÄ ‹MükÉMQÿäà‹ðƒzt$j‹EüƒÀP‹MüƒÁkÉM Q‹ð‹BÿÐƒÄ ‹MüƒÁkÉM Qÿäà‹ðƒzt$j‹EüƒÀP‹MüƒÁkÉMQ‹ð‹BÿÐƒÄ ‹MüƒÁkÉMQÿäàé¶þÿÿ‹ð‹B%„‹ ðƒyt‹UƒêkÒUR¡ð‹HÿуÄ‹UƒêkÒURÿØà¡ðƒxt#j‹MƒéQ‹UƒêkÒU R¡ð‹HÿÑƒÄ ‹UƒêkÒU Rÿäà¡ðƒxt#j‹MƒéQ‹UƒêkÒUR¡ð‹HÿÑƒÄ ‹UƒêkÒURÿäà¡ðƒxtjj‹M Q‹ð‹BÿÐƒÄ ‹M Qÿäà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒyt ‹ð‹BÿÐÿèà‹å]ÃÌÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE$Ý$‹M Q‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uƒê9Uüë‹EPÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒU R¡ð‹HÿÑƒÄ ‹UükÒU Rÿäà‹EPÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒUR¡ð‹HÿÑƒÄ ‹UükÒURÿäà‹EPÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxt#j‹MüƒÁQ‹UüƒÂkÒU R¡ð‹HÿÑƒÄ ‹UüƒÂkÒU Rÿäà‹EPÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxt#j‹MüƒÁQ‹UüƒÂkÒUR¡ð‹HÿÑƒÄ ‹UüƒÂkÒURÿäàéýýÿÿ¡ð‹Há„ê‹URÿÜà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒzt$j‹EƒèP‹MƒékÉM Q‹ð‹BÿÐƒÄ ‹MƒékÉM Qÿäà‹URÿÜà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒzt$j‹EƒèP‹MƒékÉMQ‹ð‹BÿÐƒÄ ‹MƒékÉMQÿäà‹URÿÜà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹MQÿÜà‹ðƒzt‹EƒèkÀEP‹ ð‹Qÿ҃ċEƒèkÀEPÿØà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxt ‹ ð‹QÿÒÿèà‹å]ÃÌÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE Ý$‹MQ‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uü;Uà¡ðƒxt‹MükÉMQ‹ð‹BÿЃÄ‹MükÉMQÿØà‹ðƒztj‹EüP‹MükÉM Q‹ð‹BÿÐƒÄ ‹MükÉM Qÿäà‹ðƒzt‹EükÀEP‹ ð‹Qÿ҃ċEükÀEPÿØà‹ ðƒytj‹UüR‹EükÀEP‹ ð‹QÿÒƒÄ ‹EükÀEPÿäàé ÿÿÿ‹ ð‹Qâ„¥¡ðƒxt‹MQ‹ð‹BÿЃÄ‹MQÿØà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹ ðƒyt‹UR¡ð‹HÿуÄ‹URÿØà¡ðƒxtjj‹MQ‹ð‹BÿÐƒÄ ‹MQÿäà‹ðƒzt ¡ð‹HÿÑÿèà‹å]ÃÌÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE(Ý$‹M$Q‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uü;Uï‹EPÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒU R¡ð‹HÿÑƒÄ ‹UükÒU Rÿäà‹E PÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒUR¡ð‹HÿÑƒÄ ‹UükÒURÿäàéüþÿÿ¡ð‹Hᄺ‹URÿÜà¡ðƒxt‹MQ‹ð‹BÿЃÄ‹MQÿØà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹M QÿÜà‹ðƒzt‹EP‹ ð‹Qÿ҃ċEPÿØà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxt ‹ ð‹QÿÒÿèà‹å]ÃÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE Ý$‹MQ‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uƒê9UüÊ¡ðƒxt‹MükÉMQ‹ð‹BÿЃÄ‹MükÉMQÿØà‹ðƒztj‹EüP‹MükÉM Q‹ð‹BÿÐƒÄ ‹MükÉM Qÿäà‹ðƒzt‹EükÀEP‹ ð‹Qÿ҃ċEükÀEPÿØà‹ ðƒytj‹UüR‹EükÀEP‹ ð‹QÿÒƒÄ ‹EükÀEPÿäà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxt#j‹MüƒÁQ‹UüƒÂkÒU R¡ð‹HÿÑƒÄ ‹UüƒÂkÒU Rÿäà¡ðƒxt‹MükÉMQ‹ð‹BÿЃÄ‹MükÉMQÿØà‹ðƒzt$j‹EüƒÀP‹MüƒÁkÉMQ‹ð‹BÿÐƒÄ ‹MüƒÁkÉMQÿäàéþÿÿ‹ð‹B%„À‹ ðƒyt‹UƒêkÒUR¡ð‹HÿуÄ‹UƒêkÒURÿØà¡ðƒxt#j‹MƒéQ‹UƒêkÒU R¡ð‹HÿÑƒÄ ‹UƒêkÒU Rÿäà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒzt$j‹EƒèP‹MƒékÉMQ‹ð‹BÿÐƒÄ ‹MƒékÉMQÿäà‹ðƒzt‹EƒèkÀEP‹ ð‹Qÿ҃ċEƒèkÀEPÿØà‹ ðƒytjj‹U R¡ð‹HÿÑƒÄ ‹U Rÿäà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒyt ‹ð‹BÿÐÿèà‹å]ÃU‹ìQ¡ðƒ8tƒìÝE(Ý$‹M$Q‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uƒê9Uüë‹EPÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒU R¡ð‹HÿÑƒÄ ‹UükÒU Rÿäà‹E PÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒUR¡ð‹HÿÑƒÄ ‹UükÒURÿäà‹EPÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxt#j‹MüƒÁQ‹UüƒÂkÒU R¡ð‹HÿÑƒÄ ‹UüƒÂkÒU Rÿäà‹E PÿÜà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxt#j‹MüƒÁQ‹UüƒÂkÒUR¡ð‹HÿÑƒÄ ‹UüƒÂkÒURÿäàéýýÿÿ¡ð‹Há„ê‹URÿÜà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒzt$j‹EƒèP‹MƒékÉM Q‹ð‹BÿÐƒÄ ‹MƒékÉM Qÿäà‹U RÿÜà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒzt$j‹EƒèP‹MƒékÉMQ‹ð‹BÿÐƒÄ ‹MƒékÉMQÿäà‹URÿÜà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹M QÿÜà‹ðƒzt‹EƒèkÀEP‹ ð‹Qÿ҃ċEƒèkÀEPÿØà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxt ‹ ð‹QÿÒÿèà‹å]ÃÌÌÌÌÌÌU‹ììøVƒ}t ‹EPÿÜàƒ}ué ‹MÙîÜYßàöÄz4‹UÝáÜ ‹EÝ‹MÝáÜI‹UÝZ‹EÝáÜH‹MÝY‹UÙîÜZßàöÄAu4‹EÝáÜ‹MÝ‹UÝáÜJ‹EÝX‹MÝáÜI‹UÝZ‹E‹MÝ@ÜI‹U‹EÝBÜHÞéÝ]è‹M‹UÝAÜ ‹E‹MÝÜIÞéÝ]ð‹U‹EÝÜH‹M‹UÝAÜ ÞéÝ]øƒ} u4‹EÝáÜ‹MÝ‹UÝáÜJ‹EÝX‹MÝáÜI‹UÝZÙîÝ]ÀÙîÝ]ÈÙèÝ]ЋEÝÜMÀ‹MÝAÜMÈÞÁ‹UÝBÜMÐÞÁÝÿÿÿÝ…ÿÿÿÜMÀ‹EÜ(Ý]ÀÝ…ÿÿÿÜMÈ‹MÜiÝ]ÈÝ…ÿÿÿÜMЋUÜjÝ]ÐÝEÀÜMÀÝEÈÜMÈÞÁÝÿÿÿÝEÐÜMÐÜ…ÿÿÿÝÿÿÿƒìÝ…ÿÿÿÝ$è/§ƒÄÝÿÿÿÙîÜÿÿÿßàöÄD{2ÙèܵÿÿÿÝÿÿÿÝEÀÜÿÿÿÝ]ÀÝEÈÜÿÿÿÝ]ÈÝEÐÜÿÿÿÝ]ЋEÝEÀÜ‹MÝEÈÜIÞÁ‹UÝEÐÜJÞÁÝ] ƒìÝE Ý$è°¦ƒÄÝ] ÝE Ü5áÝ] EèPƒìÝE Ý$ ÿÿÿQ赃ċUkÒ ÁâRÿ°àƒÄ‰E¼‹E¼‰…ÿÿÿ‹MkÉ‹•ÿÿÿʉE¸‹MkÉ‹U¸ʉEÜ‹M‹UÜʉE°‹MkÉ‹U°ʉE¬ƒ} „CÇ…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹•ÿÿÿ;U„‹…ÿÿÿkÀ‹ÿÿÿkÉ‹•ÿÿÿ‹u ÝÝÊ‹…ÿÿÿkÀ‹ÿÿÿkÉ‹•ÿÿÿ‹u ÝDÝ\Ê‹…ÿÿÿkÀ‹ÿÿÿ‹UÜ‹u ÝDÝÊ‹…ÿÿÿkÀ‹ÿÿÿ‹•ÿÿÿ‹uÜÝÖÝ\Áé^ÿÿÿƒ}„†Ç…ÿÿÿë‹…ÿÿÿƒÀ‰…ÿÿÿ‹ÿÿÿ;M}`‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝÝÁ‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝDÝ\Á‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝDÝ\Áë†éïÇ…ÿÿÿë‹•ÿÿÿƒÂ‰•ÿÿÿ‹…ÿÿÿ;E„‹M+ÿÿÿƒé‰M´‹•ÿÿÿkÒ‹E´kÀ‹ÿÿÿ‹u ÝÝÁ‹•ÿÿÿkÒ‹E´kÀ‹ÿÿÿ‹u ÝDÝ\Á‹•ÿÿÿkÒ‹E´‹MÜ‹u ÝDÝÁ‹U´kÒ‹…ÿÿÿ‹M´‹uÜÝÎÝ\Ðé^ÿÿÿƒ}„7‹ð‹B%„—Ç…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹Uƒê9•ÿÿÿ}i‹E+…ÿÿÿƒè‰E´‹ÿÿÿkÉ‹U´kÒ‹E°‹uÝÝЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ÐézÿÿÿéŒÇ…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹•ÿÿÿ;U}f‹E+…ÿÿÿƒè‰E´‹ÿÿÿkÉ‹U´kÒ‹E°‹uÝÝЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\Ðë€ÇEäë ‹MäƒÁ‰Mäƒ}ä÷Ç…ÿÿÿë‹•ÿÿÿƒÂ‰•ÿÿÿ‹…ÿÿÿ;EÚ‹ÿÿÿkÉ‹U¸‹…ÿÿÿ‹uÜÝDÊÜ$Æ‹ÿÿÿkÉ‹U¸Ý\Ê‹…ÿÿÿkÀ‹ÿÿÿ‹•ÿÿÿ‹uÜÝDÁÜ$Ö‹…ÿÿÿkÀ‹ÿÿÿÝ\Á‹•ÿÿÿkÒ‹…ÿÿÿÝ… ÿÿÿÜ Ð‹ÿÿÿkÉ‹•ÿÿÿÝ…(ÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹ÿÿÿÝ…0ÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E¸ÝЋÿÿÿkÉ‹•ÿÿÿÝ…@ÿÿÿÜ Ê‹…ÿÿÿkÀ‹ÿÿÿÝ…HÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹…ÿÿÿÝ…PÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U¸Ý\Ê‹…ÿÿÿkÀ‹ÿÿÿÝ…`ÿÿÿÜ Á‹•ÿÿÿkÒ‹…ÿÿÿÝ…hÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹•ÿÿÿÝ…pÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M¸Ý\Á‹•ÿÿÿkÒ‹E¸‹ÿÿÿ‹uÜÝDÐÜ΋•ÿÿÿkÒ‹E¸Ý\ЋÿÿÿkÉ‹•ÿÿÿ‹…ÿÿÿ‹uÜÝDÊÜÆ‹ÿÿÿkÉ‹•ÿÿÿÝ\Êéþÿÿƒ}„-Ç…ÿÿÿë‹…ÿÿÿƒÀ‰…ÿÿÿ‹ÿÿÿ;M‹•ÿÿÿkÒ‹E°Ý… ÿÿÿÜ Ð‹ÿÿÿkÉ‹U°Ý…(ÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M°Ý…0ÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E¬ÝЋÿÿÿkÉ‹U°Ý…@ÿÿÿÜ Ê‹…ÿÿÿkÀ‹M°Ý…HÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E°Ý…PÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U¬Ý\Ê‹…ÿÿÿkÀ‹M°Ý…`ÿÿÿÜ Á‹•ÿÿÿkÒ‹E°Ý…hÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U°Ý…pÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M¬Ý\Áéßþÿÿƒ}u#ƒìÙîÝ$j‹•ÿÿÿR‹E¸P‹MQèàÛÿÿƒÄëd‹ð‹B%t+ƒìÙîÝ$j‹M°Q‹U¬R‹…ÿÿÿP‹M¸Q‹URèÅíÿÿƒÄ ë)ƒìÙîÝ$j‹E°P‹M¬Q‹•ÿÿÿR‹E¸P‹MQèZéÿÿƒÄ ‹U¸‰Uà‹…ÿÿÿ‰E¸‹Mà‰ÿÿÿ‹U¬‰Uà‹E°‰E¬‹Mà‰M°éöûÿÿ‹U¼Rÿ´àƒÄ^‹å]ÃÌÌÌÌÌÌU‹ìQhˆÿ°àƒÄ‰Eü‹EüÇ‹MüÇA‹UüÇB‹EüÇ@ ‹MüÇA‹UüÇB‹EüÇ@p‹MüÇAt‹UüÇBx‹EüÇ@|‹MüÇ€‹UüÇ‚„‹EüÇ@‹MüÇA‹UüÇB ‹EüÇ@$j‹MüQ軃Ä‹UüÇB(‹EüÇ@8‹MüÇAH‹UüÇBL‹EüÙîÝXP‹MüÙîÝYX‹UüÙîÝZ`‹EüÙîÝXh‹Eü‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒ=ðt:¡ðƒx t‹ ð‹Q Rÿ´àƒÄ¡ðÇ@ ‹ ðQÿ´àƒÄÇð]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìƒ}ué?ƒ} }é4‹E‹M ;Hué$‹U‹E ;B~/‹M ÁáQ‹U‹B PÿdàƒÄ‹M‰A ‹U Áâ‹EP ‹M‰Q$ÛE Ü= áƒìÝ$èØœƒÄÝ]ðÛE Ü= áƒìÝ$踜ƒÄÝ]è‹U‹B$ÙèÝ‹M‹Q$ÙîÝZÇEüë ‹EüƒÀ‰Eü‹Mü;M }~‹UüƒêÁâ‹E‹H$ÝÜMè‹UüƒêÁâ‹E‹H$ÝDÜMðÞé‹UüÁâ‹E‹H$Ý ‹UüƒêÁâ‹E‹H$ÝÜMð‹UüƒêÁâ‹E‹H$ÝDÜMèÞÁ‹UüÁâ‹E‹H$Ý\éqÿÿÿ‹U‹E ‰B‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒ=ðuèýÿÿ£ðhð5è}œƒÄ¡ð‹@]ÃÌÌÌU‹ìƒ=ðuèßüÿÿ£ðhð5èMœƒÄ‹EP‹ ðQè=þÿÿƒÄ]ÃÌÌÌÌÌÌÌÌU‹ìQƒ=ðuèžüÿÿ£ðhð5è œƒÄ¡ð‹ ð‹Qp‰¡ð‹ ð‹Qt‰P¡ð‹ ð‹Qx‰P¡ð‹ ð‹Q|‰P ¡ð‹ ð‹‘€‰P¡ð‹ ð‹‘„‰P‹E%ÿ‰Eü‹Müƒé‰Müƒ}ü ‡ô‹Uüÿ$•;¡ðÇp?‹ ðÇAÀB‹ðÇBéÀ¡ðÇp?‹ ðÇA`C‹ðÇBÀ;é–¡ðÇp?‹ ðÇA C‹ðÇBél¡ðÇp?‹ ðÇAD‹ðÇBéB¡ðÇp?‹ ðÇAÐ?‹ðÇBé¡ðÇp?‹ ðÇA€A‹ðÇBÀ;éî¡ðÇp?‹ ðÇAÀA‹ðÇBéÄ¡ðÇp?‹ ðÇA`B‹ðÇBéš¡ðÇð;‹ ðÇA <‹ðÇBës¡ðÇð;‹ ðÇA >‹ðÇBÀ;ëL¡ðÇð;‹ ðÇA`>‹ðÇBë%¡ðÇð;‹ ðÇA?‹ðÇB‹E%…¼‹ ð‹ð‹‰Ap‹ ð‹ð‹B‰At‹ ð‹ð‹B‰Ax‹ ð‹ð‹B ‰A|‹ ð‹ð‹B‰€‹ ð‹ð‹B‰„‹ ðÇ‹ðÇB¡ðÇ@‹ ðÇA ‹ðÇB¡ðÇ@‹å]Ã×899©9':N:+9U9Ó9ý9u:œ:U‹ì‹EÝÝð‹MÝAÝ ð‹UÝBÝ(ð]ÃÌÌÌÌÌÌÌÌU‹ì‹Eƒè‹ ð‰AL‹ðÝE ÝZP¡ðÇ@H]ÃÌÌÌÌU‹ìƒì ‹EÝÝ]ð‹MÝAÝ]ø‹UÝBÝ]èÝEðÜMðÝEøÜMøÞÁÝEèÜMèÞÁƒìÝ$è5—ƒÄÙèÞñÝ]àÝEðÜMàÝ]ðÝEøÜMàÝ]øÝEèÜMàÝ]è‹EP‹M QƒìÝEèÝ$ƒìÝEøÝ$ƒìÝEðÝ$èƒÄ ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìƒìÝEÝ$ƒìÝEÝ$臗ƒÄÜ @áÜ58áÝ]øÝEøÜ@áÝ]øƒìÝEÝ$臖ƒÄÜ58áÙèÞáÝ]ð¡ðƒxHu1‹ ðÝEøÝY`‹ðÝEðÝZh¡ð‹HHƒÁ‹ð‰JH鮡ðÝ@hÜeðÜ0áßàöÄAuÝEðÜáÝ]ðë%‹ ðÝAhÜeðÜ(áßàöÄz ÝEðÜ%áÝ]ð‹ðÝEðÝZh¡ðÝ@`ÜeøÜ0áßàöÄAuÝEøÜáÝ]øë%‹ ðÝA`ÜeøÜ(áßàöÄz ÝEøÜ%áÝ]ø‹ðÝEøÝZ`ƒìÝEðÝ$ƒìÝEøÝ$ÿÔà‹å]ÃÌU‹ì‹EP‹M QƒìÝ(ðÝ$ƒìÝ ðÝ$ƒìÝðÝ$èlþÿÿƒÄ ]ÃÌÌÌÌÌÌÌU‹ìƒì ‹E Áà‹ ð‹Q,ÝÝ]ð‹E Áà‹ ð‹Q,ÝDÝ]ø‹EÝ@Ý]èÝEðÜMðÝEøÜMøÞÁÝEèÜMèÞÁƒìÝ$èÛ”ƒÄÙèÞñÝ]àÝEðÜMàÝ]ðÝEøÜMàÝ]øÝEèÜMàÝ]è‹MQ‹U RƒìÝEèÝ$ƒìÝEøÝ$ƒìÝEðÝ$è¸ýÿÿƒÄ ‹å]ÃÌU‹ì¡ðƒx0uëI‹MQ‹U RƒìÙîÝ$‹E Áà‹ ð‹Q0ƒìÝDÝ$‹E Áà‹ ð‹Q0ƒìÝÝ$èZýÿÿƒÄ ]ÃÌÌÌÌÌU‹ì¡ðÝ@P‹ ðÜAX‹ðÝZX‹Eƒè‹ ð‰AL‹ðÝE ÝZP¡ðƒxL ‹ ðÙîÝYX‹ðÇBH]ÃÌÌÌU‹ìƒì ‹EÝÝ]ð‹MÝAÝ]ø‹UÝBÝ]èÝEðÜMðÝEøÜMøÞÁƒìÝ$蓃ÄÙèÞñÝ]àÝEðÜMàÝ]ðÝEøÜMàÝ]ø‹EP‹M QƒìÝEèÝ$ƒìÝEøÝ$ƒìÝEðÝ$èƒÄ ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìƒìÝEÝ$ƒìÝEÝ$è瓃ÄÜ @áÜ58áÝ]øÝEøÜ@áÝ]ø¡ðƒxHu#‹ ðÝEøÝY`‹ð‹BHƒÀ‹ ð‰AHëW‹ðÝB`ÜeøÜ0áßàöÄAuÝEøÜáÝ]øë$¡ðÝ@`ÜeøÜ(áßàöÄz ÝEøÜ%áÝ]ø‹ ðÝEøÝY`ƒ}$u‹ðÝBXƒìÝ$ƒìÝEøÝ$ÿÔàƒ}$u&¡ðÝ@X‹ ðÜAPƒìÝ$ƒìÝEøÝ$ÿÔà‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ì‹EP‹M QƒìÝ(ðÝ$ƒìÝ ðÝ$ƒìÝðÝ$è¬þÿÿƒÄ ]ÃÌÌÌÌÌÌÌU‹ìƒì ‹E Áà‹ ð‹Q,ÝÝ]ð‹E Áà‹ ð‹Q,ÝDÝ]ø‹EÝ@Ý]èÝEðÜMðÝEøÜMøÞÁƒìÝ$胑ƒÄÙèÞñÝ]àÝEðÜMàÝ]ðÝEøÜMàÝ]ø‹MQ‹U RƒìÝEèÝ$ƒìÝEøÝ$ƒìÝEðÝ$è þÿÿƒÄ ‹å]ÃÌÌU‹ì¡ðƒx0uëI‹MQ‹U RƒìÙîÝ$‹E Áà‹ ð‹Q0ƒìÝDÝ$‹E Áà‹ ð‹Q0ƒìÝÝ$èªýÿÿƒÄ ]ÃÌÌÌÌÌU‹ì‹EP‹M Q‹UƒìÝBÝ$‹EƒìÝ@Ý$‹MƒìÝÝ$è ƒÄ ]ÃÌÌÌÌÌÌÌÌU‹ìƒ}$u¡ðÝ@XƒìÝ$ƒìÝEÝ$ÿÔàƒ}$u'‹ ðÝAX‹ðÜBPƒìÝ$ƒìÝEÝ$ÿÔà]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ì‹EP‹M QƒìÝ(ðÝ$ƒìÝ ðÝ$ƒìÝðÝ$èlÿÿÿƒÄ ]ÃÌÌÌÌÌÌÌU‹ì‹EP‹M Q‹UƒìÝBÝ$‹E Áà‹ ð‹Q,ƒìÝDÝ$‹E Áà‹ ð‹Q,ƒìÝÝ$èÿÿÿƒÄ ]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ì¡ðƒx0uëI‹MQ‹U RƒìÙîÝ$‹E Áà‹ ð‹Q0ƒìÝDÝ$‹E Áà‹ ð‹Q0ƒìÝÝ$èªþÿÿƒÄ ]ÃÌÌÌÌÌU‹ìƒì0V‹E‹MÝ@Ü!Ý]Ø‹U‹EÝB Ü`Ý]à‹M‹UÝA(ÜbÝ]èÝEØÜMØÝEàÜMàÞÁÝ]ðÝEèÜMèÜEðÝ]ðƒìÝEðÝ$èØŽƒÄÝ]ðÙîÜ]ðßàöÄDŠÃÇEüë ‹EüƒÀ‰Eü‹M ƒé9Mü¢‹UüƒÂkÒ‹EükÀ‹M‹uÝÜ$Ý]Ø‹UüƒÂkÒ‹EükÀ‹M‹uÝDÜdÝ]à‹UüƒÂkÒ‹EükÀ‹M‹uÝDÜdÝ]èÝEØÜMØÝEàÜMàÞÁÝ]ðÝEèÜMèÜEðÝ]ðƒìÝEðÝ$莃ÄÝ]ðÙîÜ]ðßàöÄD{ëéFÿÿÿÙèÜuðÝ]ðÝEðÜMØÝ]ØÝEðÜMàÝ]àÝEðÜMèÝ]è‹UÝÜMØ‹EÝ@ÜMàÞÁ‹MÝAÜMèÞÁÝ]ÐÝEÐÜMØ‹UÜ*‹EÝÝEÐÜMà‹MÜi‹UÝZÝEÐÜMè‹EÜh‹MÝY‹U‹EÝÜ‹M‹UÝAÜJÞÁÝ]ð‹E‹MÝ@ÜIÜEðÝ]ðƒìÝEðÝ$èLƒÄÝ]ðÙîÜ]ðßàöÄDz‹UÝEØÝ‹EÝEàÝX‹MÝEèÝY^‹å]ÃÌÌÌÌÌU‹ìƒì V‹EkÀÁàPÿ°àƒÄ‰EüèæŒ‰Eø‹ ààQh‡‹UøRèÈŒ¡äàPh‡‹MøQè´Œ‹èàRh‡‹EøP蟌‹MøQ范}„†ÇEôë ‹UôƒÂ‰Uô‹Eô;E}g‹MôÁá‹UôkÒ‹Eü‹u ÝÝЋMôÁá‹UôkÒ‹Eü‹u ÝDÝ\ЋMôkÉ‹UüÝEÝ\Ê‹EôkÀ‹MüÁR‹EôkÀ‹MüÁR‹EøPèŒëˆé‹Mƒé‰Môë ‹Uôƒê‰Uôƒ}ôÿ~g‹EôÁà‹MôkÉ‹Uü‹u ÝÝÊ‹EôÁà‹MôkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MüÝEÝ\Á‹UôkÒ‹Eü ÐQ‹UôkÒ‹Eü ÐQ‹UøRè{‹늋EøPèj‹‹MüQÿ´àƒÄ‹UøRèN‹^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììpVÇEàÇEÔÇEÄÇE ÇE¤ÙîÝ]ÝEÝ]ˆ3Àƒ}”Àf‰EÜ3Ƀ} ”Áf‰MÐ3Òƒ}$”Âf‰UÀ¿EÀ…ÀuL‹MÁákÉÁáQÿ°àƒÄ‰Eà‹Uà‰UÔ‹EkÀ‹MÔÁ‰UÄ‹EkÀ‹MÄÁ‰U ‹EkÀ‹M Á‰U¤ƒ}uÙîÝ]èÙèÝ]ðÙîÝ]øë‹EÝÝ]è‹MÝAÝ]ð‹UÝBÝ]ø‹EP‹MQUèRè;ûÿÿƒÄ ÇEä‹E䉅ìþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜ$Ýpÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝxÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝ]€Ý…pÿÿÿÜpÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÈÝE€ÜM€ÜEÈÝ]ȃìÝEÈÝ$豉ƒÄÝ]È‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜÝÈþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝÐþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝØþÿÿÝ…ÈþÿÿÜÈþÿÿÝ…ÐþÿÿÜÐþÿÿÞÁÝàþÿÿÝ…ØþÿÿÜØþÿÿÜ…àþÿÿÝàþÿÿƒìÝ…àþÿÿÝ$è鈃ÄÝàþÿÿÝ…àþÿÿÜ PáÝàþÿÿ‹ìþÿÿƒÁ‰ìþÿÿÝ…àþÿÿÜ]ÈßàöÄu‹Uƒê9•ìþÿÿŒ?þÿÿ¿EÀ…À…vÇ…èþÿÿë‹èþÿÿƒÁ‰èþÿÿ‹•èþÿÿ;Ué‹…ìþÿÿƒèkÀ0‹èþÿÿÁá‹U$‹u ÝÜ ‹…ìþÿÿƒèkÀ0‹èþÿÿÁá‹U$‹u ÝDÜLÞÁ‹…ìþÿÿƒèkÀ0‹M$ÜD‹•èþÿÿkÒ‹EÔÝЋìþÿÿƒékÉ0‹•èþÿÿÁâ‹E$‹u ÝDÜ ‹ìþÿÿƒékÉ0‹•èþÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹ìþÿÿƒékÉ0‹U$ÜD (‹…èþÿÿkÀ‹MÔÝ\Á‹•èþÿÿkÒ‹EÔÙîÝ\Ðéùþÿÿ¿MÜ…É…WÇ…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;E-‹ìþÿÿƒékÉ0‹U$ÙîÜ\ ßàöÄDzL‹…ìþÿÿƒèkÀ0‹M$ÙîÜ\ßàöÄDz0‹•ìþÿÿƒêkÒ0‹…ìþÿÿƒèkÀ0‹M$‹u$ÝD ÜßàöÄD‹^‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝD Ü ‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝDÜLÞé‹•èþÿÿkÒ‹E ÝЋìþÿÿƒékÉ0‹U$ÝD Ùà‹…èþÿÿÁà‹MÜ ‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝÜLÞÁ‹•èþÿÿkÒ‹E Ý\ЋèþÿÿkÉ‹•èþÿÿkÒ‹E ‹u ÝÈÜ Ö‹èþÿÿkÉ‹•èþÿÿkÒ‹E ‹u ÝDÈÜLÖÞÁÝÀþÿÿƒìÝ…ÀþÿÿÝ$èÛ…ƒÄÙèÞñÝÀþÿÿ‹èþÿÿkÉ‹U ÝÊÜÀþÿÿ‹…èþÿÿkÀ‹M ÝÁ‹•èþÿÿkÒ‹E ÝDÐÜÀþÿÿ‹èþÿÿkÉ‹U Ý\Êë>‹…èþÿÿÁà‹èþÿÿkÉ‹U ‹uÝÝÊ‹…èþÿÿÁà‹èþÿÿkÉ‹U ‹uÝDÝ\Ê‹…èþÿÿkÀ‹M ÙîÝ\Á‹•èþÿÿkÒ‹E¤ÙîÝ\Ðéµýÿÿ‹Mƒé9ìþÿÿ ‹•ìþÿÿkÒUR‹EäkÀEP‹MäƒékÉMQU¨Rèö ƒÄÝEèÜM¨ÝEðÜM°ÞÁÝEøÜM¸ÞÁݸþÿÿÝHáܸþÿÿÜM¨ÜmèÝ]èÝHáܸþÿÿÜM°ÜmðÝ]ðÝHáܸþÿÿÜM¸ÜmøÝ]øEèP‹ìþÿÿkÉMQ‹UäkÒUR…ðþÿÿPè1€ƒÄÿÈàðþÿÿQÿÌà¿UÀ…Ò„*¿EÐ…À„‰¿MÜ…Ét"ƒìÝEÈÝ$‹•ìþÿÿR‹E P‹MQèŽ ƒÄëZ‹ð‹B%t&ƒìÝEÈÝ$‹ìþÿÿQ‹UR‹E P‹MQèȃÄë$ƒìÝEÈÝ$‹•ìþÿÿR‹EP‹M Q‹URèBƒÄé¿EÜ…Àt&ƒìÝEÈÝ$‹ìþÿÿQ‹U R‹E P‹MQèÑ ƒÄëb‹ð‹B%t*ƒìÝEÈÝ$‹ìþÿÿQ‹UR‹E P‹M Q‹URè7ƒÄë(ƒìÝEÈÝ$‹…ìþÿÿP‹MQ‹U R‹E P‹MQè}ƒÄéÇ…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;Eì‹ìþÿÿkÉ0‹•èþÿÿÁâ‹E$‹u ÝÜ ‹ìþÿÿkÉ0‹•èþÿÿÁâ‹E$‹u ÝDÜLÞÁ‹ìþÿÿkÉ0‹U$ÜD ‹…èþÿÿkÀ‹MÄÝÁ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹u ÝDÜ ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•ìþÿÿkÒ0‹E$ÜD(‹èþÿÿkÉ‹UÄÝ\ÊÝEÈÙà‹…èþÿÿkÀ‹MÄÝ\Á‹•èþÿÿkÒ‹EÔÙîÝ\Ðéöþÿÿ¿MÜ…É…Ç…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;Eñ‹ìþÿÿkÉ0‹U$ÙîÜ\ ßàöÄDzC‹…ìþÿÿkÀ0‹M$ÙîÜ\ßàöÄDz*‹•ìþÿÿkÒ0‹…ìþÿÿkÀ0‹M$‹u$ÝD ÜßàöÄD‹R‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝD Ü ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝDÜLÞé‹•èþÿÿkÒ‹E¤ÝЋìþÿÿkÉ0‹U$ÝD Ùà‹…èþÿÿÁà‹MÜ ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝÜLÞÁ‹•èþÿÿkÒ‹E¤Ý\ЋèþÿÿkÉ‹•èþÿÿkÒ‹E¤‹u¤ÝÈÜ Ö‹èþÿÿkÉ‹•èþÿÿkÒ‹E¤‹u¤ÝDÈÜLÖÞÁݰþÿÿƒìÝ…°þÿÿÝ$èj€ƒÄÙèÞñݰþÿÿ‹èþÿÿkÉ‹U¤ÝÊܰþÿÿ‹…èþÿÿkÀ‹M¤ÝÁ‹•èþÿÿkÒ‹E¤ÝDÐܰþÿÿ‹èþÿÿkÉ‹U¤Ý\Êë>‹…èþÿÿÁà‹èþÿÿkÉ‹U¤‹uÝÝÊ‹…èþÿÿÁà‹èþÿÿkÉ‹U¤‹uÝDÝ\Êéñýÿÿ¿EÐ…À„(¿MÜ…Ét&ƒìÝEÈÝ$‹•ìþÿÿR‹EÄP‹MÔQ‹URè¼ÿÿƒÄëj¡ð‹Hát.ƒìÝEÈÝ$‹•ìþÿÿR‹E¤P‹M Q‹UÄR‹EÔP‹MQèåÍÿÿƒÄ ë,ƒìÝEÈÝ$‹•ìþÿÿR‹E¤P‹M Q‹UÄR‹EÔP‹MQèwÉÿÿƒÄ ‹ð‹Bƒàt}ÙèÝ]˜‹ ðƒytUˆR¡ð‹HÿуÄUˆRÿØà‹EÔP‹MQè ƒÄÝáÝ]˜‹ðƒztEˆP‹ ð‹QÿÒƒÄEˆPÿØà‹MÄQ‹URè|ƒÄ骿EÜ…ÀtFƒìÝEÈÝ$‹ìþÿÿQ‹•ìþÿÿkÒ U R‹…ìþÿÿƒèkÀ E P‹MÄQ‹UÔR‹EPè¼ÿÿƒÄ 饋 ð‹QâtKƒìÝEÈÝ$‹…ìþÿÿP‹ìþÿÿkÉ M Q‹•ìþÿÿƒêkÒ U R‹E¤P‹M Q‹UÄR‹EÔP‹MQèÐÿÿƒÄ(ëIƒìÝEÈÝ$‹•ìþÿÿR‹…ìþÿÿkÀ E P‹ìþÿÿƒékÉ M Q‹U¤R‹E P‹MÄQ‹UÔR‹EPèÊÿÿƒÄ(‹ ð‹Qƒâ„¥‹…ìþÿÿƒèkÀ E PÿÜàÙèÝ]˜‹ ðƒytUˆR¡ð‹HÿуÄUˆRÿØà‹EÔP‹MQèpƒÄ‹•ìþÿÿkÒ U RÿÜàÝáÝ]˜¡ðƒxtMˆQ‹ð‹BÿЃÄMˆQÿØà‹UÄR‹EPè̓ÄÿÐà‹MÔ‰MØ‹UĉUÔ‹E؉EÄ‹M ‰MØ‹U¤‰U ‹E؉E¤‹ìþÿÿ‰Mä‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝÜ$Ýpÿÿÿ‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝDÜdÝxÿÿÿ‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝDÜdÝ]€Ý…pÿÿÿÜpÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÈÝE€ÜM€ÜEÈÝ]ȃìÝEÈÝ$è|ƒÄÝ]È‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝÜÝþÿÿ‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝDÜDݘþÿÿ‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝDÜDÝ þÿÿÝ…þÿÿÜþÿÿÝ…˜þÿÿܘþÿÿÞÁݨþÿÿÝ… þÿÿÜ þÿÿÜ…¨þÿÿݨþÿÿƒìÝ…¨þÿÿÝ$èH{ƒÄݨþÿÿÝ…¨þÿÿÜ Páݨþÿÿ‹•ìþÿÿƒÂ‰•ìþÿÿÝ…¨þÿÿÜ]ÈßàöÄu‹Eƒè9…ìþÿÿŒ?þÿÿéÜõÿÿ¿MÀ…Éu ‹UàRÿ´àƒÄ^‹å]ÃÌÌÌÌÌÌÌU‹ìƒìè½z‰Eü¡ààPh‡‹MüQè z‹äàRh‡‹EüPè‹z‹ èàQh‡‹UüRèvz‹EüPègzÇEøë ‹MøƒÁ‰Mø‹Uø;U}‹EøkÀE P‹MøkÉM Q‹UüRè*zëЋEüPèz‹MüQè z‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìè z‰Eü¡ààPh‡‹MüQèðy‹äàRh‡‹EüPèÛy‹ èàQh‡‹UüRèÆy‹EüPè·y‹Mƒé‰Møë ‹Uøƒê‰Uøƒ}øÿ~‹EøkÀE P‹MøkÉM Q‹UüRèzyëÒ‹EüPèiy‹MüQèZy‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEäë ‹MäƒÁ‰Mä‹Uä;U‹EäÁà‹M ÝÝ]è‹UäÁâ‹E ÝDÝ]ðÙîÝ]ø‹ ðƒytj‹UäREèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹ ðƒytj‹UäREèP‹ ð‹QÿÒƒÄ EèPÿäàé^ÿÿÿ‹ ð‹Qâtu‹E ÝÝ]è‹M ÝAÝ]ðÙîÝ]ø‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹ ðƒytjjUèR¡ð‹HÿÑƒÄ UèRÿäà¡ðƒxt ‹ ð‹QÿÒÿèà¡ð‹Hƒát7jƒìÙîÝ$‹U R‹EPè½êÿÿƒÄjÝEÙàƒìÝ$‹M Q‹URè êÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒì¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEäë ‹MäƒÁ‰Mä‹Uä;U®‹EäÁà‹M ÝÝ]è‹UäÁâ‹E ÝDÝ]ðÙîÝ]ø‹MƒékÉ MQÿÜà‹ðƒztj‹EäPMèQ‹ð‹BÿÐƒÄ MèQÿäàÝEÙàÝ]ø‹UkÒ URÿÜà¡ðƒxtj‹MäQUèR¡ð‹HÿÑƒÄ UèRÿäàé=ÿÿÿ¡ð‹Há„™‹U ÝÝ]è‹E Ý@Ý]ðÙîÝ]ø‹MƒékÉ MQÿÜà‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹MkÉ MQÿÜà‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäà‹ ðƒyt ‹ð‹BÿÐÿèà‹ ð‹QƒâtZ‹EƒèkÀ EPÿÜàjƒìÙîÝ$‹M Q‹URèèÿÿƒÄ‹EkÀ EPÿÜàjÝEÙàƒìÝ$‹M Q‹URècèÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ÙîÝ]à¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEÌë ‹M̃Á‰MÌ‹UÌ;UÓ‹EÌÁà‹MÝÝ]ЋUÌÁâ‹EÝDÝ]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØà‹EÌÁà‹M ÝÝ]è‹UÌÁâ‹E ÝDÝ]ðÙîÝ]ø‹ ðƒytj‹UÌREèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ð‹QÿÒƒÄ EèPÿäàéÿÿÿ‹ ð‹Qℳ‹EÝÝ]ЋMÝAÝ]ØÙîÝ]à‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹M ÝÝ]è‹U ÝBÝ]ðÙîÝ]ø¡ðƒxtjjMèQ‹ð‹BÿÐƒÄ MèQÿäàÝEÙàÝ]ø‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäà‹ ðƒyt ‹ð‹BÿÐÿèà‹ ð‹Qƒâ„žÙîÝ]ØÝEØÝ]ÐÙèÝ]à¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØàjƒìÙîÝ$‹U R‹EPèãåÿÿƒÄÝáÝ]à‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàjÝEÙàƒìÝ$‹E P‹MQè–åÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ÙîÝ]à¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEÌë ‹M̃Á‰MÌ‹UÌ;U‹EƒèkÀ EPÿÜà‹MÌÁá‹UÝ Ý]ЋEÌÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹MÌÁá‹U Ý Ý]è‹EÌÁà‹M ÝDÝ]ðÙîÝ]ø‹ðƒztj‹EÌPMèQ‹ð‹BÿÐƒÄ MèQÿäà‹UkÒ URÿÜà¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØàÝEÙàÝ]ø‹ðƒztj‹EÌPMèQ‹ð‹BÿÐƒÄ MèQÿäàéÍþÿÿ‹ð‹B%„‹MƒékÉ MQÿÜà‹UÝÝ]ЋEÝ@Ý]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØà‹E ÝÝ]è‹M ÝAÝ]ðÙîÝ]ø‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäà‹MkÉ MQÿÜà‹UÝÝ]ЋEÝ@Ý]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàÝEÙàÝ]ø¡ðƒxtjjMèQ‹ð‹BÿÐƒÄ MèQÿäà‹ðƒzt ¡ð‹HÿÑÿèà‹ð‹Bƒà„‹MƒékÉ MQÿÜàÙîÝ]ØÝEØÝ]ÐÙèÝ]à‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàjƒìÙîÝ$‹M Q‹URèaâÿÿƒÄ‹EkÀ EPÿÜàÝáÝ]à‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàjÝEÙàƒìÝ$‹E P‹MQèâÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ÙîÝ]à¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEÌë ‹M̃Á‰MÌ‹Uƒê9UÌg‹EÌÁà‹MÝÝ]ЋUÌÁâ‹EÝDÝ]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØà‹EÌÁà‹M ÝÝ]è‹UÌÁâ‹E ÝDÝ]ðÙîÝ]ø‹ ðƒytj‹UÌREèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ð‹QÿÒƒÄ EèPÿäà‹M̃ÁÁá‹U Ý Ý]è‹ẼÀÁà‹M ÝDÝ]ðÙîÝ]ø‹ðƒztj‹ẼÀPMèQ‹ð‹BÿÐƒÄ MèQÿäàÝEÙàÝ]ø‹ðƒztj‹ẼÀPMèQ‹ð‹BÿÐƒÄ MèQÿäàéþÿÿ‹ð‹B%„U‹MƒéÁá‹UÝ Ý]ЋEƒèÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹MƒéÁá‹U Ý Ý]è‹EƒèÁà‹M ÝDÝ]ðÙîÝ]ø‹ðƒztj‹EƒèPMèQ‹ð‹BÿÐƒÄ MèQÿäàÝEÙàÝ]ø‹ðƒztj‹EƒèPMèQ‹ð‹BÿÐƒÄ MèQÿäà‹U ÝÝ]è‹E Ý@Ý]ðÙîÝ]ø‹ ðƒytjjUèR¡ð‹HÿÑƒÄ UèRÿäàÝEÙàÝ]ø¡ðƒxtjjMèQ‹ð‹BÿÐƒÄ MèQÿäà‹ðƒzt ¡ð‹HÿÑÿèà‹ð‹Bƒà„ŸÙîÝ]ØÝEØÝ]ÐÙèÝ]à‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàjƒìÙîÝ$‹E P‹MQèLÞÿÿƒÄÝáÝ]à‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàjÝEÙàƒìÝ$‹M Q‹URèþÝÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌU‹ìƒì4ÙîÝ]à¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEÌë ‹M̃Á‰MÌ‹Uƒê9UÌ‹EƒèkÀ EPÿÜà‹MÌÁá‹UÝ Ý]ЋEÌÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹MÌÁá‹U Ý Ý]è‹EÌÁà‹M ÝDÝ]ðÙîÝ]ø‹ðƒztj‹EÌPMèQ‹ð‹BÿÐƒÄ MèQÿäà‹UkÒ URÿÜà¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØàÝEÙàÝ]ø‹ðƒztj‹EÌPMèQ‹ð‹BÿÐƒÄ MèQÿäà‹UƒêkÒ URÿÜà¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØà‹ŨÂÁâ‹E ÝÝ]è‹M̃ÁÁá‹U ÝD Ý]ðÙîÝ]ø¡ðƒxtj‹M̃ÁQUèR¡ð‹HÿÑƒÄ UèRÿäà‹EkÀ EPÿÜà‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàÝEÙàÝ]ø¡ðƒxtj‹M̃ÁQUèR¡ð‹HÿÑƒÄ UèRÿäàéÉýÿÿ¡ð‹Há„$‹UƒêÁâ‹E ÝÝ]è‹MƒéÁá‹U ÝD Ý]ðÙîÝ]ø‹EƒèkÀ EPÿÜà‹MƒéÁá‹UÝ Ý]ЋEƒèÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹ ðƒytj‹UƒêREèP‹ ð‹QÿÒƒÄ EèPÿäà‹MkÉ MQÿÜà‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàÝEÙàÝ]ø‹ ðƒytj‹UƒêREèP‹ ð‹QÿÒƒÄ EèPÿäà‹MƒékÉ MQÿÜà‹UÝÝ]ЋEÝ@Ý]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØà‹E ÝÝ]è‹M ÝAÝ]ðÙîÝ]ø‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäà‹MkÉ MQÿÜà‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàÝEÙàÝ]ø‹ ðƒytjjUèR¡ð‹HÿÑƒÄ UèRÿäà¡ðƒxt ‹ ð‹QÿÒÿèà¡ð‹Hƒá„‹UƒêkÒ URÿÜàÙîÝ]ØÝEØÝ]ÐÙèÝ]à¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØàjƒìÙîÝ$‹U R‹EPè³ØÿÿƒÄ‹MkÉ MQÿÜàÝáÝ]à‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàjÝEÙàƒìÝ$‹M Q‹URèUØÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì(‹E‹MÝÜ!‹UÜ Ý]à‹E‹MÝ@Üa‹UÜJÜEàÝ]à‹E‹MÝ@Üa‹UÜJÜEàÝ]àÙîÜ]àßàöÄDz.ÇEü‹E‹MÝÝ‹U‹EÝ@ÝZ‹M‹UÝBÝYéØÇEü‹E ‹MÝÜ!‹UÜ Ý]è‹E ‹MÝ@Üa‹UÜJÜEèÝ]è‹E ‹MÝ@Üa‹UÜJÜEèÝ]èÝEèÜuàÝ]ØÙèÜeØÝ]ðÝEØÜ PáÜáßàöÄAtÝEØÜ PáÜáßàöÄzÇEü‹EÝEØÜ‹MÝEðÜ ÞÁ‹UÝ‹EÝEØÜH‹MÝEðÜIÞÁ‹UÝZ‹EÝEØÜH‹MÝEðÜIÞÁ‹UÝZ‹Eü‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìX‹E‹M ÝÜ!Ý]¸‹U‹E ÝBÜ`Ý]À‹M‹U ÝAÜbÝ]È‹E‹MÝÜ!Ý]ЋU‹EÝBÜ`Ý]Ø‹M‹UÝAÜbÝ]àÝE¸ÜM¸ÝEÀÜMÀÞÁÝ]èÝEÈÜMÈÜEèÝ]èƒìÝEèÝ$è_cƒÄÝ]èÝEÐÜMÐÝEØÜMØÞÁÝ]°ÝEàÜMàÜE°Ý]°ƒìÝE°Ý$è.cƒÄÝ]°ÝPáÜM°Ü]èßàöÄucÙîÜ]°ßàöÄDz ‹EÙîÝX‹MÙîÝY‹UÙîÝÇEüë2ÙèÜu°Ý]°ÝE°ÜMЋEÝÝE°ÜMØ‹MÝYÝE°ÜMà‹UÝZÇEüé¦ÇEüÝPáÜMèÜ]°ßàöÄu0ÙèÜuèÝ]èÝEèÜM¸‹EÝÝEèÜMÀ‹MÝYÝEèÜMÈ‹UÝZé\ÙèÜuèÝ]èÝEèÜM¸Ý]¸ÝEèÜMÀÝ]ÀÝEèÜMÈÝ]ÈÙèÜu°Ý]°ÝE°ÜMÐÝ]ÐÝE°ÜMØÝ]ØÝE°ÜMàÝ]àÝEÐÜM¸ÝEØÜMÀÞÁÝEàÜMÈÞÁÝ]ðÝ`áÜ]ðßàöÄA{ÝXáÜ]ðßàöÄu‹EÝE¸Ý‹MÝEÀÝY‹UÝEÈÝZé¾ÝEÐÜE¸ÜMðÜeÐÜe¸‹EÝÝEØÜEÀÜMðÜeØÜeÀ‹MÝYÝEàÜEÈÜMðÜeàÜeÈ‹UÝZ‹E‹MÝÜ ‹U‹EÝBÜHÞÁÝ]¨‹M‹UÝAÜJÜE¨Ý]¨ƒìÝE¨Ý$èQaƒÄÝ]¨ÙîÜ]¨ßàöÄD{3ÙèÜu¨Ý]¨‹EÝÜM¨‹MÝ‹UÝBÜM¨‹EÝX‹MÝAÜM¨‹UÝZ‹Eü‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ì쀋EPƒìÝEÝ$M€Qè̓ÄU€RÿÌà‹å]ÃU‹ì쀋EPƒìÝEÝ$M€QèÁ΃ÄU€RÿÌà‹å]ÃU‹ì쀋EPM€QèZσÄU€RÿÌà‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìì˜Vƒ}uÙîÝ]àÙèÝ]èÙîÝ]ðë‹EÝÝ]à‹MÝAÝ]è‹UÝBÝ]ð‹EP‹MQUàRèäÐÿÿƒÄ ÙîÝÿÿÿÙîÝÿÿÿÙîÝÿÿÿÙîÝ]ÈÙîÝ]ÐÙèÝ]ØÇEÀ‹EÀ‰…<þÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝÜ$ÝÀþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜdÝÈþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜdÝÐþÿÿÝ…ÀþÿÿÜÀþÿÿÝ…ÈþÿÿÜÈþÿÿÞÁÝ`ÿÿÿÝ…ÐþÿÿÜÐþÿÿÜ…`ÿÿÿÝ`ÿÿÿƒìÝ…`ÿÿÿÝ$è_ƒÄÝ`ÿÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝÜÝþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜDÝ þÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜDÝ(þÿÿÝ…þÿÿÜþÿÿÝ… þÿÿÜ þÿÿÞÁÝ0þÿÿÝ…(þÿÿÜ(þÿÿÜ…0þÿÿÝ0þÿÿƒìÝ…0þÿÿÝ$èS^ƒÄÝ0þÿÿÝ…0þÿÿÜ PáÝ0þÿÿ‹<þÿÿƒÁ‰<þÿÿÝ…0þÿÿÜ`ÿÿÿßàöÄu‹Uƒê9•<þÿÿŒ$þÿÿÝ…`ÿÿÿÝøþÿÿ‹…<þÿÿkÀEP‹MƒÁQ‹UR… ÿÿÿPèîùÿÿƒÄÝEàÜ ÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜ0ÿÿÿÞÁÝþÿÿÝHáÜþÿÿÜ ÿÿÿÜmàÝ]àÝHáÜþÿÿÜ(ÿÿÿÜmèÝ]èÝHáÜþÿÿÜ0ÿÿÿÜmðÝ]ð‹MkÉ‹UkÒÁâÊPÿ°àƒÄ‰E¼‹M¼‰M€‹UkÒ‹E€ Љ<ÿÿÿ‹UkÒ‹…<ÿÿÿ Љôþÿÿ‹UkÒ‹…ôþÿÿ Љÿÿÿ‹•ôþÿÿ‰Uüƒ}„ƒ}$u}Ç…8þÿÿë‹…8þÿÿƒÀ‰…8þÿÿ‹8þÿÿ;M}R‹•8þÿÿÁâ‹…8þÿÿkÀ‹Mü‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹Mü‹uÝDÝ\Á‹•8þÿÿkÒ‹EüÙîÝ\Ðë”éÇ…8þÿÿë‹8þÿÿƒÁ‰8þÿÿ‹•8þÿÿ;UW‹…<þÿÿƒèkÀ0‹M$ÙîÜ\ßàöÄDzL‹•<þÿÿƒêkÒ0‹E$ÙîÜ\ßàöÄDz0‹<þÿÿƒékÉ0‹•<þÿÿƒêkÒ0‹E$‹u$ÝD ÜßàöÄD‹|‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝD Ü ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝDÜLÞé‹8þÿÿkÉ‹•ôþÿÿÝÊ‹…<þÿÿƒèkÀ0‹M$ÝDÙà‹•8þÿÿÁâ‹EÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝÜLÞÁ‹8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÞÁÝþÿÿƒìÝ…þÿÿÝ$èÄZƒÄÙèÞñÝþÿÿ‹…8þÿÿkÀ‹ôþÿÿÝÁÜþÿÿ‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉ‹•ôþÿÿÝDÊÜþÿÿ‹…8þÿÿkÀ‹ôþÿÿÝ\ÁëD‹•8þÿÿÁâ‹…8þÿÿkÀ‹ôþÿÿ‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹ôþÿÿ‹uÝDÝ\Á‹•8þÿÿkÒ‹…ôþÿÿÙîÝ\Ћ8þÿÿkÉ‹•ÿÿÿÙîÝ\Êé‹ýÿÿÇ…\ÿÿÿ‹Eƒè9…<þÿÿô‹<þÿÿ‰MÄ‹UăÂkÒ‹EÄkÀ‹M‹uÝÜ$ÝÀþÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜdÝÈþÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜdÝÐþÿÿÝ…ÀþÿÿÜÀþÿÿÝ…ÈþÿÿÜÈþÿÿÞÁÝ`ÿÿÿÝ…ÐþÿÿÜÐþÿÿÜ…`ÿÿÿÝ`ÿÿÿƒìÝ…`ÿÿÿÝ$èYƒÄÝ`ÿÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝÜÝèýÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜDÝðýÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜDÝøýÿÿÝ…èýÿÿÜèýÿÿÝ…ðýÿÿÜðýÿÿÞÁÝþÿÿÝ…øýÿÿÜøýÿÿÜ…þÿÿÝþÿÿƒìÝ…þÿÿÝ$è^XƒÄÝþÿÿÝ…þÿÿÜ PáÝþÿÿ‹Uă‰UÄÝ…þÿÿÜ`ÿÿÿßàöÄu‹Eƒè9EÄŒQþÿÿ‹MÄkÉMQ‹•<þÿÿkÒUR‹EÀkÀEPhÿÿÿQèôÿÿƒÄUàR‹…<þÿÿkÀEP‹MÀkÉMQ•@þÿÿRè›SƒÄÿÈà…@þÿÿPÿÌàÝ…@þÿÿÜ ÿÿÿÝ…HþÿÿÜ(ÿÿÿÞÁÝ…PþÿÿÜ0ÿÿÿÞÁÝ@ÿÿÿÝ…`þÿÿÜ ÿÿÿÝ…hþÿÿÜ(ÿÿÿÞÁÝ…pþÿÿÜ0ÿÿÿÞÁÝHÿÿÿÝ…€þÿÿÜ ÿÿÿÝ…ˆþÿÿÜ(ÿÿÿÞÁÝ…þÿÿÜ0ÿÿÿÞÁÝPÿÿÿÝ…@þÿÿÜhÿÿÿÝ…HþÿÿÜpÿÿÿÞÁÝ…PþÿÿÜxÿÿÿÞÁÝ]ˆÝ…`þÿÿÜhÿÿÿÝ…hþÿÿÜpÿÿÿÞÁÝ…pþÿÿÜxÿÿÿÞÁÝ]Ý…€þÿÿÜhÿÿÿÝ…ˆþÿÿÜpÿÿÿÞÁÝ…þÿÿÜxÿÿÿÞÁÝ]˜Ý…øþÿÿÙàÝ]ØÇ…8þÿÿë‹8þÿÿƒÁ‰8þÿÿ‹•8þÿÿ;U~ ƒ}„âƒ}$„‹…<þÿÿkÀ0‹M$ÙîÜ\ßàöÄDzC‹•<þÿÿkÒ0‹E$ÙîÜ\ßàöÄDz*‹<þÿÿkÉ0‹•<þÿÿkÒ0‹E$‹u$ÝD ÜßàöÄD‹p‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝD Ü ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝDÜLÞé‹8þÿÿkÉ‹•ÿÿÿÝÊ‹…<þÿÿkÀ0‹M$ÝDÙà‹•8þÿÿÁâ‹EÜ ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝÜLÞÁ‹8þÿÿkÉ‹•ÿÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ÿÿÿ‹µÿÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ÿÿÿ‹µÿÿÿÝDÂÜLÎÞÁÝàýÿÿƒìÝ…àýÿÿÝ$èðTƒÄÙèÞñÝàýÿÿ‹…8þÿÿkÀ‹ÿÿÿÝÁÜàýÿÿ‹•8þÿÿkÒ‹…ÿÿÿÝЋ8þÿÿkÉ‹•ÿÿÿÝDÊÜàýÿÿ‹…8þÿÿkÀ‹ÿÿÿÝ\ÁëD‹•8þÿÿÁâ‹…8þÿÿkÀ‹ÿÿÿ‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹ÿÿÿ‹uÝDÝ\Á‹ð‹B%„´ƒ}$uD‹8þÿÿÁá‹•8þÿÿkÒ‹…ÿÿÿ‹uÝÝЋ8þÿÿÁá‹•8þÿÿkÒ‹…ÿÿÿ‹uÝDÝ\Ћ8þÿÿkÉ‹•ôþÿÿÙîÝ\Ê‹…8þÿÿkÀ‹ôþÿÿÝÁÜ@ÿÿÿ‹•8þÿÿkÒ‹…ôþÿÿÝDÐÜHÿÿÿÞÁ‹8þÿÿkÉ‹•ôþÿÿÝDÊÜPÿÿÿÞÁÝØýÿÿ‹…8þÿÿkÀÝ…ØýÿÿÜ@ÿÿÿ‹ôþÿÿÜ,Á‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉÝ…ØýÿÿÜHÿÿÿ‹•ôþÿÿÜlÊ‹…8þÿÿkÀ‹ôþÿÿÝ\Á‹•8þÿÿkÒÝ…ØýÿÿÜPÿÿÿ‹…ôþÿÿÜlЋ8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÞÁÝÐýÿÿ‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÜ…ÐýÿÿÝÐýÿÿƒìÝ…ÐýÿÿÝ$èWRƒÄÝÐýÿÿÙîÜÐýÿÿßàöÄD‹ÙèܵÐýÿÿÝÐýÿÿ‹…8þÿÿkÀ‹ôþÿÿÝÁÜÐýÿÿ‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉ‹•ôþÿÿÝDÊÜÐýÿÿ‹…8þÿÿkÀ‹ôþÿÿÝ\Á‹•8þÿÿkÒ‹…ôþÿÿÝDÐÜÐýÿÿ‹8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹ÿÿÿÙîÝ\Á‹•8þÿÿkÒ‹…ÿÿÿÝÐÜMˆ‹8þÿÿkÉ‹•ÿÿÿÝDÊÜMÞÁ‹…8þÿÿkÀ‹ÿÿÿÝDÁÜM˜ÞÁÝÈýÿÿ‹•8þÿÿkÒÝ…ÈýÿÿÜMˆ‹…ÿÿÿÜ,Ћ8þÿÿkÉ‹•ÿÿÿÝÊ‹…8þÿÿkÀÝ…ÈýÿÿÜM‹ÿÿÿÜlÁ‹•8þÿÿkÒ‹…ÿÿÿÝ\Ћ8þÿÿkÉÝ…ÈýÿÿÜM˜‹•ÿÿÿÜlÊ‹…8þÿÿkÀ‹ÿÿÿÝ\Á‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝÑÜ Æ‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝDÑÜLÆÞÁÝÀýÿÿ‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝDÑÜLÆÜ…ÀýÿÿÝÀýÿÿƒìÝ…ÀýÿÿÝ$è+PƒÄÝÀýÿÿÙîÜÀýÿÿßàöÄD‹ÙèܵÀýÿÿÝÀýÿÿ‹•8þÿÿkÒ‹…ÿÿÿÝÐÜÀýÿÿ‹8þÿÿkÉ‹•ÿÿÿÝÊ‹…8þÿÿkÀ‹ÿÿÿÝDÁÜÀýÿÿ‹•8þÿÿkÒ‹…ÿÿÿÝ\Ћ8þÿÿkÉ‹•ÿÿÿÝDÊÜÀýÿÿ‹…8þÿÿkÀ‹ÿÿÿÝ\Áƒ}$uU‹•8þÿÿÁâ‹E ÝÝ] ‹8þÿÿÁá‹U ÝD Ý]¨‹…8þÿÿÁà‹M ÝÝØþÿÿ‹•8þÿÿÁâ‹E ÝDÝàþÿÿéx‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜLÞÁ‹<þÿÿƒékÉ0‹U$ÜD Ý] ‹…<þÿÿƒèkÀ0‹8þÿÿÁá‹U$‹u ÝDÜ ‹…<þÿÿƒèkÀ0‹8þÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…<þÿÿƒèkÀ0‹M$ÜD(Ý]¨‹•<þÿÿƒêkÒ0‹…8þÿÿÁà‹M$‹u ÝÜ ‹•<þÿÿƒêkÒ0‹…8þÿÿÁà‹M$‹u ÝDÜLÞÁ‹•<þÿÿƒêkÒ0‹E$ÜDÝØþÿÿ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹<þÿÿƒékÉ0‹U$ÜD (ÝàþÿÿÙîÝ]°Ý…øþÿÿÙàÝèþÿÿÝE Ü¥ØþÿÿÜ@ÿÿÿÝ ýÿÿÝE¨Ü¥àþÿÿÜHÿÿÿÜ… ýÿÿÝ ýÿÿÝE°Ü¥èþÿÿÜPÿÿÿÜ… ýÿÿÝ ýÿÿÙîÜ ýÿÿßàöÄDz*Ç…¼ýÿÿÝE Ý@ÿÿÿÝE¨ÝHÿÿÿÝE°ÝPÿÿÿé.Ç…¼ýÿÿÝ…ÿÿÿÜ¥ØþÿÿÜ@ÿÿÿݨýÿÿÝ…ÿÿÿÜ¥àþÿÿÜHÿÿÿÜ…¨ýÿÿݨýÿÿÝ…ÿÿÿÜ¥èþÿÿÜPÿÿÿÜ…¨ýÿÿݨýÿÿÝ…¨ýÿÿܵ ýÿÿݘýÿÿÙèÜ¥˜ýÿÿݰýÿÿÝ…˜ýÿÿÜ PáÜáßàöÄAtÝ…˜ýÿÿÜ PáÜáßàöÄz Ç…¼ýÿÿÝ…˜ýÿÿÜM Ý…°ýÿÿÜØþÿÿÞÁ‹…8þÿÿkÀ‹M€ÝÁÝ…˜ýÿÿÜM¨Ý…°ýÿÿÜàþÿÿÞÁ‹•8þÿÿkÒ‹E€Ý\ÐÝ…˜ýÿÿÜM°Ý…°ýÿÿÜèþÿÿÞÁ‹8þÿÿkÉ‹U€Ý\ʃ}$„T‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝÜ ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝDÜLÞÁ‹…<þÿÿkÀ0‹M$ÜDÝ] ‹•<þÿÿkÒ0‹…8þÿÿÁà‹M$‹u ÝDÜ ‹•<þÿÿkÒ0‹…8þÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•<þÿÿkÒ0‹E$ÜD(Ý]¨‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹u ÝÜ ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜLÞÁ‹<þÿÿkÉ0‹U$ÜD ÝØþÿÿ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝDÜ ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…<þÿÿkÀ0‹M$ÜD(ÝàþÿÿÝE Ü¥ØþÿÿÜMˆÝxýÿÿÝE¨Ü¥àþÿÿÜMÜ…xýÿÿÝxýÿÿÝE°Ü¥èþÿÿÜM˜Ü…xýÿÿÝxýÿÿÙîÜxýÿÿßàöÄDz!Ç…”ýÿÿÝE Ý]ˆÝE¨Ý]ÝE°Ý]˜é%Ç…”ýÿÿÝEÈÜ¥ØþÿÿÜMˆÝ€ýÿÿÝEÐÜ¥àþÿÿÜMÜ…€ýÿÿÝ€ýÿÿÝEØÜ¥èþÿÿÜM˜Ü…€ýÿÿÝ€ýÿÿÝ…€ýÿÿܵxýÿÿÝpýÿÿÙèÜ¥pýÿÿ݈ýÿÿÝ…pýÿÿÜ PáÜáßàöÄAtÝ…pýÿÿÜ PáÜáßàöÄz Ç…”ýÿÿÝ…pýÿÿÜM Ý…ˆýÿÿÜØþÿÿÞÁ‹•8þÿÿkÒ‹…<ÿÿÿÝÐÝ…pýÿÿÜM¨Ý…ˆýÿÿÜàþÿÿÞÁ‹8þÿÿkÉ‹•<ÿÿÿÝ\ÊÝ…pýÿÿÜM°Ý…ˆýÿÿÜèþÿÿÞÁ‹…8þÿÿkÀ‹<ÿÿÿÝ\Áédòÿÿ‹ð‹Bƒà„„ƒ½\ÿÿÿt=ƒ} t‹<þÿÿƒéÁáM QÿÄàÇ…\ÿÿÿ‹U€R…@ÿÿÿP‹MQèbƒÄ ‹Uƒê9•<þÿÿu0ƒ} t‹…<þÿÿÁàE PÿÄà‹<ÿÿÿQUˆR‹EPè4ƒÄ ƒ}$…Å‹ ð‹Qâ…°ƒ} …¦ƒ}u,ƒìÝ…øþÿÿÝ$‹…<þÿÿP‹<ÿÿÿQ‹U€R‹EPèk„ÿÿƒÄëo‹ ð‹Qât0ƒìÝ…øþÿÿÝ$‹…<þÿÿP‹MüQ‹•<ÿÿÿR‹E€P‹MQèÚŠÿÿƒÄë.ƒìÝ…øþÿÿÝ$‹•<þÿÿR‹EüP‹<ÿÿÿQ‹U€R‹EPèʆÿÿƒÄéûƒ}uLƒìÝ…øþÿÿÝ$‹<þÿÿQ‹•<þÿÿÁâU R‹…<þÿÿƒèÁàE P‹<ÿÿÿQ‹U€R‹EPèˆƒÄ é©‹ ð‹QâtMƒìÝ…øþÿÿÝ$‹…<þÿÿP‹<þÿÿÁáM Q‹•<þÿÿƒêÁâU R‹EüP‹<ÿÿÿQ‹U€R‹EPèדƒÄ$ëKƒìÝ…øþÿÿÝ$‹<þÿÿQ‹•<þÿÿÁâU R‹…<þÿÿƒèÁàE P‹MüQ‹•<ÿÿÿR‹E€P‹MQèZ‘ƒÄ$éÔƒ} …¼ƒ}u/ƒìÝ…øþÿÿÝ$‹•<þÿÿR‹…<ÿÿÿP‹M€Q‹UR軂ÿÿƒÄé‚¡ð‹Hát:ƒìÝ…øþÿÿÝ$‹•<þÿÿR‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQ莔ÿÿƒÄ ë8ƒìÝ…øþÿÿÝ$‹•<þÿÿR‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQèÿÿƒÄ éƒ}uLƒìÝ…øþÿÿÝ$‹•<þÿÿR‹…<þÿÿÁàE P‹<þÿÿƒéÁáM Q‹•<ÿÿÿR‹E€P‹MQèÂŽƒÄ 鼋ð‹B%tWƒìÝ…øþÿÿÝ$‹<þÿÿQ‹•<þÿÿÁâU R‹…<þÿÿƒèÁàE P‹ÿÿÿQ‹•ôþÿÿR‹…<ÿÿÿP‹M€Q‹UR蘘ƒÄ(ëUƒìÝ…øþÿÿÝ$‹…<þÿÿP‹<þÿÿÁáM Q‹•<þÿÿƒêÁâU R‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQè–ƒÄ(ÿÐàÝ…`ÿÿÿÝøþÿÿ‹•<þÿÿ‰UÀ‹Eĉ…<þÿÿÝ…hÿÿÿÝ ÿÿÿÝ…pÿÿÿÝ(ÿÿÿÝ…xÿÿÿÝ0ÿÿÿ‹ôþÿÿ‰M„‹•ÿÿÿ‰•ôþÿÿ‹E„‰…ÿÿÿÝEàÜ ÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜ0ÿÿÿÞÁÝhýÿÿÝHáÜhýÿÿÜ ÿÿÿÜmàÝ]àÝHáÜhýÿÿÜ(ÿÿÿÜmèÝ]èÝHáÜhýÿÿÜ0ÿÿÿÜmðÝ]ðéúéÿÿ‹M¼Qÿ´àƒÄ^‹å]ÃÌÌÌÌU‹ììHVÇEäÇ…lþÿÿÇ…(þÿÿÇ…Äþÿÿ¡ð‹HƒátÇ…dþÿÿÇ…lþÿÿ½ëÇ…dþÿÿÇ…lþÿÿ ƒ}uÙîÝ]ÈÙèÝ]ÐÙîÝ]Øë‹UÝÝ]È‹EÝ@Ý]ЋMÝAÝ]Ø‹UR‹EPMÈQèè³ÿÿƒÄ ÙîÝHþÿÿÙîÝPþÿÿÙîÝXþÿÿÙîÝ]¨ÙîÝ]°ÙèÝ]¸‹UkÒ ‹EkÀÁà ЋUÑâ‘Pÿ°àƒÄ‰…|ÿÿÿ‹|ÿÿÿ‰$þÿÿ‹UkÒ‹…$þÿÿ Љhþÿÿ‹UkÒ‹…hþÿÿ Љÿÿÿ‹UkÒ‹…ÿÿÿ Љ¤þÿÿ‹UkÒ‹…¤þÿÿ ЉTÿÿÿ‹UkÒ‹…Tÿÿÿ Љ`þÿÿ‹UkÒ‹…`þÿÿ Љþÿÿ‹U‹…þÿÿ ‰MÀÇE€‹U€‰•Lýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝÜ$ÝÐýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜdÝØýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜdÝàýÿÿÝ…ÐýÿÿÜÐýÿÿÝ…ØýÿÿÜØýÿÿÞÁÝXÿÿÿÝ…àýÿÿÜàýÿÿÜ…XÿÿÿÝXÿÿÿƒìÝ…XÿÿÿÝ$è_AƒÄÝXÿÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝÜÝ(ýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜDÝ0ýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜDÝ8ýÿÿÝ…(ýÿÿÜ(ýÿÿÝ…0ýÿÿÜ0ýÿÿÞÁÝ@ýÿÿÝ…8ýÿÿÜ8ýÿÿÜ…@ýÿÿÝ@ýÿÿƒìÝ…@ýÿÿÝ$è”@ƒÄÝ@ýÿÿÝ…@ýÿÿÜ PáÝ@ýÿÿ‹…LýÿÿƒÀ‰…LýÿÿÝ…@ýÿÿÜXÿÿÿßàöÄu‹Mƒé9LýÿÿŒ$þÿÿÝ…XÿÿÿÝ]èƒ}„ƒ}$…‹•$þÿÿ‰Uä‹E䉅hþÿÿÇ…Hýÿÿë‹HýÿÿƒÁ‰Hýÿÿ‹•Hýÿÿ;U}R‹…HýÿÿÁà‹HýÿÿkÉ‹Uä‹uÝÝÊ‹…HýÿÿÁà‹HýÿÿkÉ‹Uä‹uÝDÝ\Ê‹…HýÿÿkÀ‹MäÙîÝ\Áë”éÇ…Hýÿÿë‹•HýÿÿƒÂ‰•Hýÿÿ‹…Hýÿÿ;EW‹LýÿÿƒékÉ0‹U$ÙîÜ\ ßàöÄDzL‹…LýÿÿƒèkÀ0‹M$ÙîÜ\ßàöÄDz0‹•LýÿÿƒêkÒ0‹…LýÿÿƒèkÀ0‹M$‹u$ÝD ÜßàöÄD‹|‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝD Ü ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝDÜLÞé‹•HýÿÿkÒ‹…$þÿÿÝЋLýÿÿƒékÉ0‹U$ÝD Ùà‹…HýÿÿÁà‹MÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝÜLÞÁ‹•HýÿÿkÒ‹…$þÿÿÝ\ЋHýÿÿkÉ‹•HýÿÿkÒ‹…$þÿÿ‹µ$þÿÿÝÈÜ Ö‹HýÿÿkÉ‹•HýÿÿkÒ‹…$þÿÿ‹µ$þÿÿÝDÈÜLÖÞÁÝ ýÿÿƒìÝ… ýÿÿÝ$èð=ƒÄÙèÞñÝ ýÿÿ‹HýÿÿkÉ‹•$þÿÿÝÊÜ ýÿÿ‹…HýÿÿkÀ‹$þÿÿÝÁ‹•HýÿÿkÒ‹…$þÿÿÝDÐÜ ýÿÿ‹HýÿÿkÉ‹•$þÿÿÝ\ÊëD‹…HýÿÿÁà‹HýÿÿkÉ‹•$þÿÿ‹uÝÝÊ‹…HýÿÿÁà‹HýÿÿkÉ‹•$þÿÿ‹uÝDÝ\Ê‹…HýÿÿkÀ‹$þÿÿÙîÝ\Á‹•HýÿÿkÒ‹…hþÿÿÙîÝ\Ðé‹ýÿÿëÇEä‹Mä‰hþÿÿ‹•hþÿÿ‰•$þÿÿ‹…LýÿÿkÀEP‹M€kÉMQ‹U€ƒêkÒUR…pþÿÿPèäØÿÿƒÄ‹M€kÉ‹U€ƒêkÒ‹E‹uÝÜ$Ýàüÿÿ‹M€kÉ‹U€ƒêkÒ‹E‹uÝDÜdÝèüÿÿ‹M€kÉ‹U€ƒêkÒ‹E‹uÝDÜdÝðüÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝÜ$Ýýÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝDÜdÝýÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝDÜdÝýÿÿÝ…àüÿÿÜàüÿÿÝ…èüÿÿÜèüÿÿÞÁÝýÿÿÝ…ðüÿÿÜðüÿÿÜ…ýÿÿÝýÿÿƒìÝ…ýÿÿÝ$è°;ƒÄÝýÿÿÝ…ýÿÿÜýÿÿÝ…ýÿÿÜýÿÿÞÁÝØüÿÿÝ…ýÿÿÜýÿÿÜ…ØüÿÿÝØüÿÿƒìÝ…ØüÿÿÝ$è^;ƒÄÝØüÿÿÝPáÜØüÿÿÜýÿÿßàöÄ…ˆÙîÜØüÿÿßàöÄDz)ÙîÝØþÿÿÝ…ØþÿÿÝÐþÿÿÝ…ÐþÿÿÝÈþÿÿÇE¤ëKÙèܵØüÿÿÝØüÿÿÝ…ØüÿÿÜýÿÿÝÈþÿÿÝ…ØüÿÿÜýÿÿÝÐþÿÿÝ…ØüÿÿÜýÿÿÝØþÿÿÇE¤éùÇE¤ÝPáÜýÿÿÜØüÿÿßàöÄuIÙèܵýÿÿÝýÿÿÝ…ýÿÿÜàüÿÿÝÈþÿÿÝ…ýÿÿÜèüÿÿÝÐþÿÿÝ…ýÿÿÜðüÿÿÝØþÿÿéÙèܵýÿÿÝýÿÿÝ…ýÿÿÜàüÿÿÝàüÿÿÝ…ýÿÿÜèüÿÿÝèüÿÿÝ…ýÿÿÜðüÿÿÝðüÿÿÙèܵØüÿÿÝØüÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…àüÿÿÜ¥ýÿÿÝÈþÿÿÝ…èüÿÿÜ¥ýÿÿÝÐþÿÿÝ…ðüÿÿÜ¥ýÿÿÝØþÿÿÝ…ÈþÿÿÜÈþÿÿÝ…ÐþÿÿÜÐþÿÿÞÁÝøüÿÿÝ…ØþÿÿÜØþÿÿÜ…øüÿÿÝøüÿÿƒìÝ…øüÿÿÝ$è@9ƒÄÝøüÿÿÝPáÜøüÿÿßàöÄAu)ÙîÝØþÿÿÝ…ØþÿÿÝÐþÿÿÝ…ÐþÿÿÝÈþÿÿÇE¤ëDÙèܵøüÿÿÝøüÿÿÝ…øüÿÿÜÈþÿÿÝÈþÿÿÝ…øüÿÿÜÐþÿÿÝÐþÿÿÝ…øüÿÿÜØþÿÿÝØþÿÿÝEÈÜpþÿÿÝEÐÜxþÿÿÞÁÝEØÜ€þÿÿÞÁÝÐüÿÿÝHáÜÐüÿÿÜpþÿÿÜmÈÝ]ÈÝHáÜÐüÿÿÜxþÿÿÜmÐÝ]ÐÝHáÜÐüÿÿÜ€þÿÿÜmØÝ]Ø‹Mƒé9Lýÿÿ!‹•Lýÿÿ‰U„‹E„ƒÀkÀ‹M„kÉ‹U‹uÝÜ$ÝÐýÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜdÝØýÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜdÝàýÿÿÝ…ÐýÿÿÜÐýÿÿÝ…ØýÿÿÜØýÿÿÞÁÝXÿÿÿÝ…àýÿÿÜàýÿÿÜ…XÿÿÿÝXÿÿÿƒìÝ…XÿÿÿÝ$è7ƒÄÝXÿÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝÜݰüÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜDݸüÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜDÝÀüÿÿÝ…°üÿÿܰüÿÿÝ…¸üÿÿܸüÿÿÞÁÝÈüÿÿÝ…ÀüÿÿÜÀüÿÿÜ…ÈüÿÿÝÈüÿÿƒìÝ…ÈüÿÿÝ$èÆ6ƒÄÝÈüÿÿÝ…ÈüÿÿÜ PáÝÈüÿÿ‹E„ƒÀ‰E„Ý…ÈüÿÿÜXÿÿÿßàöÄu‹Mƒé9M„ŒQþÿÿ‹U„kÒUR‹…LýÿÿkÀEP‹M€kÉMQ•ÿÿÿRèmÒÿÿƒÄ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝÜ$Ýpüÿÿ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝDÜdÝxüÿÿ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝDÜdÝ€üÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝÜ$Ýüÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝDÜdݘüÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝDÜdÝ üÿÿÝ…püÿÿÜpüÿÿÝ…xüÿÿÜxüÿÿÞÁݨüÿÿÝ…€üÿÿÜ€üÿÿÜ…¨üÿÿݨüÿÿƒìÝ…¨üÿÿÝ$è95ƒÄݨüÿÿÝ…üÿÿÜüÿÿÝ…˜üÿÿܘüÿÿÞÁÝhüÿÿÝ… üÿÿÜ üÿÿÜ…hüÿÿÝhüÿÿƒìÝ…hüÿÿÝ$èç4ƒÄÝhüÿÿÝPáÜhüÿÿܨüÿÿßàöÄuvÙîÜhüÿÿßàöÄDzÙîÝ]˜ÝE˜Ý]ÝEÝ]ˆÇ…,þÿÿëEÙèܵhüÿÿÝhüÿÿÝ…hüÿÿÜüÿÿÝ]ˆÝ…hüÿÿܘüÿÿÝ]Ý…hüÿÿÜ üÿÿÝ]˜Ç…,þÿÿéºÇ…,þÿÿÝPáܨüÿÿÜhüÿÿßàöÄu@Ùèܵ¨üÿÿݨüÿÿÝ…¨üÿÿÜpüÿÿÝ]ˆÝ…¨üÿÿÜxüÿÿÝ]Ý…¨üÿÿÜ€üÿÿÝ]˜éWÙèܵ¨üÿÿݨüÿÿÝ…¨üÿÿÜpüÿÿÝpüÿÿÝ…¨üÿÿÜxüÿÿÝxüÿÿÝ…¨üÿÿÜ€üÿÿÝ€üÿÿÙèܵhüÿÿÝhüÿÿÝ…hüÿÿÜüÿÿÝüÿÿÝ…hüÿÿܘüÿÿݘüÿÿÝ…hüÿÿÜ üÿÿÝ üÿÿÝ…püÿÿÜ¥üÿÿÝ]ˆÝ…xüÿÿÜ¥˜üÿÿÝ]Ý…€üÿÿÜ¥ üÿÿÝ]˜ÝEˆÜMˆÝEÜMÞÁ݈üÿÿÝE˜ÜM˜Ü…ˆüÿÿ݈üÿÿƒìÝ…ˆüÿÿÝ$è3ƒÄ݈üÿÿÝPá܈üÿÿßàöÄAuÙîÝ]˜ÝE˜Ý]ÝEÝ]ˆÇ…,þÿÿë2Ùèܵˆüÿÿ݈üÿÿÝ…ˆüÿÿÜMˆÝ]ˆÝ…ˆüÿÿÜMÝ]Ý…ˆüÿÿÜM˜Ý]˜EÈP‹LýÿÿkÉMQ‹U€kÒUR…PýÿÿPèH.ƒÄÿÈàPýÿÿQÿÌàÝ…PýÿÿÜÈþÿÿÝ…XýÿÿÜÐþÿÿÞÁÝ…`ýÿÿÜØþÿÿÞÁÝàþÿÿÝ…pýÿÿÜÈþÿÿÝ…xýÿÿÜÐþÿÿÞÁÝ…€ýÿÿÜØþÿÿÞÁÝèþÿÿÝ…ýÿÿÜÈþÿÿÝ…˜ýÿÿÜÐþÿÿÞÁÝ… ýÿÿÜØþÿÿÞÁÝðþÿÿÝ…PýÿÿÜMˆÝ…XýÿÿÜMÞÁÝ…`ýÿÿÜM˜ÞÁ݈þÿÿÝ…pýÿÿÜMˆÝ…xýÿÿÜMÞÁÝ…€ýÿÿÜM˜ÞÁÝþÿÿÝ…ýÿÿÜMˆÝ…˜ýÿÿÜMÞÁÝ… ýÿÿÜM˜ÞÁݘþÿÿÝ…PýÿÿÜpþÿÿÝ…XýÿÿÜxþÿÿÞÁÝ…`ýÿÿÜ€þÿÿÞÁݨþÿÿÝ…pýÿÿÜpþÿÿÝ…xýÿÿÜxþÿÿÞÁÝ…€ýÿÿÜ€þÿÿÞÁݰþÿÿÝ…ýÿÿÜpþÿÿÝ…˜ýÿÿÜxþÿÿÞÁÝ… ýÿÿÜ€þÿÿÞÁݸþÿÿÝ…PýÿÿÜÿÿÿÝ…XýÿÿÜÿÿÿÞÁÝ…`ýÿÿÜÿÿÿÞÁÝ ÿÿÿÝ…pýÿÿÜÿÿÿÝ…xýÿÿÜÿÿÿÞÁÝ…€ýÿÿÜÿÿÿÞÁÝ(ÿÿÿÝ…ýÿÿÜÿÿÿÝ…˜ýÿÿÜÿÿÿÞÁÝ… ýÿÿÜÿÿÿÞÁÝ0ÿÿÿÝEèÙàÝ]¸Ç…Hýÿÿë‹•HýÿÿƒÂ‰•Hýÿÿ‹…Hýÿÿ;E¦ƒ}$…±‹HýÿÿÁá‹U Ý Ý8ÿÿÿ‹…HýÿÿÁà‹M ÝDÝ@ÿÿÿ‹•HýÿÿÁâ‹E ÝÝþÿÿ‹HýÿÿÁá‹U ÝD Ýþÿÿ‹…HýÿÿÁà‹M ÝÝ`ÿÿÿ‹•HýÿÿÁâ‹E ÝDÝhÿÿÿ‹HýÿÿÁá‹U Ý Ý0þÿÿ‹…HýÿÿÁà‹M ÝDÝ8þÿÿéò‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜLÞÁ‹•LýÿÿƒêkÒ0‹E$ÜDÝ8ÿÿÿ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜ ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹LýÿÿƒékÉ0‹U$ÜD (Ý@ÿÿÿ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝÜ ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝDÜLÞÁ‹…LýÿÿkÀ0‹M$ÜDÝ`ÿÿÿ‹•LýÿÿkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜ ‹•LýÿÿkÒ0‹…HýÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•LýÿÿkÒ0‹E$ÜD(Ýhÿÿÿ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹u ÝÜ ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜLÞÁ‹LýÿÿkÉ0‹U$ÜD Ýþÿÿ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝDÜ ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…LýÿÿkÀ0‹M$ÜD(Ýþÿÿ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜLÞÁ‹•LýÿÿƒêkÒ0‹E$ÜDÝ0þÿÿ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜ ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹LýÿÿƒékÉ0‹U$ÜD (Ý8þÿÿƒ}„‹…LýÿÿkÀ0‹M$ÙîÜ\ßàöÄDzC‹•LýÿÿkÒ0‹E$ÙîÜ\ßàöÄDz*‹LýÿÿkÉ0‹•LýÿÿkÒ0‹E$‹u$ÝD ÜßàöÄD‹p‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝD Ü ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝDÜLÞé‹HýÿÿkÉ‹•hþÿÿÝÊ‹…LýÿÿkÀ0‹M$ÝDÙà‹•HýÿÿÁâ‹EÜ ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝÜLÞÁ‹HýÿÿkÉ‹•hþÿÿÝ\Ê‹…HýÿÿkÀ‹HýÿÿkÉ‹•hþÿÿ‹µhþÿÿÝÂÜ Î‹…HýÿÿkÀ‹HýÿÿkÉ‹•hþÿÿ‹µhþÿÿÝDÂÜLÎÞÁÝ`üÿÿƒìÝ…`üÿÿÝ$è+ƒÄÙèÞñÝ`üÿÿ‹…HýÿÿkÀ‹hþÿÿÝÁÜ`üÿÿ‹•HýÿÿkÒ‹…hþÿÿÝЋHýÿÿkÉ‹•hþÿÿÝDÊÜ`üÿÿ‹…HýÿÿkÀ‹hþÿÿÝ\ÁëD‹•HýÿÿÁâ‹…HýÿÿkÀ‹hþÿÿ‹uÝÝÁ‹•HýÿÿÁâ‹…HýÿÿkÀ‹hþÿÿ‹uÝDÝ\ÁÙîÝHÿÿÿÙîÝpÿÿÿÝEèÙàÝþÿÿÝEèÙàÝ@þÿÿƒ}¤„oƒ½dþÿÿ„bÝ…8ÿÿÿÜ¥þÿÿÜàþÿÿÝ@üÿÿÝ…@ÿÿÿÜ¥þÿÿÜèþÿÿÜ…@üÿÿÝ@üÿÿÝ…HÿÿÿÜ¥þÿÿÜðþÿÿÜ…@üÿÿÝ@üÿÿÙîÜ@üÿÿßàöÄDz3Ç…\üÿÿÝ…8ÿÿÿÝàþÿÿÝ…@ÿÿÿÝèþÿÿÝ…HÿÿÿÝðþÿÿéÇ…\üÿÿÝ…HþÿÿÜ¥þÿÿÜàþÿÿÝHüÿÿÝ…PþÿÿÜ¥þÿÿÜèþÿÿÜ…HüÿÿÝHüÿÿÝ…XþÿÿÜ¥þÿÿÜðþÿÿÜ…HüÿÿÝHüÿÿÝ…Hüÿÿܵ@üÿÿÝ8üÿÿÙèÜ¥8üÿÿÝPüÿÿÝ…8üÿÿÜ PáÜáßàöÄAtÝ…8üÿÿÜ PáÜáßàöÄz Ç…\üÿÿÝ…8üÿÿÜ8ÿÿÿÝ…PüÿÿÜþÿÿÞÁÝèýÿÿÝ…8üÿÿÜ@ÿÿÿÝ…PüÿÿÜþÿÿÞÁÝðýÿÿÝ…8üÿÿÜHÿÿÿÝ…PüÿÿÜþÿÿÞÁÝøýÿÿÙîÜðþÿÿßàöÄAu6ÝáÜàþÿÿÝàþÿÿÝáÜèþÿÿÝèþÿÿÝáÜðþÿÿÝðþÿÿÝ…àþÿÿÜ8ÿÿÿÝ]ðÝ…èþÿÿÜ@ÿÿÿÜEðÝ]ð‹•HýÿÿkÒ‹…ÿÿÿÝ…èýÿÿÝЋHýÿÿkÉ‹•ÿÿÿÝ…ðýÿÿÝ\Ê‹…HýÿÿkÀ‹ÿÿÿÝ…øýÿÿÝ\ÁëOÙèÝ]ð‹•HýÿÿkÒ‹…ÿÿÿÝ…8ÿÿÿÝЋHýÿÿkÉ‹•ÿÿÿÝ…@ÿÿÿÝ\Ê‹…HýÿÿkÀ‹ÿÿÿÝ…HÿÿÿÝ\ÁÝ…8ÿÿÿÜ¥0þÿÿܨþÿÿÝüÿÿÝ…@ÿÿÿÜ¥8þÿÿܰþÿÿÜ…üÿÿÝüÿÿÝ…HÿÿÿÜ¥@þÿÿܸþÿÿÜ…üÿÿÝüÿÿÙîÜüÿÿßàöÄDz3Ç…4üÿÿÝ…8ÿÿÿݨþÿÿÝ…@ÿÿÿݰþÿÿÝ…HÿÿÿݸþÿÿéÇ…4üÿÿÝ…HþÿÿÜ¥0þÿÿܨþÿÿÝ üÿÿÝ…PþÿÿÜ¥8þÿÿܰþÿÿÜ… üÿÿÝ üÿÿÝ…XþÿÿÜ¥@þÿÿܸþÿÿÜ… üÿÿÝ üÿÿÝ… üÿÿܵüÿÿÝüÿÿÙèÜ¥üÿÿÝ(üÿÿÝ…üÿÿÜ PáÜáßàöÄAtÝ…üÿÿÜ PáÜáßàöÄz Ç…4üÿÿÝ…üÿÿÜ8ÿÿÿÝ…(üÿÿÜ0þÿÿÞÁÝèýÿÿÝ…üÿÿÜ@ÿÿÿÝ…(üÿÿÜ8þÿÿÞÁÝðýÿÿÝ…üÿÿÜHÿÿÿÝ…(üÿÿÜ@þÿÿÞÁÝøýÿÿÙîÜ]ðßàöÄt$‹•HýÿÿkÒ‹…ÿÿÿÝDÐÜøýÿÿßàöÄA…Ï‹HýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝÎÝЋHýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝDÎÝ\ЋHýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝDÎÝ\ЋHýÿÿkÉ‹•ÿÿÿÝ…èýÿÿÝÊ‹…HýÿÿkÀ‹ÿÿÿÝ…ðýÿÿÝ\Á‹•HýÿÿkÒ‹…ÿÿÿÝ…øýÿÿÝ\ЋHýÿÿ‹•þÿÿÇŠë‹…Hýÿÿ‹þÿÿÇ‹•HýÿÿkÒÝEèÙà‹…ÿÿÿÜ\ÐßàöÄAuJ‹HýÿÿkÉ‹•ÿÿÿÝ…þÿÿÝÊ‹…HýÿÿkÀ‹ÿÿÿÝ…þÿÿÝ\Á‹•HýÿÿkÒ‹…ÿÿÿÝ…þÿÿÝ\Ѓ½,þÿÿ„fƒ½dþÿÿ„YÝ…þÿÿÜ¥8ÿÿÿ܈þÿÿÝðûÿÿÝ…þÿÿÜ¥@ÿÿÿÜþÿÿÜ…ðûÿÿÝðûÿÿÝ…þÿÿÜ¥HÿÿÿܘþÿÿÜ…ðûÿÿÝðûÿÿÙîÜðûÿÿßàöÄDz3Ç… üÿÿÝ…þÿÿ݈þÿÿÝ…þÿÿÝþÿÿÝ…þÿÿݘþÿÿéÇ… üÿÿÝE¨Ü¥8ÿÿÿ܈þÿÿÝøûÿÿÝE°Ü¥@ÿÿÿÜþÿÿÜ…øûÿÿÝøûÿÿÝE¸Ü¥HÿÿÿܘþÿÿÜ…øûÿÿÝøûÿÿÝ…øûÿÿܵðûÿÿÝèûÿÿÙèÜ¥èûÿÿÝüÿÿÝ…èûÿÿÜ PáÜáßàöÄAtÝ…èûÿÿÜ PáÜáßàöÄz Ç… üÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜ8ÿÿÿÞÁÝèýÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜ@ÿÿÿÞÁÝðýÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜHÿÿÿÞÁÝøýÿÿÙîܘþÿÿßàöÄz6Ýá܈þÿÿ݈þÿÿÝáÜþÿÿÝþÿÿÝáܘþÿÿݘþÿÿÝ…ˆþÿÿÜþÿÿÝ]ðÝ…þÿÿÜþÿÿÜEðÝ]ð‹HýÿÿkÉ‹•¤þÿÿÝ…èýÿÿÝÊ‹…HýÿÿkÀ‹¤þÿÿÝ…ðýÿÿÝ\Á‹•HýÿÿkÒ‹…¤þÿÿÝ…øýÿÿÝ\ÐëOÙèÝ]ð‹HýÿÿkÉ‹•¤þÿÿÝ…þÿÿÝÊ‹…HýÿÿkÀ‹¤þÿÿÝ…þÿÿÝ\Á‹•HýÿÿkÒ‹…¤þÿÿÝ…þÿÿÝ\ÐÝ…`ÿÿÿÜ¥þÿÿÜ ÿÿÿÝÈûÿÿÝ…hÿÿÿÜ¥þÿÿÜ(ÿÿÿÜ…ÈûÿÿÝÈûÿÿÝ…pÿÿÿÜ¥þÿÿÜ0ÿÿÿÜ…ÈûÿÿÝÈûÿÿÙîÜÈûÿÿßàöÄDz3Ç…äûÿÿÝ…`ÿÿÿÝ ÿÿÿÝ…hÿÿÿÝ(ÿÿÿÝ…pÿÿÿÝ0ÿÿÿéÇ…äûÿÿÝE¨Ü¥þÿÿÜ ÿÿÿÝÐûÿÿÝE°Ü¥þÿÿÜ(ÿÿÿÜ…ÐûÿÿÝÐûÿÿÝE¸Ü¥þÿÿÜ0ÿÿÿÜ…ÐûÿÿÝÐûÿÿÝ…ÐûÿÿܵÈûÿÿÝÀûÿÿÙèÜ¥ÀûÿÿÝØûÿÿÝ…ÀûÿÿÜ PáÜáßàöÄAtÝ…ÀûÿÿÜ PáÜáßàöÄz Ç…äûÿÿÝ…ÀûÿÿÜ`ÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝèýÿÿÝ…ÀûÿÿÜhÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝðýÿÿÝ…ÀûÿÿÜpÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝøýÿÿÙîÜ]ðßàöÄt$‹HýÿÿkÉ‹•¤þÿÿÝDÊÜøýÿÿßàöÄŠÌ‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝÆÝÊ‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝDÆÝ\Ê‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝDÆÝ\Ê‹…HýÿÿkÀ‹¤þÿÿÝ…èýÿÿÝÁ‹•HýÿÿkÒ‹…¤þÿÿÝ…ðýÿÿÝ\ЋHýÿÿkÉ‹•¤þÿÿÝ…øýÿÿÝ\Ê‹…Hýÿÿ‹MÀÇë‹•Hýÿÿ‹EÀÇ‹HýÿÿkÉ‹•¤þÿÿÙîÜ\ÊßàöÄzJ‹…HýÿÿkÀ‹¤þÿÿÝ…8ÿÿÿÝÁ‹•HýÿÿkÒ‹…¤þÿÿÝ…@ÿÿÿÝ\ЋHýÿÿkÉ‹•¤þÿÿÝ…HÿÿÿÝ\Êé<îÿÿƒ}$…ƒ} …¯ƒ}u/ƒìÝ…XÿÿÿÝ$‹…LýÿÿP‹¤þÿÿQ‹•ÿÿÿR‹EPè™ZÿÿƒÄëu‹ ð‹Qât3ƒìÝ…XÿÿÿÝ$‹…LýÿÿP‹MäQ‹•¤þÿÿR‹…ÿÿÿP‹MQèaÿÿƒÄë1ƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹EäP‹¤þÿÿQ‹•ÿÿÿR‹EPèò\ÿÿƒÄéƒ}uOƒìÝ…XÿÿÿÝ$‹LýÿÿQ‹•LýÿÿÁâU R‹…LýÿÿƒèÁàE P‹¤þÿÿQ‹•ÿÿÿR‹EPè­fƒÄ 鯋 ð‹QâtPƒìÝ…XÿÿÿÝ$‹…LýÿÿP‹LýÿÿÁáM Q‹•LýÿÿƒêÁâU R‹EäP‹¤þÿÿQ‹•ÿÿÿR‹EPèùiƒÄ$ëNƒìÝ…XÿÿÿÝ$‹LýÿÿQ‹•LýÿÿÁâU R‹…LýÿÿƒèÁàE P‹MäQ‹•¤þÿÿR‹…ÿÿÿP‹MQèygƒÄ$éæƒ} …Ń}u2ƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹…¤þÿÿP‹ÿÿÿQ‹URè×XÿÿƒÄ鈡ð‹Hát=ƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQè§jÿÿƒÄ ë;ƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQè*fÿÿƒÄ éƒ}uOƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹…LýÿÿÁàE P‹LýÿÿƒéÁáM Q‹•¤þÿÿR‹…ÿÿÿP‹MQèÕdƒÄ é‹ð‹B%tZƒìÝ…XÿÿÿÝ$‹LýÿÿQ‹•LýÿÿÁâU R‹…LýÿÿƒèÁàE P‹hþÿÿQ‹•$þÿÿR‹…¤þÿÿP‹ÿÿÿQ‹URè¨nƒÄ(ëXƒìÝ…XÿÿÿÝ$‹…LýÿÿP‹LýÿÿÁáM Q‹•LýÿÿƒêÁâU R‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQèlƒÄ(ƒ½ÄþÿÿtcÇ…Äþÿÿ‹•lþÿÿ‰•(þÿÿÇ…lþÿÿ Ç¡ð‹Hƒát6ƒ} t‹•LýÿÿƒêÁâU RÿÄà‹…ÿÿÿP¨þÿÿQ‹URè"ãƒÄ ƒ} t&‹…LýÿÿƒèÁàE ‰EÄ‹LýÿÿÁáM ‰üþÿÿëÇEÄÇ…üþÿÿƒ}…'ƒ}¤t •àþÿÿ‰UüëÇEü‹…lþÿÿPj‹MüQ‹•üþÿÿR‹EÄP¨þÿÿQ•HþÿÿR‹…þÿÿP‹TÿÿÿQ‹•ÿÿÿR‹EPèL ƒÄ,‹Mƒé9LýÿÿuM‹ð‹Bƒàt=ƒ} t‹LýÿÿÁáM QÿÄà‹•¤þÿÿR… ÿÿÿP‹MQè=çƒÄ Ç…lþÿÿ Çë ‹•(þÿÿ‰•lþÿÿƒ½,þÿÿt …ˆþÿÿ‰EüëÇEü‹lþÿÿQj‹UüR‹EÄP‹üþÿÿQ• ÿÿÿRE¨P‹MÀQ‹•`þÿÿR‹…¤þÿÿP‹MQè‰ ƒÄ,é/ƒ}¤t •àþÿÿ‰UüëÇEü‹…lþÿÿPj‹MüQ‹•üþÿÿR‹EÄP‹$þÿÿQ•¨þÿÿR…HþÿÿP‹þÿÿQ‹•TÿÿÿR‹…ÿÿÿP‹MQè>ƒÄ0‹Uƒê9•LýÿÿuL¡ð‹Hƒát=ƒ} t‹•LýÿÿÁâU RÿÄà‹…¤þÿÿP ÿÿÿQ‹URèæƒÄ Ç…lþÿÿ Çë ‹…(þÿÿ‰…lþÿÿƒ½,þÿÿt ˆþÿÿ‰MüëÇEü‹•lþÿÿRj‹EüP‹MÄQ‹•üþÿÿR‹…hþÿÿP ÿÿÿQU¨R‹EÀP‹`þÿÿQ‹•¤þÿÿR‹EPèuƒÄ0ÿÐà‹$þÿÿ‰ÿÿÿ‹•hþÿÿ‰•$þÿÿ‹…ÿÿÿ‰…hþÿÿÝ…XÿÿÿÝ]è‹Lýÿÿ‰M€‹U„‰•LýÿÿÝ…ÿÿÿÝpþÿÿÝ…ÿÿÿÝxþÿÿÝ…ÿÿÿÝ€þÿÿÝEˆÝÈþÿÿÝEÝÐþÿÿÝE˜ÝØþÿÿ‹…,þÿÿ‰E¤ÝEÈÜpþÿÿÝEÐÜxþÿÿÞÁÝEØÜ€þÿÿÞÁݸûÿÿÝHáܸûÿÿÜpþÿÿÜmÈÝ]ÈÝHáܸûÿÿÜxþÿÿÜmÐÝ]ÐÝHáܸûÿÿÜ€þÿÿÜmØÝ]ØéoÞÿÿ‹|ÿÿÿQÿ´àƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììhVÇEüÇEôèk‰Eð¡ààPh‡‹MðQèN‹äàRh‡‹EðPè9‹ èàQh‡‹UðRè$ƒ}t ‹EPÿÄàƒ} „©ƒ}tk‹MÙîÜYßàöÄAu4‹UÝáÜ ‹EÝ‹MÝáÜI‹UÝZ‹EÝáÜH‹MÝY‹ðƒzt‹EP‹ ð‹Qÿ҃ċEPÿØà‹MðQèŠÇEô‹UƒêkÒU ‰UüÇEøë ‹EøƒÀ‰Eø‹Mƒé9Møá‹UøkÒ‹E ‹MüÝÜ!Ý]¨‹UøkÒ‹E ‹MüÝDÜaÝ]°‹UøkÒ‹E ‹MüÝDÜaÝ]¸‹UøƒÂkÒ‹EøkÀ‹M ‹u ÝÜ$Ý]À‹UøƒÂkÒ‹EøkÀ‹M ‹u ÝDÜdÝ]È‹UøƒÂkÒ‹EøkÀ‹M ‹u ÝDÜdÝ]ÐÝE¨ÜM¨ÝE°ÜM°ÞÁÝE¸ÜM¸ÞÁÝ]ØÝEÀÜMÀÝEÈÜMÈÞÁÝEÐÜMÐÞÁÝ] ÝPáÜMØÜ] ßàöÄu Ç…Äþÿÿë Ç…Äþÿÿ‹•Äþÿÿ‰Uìƒ}ìuÝPáÜM Ü]ØßàöÄt Ç…Àþÿÿë Ç…Àþÿÿ‹…Àþÿÿ‰EìÝE¨ÜMÀÝE°ÜMÈÞÁÝE¸ÜMÐÞÁÝ]àƒ}ìu5ÝEØÜM ÝEàÜMàÞéÝEØÜM Ü PáÜ PáÞÙßàöÄt Ç…¼þÿÿë Ç…¼þÿÿ‹¼þÿÿ‰Mìƒ}ìu5‹UøkÒU R‹EøkÀE P‹MðQ艋UøkÒU ‰Uüƒ}ôu‹Eü‰Eôéþÿÿƒ}ôu‹M ‰Mô‹UƒêkÒ‹E ‹MüÝÜ!Ý`ÿÿÿ‹UƒêkÒ‹E ‹MüÝDÜaÝhÿÿÿ‹UƒêkÒ‹E ‹MüÝDÜaÝpÿÿÿ‹UƒêkÒ‹Eô‹M ÝÜ$Ýxÿÿÿ‹UƒêkÒ‹Eô‹M Ý@ÜdÝ]€‹UƒêkÒ‹Eô‹M Ý@ÜdÝ]ˆÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜhÿÿÿÞÁÝ…pÿÿÿÜpÿÿÿÞÁÝ]Ý…xÿÿÿÜxÿÿÿÝE€ÜM€ÞÁÝEˆÜMˆÞÁÝXÿÿÿÝPáÜMÜXÿÿÿßàöÄu Ç…¸þÿÿë Ç…¸þÿÿ‹•¸þÿÿ‰Uìƒ}ìu"ÝPáÜXÿÿÿÜ]ßàöÄt Ç…´þÿÿë Ç…´þÿÿ‹…´þÿÿ‰EìÝ…`ÿÿÿÜxÿÿÿÝ…hÿÿÿÜM€ÞÁÝ…pÿÿÿÜMˆÞÁÝ]˜ƒ}ìu;ÝEÜXÿÿÿÝE˜ÜM˜ÞéÝEÜXÿÿÿÜ PáÜ PáÞÙßàöÄt Ç…°þÿÿë Ç…°þÿÿ‹°þÿÿ‰Mìƒ}ìu#‹UƒêkÒU R‹EƒèkÀE P‹MðQèc‹UðRèTéñƒ}tj‹EÙîÜXßàöÄz4‹MÝáÜ ‹UÝ‹EÝáÜH‹MÝY‹UÝáÜJ‹EÝX‹ ðƒyt‹UR¡ð‹HÿуÄ‹URÿØà‹EðPèâÇEô‹M ‰Mü‹Uƒê‰Uøë ‹Eøƒè‰Eøƒ}øŽP‹MøkÉ‹U ‹EüÝ Ü Ýÿÿÿ‹MøkÉ‹U ‹EüÝD Ü`Ý ÿÿÿ‹MøkÉ‹U ‹EüÝD Ü`Ý(ÿÿÿ‹MøƒékÉ‹UøkÒ‹E ‹u ÝÜ$Ý0ÿÿÿ‹MøƒékÉ‹UøkÒ‹E ‹u ÝDÜdÝ8ÿÿÿ‹MøƒékÉ‹UøkÒ‹E ‹u ÝDÜdÝ@ÿÿÿÝ…ÿÿÿÜÿÿÿÝ… ÿÿÿÜ ÿÿÿÞÁÝ…(ÿÿÿÜ(ÿÿÿÞÁÝHÿÿÿÝ…0ÿÿÿÜ0ÿÿÿÝ…8ÿÿÿÜ8ÿÿÿÞÁÝ…@ÿÿÿÜ@ÿÿÿÞÁÝÿÿÿÝPáÜHÿÿÿÜÿÿÿßàöÄu Ç…¬þÿÿë Ç…¬þÿÿ‹¬þÿÿ‰Mìƒ}ìu%ÝPáÜÿÿÿÜHÿÿÿßàöÄt Ç…¨þÿÿë Ç…¨þÿÿ‹•¨þÿÿ‰UìÝ…ÿÿÿÜ0ÿÿÿÝ… ÿÿÿÜ8ÿÿÿÞÁÝ…(ÿÿÿÜ@ÿÿÿÞÁÝPÿÿÿƒ}ìuGÝ…HÿÿÿÜÿÿÿÝ…PÿÿÿÜPÿÿÿÞéÝ…HÿÿÿÜÿÿÿÜ PáÜ PáÞÙßàöÄt Ç…¤þÿÿë Ç…¤þÿÿ‹…¤þÿÿ‰Eìƒ}ìu5‹MøkÉM Q‹UøkÒU R‹EðPè~‹MøkÉM ‰Müƒ}ôu‹Uü‰Uôéýÿÿƒ}ôu‹EƒèkÀE ‰Eô‹M ‹UüÝÜ"ÝÐþÿÿ‹E ‹MüÝ@ÜaÝØþÿÿ‹U ‹EüÝBÜ`Ýàþÿÿ‹Mô‹U ÝÜ"Ýèþÿÿ‹Eô‹M Ý@ÜaÝðþÿÿ‹Uô‹E ÝBÜ`ÝøþÿÿÝ…ÐþÿÿÜÐþÿÿÝ…ØþÿÿÜØþÿÿÞÁÝ…àþÿÿÜàþÿÿÞÁÝÿÿÿÝ…èþÿÿÜèþÿÿÝ…ðþÿÿÜðþÿÿÞÁÝ…øþÿÿÜøþÿÿÞÁÝÈþÿÿÝPáÜÿÿÿÜÈþÿÿßàöÄu Ç… þÿÿë Ç… þÿÿ‹ þÿÿ‰Mìƒ}ìu%ÝPáÜÈþÿÿÜÿÿÿßàöÄt Ç…œþÿÿë Ç…œþÿÿ‹•œþÿÿ‰UìÝ…ÐþÿÿÜèþÿÿÝ…ØþÿÿÜðþÿÿÞÁÝ…àþÿÿÜøþÿÿÞÁÝÿÿÿƒ}ìuGÝ…ÿÿÿÜÈþÿÿÝ…ÿÿÿÜÿÿÿÞéÝ…ÿÿÿÜÈþÿÿÜ PáÜ PáÞÙßàöÄt Ç…˜þÿÿë Ç…˜þÿÿ‹…˜þÿÿ‰Eìƒ}ìu‹M Q‹U R‹EðPèm ‹MðQè^ ‹UðRèO ^‹å]ÃU‹ì]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ììèVÇEÀÇE´‹EƒÀkÀÁàPÿ°àƒÄ‰E¸èJd‰EÀÇE¼ÇEü‹Mƒ9… ‹ð‹Bƒà„¦‹MÀá…—‹U ‹EÝÜÝ]È‹M ‹UÝAÜBÝ]ЋE ‹MÝ@ÜAÝ]Ø‹U ÝÜeÈ‹EÜÝ]˜‹M ÝAÜeЋUÜJÜE˜Ý]˜‹E Ý@ÜeØ‹MÜIÜE˜Ý]˜ÙîÜ]˜ßàöÄDz.ÇE°‹U‹E ÝÝ‹M‹U ÝBÝY‹E‹M ÝAÝXéÀÇE°‹UÝÜeÈ‹EÜÝ] ‹MÝAÜeЋUÜJÜE Ý] ‹EÝ@ÜeØ‹MÜIÜE Ý] ÝE Üu˜Ý]ÙèÜeÝ]¨ÝEÜ PáÜáßàöÄAtÝEÜ PáÜáßàöÄzÇE°‹U ÝEÜ ÝE¨ÜMÈÞÁÝ]à‹E ÝEÜHÝE¨ÜMÐÞÁÝ]è‹M ÝEÜIÝE¨ÜMØÞÁÝ]ð‹UükÒ‹E¸ÝEàÝЋMükÉ‹U¸ÝEèÝ\Ê‹EükÀ‹M¸ÝEðÝ\Á‹UüƒÂ‰Uü‹EükÀ‹M¸‹U ÝÝÁ‹EükÀ‹M¸‹U ÝBÝ\Á‹EükÀ‹M¸‹U ÝBÝ\Á‹EüƒÀ‰Eü‹M¼‰Mø‹U¼ƒÂ‰U¼ë>ÇE´‹E¼‹Mƒ<t+‹U¼‰Uø‹E¼ƒÀ‰E¼‹M¼;M|‹U¸Rÿ´àƒÄé@ ëÉ¡ð‹Hát‹U‰UÄë ‹Eƒè‰EÄ‹MÀáÿïÿÿQè†aƒÄë‹UøƒÂ‰Uø‹E¼ƒÀ‰E¼‹E¼™÷}‰U¼‹Mø;MÄ$‹Eø‹Mƒ<„Ï‹U¼‹Eƒ<…¿‹MøkÉ‹U¼kÒ‹E‹u ÝÜ$‹MÜ Ýpÿÿÿ‹UøkÒ‹E¼kÀ‹M‹u ÝDÜd‹UÜJÜ…pÿÿÿÝpÿÿÿ‹EøkÀ‹M¼kÉ‹U‹u ÝDÜd‹EÜHÜ…pÿÿÿÝpÿÿÿÙîÜpÿÿÿßàöÄDzCÇEŒ‹MøkÉ‹U‹EÝÝ‹MøkÉ‹U‹EÝDÝZ‹MøkÉ‹U‹EÝDÝZé9ÇEŒ‹M¼kÉ‹U‹E ÝÜ$‹MÜ Ýxÿÿÿ‹U¼kÒ‹E‹M Ý@Üd‹UÜJÜ…xÿÿÿÝxÿÿÿ‹E¼kÀ‹M‹U ÝAÜd‹EÜHÜ…xÿÿÿÝxÿÿÿÝ…xÿÿÿܵpÿÿÿÝhÿÿÿÙèÜ¥hÿÿÿÝ]€Ý…hÿÿÿÜ PáÜáßàöÄAtÝ…hÿÿÿÜ PáÜáßàöÄzÇEŒ‹MøkÉ‹UÝ…hÿÿÿÜ ‹E¼kÀ‹M ÝE€Ü ÞÁÝ]à‹UøkÒ‹EÝ…hÿÿÿÜL‹M¼kÉ‹U ÝE€ÜL ÞÁÝ]è‹EøkÀ‹MÝ…hÿÿÿÜL‹U¼kÒ‹E ÝE€ÜLÞÁÝ]ð‹M$Q‹U R‹E,PMàQ‹U¼kÒU R‹EøkÀE P蚃ċMükÉ‹U¸ÝEàÝÊ‹EükÀ‹M¸ÝEèÝ\Á‹UükÒ‹E¸ÝEðÝ\ЋMüƒÁ‰Mü‹U¼kÒ‹EükÀ‹M¸‹u ÝÝÁ‹U¼kÒ‹EükÀ‹M¸‹u ÝDÝ\Á‹U¼kÒ‹EükÀ‹M¸‹u ÝDÝ\Á‹UüƒÂ‰Uü‹Eø‹Mƒ<ua‹U¼‹Eƒ<uU‹M¼kÉ‹UükÒ‹E¸‹u ÝÝЋM¼kÉ‹UükÒ‹E¸‹u ÝDÝ\ЋM¼kÉ‹UükÒ‹E¸‹u ÝDÝ\ЋMüƒÁ‰Mü‹Uø‹Eƒ<…ËM¼‹Uƒ<Š„³ÇE´‹EøkÀ‹M¼kÉ‹U ‹uÝÜ$‹EÜÝHÿÿÿ‹MøkÉ‹U¼kÒ‹E ‹uÝDÜd‹MÜIÜ…HÿÿÿÝHÿÿÿ‹UøkÒ‹E¼kÀ‹M ‹uÝDÜd‹UÜJÜ…HÿÿÿÝHÿÿÿÙîÜHÿÿÿßàöÄDzFÇ…dÿÿÿ‹EøkÀ‹M‹U ÝÝ‹EøkÀ‹M‹U ÝDÝY‹EøkÀ‹M‹U ÝDÝYéKÇ…dÿÿÿ‹E¼kÀ‹M‹UÝÜ$‹EÜÝPÿÿÿ‹M¼kÉ‹U‹EÝBÜd‹MÜIÜ…PÿÿÿÝPÿÿÿ‹U¼kÒ‹E‹MÝ@Üd‹UÜJÜ…PÿÿÿÝPÿÿÿÝ…PÿÿÿܵHÿÿÿÝ@ÿÿÿÙèÜ¥@ÿÿÿÝXÿÿÿÝ…@ÿÿÿÜ PáÜáßàöÄAtÝ…@ÿÿÿÜ PáÜáßàöÄz Ç…dÿÿÿ‹EøkÀ‹M Ý…@ÿÿÿÜ ‹U¼kÒ‹EÝ…XÿÿÿÜ ÞÁÝ]à‹MøkÉ‹U Ý…@ÿÿÿÜL ‹E¼kÀ‹MÝ…XÿÿÿÜLÞÁÝ]è‹UøkÒ‹E Ý…@ÿÿÿÜL‹M¼kÉ‹UÝ…XÿÿÿÜL ÞÁÝ]ð‹E$P‹M Q‹U,REàP‹M¼kÉM Q‹UøkÒU Rè2ƒÄ‹EükÀ‹M¸ÝEàÝÁ‹UükÒ‹E¸ÝEèÝ\ЋMükÉ‹U¸ÝEðÝ\Ê‹EüƒÀ‰Eüƒ}ü| ‹M,Qj‹UR‹E(P‹M Q‹U¸R‹EüPÿU0ƒÄÇEüé´ùÿÿ‹M¼ƒé‰M¼‹U¼U‰U¼‹E¼™÷}‰U¼‹E¼‹Mƒ<…xƒ}üŒn‹U¼kÒ‹E ‹MÝÜÝ]È‹U¼kÒ‹E ‹MÝDÜAÝ]ЋU¼kÒ‹E ‹MÝDÜAÝ]Ø‹U¼kÒ‹E ÝÜeÈ‹MÜ Ý ÿÿÿ‹U¼kÒ‹E ÝDÜeЋMÜIÜ… ÿÿÿÝ ÿÿÿ‹U¼kÒ‹E ÝDÜeØ‹MÜIÜ… ÿÿÿÝ ÿÿÿÙîÜ ÿÿÿßàöÄDzFÇ…<ÿÿÿ‹U¼kÒ‹E‹M ÝÝ‹U¼kÒ‹E‹M ÝDÝX‹U¼kÒ‹E‹M ÝDÝXéÇ…<ÿÿÿ‹UÝÜeÈ‹EÜÝ(ÿÿÿ‹MÝAÜeЋUÜJÜ…(ÿÿÿÝ(ÿÿÿ‹EÝ@ÜeØ‹MÜIÜ…(ÿÿÿÝ(ÿÿÿÝ…(ÿÿÿܵ ÿÿÿÝÿÿÿÙèÜ¥ÿÿÿÝ0ÿÿÿÝ…ÿÿÿÜ PáÜáßàöÄAtÝ…ÿÿÿÜ PáÜáßàöÄz Ç…<ÿÿÿ‹U¼kÒ‹E Ý…ÿÿÿÜ Ý…0ÿÿÿÜMÈÞÁÝ]à‹M¼kÉ‹U Ý…ÿÿÿÜL Ý…0ÿÿÿÜMÐÞÁÝ]è‹E¼kÀ‹M Ý…ÿÿÿÜLÝ…0ÿÿÿÜMØÞÁÝ]ð‹UükÒ‹E¸ÝEàÝЋMükÉ‹U¸ÝEèÝ\Ê‹EükÀ‹M¸ÝEðÝ\Á‹UüƒÂ‰Uüƒ}´u ‹EÀPè´XƒÄ‹M,Qj‹UR‹E(P‹M Q‹U¸R‹EüPÿU0ƒÄ‹MÀQèˆXƒÄ‹U¸Rÿ´àƒÄ^‹å]ÃÌÌÌU‹ìƒ}t ‹EPÿÄà‹ ðƒ9tƒìÙîÝ$jû‹ð‹ÿÐƒÄ jÿààƒ}tX‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxtjj‹M Q‹ð‹BÿÐƒÄ ‹M QÿäàëW‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxtjj‹MQ‹ð‹BÿÐƒÄ ‹MQÿäà‹ðƒzt ¡ð‹HÿÑÿèà]ÃÌÌÌÌÌU‹ììðVÇE¸ÇE¬èCW‰E¸‹EƒÀkÀÑàÁàPÿ°àƒÄ‰E°‹MƒÁkÉ‹U°ʉEüÇE´ÇEø‹Mƒ9…w‹ð‹Bƒà„Ý‹M¸á…΋U ‹EÝÜÝ]À‹M ‹UÝAÜBÝ]È‹E ‹MÝ@ÜAÝ]ЋU ÝÜeÀ‹EÜÝ]‹M ÝAÜeÈ‹UÜJÜEÝ]‹E Ý@ÜeЋMÜIÜEÝ]ÙîÜ]ßàöÄDz.ÇE¨‹U‹E ÝÝ‹M‹U ÝBÝY‹E‹M ÝAÝXéÀÇE¨‹UÝÜeÀ‹EÜÝ]˜‹MÝAÜeÈ‹UÜJÜE˜Ý]˜‹EÝ@ÜeЋMÜIÜE˜Ý]˜ÝE˜ÜuÝ]ˆÙèÜeˆÝ] ÝEˆÜ PáÜáßàöÄAtÝEˆÜ PáÜáßàöÄzÇE¨‹U ÝEˆÜ ÝE ÜMÀÞÁÝ]Ø‹E ÝEˆÜHÝE ÜMÈÞÁÝ]à‹M ÝEˆÜIÝE ÜMÐÞÁÝ]è‹UøkÒ‹E°ÝEØÝЋMøkÉ‹U°ÝEàÝ\Ê‹EøkÀ‹M°ÝEèÝ\Á‹UøkÒ‹Eü‹M ÝÝЋUøkÒ‹Eü‹M ÝAÝ\ЋUøkÒ‹Eü‹M ÝAÝ\ЋUøƒÂ‰Uø‹EøkÀ‹M°‹U ÝÝÁ‹EøkÀ‹M°‹U ÝBÝ\Á‹EøkÀ‹M°‹U ÝBÝ\Á‹EøkÀ‹Mü‹U ÝÝÁ‹EøkÀ‹Mü‹U ÝBÝ\Á‹EøkÀ‹Mü‹U ÝBÝ\Á‹EøƒÀ‰Eø‹M´‰Mô‹U´ƒÂ‰U´ë>ÇE¬‹E´‹Mƒ<t+‹U´‰Uô‹E´ƒÀ‰E´‹M´;M|‹U°Rÿ´àƒÄéƒ ëÉ¡ð‹Hát‹U‰U¼ë ‹Eƒè‰E¼èT‰E¸‹M¸áÿïÿÿQèÜSƒÄë‹UôƒÂ‰Uô‹E´ƒÀ‰E´‹E´™÷}‰U´‹Mô;M¼ñ‹Eô‹Mƒ<„‡‹U´‹Eƒ<…w‹MôkÉ‹U´kÒ‹E‹u ÝÜ$‹MÜ Ýhÿÿÿ‹UôkÒ‹E´kÀ‹M‹u ÝDÜd‹UÜJÜ…hÿÿÿÝhÿÿÿ‹EôkÀ‹M´kÉ‹U‹u ÝDÜd‹EÜHÜ…hÿÿÿÝhÿÿÿÙîÜhÿÿÿßàöÄDzCÇE„‹MôkÉ‹U‹EÝÝ‹MôkÉ‹U‹EÝDÝZ‹MôkÉ‹U‹EÝDÝZéEÇE„‹M´kÉ‹U‹E ÝÜ$‹MÜ Ýpÿÿÿ‹U´kÒ‹E‹M Ý@Üd‹UÜJÜ…pÿÿÿÝpÿÿÿ‹E´kÀ‹M‹U ÝAÜd‹EÜHÜ…pÿÿÿÝpÿÿÿÝ…pÿÿÿܵhÿÿÿÝ`ÿÿÿÙèÜ¥`ÿÿÿÝxÿÿÿÝ…`ÿÿÿÜ PáÜáßàöÄAtÝ…`ÿÿÿÜ PáÜáßàöÄzÇE„‹MôkÉ‹UÝ…`ÿÿÿÜ ‹E´kÀ‹M Ý…xÿÿÿÜ ÞÁÝ]Ø‹UôkÒ‹EÝ…`ÿÿÿÜL‹M´kÉ‹U Ý…xÿÿÿÜL ÞÁÝ]à‹EôkÀ‹MÝ…`ÿÿÿÜL‹U´kÒ‹E Ý…xÿÿÿÜLÞÁÝ]è‹M´kÉM Q‹UôkÒU R‹E(P‹M$Q‹U0REØP‹M´kÉM Q‹UôkÒU RèÀƒÄ ‹EøkÀ‹M°ÝEØÝÁ‹UøkÒ‹E°ÝEàÝ\ЋMøkÉ‹U°ÝEèÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝÝÊ‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eø‹M´kÉ‹UøkÒ‹E°‹u ÝÝЋM´kÉ‹UøkÒ‹E°‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹E°‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹Eü‹u ÝÝЋM´kÉ‹UøkÒ‹Eü‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹Eü‹u ÝDÝ\ЋMøƒÁ‰Mø‹Uô‹Eƒ<…±‹M´‹Uƒ<Š…¡‹E´kÀ‹MøkÉ‹U°‹u ÝÝÊ‹E´kÀ‹MøkÉ‹U°‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹U°‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eø‹Mô‹Uƒ<Š…„‹E´‹Mƒ<„tÇE¬‹UôkÒ‹E´kÀ‹M ‹uÝÜ$‹UÜ Ý@ÿÿÿ‹EôkÀ‹M´kÉ‹U ‹uÝDÜd‹EÜHÜ…@ÿÿÿÝ@ÿÿÿ‹MôkÉ‹U´kÒ‹E ‹uÝDÜd‹MÜIÜ…@ÿÿÿÝ@ÿÿÿÙîÜ@ÿÿÿßàöÄDzFÇ…\ÿÿÿ‹UôkÒ‹E‹M ÝÝ‹UôkÒ‹E‹M ÝDÝX‹UôkÒ‹E‹M ÝDÝXéKÇ…\ÿÿÿ‹U´kÒ‹E‹MÝÜ$‹UÜ ÝHÿÿÿ‹E´kÀ‹M‹UÝAÜd‹EÜHÜ…HÿÿÿÝHÿÿÿ‹M´kÉ‹U‹EÝBÜd‹MÜIÜ…HÿÿÿÝHÿÿÿÝ…Hÿÿÿܵ@ÿÿÿÝ8ÿÿÿÙèÜ¥8ÿÿÿÝPÿÿÿÝ…8ÿÿÿÜ PáÜáßàöÄAtÝ…8ÿÿÿÜ PáÜáßàöÄz Ç…\ÿÿÿ‹UôkÒ‹E Ý…8ÿÿÿÜ ‹M´kÉ‹UÝ…PÿÿÿÜ ÞÁÝ]Ø‹EôkÀ‹M Ý…8ÿÿÿÜL‹U´kÒ‹EÝ…PÿÿÿÜLÞÁÝ]à‹MôkÉ‹U Ý…8ÿÿÿÜL ‹E´kÀ‹MÝ…PÿÿÿÜLÞÁÝ]è‹U´kÒU R‹EôkÀE P‹M(Q‹U$R‹E0PMØQ‹U´kÒU R‹EôkÀE PèXƒÄ ‹MøkÉ‹U°ÝEØÝÊ‹EøkÀ‹M°ÝEàÝ\Á‹UøkÒ‹E°ÝEèÝ\Ћ ð‹QâtN‹EôkÀ‹MøkÉ‹Uü‹u ÝÝÊ‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\ÊëL‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eøƒ}ø|"‹M0Q‹UüR‹EP‹M,Q‹U$R‹E°P‹MøQÿU4ƒÄÇEøéç÷ÿÿ‹U´ƒê‰U´‹E´E‰E´‹E´™÷}‰U´‹M´‹Uƒ<Š…æƒ}øŒÜ¡ð‹Hƒá„—‹U¸â…ˆ‹E´kÀ‹M ‹UÝÜÝ]À‹E´kÀ‹M ‹UÝDÜBÝ]È‹E´kÀ‹M ‹UÝDÜBÝ]ЋE´kÀ‹M ÝÜeÀ‹UÜ Ýÿÿÿ‹E´kÀ‹M ÝDÜeÈ‹UÜJÜ…ÿÿÿÝÿÿÿ‹E´kÀ‹M ÝDÜeЋUÜJÜ…ÿÿÿÝÿÿÿÙîÜÿÿÿßàöÄDzFÇ…4ÿÿÿ‹E´kÀ‹M‹U ÝÝ‹E´kÀ‹M‹U ÝDÝY‹E´kÀ‹M‹U ÝDÝYéÇ…4ÿÿÿ‹EÝÜeÀ‹MÜ Ý ÿÿÿ‹UÝBÜeÈ‹EÜHÜ… ÿÿÿÝ ÿÿÿ‹MÝAÜeЋUÜJÜ… ÿÿÿÝ ÿÿÿÝ… ÿÿÿܵÿÿÿÝÿÿÿÙèÜ¥ÿÿÿÝ(ÿÿÿÝ…ÿÿÿÜ PáÜáßàöÄAtÝ…ÿÿÿÜ PáÜáßàöÄz Ç…4ÿÿÿ‹E´kÀ‹M Ý…ÿÿÿÜ Ý…(ÿÿÿÜMÀÞÁÝ]Ø‹U´kÒ‹E Ý…ÿÿÿÜLÝ…(ÿÿÿÜMÈÞÁÝ]à‹M´kÉ‹U Ý…ÿÿÿÜL Ý…(ÿÿÿÜMÐÞÁÝ]è‹EøkÀ‹M°ÝEØÝÁ‹UøkÒ‹E°ÝEàÝ\ЋMøkÉ‹U°ÝEèÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eøƒ}¬u ‹M¸QèÑHƒÄ‹U0R‹EüP‹MQ‹U,R‹E$P‹M°Q‹UøRÿU4ƒÄ‹E¸Pè£HƒÄ‹M°Qÿ´àƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒ}t ‹EPÿÄà‹ ðƒ9tƒìÙîÝ$jû‹ð‹ÿÐƒÄ jÿàà‹ ð‹Qâ„ ¡ðƒxt‹M Q‹ð‹BÿЃÄ‹M QÿØàƒ}tY‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒytjj‹U R¡ð‹HÿÑƒÄ ‹U RÿäàëW¡ðƒxtjj‹M Q‹ð‹BÿÐƒÄ ‹M Qÿäà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà鬃}„ª¡ðƒxt‹M Q‹ð‹BÿЃÄ‹M QÿØà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒyt‹U$R¡ð‹HÿуÄ‹U$RÿØà¡ðƒxtjj‹M Q‹ð‹BÿÐƒÄ ‹M QÿäàéÍ‹ðƒzt‹E$P‹ ð‹Qÿ҃ċE$PÿØà‹ ðƒytjj‹U R¡ð‹HÿÑƒÄ ‹U Rÿäà¡ðƒxt‹M Q‹ð‹BÿЃÄ‹M QÿØà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒyt‹U$R¡ð‹HÿуÄ‹U$RÿØà¡ðƒxtjj‹MQ‹ð‹BÿÐƒÄ ‹MQÿäà‹ðƒzt ¡ð‹HÿÑÿèà]ÃÌÌÌÌÌÌÌU‹ììpVÇEàÇEÔÇEÄÇE ÇE¤ÙîÝ]ÝEÝ]ˆ3Àƒ}”Àf‰EÜ3Ƀ} ”Áf‰MÐ3Òƒ}$”Âf‰UÀ¿EÀ…ÀuL‹MÁákÉÁáQÿ°àƒÄ‰Eà‹Uà‰UÔ‹EkÀ‹MÔÁ‰UÄ‹EkÀ‹MÄÁ‰U ‹EkÀ‹M Á‰U¤ƒ}uÙîÝ]èÙèÝ]ðÙîÝ]øë‹EÝÝ]è‹MÝAÝ]ð‹UÝBÝ]ø‹EP‹MQUèRè;]ÿÿƒÄ ÇEä‹E䉅ìþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜ$Ýpÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝxÿÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜdÝ]€Ý…pÿÿÿÜpÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÈÝE€ÜM€ÜEÈÝ]ȃìÝEÈÝ$è±ëƒÄÝ]È‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝÜÝÈþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝÐþÿÿ‹ìþÿÿƒÁkÉ‹•ìþÿÿkÒ‹E‹uÝDÜDÝØþÿÿÝ…ÈþÿÿÜÈþÿÿÝ…ÐþÿÿÜÐþÿÿÞÁÝàþÿÿÝ…ØþÿÿÜØþÿÿÜ…àþÿÿÝàþÿÿƒìÝ…àþÿÿÝ$èéêƒÄÝàþÿÿÝ…àþÿÿÜ PáÝàþÿÿ‹ìþÿÿƒÁ‰ìþÿÿÝ…àþÿÿÜ]ÈßàöÄu‹Uƒê9•ìþÿÿŒ?þÿÿ¿EÀ…À…vÇ…èþÿÿë‹èþÿÿƒÁ‰èþÿÿ‹•èþÿÿ;Ué‹…ìþÿÿƒèkÀ0‹èþÿÿÁá‹U$‹u ÝÜ ‹…ìþÿÿƒèkÀ0‹èþÿÿÁá‹U$‹u ÝDÜLÞÁ‹…ìþÿÿƒèkÀ0‹M$ÜD‹•èþÿÿkÒ‹EÔÝЋìþÿÿƒékÉ0‹•èþÿÿÁâ‹E$‹u ÝDÜ ‹ìþÿÿƒékÉ0‹•èþÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹ìþÿÿƒékÉ0‹U$ÜD (‹…èþÿÿkÀ‹MÔÝ\Á‹•èþÿÿkÒ‹EÔÙîÝ\Ðéùþÿÿ¿MÜ…É…WÇ…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;E-‹ìþÿÿƒékÉ0‹U$ÙîÜ\ ßàöÄDzL‹…ìþÿÿƒèkÀ0‹M$ÙîÜ\ßàöÄDz0‹•ìþÿÿƒêkÒ0‹…ìþÿÿƒèkÀ0‹M$‹u$ÝD ÜßàöÄD‹^‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝD Ü ‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝDÜLÞé‹•èþÿÿkÒ‹E ÝЋìþÿÿƒékÉ0‹U$ÝD Ùà‹…èþÿÿÁà‹MÜ ‹•ìþÿÿƒêkÒ0‹…èþÿÿÁà‹M$‹uÝÜLÞÁ‹•èþÿÿkÒ‹E Ý\ЋèþÿÿkÉ‹•èþÿÿkÒ‹E ‹u ÝÈÜ Ö‹èþÿÿkÉ‹•èþÿÿkÒ‹E ‹u ÝDÈÜLÖÞÁÝÀþÿÿƒìÝ…ÀþÿÿÝ$èÛçƒÄÙèÞñÝÀþÿÿ‹èþÿÿkÉ‹U ÝÊÜÀþÿÿ‹…èþÿÿkÀ‹M ÝÁ‹•èþÿÿkÒ‹E ÝDÐÜÀþÿÿ‹èþÿÿkÉ‹U Ý\Êë>‹…èþÿÿÁà‹èþÿÿkÉ‹U ‹uÝÝÊ‹…èþÿÿÁà‹èþÿÿkÉ‹U ‹uÝDÝ\Ê‹…èþÿÿkÀ‹M ÙîÝ\Á‹•èþÿÿkÒ‹E¤ÙîÝ\Ðéµýÿÿ‹Mƒé9ìþÿÿ ‹•ìþÿÿkÒUR‹EäkÀEP‹MäƒékÉMQU¨Rèö‚ÿÿƒÄÝEèÜM¨ÝEðÜM°ÞÁÝEøÜM¸ÞÁݸþÿÿÝHáܸþÿÿÜM¨ÜmèÝ]èÝHáܸþÿÿÜM°ÜmðÝ]ðÝHáܸþÿÿÜM¸ÜmøÝ]øEèP‹ìþÿÿkÉMQ‹UäkÒUR…ðþÿÿPè1âƒÄÿÈàðþÿÿQÿÌà¿UÀ…Ò„*¿EÐ…À„‰¿MÜ…Ét"ƒìÝEÈÝ$‹•ìþÿÿR‹E P‹MQèŽ ƒÄëZ‹ð‹B%t&ƒìÝEÈÝ$‹ìþÿÿQ‹UR‹E P‹MQèȃÄë$ƒìÝEÈÝ$‹•ìþÿÿR‹EP‹M Q‹URèBƒÄé¿EÜ…Àt&ƒìÝEÈÝ$‹ìþÿÿQ‹U R‹E P‹MQèÑ ƒÄëb‹ð‹B%t*ƒìÝEÈÝ$‹ìþÿÿQ‹UR‹E P‹M Q‹URè7ƒÄë(ƒìÝEÈÝ$‹…ìþÿÿP‹MQ‹U R‹E P‹MQè}ƒÄéÇ…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;Eì‹ìþÿÿkÉ0‹•èþÿÿÁâ‹E$‹u ÝÜ ‹ìþÿÿkÉ0‹•èþÿÿÁâ‹E$‹u ÝDÜLÞÁ‹ìþÿÿkÉ0‹U$ÜD ‹…èþÿÿkÀ‹MÄÝÁ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹u ÝDÜ ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•ìþÿÿkÒ0‹E$ÜD(‹èþÿÿkÉ‹UÄÝ\ÊÝEÈÙà‹…èþÿÿkÀ‹MÄÝ\Á‹•èþÿÿkÒ‹EÔÙîÝ\Ðéöþÿÿ¿MÜ…É…Ç…èþÿÿë‹•èþÿÿƒÂ‰•èþÿÿ‹…èþÿÿ;Eñ‹ìþÿÿkÉ0‹U$ÙîÜ\ ßàöÄDzC‹…ìþÿÿkÀ0‹M$ÙîÜ\ßàöÄDz*‹•ìþÿÿkÒ0‹…ìþÿÿkÀ0‹M$‹u$ÝD ÜßàöÄD‹R‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝD Ü ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝDÜLÞé‹•èþÿÿkÒ‹E¤ÝЋìþÿÿkÉ0‹U$ÝD Ùà‹…èþÿÿÁà‹MÜ ‹•ìþÿÿkÒ0‹…èþÿÿÁà‹M$‹uÝÜLÞÁ‹•èþÿÿkÒ‹E¤Ý\ЋèþÿÿkÉ‹•èþÿÿkÒ‹E¤‹u¤ÝÈÜ Ö‹èþÿÿkÉ‹•èþÿÿkÒ‹E¤‹u¤ÝDÈÜLÖÞÁݰþÿÿƒìÝ…°þÿÿÝ$èjâƒÄÙèÞñݰþÿÿ‹èþÿÿkÉ‹U¤ÝÊܰþÿÿ‹…èþÿÿkÀ‹M¤ÝÁ‹•èþÿÿkÒ‹E¤ÝDÐܰþÿÿ‹èþÿÿkÉ‹U¤Ý\Êë>‹…èþÿÿÁà‹èþÿÿkÉ‹U¤‹uÝÝÊ‹…èþÿÿÁà‹èþÿÿkÉ‹U¤‹uÝDÝ\Êéñýÿÿ¿EÐ…À„(¿MÜ…Ét&ƒìÝEÈÝ$‹•ìþÿÿR‹EÄP‹MÔQ‹URèÿÿƒÄëj¡ð‹Hát.ƒìÝEÈÝ$‹•ìþÿÿR‹E¤P‹M Q‹UÄR‹EÔP‹MQèå/ÿÿƒÄ ë,ƒìÝEÈÝ$‹•ìþÿÿR‹E¤P‹M Q‹UÄR‹EÔP‹MQèw+ÿÿƒÄ ‹ð‹Bƒàt}ÙèÝ]˜‹ ðƒytUˆR¡ð‹HÿуÄUˆRÿØà‹EÔP‹MQè ƒÄÝáÝ]˜‹ðƒztEˆP‹ ð‹QÿÒƒÄEˆPÿØà‹MÄQ‹URè|ƒÄ骿EÜ…ÀtFƒìÝEÈÝ$‹ìþÿÿQ‹•ìþÿÿÁâU R‹…ìþÿÿƒèÁàE P‹MÄQ‹UÔR‹EPèž)ƒÄ 饋 ð‹QâtKƒìÝEÈÝ$‹…ìþÿÿP‹ìþÿÿÁáM Q‹•ìþÿÿƒêÁâU R‹E¤P‹M Q‹UÄR‹EÔP‹MQè3ƒÄ(ëIƒìÝEÈÝ$‹•ìþÿÿR‹…ìþÿÿÁàE P‹ìþÿÿƒéÁáM Q‹U¤R‹E P‹MÄQ‹UÔR‹EPè1ƒÄ(‹ ð‹Qƒâ„¥‹…ìþÿÿƒèÁàE PÿÄàÙèÝ]˜‹ ðƒytUˆR¡ð‹HÿуÄUˆRÿØà‹EÔP‹MQèpƒÄ‹•ìþÿÿÁâU RÿÄàÝáÝ]˜¡ðƒxtMˆQ‹ð‹BÿЃÄMˆQÿØà‹UÄR‹EPè̓ÄÿÐà‹MÔ‰MØ‹UĉUÔ‹E؉EÄ‹M ‰MØ‹U¤‰U ‹E؉E¤‹ìþÿÿ‰Mä‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝÜ$Ýpÿÿÿ‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝDÜdÝxÿÿÿ‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝDÜdÝ]€Ý…pÿÿÿÜpÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÈÝE€ÜM€ÜEÈÝ]ȃìÝEÈÝ$èÞƒÄÝ]È‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝÜÝþÿÿ‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝDÜDݘþÿÿ‹•ìþÿÿƒÂkÒ‹…ìþÿÿkÀ‹M‹uÝDÜDÝ þÿÿÝ…þÿÿÜþÿÿÝ…˜þÿÿܘþÿÿÞÁݨþÿÿÝ… þÿÿÜ þÿÿÜ…¨þÿÿݨþÿÿƒìÝ…¨þÿÿÝ$èH݃ÄݨþÿÿÝ…¨þÿÿÜ Páݨþÿÿ‹•ìþÿÿƒÂ‰•ìþÿÿÝ…¨þÿÿÜ]ÈßàöÄu‹Eƒè9…ìþÿÿŒ?þÿÿéÜõÿÿ¿MÀ…Éu ‹UàRÿ´àƒÄ^‹å]ÃÌÌÌÌÌÌÌU‹ìƒìè½Ü‰Eü¡ààPh‡‹MüQè Ü‹äàRh‡‹EüPè‹Ü‹ èàQh‡‹UüRèvÜ‹EüPègÜÇEøë ‹MøƒÁ‰Mø‹Uø;U}‹EøkÀE P‹MøkÉM Q‹UüRè*ÜëЋEüPèÜ‹MüQè Ü‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìè ܉Eü¡ààPh‡‹MüQèðÛ‹äàRh‡‹EüPèÛÛ‹ èàQh‡‹UüRèÆÛ‹EüPè·Û‹Mƒé‰Møë ‹Uøƒê‰Uøƒ}øÿ~‹EøkÀE P‹MøkÉM Q‹UüRèzÛëÒ‹EüPèiÛ‹MüQèZÛ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEäë ‹MäƒÁ‰Mä‹Uä;U‹EäÁà‹M ÝÝ]è‹UäÁâ‹E ÝDÝ]ðÙîÝ]ø‹ ðƒytj‹UäREèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹ ðƒytj‹UäREèP‹ ð‹QÿÒƒÄ EèPÿäàé^ÿÿÿ‹ ð‹Qâtu‹E ÝÝ]è‹M ÝAÝ]ðÙîÝ]ø‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹ ðƒytjjUèR¡ð‹HÿÑƒÄ UèRÿäà¡ðƒxt ‹ ð‹QÿÒÿèà¡ð‹Hƒát7jƒìÙîÝ$‹U R‹EPè½LÿÿƒÄjÝEÙàƒìÝ$‹M Q‹URè LÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒì¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEäë ‹MäƒÁ‰Mä‹Uä;U®‹EäÁà‹M ÝÝ]è‹UäÁâ‹E ÝDÝ]ðÙîÝ]ø‹MƒéÁáMQÿÄà‹ðƒztj‹EäPMèQ‹ð‹BÿÐƒÄ MèQÿäàÝEÙàÝ]ø‹UÁâURÿÄà¡ðƒxtj‹MäQUèR¡ð‹HÿÑƒÄ UèRÿäàé=ÿÿÿ¡ð‹Há„™‹U ÝÝ]è‹E Ý@Ý]ðÙîÝ]ø‹MƒéÁáMQÿÄà‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹MÁáMQÿÄà‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäà‹ ðƒyt ‹ð‹BÿÐÿèà‹ ð‹QƒâtZ‹EƒèÁàEPÿÄàjƒìÙîÝ$‹M Q‹URèJÿÿƒÄ‹EÁàEPÿÄàjÝEÙàƒìÝ$‹M Q‹URècJÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ÙîÝ]à¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEÌë ‹M̃Á‰MÌ‹UÌ;UÓ‹EÌÁà‹MÝÝ]ЋUÌÁâ‹EÝDÝ]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØà‹EÌÁà‹M ÝÝ]è‹UÌÁâ‹E ÝDÝ]ðÙîÝ]ø‹ ðƒytj‹UÌREèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ð‹QÿÒƒÄ EèPÿäàéÿÿÿ‹ ð‹Qℳ‹EÝÝ]ЋMÝAÝ]ØÙîÝ]à‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹M ÝÝ]è‹U ÝBÝ]ðÙîÝ]ø¡ðƒxtjjMèQ‹ð‹BÿÐƒÄ MèQÿäàÝEÙàÝ]ø‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäà‹ ðƒyt ‹ð‹BÿÐÿèà‹ ð‹Qƒâ„žÙîÝ]ØÝEØÝ]ÐÙèÝ]à¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØàjƒìÙîÝ$‹U R‹EPèãGÿÿƒÄÝáÝ]à‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàjÝEÙàƒìÝ$‹E P‹MQè–GÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ÙîÝ]à¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEÌë ‹M̃Á‰MÌ‹UÌ;U‹EƒèÁàEPÿÄà‹MÌÁá‹UÝ Ý]ЋEÌÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹MÌÁá‹U Ý Ý]è‹EÌÁà‹M ÝDÝ]ðÙîÝ]ø‹ðƒztj‹EÌPMèQ‹ð‹BÿÐƒÄ MèQÿäà‹UÁâURÿÄà¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØàÝEÙàÝ]ø‹ðƒztj‹EÌPMèQ‹ð‹BÿÐƒÄ MèQÿäàéÍþÿÿ‹ð‹B%„‹MƒéÁáMQÿÄà‹UÝÝ]ЋEÝ@Ý]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØà‹E ÝÝ]è‹M ÝAÝ]ðÙîÝ]ø‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäà‹MÁáMQÿÄà‹UÝÝ]ЋEÝ@Ý]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàÝEÙàÝ]ø¡ðƒxtjjMèQ‹ð‹BÿÐƒÄ MèQÿäà‹ðƒzt ¡ð‹HÿÑÿèà‹ð‹Bƒà„‹MƒéÁáMQÿÄàÙîÝ]ØÝEØÝ]ÐÙèÝ]à‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàjƒìÙîÝ$‹M Q‹URèaDÿÿƒÄ‹EÁàEPÿÄàÝáÝ]à‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàjÝEÙàƒìÝ$‹E P‹MQèDÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì4ÙîÝ]à¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEÌë ‹M̃Á‰MÌ‹Uƒê9UÌg‹EÌÁà‹MÝÝ]ЋUÌÁâ‹EÝDÝ]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØà‹EÌÁà‹M ÝÝ]è‹UÌÁâ‹E ÝDÝ]ðÙîÝ]ø‹ ðƒytj‹UÌREèP‹ ð‹QÿÒƒÄ EèPÿäàÝEÙàÝ]ø‹ ðƒytj‹UÌREèP‹ ð‹QÿÒƒÄ EèPÿäà‹M̃ÁÁá‹U Ý Ý]è‹ẼÀÁà‹M ÝDÝ]ðÙîÝ]ø‹ðƒztj‹ẼÀPMèQ‹ð‹BÿÐƒÄ MèQÿäàÝEÙàÝ]ø‹ðƒztj‹ẼÀPMèQ‹ð‹BÿÐƒÄ MèQÿäàéþÿÿ‹ð‹B%„U‹MƒéÁá‹UÝ Ý]ЋEƒèÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹MƒéÁá‹U Ý Ý]è‹EƒèÁà‹M ÝDÝ]ðÙîÝ]ø‹ðƒztj‹EƒèPMèQ‹ð‹BÿÐƒÄ MèQÿäàÝEÙàÝ]ø‹ðƒztj‹EƒèPMèQ‹ð‹BÿÐƒÄ MèQÿäà‹U ÝÝ]è‹E Ý@Ý]ðÙîÝ]ø‹ ðƒytjjUèR¡ð‹HÿÑƒÄ UèRÿäàÝEÙàÝ]ø¡ðƒxtjjMèQ‹ð‹BÿÐƒÄ MèQÿäà‹ðƒzt ¡ð‹HÿÑÿèà‹ð‹Bƒà„ŸÙîÝ]ØÝEØÝ]ÐÙèÝ]à‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàjƒìÙîÝ$‹E P‹MQèL@ÿÿƒÄÝáÝ]à‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàjÝEÙàƒìÝ$‹M Q‹URèþ?ÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌU‹ìƒì4ÙîÝ]à¡ðƒ8tƒìÝEÝ$‹MQ‹ð‹ÿÐƒÄ jÿààÇEÌë ‹M̃Á‰MÌ‹Uƒê9UÌ‹EƒèÁàEPÿÄà‹MÌÁá‹UÝ Ý]ЋEÌÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹MÌÁá‹U Ý Ý]è‹EÌÁà‹M ÝDÝ]ðÙîÝ]ø‹ðƒztj‹EÌPMèQ‹ð‹BÿÐƒÄ MèQÿäà‹UÁâURÿÄà¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØàÝEÙàÝ]ø‹ðƒztj‹EÌPMèQ‹ð‹BÿÐƒÄ MèQÿäà‹UƒêÁâURÿÄà¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØà‹ŨÂÁâ‹E ÝÝ]è‹M̃ÁÁá‹U ÝD Ý]ðÙîÝ]ø¡ðƒxtj‹M̃ÁQUèR¡ð‹HÿÑƒÄ UèRÿäà‹EÁàEPÿÄà‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØàÝEÙàÝ]ø¡ðƒxtj‹M̃ÁQUèR¡ð‹HÿÑƒÄ UèRÿäàéÉýÿÿ¡ð‹Há„$‹UƒêÁâ‹E ÝÝ]è‹MƒéÁá‹U ÝD Ý]ðÙîÝ]ø‹EƒèÁàEPÿÄà‹MƒéÁá‹UÝ Ý]ЋEƒèÁà‹MÝDÝ]Ø‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØà‹ ðƒytj‹UƒêREèP‹ ð‹QÿÒƒÄ EèPÿäà‹MÁáMQÿÄà‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàÝEÙàÝ]ø‹ ðƒytj‹UƒêREèP‹ ð‹QÿÒƒÄ EèPÿäà‹MƒéÁáMQÿÄà‹UÝÝ]ЋEÝ@Ý]Ø‹ ðƒytUÐR¡ð‹HÿуÄUÐRÿØà‹E ÝÝ]è‹M ÝAÝ]ðÙîÝ]ø‹ðƒztjjEèP‹ ð‹QÿÒƒÄ EèPÿäà‹MÁáMQÿÄà‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàÝEÙàÝ]ø‹ ðƒytjjUèR¡ð‹HÿÑƒÄ UèRÿäà¡ðƒxt ‹ ð‹QÿÒÿèà¡ð‹Hƒá„‹UƒêÁâURÿÄàÙîÝ]ØÝEØÝ]ÐÙèÝ]à¡ðƒxtMÐQ‹ð‹BÿЃÄMÐQÿØàjƒìÙîÝ$‹U R‹EPè³:ÿÿƒÄ‹MÁáMQÿÄàÝáÝ]à‹ðƒztEÐP‹ ð‹QÿÒƒÄEÐPÿØàjÝEÙàƒìÝ$‹M Q‹URèU:ÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQƒ=ðuè~(ÿÿ£ðhð5èìǃÄ¡ð‹M‰H(‹ð‹E ‰B,‹ ð‹U‰Q0¡ð‹M‰H4‹ð‹E‰B8‹ ð‹U‰Q<¡ð‹M ‰H@‹ð‹E$‰BD‹ ð‹Qƒâ‰Uü‹Eüƒè‰Eüƒ}ü‡†‹Müÿ$p ‹U$R‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPèÙÿÿƒÄ ëR‹M$Q‹U R‹EP‹MQ‹UR‹EP‹M Q‹URèôeÿÿƒÄ ë(‹E$P‹M Q‹UR‹EP‹MQ‹UR‹E P‹MQèj‚ÿÿƒÄ ‹å]ÃIí  A A U‹ìj‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPèšþÿÿƒÄ ]ÃÌÌÌÌÌU‹ìjƒìÝEÝ$‹EP‹M Q‹URèƒÄ]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìpVƒ=ðuèÛ&ÿÿ£ðhð5èIƃÄ¡ð‹H‰Mü‹ð‹B ‰EÔ‹ ð‹Q$‰Uøƒ}tÙèÝ]ÇEðë ‹EðƒÀ‰Eð‹Mð;Mü}:‹UðÁâ‹EøÝEÜ ‹MðÁá‹UÔÝ ‹EðÁà‹MøÝEÜL‹UðÁâ‹EÔÝ\ëµÇEð‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝÜ$Ý]°‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜdÝ]¸‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜdÝ]ÀÝE°ÜM°ÝE¸ÜM¸ÞÁÝ]ÈÝEÀÜMÀÜEÈÝ]ȃìÝEÈÝ$è}ăÄÝ]È‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝÜÝ]‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜDÝ]˜‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜDÝ] ÝEÜMÝE˜ÜM˜ÞÁÝ]¨ÝE ÜM ÜE¨Ý]¨ƒìÝE¨Ý$èîÃÄÝ]¨ÝE¨Ü PáÝ]¨‹MðƒÁ‰MðÝE¨Ü]ÈßàöÄu‹Uƒê9UðŒ±þÿÿ‹Eð;EuéÌÙîÜ]°ßàöÄDzÙîÜ]ÀßàöÄDzÙèÝ]èÝEèÝ]àÝEàÝ]ØëÙîÝ]èÝEèÝ]ØÙèÝ]à‹ ð‹Q‰Uô¡ð‹HÉ‹ð‰JhP ÿÀà¶À…Àu(‹MQ‹UR‹E P‹MQUØRj‹EÔP‹MüQèÁûÿÿƒÄ ë(‹UR‹EP‹M Q‹UREØP‹MøQ‹UÔR‹EüPè—ûÿÿƒÄ ‹ ð‹Uô‰Q^‹å]ÃÌÌÌU‹ìƒìV‹EkÀ0Pÿ°àƒÄ‰EüÇEøë ‹MøƒÁ‰Mø‹Uø;U}i‹EøkÀ0‹Mü‹Uø‹uÝÖÝ‹EøkÀ0‹MüÙîÝ\‹UøkÒ0‹EüÙîÝ\‹MøkÉ0‹UüÙîÝ\ ‹EøkÀ0‹Mü‹Uø‹uÝÖÝ\ ‹EøkÀ0‹MüÙîÝ\(놋UüRƒìÙèÝ$‹EP‹M Q‹URèfüÿÿƒÄ‹EüPÿ´àƒÄ^‹å]ÃÌU‹ìƒì$‹EkÀ0Pÿ°àƒÄ‰EüÇEÜë ‹M܃Á‰MÜ‹UÜ;Už‹EÜ‹M$ÝháÜ ÁÝ]ðƒìÝEðÝ$è»ÁƒÄÝ]àƒìÝEðÝ$è¡ÁƒÄÝ]è‹UÜkÒ0‹EüÝEèÝÝEàÙà‹MÜkÉ0‹UüÝ\ ‹EÜkÀ0‹MüÙîÝ\‹UÜkÒ0‹EüÝEàÝ\‹MÜkÉ0‹UüÝEèÝ\ ‹EÜkÀ0‹MüÙîÝ\(éMÿÿÿ‹UüR‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPè¶ùÿÿƒÄ ‹MüQÿ´àƒÄ‹å]ÃÌÌU‹ììøVƒ}t ‹EPÿÄàƒ}ué ‹MÙîÜYßàöÄz4‹UÝáÜ ‹EÝ‹MÝáÜI‹UÝZ‹EÝáÜH‹MÝY‹UÙîÜZßàöÄAu4‹EÝáÜ‹MÝ‹UÝáÜJ‹EÝX‹MÝáÜI‹UÝZ‹E‹MÝ@ÜI‹U‹EÝBÜHÞéÝ]è‹M‹UÝAÜ ‹E‹MÝÜIÞéÝ]ð‹U‹EÝÜH‹M‹UÝAÜ ÞéÝ]øƒ} u4‹EÝáÜ‹MÝ‹UÝáÜJ‹EÝX‹MÝáÜI‹UÝZÙîÝ]ÀÙîÝ]ÈÙèÝ]ЋEÝÜMÀ‹MÝAÜMÈÞÁ‹UÝBÜMÐÞÁÝÿÿÿÝ…ÿÿÿÜMÀ‹EÜ(Ý]ÀÝ…ÿÿÿÜMÈ‹MÜiÝ]ÈÝ…ÿÿÿÜMЋUÜjÝ]ÐÝEÀÜMÀÝEÈÜMÈÞÁÝÿÿÿÝEÐÜMÐÜ…ÿÿÿÝÿÿÿƒìÝ…ÿÿÿÝ$迃ÄÝÿÿÿÙîÜÿÿÿßàöÄD{2ÙèܵÿÿÿÝÿÿÿÝEÀÜÿÿÿÝ]ÀÝEÈÜÿÿÿÝ]ÈÝEÐÜÿÿÿÝ]ЋEÝEÀÜ‹MÝEÈÜIÞÁ‹UÝEÐÜJÞÁÝ] ƒìÝE Ý$è ¾ƒÄÝ] ÝE Ü5áÝ] EèPƒìÝE Ý$ ÿÿÿQè¥*ƒÄ‹UkÒ ÁâRÿ°àƒÄ‰E¼‹E¼‰…ÿÿÿ‹MkÉ‹•ÿÿÿʉE¸‹MkÉ‹U¸ʉEÜ‹M‹UÜʉE°‹MkÉ‹U°ʉE¬ƒ} „CÇ…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹•ÿÿÿ;U„‹…ÿÿÿkÀ‹ÿÿÿkÉ‹•ÿÿÿ‹u ÝÝÊ‹…ÿÿÿkÀ‹ÿÿÿkÉ‹•ÿÿÿ‹u ÝDÝ\Ê‹…ÿÿÿkÀ‹ÿÿÿ‹UÜ‹u ÝDÝÊ‹…ÿÿÿkÀ‹ÿÿÿ‹•ÿÿÿ‹uÜÝÖÝ\Áé^ÿÿÿƒ}„†Ç…ÿÿÿë‹…ÿÿÿƒÀ‰…ÿÿÿ‹ÿÿÿ;M}`‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝÝÁ‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝDÝ\Á‹•ÿÿÿkÒ‹…ÿÿÿkÀ‹M°‹uÝDÝ\Áë†éïÇ…ÿÿÿë‹•ÿÿÿƒÂ‰•ÿÿÿ‹…ÿÿÿ;E„‹M+ÿÿÿƒé‰M´‹•ÿÿÿkÒ‹E´kÀ‹ÿÿÿ‹u ÝÝÁ‹•ÿÿÿkÒ‹E´kÀ‹ÿÿÿ‹u ÝDÝ\Á‹•ÿÿÿkÒ‹E´‹MÜ‹u ÝDÝÁ‹U´kÒ‹…ÿÿÿ‹M´‹uÜÝÎÝ\Ðé^ÿÿÿƒ}„7‹ð‹B%„—Ç…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹Uƒê9•ÿÿÿ}i‹E+…ÿÿÿƒè‰E´‹ÿÿÿkÉ‹U´kÒ‹E°‹uÝÝЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ÐézÿÿÿéŒÇ…ÿÿÿë‹ÿÿÿƒÁ‰ÿÿÿ‹•ÿÿÿ;U}f‹E+…ÿÿÿƒè‰E´‹ÿÿÿkÉ‹U´kÒ‹E°‹uÝÝЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\ЋÿÿÿkÉ‹U´kÒ‹E°‹uÝDÝ\Ðë€ÇEäë ‹MäƒÁ‰Mäƒ}ä÷Ç…ÿÿÿë‹•ÿÿÿƒÂ‰•ÿÿÿ‹…ÿÿÿ;EÚ‹ÿÿÿkÉ‹U¸‹…ÿÿÿ‹uÜÝDÊÜ$Æ‹ÿÿÿkÉ‹U¸Ý\Ê‹…ÿÿÿkÀ‹ÿÿÿ‹•ÿÿÿ‹uÜÝDÁÜ$Ö‹…ÿÿÿkÀ‹ÿÿÿÝ\Á‹•ÿÿÿkÒ‹…ÿÿÿÝ… ÿÿÿÜ Ð‹ÿÿÿkÉ‹•ÿÿÿÝ…(ÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹ÿÿÿÝ…0ÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E¸ÝЋÿÿÿkÉ‹•ÿÿÿÝ…@ÿÿÿÜ Ê‹…ÿÿÿkÀ‹ÿÿÿÝ…HÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹…ÿÿÿÝ…PÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U¸Ý\Ê‹…ÿÿÿkÀ‹ÿÿÿÝ…`ÿÿÿÜ Á‹•ÿÿÿkÒ‹…ÿÿÿÝ…hÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹•ÿÿÿÝ…pÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M¸Ý\Á‹•ÿÿÿkÒ‹E¸‹ÿÿÿ‹uÜÝDÐÜ΋•ÿÿÿkÒ‹E¸Ý\ЋÿÿÿkÉ‹•ÿÿÿ‹…ÿÿÿ‹uÜÝDÊÜÆ‹ÿÿÿkÉ‹•ÿÿÿÝ\Êéþÿÿƒ}„-Ç…ÿÿÿë‹…ÿÿÿƒÀ‰…ÿÿÿ‹ÿÿÿ;M‹•ÿÿÿkÒ‹E°Ý… ÿÿÿÜ Ð‹ÿÿÿkÉ‹U°Ý…(ÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M°Ý…0ÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E¬ÝЋÿÿÿkÉ‹U°Ý…@ÿÿÿÜ Ê‹…ÿÿÿkÀ‹M°Ý…HÿÿÿÜLÁÞÁ‹•ÿÿÿkÒ‹E°Ý…PÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U¬Ý\Ê‹…ÿÿÿkÀ‹M°Ý…`ÿÿÿÜ Á‹•ÿÿÿkÒ‹E°Ý…hÿÿÿÜLÐÞÁ‹ÿÿÿkÉ‹U°Ý…pÿÿÿÜLÊÞÁ‹…ÿÿÿkÀ‹M¬Ý\Áéßþÿÿƒ}u#ƒìÙîÝ$j‹•ÿÿÿR‹E¸P‹MQèÐóþÿƒÄëd‹ð‹B%t+ƒìÙîÝ$j‹M°Q‹U¬R‹…ÿÿÿP‹M¸Q‹URèµÿÿƒÄ ë)ƒìÙîÝ$j‹E°P‹M¬Q‹•ÿÿÿR‹E¸P‹MQèJÿÿƒÄ ‹U¸‰Uà‹…ÿÿÿ‰E¸‹Mà‰ÿÿÿ‹U¬‰Uà‹E°‰E¬‹Mà‰M°éöûÿÿ‹U¼Rÿ´àƒÄ^‹å]ÃÌÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE Ý$‹MQ‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uü;U‹EPÿÄà‹ ðƒytj‹UüR‹EükÀE P‹ ð‹QÿÒƒÄ ‹EükÀE Pÿäà‹MQÿÄà‹ðƒztj‹EüP‹MükÉMQ‹ð‹BÿÐƒÄ ‹MükÉMQÿäàé^ÿÿÿ‹ð‹B%tl‹MQÿÄà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹MQÿÄà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒyt ‹ð‹BÿÐÿèà‹å]ÃÌÌÌÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE$Ý$‹M Q‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uü;Uï‹EPÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒU R¡ð‹HÿÑƒÄ ‹UükÒU Rÿäà‹EPÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒUR¡ð‹HÿÑƒÄ ‹UükÒURÿäàéüþÿÿ¡ð‹Hᄺ‹URÿÄà¡ðƒxt‹MQ‹ð‹BÿЃÄ‹MQÿØà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹MQÿÄà‹ðƒzt‹EP‹ ð‹Qÿ҃ċEPÿØà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxt ‹ ð‹QÿÒÿèà‹å]ÃÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE$Ý$‹M Q‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uƒê9Uüë‹EPÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒU R¡ð‹HÿÑƒÄ ‹UükÒU Rÿäà‹EPÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒUR¡ð‹HÿÑƒÄ ‹UükÒURÿäà‹EPÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxt#j‹MüƒÁQ‹UüƒÂkÒU R¡ð‹HÿÑƒÄ ‹UüƒÂkÒU Rÿäà‹EPÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxt#j‹MüƒÁQ‹UüƒÂkÒUR¡ð‹HÿÑƒÄ ‹UüƒÂkÒURÿäàéýýÿÿ¡ð‹Há„ê‹URÿÄà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒzt$j‹EƒèP‹MƒékÉM Q‹ð‹BÿÐƒÄ ‹MƒékÉM Qÿäà‹URÿÄà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒzt$j‹EƒèP‹MƒékÉMQ‹ð‹BÿÐƒÄ ‹MƒékÉMQÿäà‹URÿÄà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹MQÿÄà‹ðƒzt‹EƒèkÀEP‹ ð‹Qÿ҃ċEƒèkÀEPÿØà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxt ‹ ð‹QÿÒÿèà‹å]ÃÌÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE(Ý$‹M$Q‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uü;Uï‹EPÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒU R¡ð‹HÿÑƒÄ ‹UükÒU Rÿäà‹E PÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒUR¡ð‹HÿÑƒÄ ‹UükÒURÿäàéüþÿÿ¡ð‹Hᄺ‹URÿÄà¡ðƒxt‹MQ‹ð‹BÿЃÄ‹MQÿØà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹M QÿÄà‹ðƒzt‹EP‹ ð‹Qÿ҃ċEPÿØà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxt ‹ ð‹QÿÒÿèà‹å]ÃÌÌÌÌÌU‹ìQ¡ðƒ8tƒìÝE(Ý$‹M$Q‹ð‹ÿÐƒÄ jÿààÇEüë ‹MüƒÁ‰Mü‹Uƒê9Uüë‹EPÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒU R¡ð‹HÿÑƒÄ ‹UükÒU Rÿäà‹E PÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxtj‹MüQ‹UükÒUR¡ð‹HÿÑƒÄ ‹UükÒURÿäà‹EPÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxt#j‹MüƒÁQ‹UüƒÂkÒU R¡ð‹HÿÑƒÄ ‹UüƒÂkÒU Rÿäà‹E PÿÄà‹ ðƒyt‹UükÒUR¡ð‹HÿуÄ‹UükÒURÿØà¡ðƒxt#j‹MüƒÁQ‹UüƒÂkÒUR¡ð‹HÿÑƒÄ ‹UüƒÂkÒURÿäàéýýÿÿ¡ð‹Há„ê‹URÿÄà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒzt$j‹EƒèP‹MƒékÉM Q‹ð‹BÿÐƒÄ ‹MƒékÉM Qÿäà‹U RÿÄà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒzt$j‹EƒèP‹MƒékÉMQ‹ð‹BÿÐƒÄ ‹MƒékÉMQÿäà‹URÿÄà¡ðƒxt‹MƒékÉMQ‹ð‹BÿЃÄ‹MƒékÉMQÿØà‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹M QÿÄà‹ðƒzt‹EƒèkÀEP‹ ð‹Qÿ҃ċEƒèkÀEPÿØà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxt ‹ ð‹QÿÒÿèà‹å]ÃÌÌÌÌÌÌU‹ìƒ=ðuè? ÿÿ£ðhð5è­¨ƒÄ¡ð‹M‰H]ÃU‹ìƒ=ðuè ÿÿ£ðhð5è}¨ƒÄ¡ð‹@]ÃÌÌÌU‹ìQƒ=ðuèÞÿÿ£ðhð5èL¨ƒÄ¡ð‹M‰H(‹ð‹E ‰B,‹ ð‹U‰Q0¡ð‹M‰H4‹ð‹E‰B8‹ ð‹U‰Q<¡ð‹M ‰H@‹ð‹E$‰BD‹ ð‹Qƒâ‰Uü‹Eüƒè‰Eüƒ}ü‡†‹Müÿ$-‹U$R‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPè~ÿÿƒÄ ëR‹M$Q‹U R‹EP‹MQ‹UR‹EP‹M Q‹URèTyƒÄ ë(‹E$P‹M Q‹UR‹EP‹MQ‹UR‹E P‹MQèúƒÄ ‹å]ÃI,·,á,á,U‹ìj‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPèšþÿÿƒÄ ]ÃÌÌÌÌÌU‹ìjƒìÝEÝ$‹EP‹M Q‹URèƒÄ]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìpVƒ=ðuè;ÿÿ£ðhð5試ƒÄ¡ð‹H‰Mü‹ð‹B ‰EÔ‹ ð‹Q$‰Uøƒ}tÙèÝ]ÇEðë ‹EðƒÀ‰Eð‹Mð;Mü}:‹UðÁâ‹EøÝEÜ ‹MðÁá‹UÔÝ ‹EðÁà‹MøÝEÜL‹UðÁâ‹EÔÝ\ëµÇEð‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝÜ$Ý]°‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜdÝ]¸‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜdÝ]ÀÝE°ÜM°ÝE¸ÜM¸ÞÁÝ]ÈÝEÀÜMÀÜEÈÝ]ȃìÝEÈÝ$èݤƒÄÝ]È‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝÜÝ]‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜDÝ]˜‹MðƒÁkÉ‹UðkÒ‹E ‹u ÝDÜDÝ] ÝEÜMÝE˜ÜM˜ÞÁÝ]¨ÝE ÜM ÜE¨Ý]¨ƒìÝE¨Ý$èN¤ƒÄÝ]¨ÝE¨Ü PáÝ]¨‹MðƒÁ‰MðÝE¨Ü]ÈßàöÄu‹Uƒê9UðŒ±þÿÿ‹Eð;EuéÌÙîÜ]°ßàöÄDzÙîÜ]ÀßàöÄDzÙèÝ]èÝEèÝ]àÝEàÝ]ØëÙîÝ]èÝEèÝ]ØÙèÝ]à‹ ð‹Q‰Uô¡ð‹HÉ‹ð‰JhP ÿÀà¶À…Àu(‹MQ‹UR‹E P‹MQUØRj‹EÔP‹MüQèÁûÿÿƒÄ ë(‹UR‹EP‹M Q‹UREØP‹MøQ‹UÔR‹EüPè—ûÿÿƒÄ ‹ ð‹Uô‰Q^‹å]ÃÌÌÌU‹ìƒìV‹EkÀ0Pÿ°àƒÄ‰EüÇEøë ‹MøƒÁ‰Mø‹Uø;U}i‹EøkÀ0‹Mü‹Uø‹uÝÖÝ‹EøkÀ0‹MüÙîÝ\‹UøkÒ0‹EüÙîÝ\‹MøkÉ0‹UüÙîÝ\ ‹EøkÀ0‹Mü‹Uø‹uÝÖÝ\ ‹EøkÀ0‹MüÙîÝ\(놋UüRƒìÙèÝ$‹EP‹M Q‹URèfüÿÿƒÄ‹EüPÿ´àƒÄ^‹å]ÃÌU‹ìƒì$‹EkÀ0Pÿ°àƒÄ‰EüÇEÜë ‹M܃Á‰MÜ‹UÜ;Už‹EÜ‹M$ÝháÜ ÁÝ]ðƒìÝEðÝ$袃ÄÝ]àƒìÝEðÝ$袃ÄÝ]è‹UÜkÒ0‹EüÝEèÝÝEàÙà‹MÜkÉ0‹UüÝ\ ‹EÜkÀ0‹MüÙîÝ\‹UÜkÒ0‹EüÝEàÝ\‹MÜkÉ0‹UüÝEèÝ\ ‹EÜkÀ0‹MüÙîÝ\(éMÿÿÿ‹UüR‹E P‹MQ‹UR‹EP‹MQ‹U R‹EPè¶ùÿÿƒÄ ‹MüQÿ´àƒÄ‹å]ÃÌÌU‹ììôƒ=ðuèyÿÿ£ðhð5è硃Ä¡ðÛ@Ü5xáƒìÝEHÝ$Ýÿÿÿèß¡ƒÄÜÿÿÿèסƒÀ‰…\ÿÿÿƒ}8u(‹\ÿÿÿkÉÁáQÿ°àƒÄ‰EÜ‹U܉U”ÇEüë1‹…\ÿÿÿkÀ ÁàPÿ°àƒÄ‰EÜ‹M܉M”‹•\ÿÿÿkÒ‹E” ЉMüÝháÜMH‹•\ÿÿÿƒê‰• ÿÿÿÛ… ÿÿÿÞùÝ]ðÝE@Ü háÝ]@ÝE@ÜeðÝ]@ƒìÝE@Ý$èU ƒÄÝHÿÿÿƒìÝE@Ý$èD ƒÄÝÿÿÿƒìÝEðÝ$è' ƒÄÝ]˜ƒìÝEðÝ$è ƒÄÝPÿÿÿÝEðÜ5 áÝ@ÿÿÿÝE0Ü@ÿÿÿÝ]0ÝE Ü@ÿÿÿÝ] ÝE(Üe0Ý](ÝEÜe Ý]ÇEàë ‹EàƒÀ‰Eà‹Mà;\ÿÿÿ˜ÝEÜHÿÿÿ‹UàkÒ‹E”ÝÐÝEÜÿÿÿ‹MàkÉ‹U”Ý\Ê‹EàkÀ‹M”ÝE(Ý\ÁÝE(ÜE0Ý](ÝEÜE Ý]Ý…HÿÿÿÜM˜Ý…ÿÿÿÜPÿÿÿÞéÝ]èÝ…HÿÿÿÜPÿÿÿÝ…ÿÿÿÜM˜ÞÁÝ]°ÝEèÝHÿÿÿÝE°ÝÿÿÿéPÿÿÿƒ}8„®ƒ}<…—ÇEàë ‹UàƒÂ‰Uà‹Eà;…\ÿÿÿ}u‹MàkÉ0‹Uü‹E8ÝÝ ‹MàkÉ0‹Uü‹E8Ý@Ý\ ‹MàkÉ0‹Uü‹E8Ý@Ý\ ‹MàkÉ0‹Uü‹E8Ý@Ý\ ‹MàkÉ0‹Uü‹E8Ý@ Ý\ ‹MàkÉ0‹Uü‹E8Ý@(Ý\ (éwÿÿÿé ‹M<Ý…@ÿÿÿÜIÝ] ‹U<Ý…@ÿÿÿÜJ(Ý]¨‹E8Ý@Ý]€‹M8ÝA(Ý]ˆÝ…@ÿÿÿÜ5páÝ@ÿÿÿ‹U<Ý…@ÿÿÿÜ ÙèÞÁÝ]¸‹E<Ý…@ÿÿÿÜHÝ]À‹M<Ý…@ÿÿÿÜIÝ]È‹U<Ý…@ÿÿÿÜJ ÙèÞÁÝ]ÐÝE¸ÜM¸ÝEÀÜMÈÞÁÝ`ÿÿÿÝE¸ÜMÀÝEÀÜMÐÞÁÝhÿÿÿÝEÈÜM¸ÝEÐÜMÈÞÁÝpÿÿÿÝEÈÜMÀÝEÐÜMÐÞÁÝxÿÿÿÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜpÿÿÿÞÁÝ]¸Ý…`ÿÿÿÜhÿÿÿÝ…hÿÿÿÜxÿÿÿÞÁÝ]ÀÝ…pÿÿÿÜ`ÿÿÿÝ…xÿÿÿÜpÿÿÿÞÁÝ]ÈÝ…pÿÿÿÜhÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÐÝE¸ÜM¸ÝEÀÜMÈÞÁÝ`ÿÿÿÝE¸ÜMÀÝEÀÜMÐÞÁÝhÿÿÿÝEÈÜM¸ÝEÐÜMÈÞÁÝpÿÿÿÝEÈÜMÀÝEÐÜMÐÞÁÝxÿÿÿÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜpÿÿÿÞÁÝ]¸Ý…`ÿÿÿÜhÿÿÿÝ…hÿÿÿÜxÿÿÿÞÁÝ]ÀÝ…pÿÿÿÜ`ÿÿÿÝ…xÿÿÿÜpÿÿÿÞÁÝ]ÈÝ…pÿÿÿÜhÿÿÿÝ…xÿÿÿÜxÿÿÿÞÁÝ]ÐÝE¸ÜM¸ÝEÀÜMÈÞÁÝ`ÿÿÿÝE¸ÜMÀÝEÀÜMÐÞÁÝhÿÿÿÝEÈÜM¸ÝEÐÜMÈÞÁÝpÿÿÿÝEÈÜMÀÝEÐÜMÐÞÁÝxÿÿÿ‹E8ÝÝ ÿÿÿ‹M8ÝAÝ(ÿÿÿ‹U8ÝBÝ0ÿÿÿ‹E8Ý@ Ý8ÿÿÿ‹Mü‹U8ÝÝ‹Eü‹M8ÝAÝX‹Uü‹E8Ý@ÝZ‹Mü‹U8ÝBÝY‹Eü‹M8ÝA ÝX ‹Uü‹E8Ý@(ÝZ(ÇEàë ‹MàƒÁ‰Mà‹Uà;•\ÿÿÿ‹EàkÀ0‹MüÝ… ÿÿÿÝ‹UàkÒ0‹EüÝ…(ÿÿÿÝ\‹MàkÉ0‹UüÝ…0ÿÿÿÝ\ ‹EàkÀ0‹MüÝ…8ÿÿÿÝ\ Ý…`ÿÿÿÜ ÿÿÿÝ…hÿÿÿÜ0ÿÿÿÞÁÝ]¸Ý…`ÿÿÿÜ(ÿÿÿÝ…hÿÿÿÜ8ÿÿÿÞÁÝ]ÀÝ…pÿÿÿÜ ÿÿÿÝ…xÿÿÿÜ0ÿÿÿÞÁÝ]ÈÝ…pÿÿÿÜ(ÿÿÿÝ…xÿÿÿÜ8ÿÿÿÞÁÝ]ÐÝE¸Ý ÿÿÿÝEÀÝ(ÿÿÿÝEÈÝ0ÿÿÿÝEÐÝ8ÿÿÿ‹UàkÒ0‹EüÝE€Ý\‹MàkÉ0‹UüÝEˆÝ\ (ÝE€ÜE Ý]€ÝEˆÜE¨Ý]ˆéÎþÿÿ¡ð‹H‰Mä‹ð‹Bƒàð‹ ð‰A‹ð‹BƒÈ‹ ð‰A‹UüRj‹E”P‹\ÿÿÿQ‹UR‹EP‹M Q‹URèIòÿÿƒÄ ¡ð‹Mä‰H‹UÜRÿ´àƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìì‹EÙîÜXßàöÄD‹–‹MÝÝ]èÙîÝ]ð‹UÝBÝ]øÝEèÜMèÝEðÜMðÞÁÝ]àÝEøÜMøÜEàÝ]àƒìÝEàÝ$èy™ƒÄÝ]àÙîÜ]àßàöÄD{7ÙèÜuàÝ]àÝEèÜMàÝ]èÝEøÜMàÝ]øÝEàÜMèÝ]èÝEàÜMðÝ]ðÝEàÜMøÝ]øë ÙîÝ]èÙèÝ]øë‹EÝÝ]è‹MÝAÝ]ð‹UÝBÝ]øÝEøÜM ÝEèÜM0ÞéÝ] ÝEèÜM ÝEøÜM0ÞÁÝ]¨ƒ}8„׃}<tO‹E<ÝÝpÿÿÿ‹M<ÝAÝxÿÿÿ‹U<ÝBÝ]€‹E<Ý@Ý]ˆ‹M<ÝA Ý]‹U<ÝB(Ý]˜ÝE€ÜE Ý]€ÝE˜ÜE¨Ý]˜ë&ÙîÝpÿÿÿÙîÝxÿÿÿÝE Ý]€ÙîÝ]ˆÙîÝ]ÝE¨Ý]˜ƒìÝEHÝ$ƒìÝE@Ý$…pÿÿÿP‹M8QƒìÙîÝ$ƒìÝE(Ý$ƒìÙîÝ$ƒìÝEÝ$‹UR‹EP‹M Q‹URè¹öÿÿƒÄHé›ÙèÝ]°ÙîÝ]¸ÙîÝ]ÀÙîÝ]ÈÙèÝ]ÐÙîÝ]ØÙîÝpÿÿÿÙîÝxÿÿÿÝE Ý]€ÙîÝ]ˆÙîÝ]ÝE¨Ý]˜ƒìÝEHÝ$ƒìÝE@Ý$…pÿÿÿPM°QƒìÙîÝ$ƒìÝE(Ý$ƒìÙîÝ$ƒìÝEÝ$‹UR‹EP‹M Q‹URèöÿÿƒÄH‹å]ÃÌÌU‹ìh@2ƒìÝE@Ý$ƒìÝE8Ý$‹E4P‹M0QƒìÝE(Ý$ƒìÝE Ý$ƒìÝEÝ$ƒìÝEÝ$ƒìÝEÝ$è ƒÄD]ÃÌÌÌÌÌÌÌU‹ìƒì,¡ð‹H‰Mü‹ð‹B ‰EÔ‹ ð‹Q$‰UøÇEðë ‹EðƒÀ‰Eð‹Mð;Mü}:‹UðÁâ‹EøÝEÜ ‹MðÁá‹UÔÝ ‹EðÁà‹MøÝEÜL‹UðÁâ‹EÔÝ\ëµÙîÝ]èÝEèÝ]àÙèÝ]Ø‹ ð‹Q‰Uô¡ð‹HÉ‹ð‰J¡ð‹HÉ‹ð‰JhP ÿÀà¶À…ÀuTƒìÝE@Ý$ƒìÝE8Ý$‹M4Q‹U0RƒìÝE(Ý$ƒìÝE Ý$ƒìÝEÝ$ƒìÝEÝ$EØPj‹MÔQ‹UüRÿUHƒÄHëTƒìÝE@Ý$ƒìÝE8Ý$‹E4P‹M0QƒìÝE(Ý$ƒìÝE Ý$ƒìÝEÝ$ƒìÝEÝ$UØR‹EøP‹MÔQ‹UüRÿUHƒÄH¡ð‹Mô‰H‹å]ÃU‹ìhÀ9ƒìÝE@Ý$ƒìÝE8Ý$‹E4P‹M0QƒìÝE(Ý$ƒìÝE Ý$ƒìÝEÝ$ƒìÝEÝ$ƒìÝEÝ$èþÿÿƒÄD]ÃÌÌÌÌÌÌÌU‹ìƒì<ÝE(Ü5€áƒìÝ$èЕƒÄèΕƒÀ‰EÌ‹EÌkÀPÿ°àƒÄ‰EЋMÌÁáQÿ°àƒÄ‰EÔÝE Üe‹Ũê‰UÈÛEÈÞùÝ]ØÝEÜeØÝ]à‹Ẽè‰EÄÛEÄÜ}(Ý]èÝEèÙàÝ]ðÇEüë ‹MüƒÁ‰Mü‹Uü;UÌ}M‹EükÀ‹MÐÙîÝ‹UükÒ‹EÐÙîÝ\‹MükÉ‹UÐÝEàÝ\ ÝEàÜEØÝ]à‹Eü‹MÔÝEðÝÁÝEðÜEèÝ]ð뢋UÔRj‹EÐP‹MÌQ‹UR‹EP‹M Q‹URèžñÿÿƒÄ ‹EÐPÿ´àƒÄ‹MÔQÿ´àƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì0ÝE Ü5HáÝ]èƒìÝEèÝ$蓃ÄÝ]ðƒìÝEèÝ$訓ƒÄÝ]ÐÝEðÜMðÝ]øÝEÐÜMÐÝ]ØÝEØÜeø‹EÝXP‹M‹UÝBPÝY(‹E‹MÝA(ÝÝEøÜÀÝ]ø‹UÝEøÜ ‹EÜ‹MÜ‹UÝ‹EÝEøÜH‹MÜI‹UÜB(‹EÝX(‹MÝEøÜI‹UÜJ‹EÜ@P‹MÝYP‹U‹EÝÜHÜMø‹MÝY ‹U‹EÝ@ ÝZ‹M‹UÝAÜJÜMø‹EÝXH‹M‹UÝBHÝY0‹E‹MÝ@Ü ÜMø‹UÝZ‹E‹MÝAÝX@ÝHáÜMÐÜMðÝ]à‹UÝEàÜJÝ]è‹EÝ@ÜEè‹MÝY‹UÝB Üeè‹EÝX ‹MÝEàÜ Ý]è‹UÝB0ÜEè‹EÝX0‹MÝAHÜeè‹UÝZH‹EÝEàÜHÝ]è‹MÝA@ÜEè‹UÝZ@‹EÝ@Üeè‹MÝY‹UÙîÝZ`‹EÙîÝXh‹MÙîÝYp‹UÙîÝZX‹EÙîÝX8‹MÙîÝY‹UÙèÝZx‹å]ÃÌÌÌU‹ìƒì ÝE Ü háÝ] ‹E‹MÝÜ ‹U‹EÝBÜHÞÁ‹M‹UÝAÜJÞÁÝ]àÙèÜ]àßàöÄD{VƒìÝEàÝ$è‘‘ƒÄÙèÞñÝ]à‹EÝÜMàÝ]è‹MÝAÜMàÝ]ð‹UÝBÜMàÝ]øEèPƒìÝE Ý$‹MQèxýÿÿƒÄë‹URƒìÝE Ý$‹EPè]ýÿÿƒÄ‹å]ÃÌÌÌÌÌÌU‹ìƒì ‹E ‹M ÝÜ ‹U ‹E ÝBÜHÞÁ‹M ‹U ÝAÜJÞÁÝ]àƒìÝEàÝ$èéƒÄÙèÞñÝ]à‹E ÝÜMàÝ]è‹M ÝAÜMàÝ]ð‹U ÝBÜMàÝ]øEèPƒìÝEàÝ$‹MQèÐüÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌU‹ì¶EPƒìÝE Ý$èŒÝ$ƒìÝE Ý$èuÝ$‹MQè ƒÄ]ÃÌÌÌÌÌÌÌÌU‹ìQ¾E‰Eü‹MüƒéX‰Müƒ}ü"wo‹Uü¶‚àCÿ$…ÐCƒìÝEÝ$ƒìÝE Ý$‹MQ芃Äë>ƒìÝEÝ$ƒìÝE Ý$‹URèúƒÄëƒìÝEÝ$ƒìÝE Ý$‹EPèjƒÄ‹å]ÃIkC‹C«CÉCÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ì‹EÙèÝ‹MÙîÝY‹UÙîÝZ‹EÙîÝX‹MÙîÝY ‹UÝE ÝZ(‹EÝEÝX0‹MÙîÝY8‹UÙîÝZ@ÝEÙà‹EÝXH‹MÝE ÝYP‹UÙîÝZX‹EÙîÝX`‹MÙîÝYh‹UÙîÝZp‹EÙèÝXx]ÃÌÌÌÌÌÌU‹ì‹EÙèÝ‹MÙîÝY‹UÙîÝZ‹EÙîÝX‹MÙîÝY ‹UÝE ÝZ(‹EÝEÝX0‹MÙîÝY8‹UÙîÝZ@ÝEÙà‹EÝXH‹MÝE ÝYP‹UÙîÝZX‹EÙîÝX`‹MÙîÝYh‹UÙîÝZp‹EÙèÝXx]ÃÌÌÌÌÌÌU‹ì‹EÙèÝ‹MÙîÝY‹UÙîÝZ‹EÙîÝX‹MÙîÝY ‹UÝE ÝZ(‹EÝEÝX0‹MÙîÝY8‹UÙîÝZ@ÝEÙà‹EÝXH‹MÝE ÝYP‹UÙîÝZX‹EÙîÝX`‹MÙîÝYh‹UÙîÝZp‹EÙèÝXx]ÃÌÌÌÌÌÌU‹ì쀶EPƒìÝEÝ$M€Qè ýÿÿƒÄU€RÿÌà‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììHVÇEäÇ…lþÿÿÇ…(þÿÿÇ…Äþÿÿ¡ð‹HƒátÇ…dþÿÿÇ…lþÿÿ0sëÇ…dþÿÿÇ…lþÿÿ*ƒ}uÙîÝ]ÈÙèÝ]ÐÙîÝ]Øë‹UÝÝ]È‹EÝ@Ý]ЋMÝAÝ]Ø‹UR‹EPMÈQè¸ýþÿƒÄ ÙîÝHþÿÿÙîÝPþÿÿÙîÝXþÿÿÙîÝ]¨ÙîÝ]°ÙèÝ]¸‹UkÒ ‹EkÀÁà ЋUÑâ‘Pÿ°àƒÄ‰…|ÿÿÿ‹|ÿÿÿ‰$þÿÿ‹UkÒ‹…$þÿÿ Љhþÿÿ‹UkÒ‹…hþÿÿ Љÿÿÿ‹UkÒ‹…ÿÿÿ Љ¤þÿÿ‹UkÒ‹…¤þÿÿ ЉTÿÿÿ‹UkÒ‹…Tÿÿÿ Љ`þÿÿ‹UkÒ‹…`þÿÿ Љþÿÿ‹U‹…þÿÿ ‰MÀÇE€‹U€‰•Lýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝÜ$ÝÐýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜdÝØýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜdÝàýÿÿÝ…ÐýÿÿÜÐýÿÿÝ…ØýÿÿÜØýÿÿÞÁÝXÿÿÿÝ…àýÿÿÜàýÿÿÜ…XÿÿÿÝXÿÿÿƒìÝ…XÿÿÿÝ$è/‹ƒÄÝXÿÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝÜÝ(ýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜDÝ0ýÿÿ‹…LýÿÿƒÀkÀ‹LýÿÿkÉ‹U‹uÝDÜDÝ8ýÿÿÝ…(ýÿÿÜ(ýÿÿÝ…0ýÿÿÜ0ýÿÿÞÁÝ@ýÿÿÝ…8ýÿÿÜ8ýÿÿÜ…@ýÿÿÝ@ýÿÿƒìÝ…@ýÿÿÝ$èdŠƒÄÝ@ýÿÿÝ…@ýÿÿÜ PáÝ@ýÿÿ‹…LýÿÿƒÀ‰…LýÿÿÝ…@ýÿÿÜXÿÿÿßàöÄu‹Mƒé9LýÿÿŒ$þÿÿÝ…XÿÿÿÝ]èƒ}„ƒ}$…‹•$þÿÿ‰Uä‹E䉅hþÿÿÇ…Hýÿÿë‹HýÿÿƒÁ‰Hýÿÿ‹•Hýÿÿ;U}R‹…HýÿÿÁà‹HýÿÿkÉ‹Uä‹uÝÝÊ‹…HýÿÿÁà‹HýÿÿkÉ‹Uä‹uÝDÝ\Ê‹…HýÿÿkÀ‹MäÙîÝ\Áë”éÇ…Hýÿÿë‹•HýÿÿƒÂ‰•Hýÿÿ‹…Hýÿÿ;EW‹LýÿÿƒékÉ0‹U$ÙîÜ\ ßàöÄDzL‹…LýÿÿƒèkÀ0‹M$ÙîÜ\ßàöÄDz0‹•LýÿÿƒêkÒ0‹…LýÿÿƒèkÀ0‹M$‹u$ÝD ÜßàöÄD‹|‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝD Ü ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝDÜLÞé‹•HýÿÿkÒ‹…$þÿÿÝЋLýÿÿƒékÉ0‹U$ÝD Ùà‹…HýÿÿÁà‹MÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹uÝÜLÞÁ‹•HýÿÿkÒ‹…$þÿÿÝ\ЋHýÿÿkÉ‹•HýÿÿkÒ‹…$þÿÿ‹µ$þÿÿÝÈÜ Ö‹HýÿÿkÉ‹•HýÿÿkÒ‹…$þÿÿ‹µ$þÿÿÝDÈÜLÖÞÁÝ ýÿÿƒìÝ… ýÿÿÝ$èÀ‡ƒÄÙèÞñÝ ýÿÿ‹HýÿÿkÉ‹•$þÿÿÝÊÜ ýÿÿ‹…HýÿÿkÀ‹$þÿÿÝÁ‹•HýÿÿkÒ‹…$þÿÿÝDÐÜ ýÿÿ‹HýÿÿkÉ‹•$þÿÿÝ\ÊëD‹…HýÿÿÁà‹HýÿÿkÉ‹•$þÿÿ‹uÝÝÊ‹…HýÿÿÁà‹HýÿÿkÉ‹•$þÿÿ‹uÝDÝ\Ê‹…HýÿÿkÀ‹$þÿÿÙîÝ\Á‹•HýÿÿkÒ‹…hþÿÿÙîÝ\Ðé‹ýÿÿëÇEä‹Mä‰hþÿÿ‹•hþÿÿ‰•$þÿÿ‹…LýÿÿkÀEP‹M€kÉMQ‹U€ƒêkÒUR…pþÿÿPè´"ÿÿƒÄ‹M€kÉ‹U€ƒêkÒ‹E‹uÝÜ$Ýàüÿÿ‹M€kÉ‹U€ƒêkÒ‹E‹uÝDÜdÝèüÿÿ‹M€kÉ‹U€ƒêkÒ‹E‹uÝDÜdÝðüÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝÜ$Ýýÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝDÜdÝýÿÿ‹LýÿÿkÉ‹U€kÒ‹E‹uÝDÜdÝýÿÿÝ…àüÿÿÜàüÿÿÝ…èüÿÿÜèüÿÿÞÁÝýÿÿÝ…ðüÿÿÜðüÿÿÜ…ýÿÿÝýÿÿƒìÝ…ýÿÿÝ$者ƒÄÝýÿÿÝ…ýÿÿÜýÿÿÝ…ýÿÿÜýÿÿÞÁÝØüÿÿÝ…ýÿÿÜýÿÿÜ…ØüÿÿÝØüÿÿƒìÝ…ØüÿÿÝ$è.…ƒÄÝØüÿÿÝPáÜØüÿÿÜýÿÿßàöÄ…ˆÙîÜØüÿÿßàöÄDz)ÙîÝØþÿÿÝ…ØþÿÿÝÐþÿÿÝ…ÐþÿÿÝÈþÿÿÇE¤ëKÙèܵØüÿÿÝØüÿÿÝ…ØüÿÿÜýÿÿÝÈþÿÿÝ…ØüÿÿÜýÿÿÝÐþÿÿÝ…ØüÿÿÜýÿÿÝØþÿÿÇE¤éùÇE¤ÝPáÜýÿÿÜØüÿÿßàöÄuIÙèܵýÿÿÝýÿÿÝ…ýÿÿÜàüÿÿÝÈþÿÿÝ…ýÿÿÜèüÿÿÝÐþÿÿÝ…ýÿÿÜðüÿÿÝØþÿÿéÙèܵýÿÿÝýÿÿÝ…ýÿÿÜàüÿÿÝàüÿÿÝ…ýÿÿÜèüÿÿÝèüÿÿÝ…ýÿÿÜðüÿÿÝðüÿÿÙèܵØüÿÿÝØüÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…ØüÿÿÜýÿÿÝýÿÿÝ…àüÿÿÜ¥ýÿÿÝÈþÿÿÝ…èüÿÿÜ¥ýÿÿÝÐþÿÿÝ…ðüÿÿÜ¥ýÿÿÝØþÿÿÝ…ÈþÿÿÜÈþÿÿÝ…ÐþÿÿÜÐþÿÿÞÁÝøüÿÿÝ…ØþÿÿÜØþÿÿÜ…øüÿÿÝøüÿÿƒìÝ…øüÿÿÝ$胃ÄÝøüÿÿÝPáÜøüÿÿßàöÄAu)ÙîÝØþÿÿÝ…ØþÿÿÝÐþÿÿÝ…ÐþÿÿÝÈþÿÿÇE¤ëDÙèܵøüÿÿÝøüÿÿÝ…øüÿÿÜÈþÿÿÝÈþÿÿÝ…øüÿÿÜÐþÿÿÝÐþÿÿÝ…øüÿÿÜØþÿÿÝØþÿÿÝEÈÜpþÿÿÝEÐÜxþÿÿÞÁÝEØÜ€þÿÿÞÁÝÐüÿÿÝHáÜÐüÿÿÜpþÿÿÜmÈÝ]ÈÝHáÜÐüÿÿÜxþÿÿÜmÐÝ]ÐÝHáÜÐüÿÿÜ€þÿÿÜmØÝ]Ø‹Mƒé9Lýÿÿ!‹•Lýÿÿ‰U„‹E„ƒÀkÀ‹M„kÉ‹U‹uÝÜ$ÝÐýÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜdÝØýÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜdÝàýÿÿÝ…ÐýÿÿÜÐýÿÿÝ…ØýÿÿÜØýÿÿÞÁÝXÿÿÿÝ…àýÿÿÜàýÿÿÜ…XÿÿÿÝXÿÿÿƒìÝ…XÿÿÿÝ$èOƒÄÝXÿÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝÜݰüÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜDݸüÿÿ‹E„ƒÀkÀ‹M„kÉ‹U‹uÝDÜDÝÀüÿÿÝ…°üÿÿܰüÿÿÝ…¸üÿÿܸüÿÿÞÁÝÈüÿÿÝ…ÀüÿÿÜÀüÿÿÜ…ÈüÿÿÝÈüÿÿƒìÝ…ÈüÿÿÝ$è–€ƒÄÝÈüÿÿÝ…ÈüÿÿÜ PáÝÈüÿÿ‹E„ƒÀ‰E„Ý…ÈüÿÿÜXÿÿÿßàöÄu‹Mƒé9M„ŒQþÿÿ‹U„kÒUR‹…LýÿÿkÀEP‹M€kÉMQ•ÿÿÿRè=ÿÿƒÄ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝÜ$Ýpüÿÿ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝDÜdÝxüÿÿ‹…LýÿÿkÀ‹M€kÉ‹U‹uÝDÜdÝ€üÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝÜ$Ýüÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝDÜdݘüÿÿ‹E„kÀ‹LýÿÿkÉ‹U‹uÝDÜdÝ üÿÿÝ…püÿÿÜpüÿÿÝ…xüÿÿÜxüÿÿÞÁݨüÿÿÝ…€üÿÿÜ€üÿÿÜ…¨üÿÿݨüÿÿƒìÝ…¨üÿÿÝ$è ƒÄݨüÿÿÝ…üÿÿÜüÿÿÝ…˜üÿÿܘüÿÿÞÁÝhüÿÿÝ… üÿÿÜ üÿÿÜ…hüÿÿÝhüÿÿƒìÝ…hüÿÿÝ$è·~ƒÄÝhüÿÿÝPáÜhüÿÿܨüÿÿßàöÄuvÙîÜhüÿÿßàöÄDzÙîÝ]˜ÝE˜Ý]ÝEÝ]ˆÇ…,þÿÿëEÙèܵhüÿÿÝhüÿÿÝ…hüÿÿÜüÿÿÝ]ˆÝ…hüÿÿܘüÿÿÝ]Ý…hüÿÿÜ üÿÿÝ]˜Ç…,þÿÿéºÇ…,þÿÿÝPáܨüÿÿÜhüÿÿßàöÄu@Ùèܵ¨üÿÿݨüÿÿÝ…¨üÿÿÜpüÿÿÝ]ˆÝ…¨üÿÿÜxüÿÿÝ]Ý…¨üÿÿÜ€üÿÿÝ]˜éWÙèܵ¨üÿÿݨüÿÿÝ…¨üÿÿÜpüÿÿÝpüÿÿÝ…¨üÿÿÜxüÿÿÝxüÿÿÝ…¨üÿÿÜ€üÿÿÝ€üÿÿÙèܵhüÿÿÝhüÿÿÝ…hüÿÿÜüÿÿÝüÿÿÝ…hüÿÿܘüÿÿݘüÿÿÝ…hüÿÿÜ üÿÿÝ üÿÿÝ…püÿÿÜ¥üÿÿÝ]ˆÝ…xüÿÿÜ¥˜üÿÿÝ]Ý…€üÿÿÜ¥ üÿÿÝ]˜ÝEˆÜMˆÝEÜMÞÁ݈üÿÿÝE˜ÜM˜Ü…ˆüÿÿ݈üÿÿƒìÝ…ˆüÿÿÝ$èÐ|ƒÄ݈üÿÿÝPá܈üÿÿßàöÄAuÙîÝ]˜ÝE˜Ý]ÝEÝ]ˆÇ…,þÿÿë2Ùèܵˆüÿÿ݈üÿÿÝ…ˆüÿÿÜMˆÝ]ˆÝ…ˆüÿÿÜMÝ]Ý…ˆüÿÿÜM˜Ý]˜EÈP‹LýÿÿkÉMQ‹U€kÒUR…PýÿÿPèxƒÄÿÈàPýÿÿQÿÌàÝ…PýÿÿÜÈþÿÿÝ…XýÿÿÜÐþÿÿÞÁÝ…`ýÿÿÜØþÿÿÞÁÝàþÿÿÝ…pýÿÿÜÈþÿÿÝ…xýÿÿÜÐþÿÿÞÁÝ…€ýÿÿÜØþÿÿÞÁÝèþÿÿÝ…ýÿÿÜÈþÿÿÝ…˜ýÿÿÜÐþÿÿÞÁÝ… ýÿÿÜØþÿÿÞÁÝðþÿÿÝ…PýÿÿÜMˆÝ…XýÿÿÜMÞÁÝ…`ýÿÿÜM˜ÞÁ݈þÿÿÝ…pýÿÿÜMˆÝ…xýÿÿÜMÞÁÝ…€ýÿÿÜM˜ÞÁÝþÿÿÝ…ýÿÿÜMˆÝ…˜ýÿÿÜMÞÁÝ… ýÿÿÜM˜ÞÁݘþÿÿÝ…PýÿÿÜpþÿÿÝ…XýÿÿÜxþÿÿÞÁÝ…`ýÿÿÜ€þÿÿÞÁݨþÿÿÝ…pýÿÿÜpþÿÿÝ…xýÿÿÜxþÿÿÞÁÝ…€ýÿÿÜ€þÿÿÞÁݰþÿÿÝ…ýÿÿÜpþÿÿÝ…˜ýÿÿÜxþÿÿÞÁÝ… ýÿÿÜ€þÿÿÞÁݸþÿÿÝ…PýÿÿÜÿÿÿÝ…XýÿÿÜÿÿÿÞÁÝ…`ýÿÿÜÿÿÿÞÁÝ ÿÿÿÝ…pýÿÿÜÿÿÿÝ…xýÿÿÜÿÿÿÞÁÝ…€ýÿÿÜÿÿÿÞÁÝ(ÿÿÿÝ…ýÿÿÜÿÿÿÝ…˜ýÿÿÜÿÿÿÞÁÝ… ýÿÿÜÿÿÿÞÁÝ0ÿÿÿÝEèÙàÝ]¸Ç…Hýÿÿë‹•HýÿÿƒÂ‰•Hýÿÿ‹…Hýÿÿ;E¦ƒ}$…±‹HýÿÿÁá‹U Ý Ý8ÿÿÿ‹…HýÿÿÁà‹M ÝDÝ@ÿÿÿ‹•HýÿÿÁâ‹E ÝÝþÿÿ‹HýÿÿÁá‹U ÝD Ýþÿÿ‹…HýÿÿÁà‹M ÝÝ`ÿÿÿ‹•HýÿÿÁâ‹E ÝDÝhÿÿÿ‹HýÿÿÁá‹U Ý Ý0þÿÿ‹…HýÿÿÁà‹M ÝDÝ8þÿÿéò‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜLÞÁ‹•LýÿÿƒêkÒ0‹E$ÜDÝ8ÿÿÿ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜ ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹LýÿÿƒékÉ0‹U$ÜD (Ý@ÿÿÿ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝÜ ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝDÜLÞÁ‹…LýÿÿkÀ0‹M$ÜDÝ`ÿÿÿ‹•LýÿÿkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜ ‹•LýÿÿkÒ0‹…HýÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•LýÿÿkÒ0‹E$ÜD(Ýhÿÿÿ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹u ÝÜ ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜLÞÁ‹LýÿÿkÉ0‹U$ÜD Ýþÿÿ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝDÜ ‹…LýÿÿkÀ0‹HýÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…LýÿÿkÀ0‹M$ÜD(Ýþÿÿ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝÜ ‹•LýÿÿƒêkÒ0‹…HýÿÿÁà‹M$‹u ÝDÜLÞÁ‹•LýÿÿƒêkÒ0‹E$ÜDÝ0þÿÿ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝDÜ ‹LýÿÿƒékÉ0‹•HýÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹LýÿÿƒékÉ0‹U$ÜD (Ý8þÿÿƒ}„‹…LýÿÿkÀ0‹M$ÙîÜ\ßàöÄDzC‹•LýÿÿkÒ0‹E$ÙîÜ\ßàöÄDz*‹LýÿÿkÉ0‹•LýÿÿkÒ0‹E$‹u$ÝD ÜßàöÄD‹p‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝD Ü ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝDÜLÞé‹HýÿÿkÉ‹•hþÿÿÝÊ‹…LýÿÿkÀ0‹M$ÝDÙà‹•HýÿÿÁâ‹EÜ ‹LýÿÿkÉ0‹•HýÿÿÁâ‹E$‹uÝÜLÞÁ‹HýÿÿkÉ‹•hþÿÿÝ\Ê‹…HýÿÿkÀ‹HýÿÿkÉ‹•hþÿÿ‹µhþÿÿÝÂÜ Î‹…HýÿÿkÀ‹HýÿÿkÉ‹•hþÿÿ‹µhþÿÿÝDÂÜLÎÞÁÝ`üÿÿƒìÝ…`üÿÿÝ$èåtƒÄÙèÞñÝ`üÿÿ‹…HýÿÿkÀ‹hþÿÿÝÁÜ`üÿÿ‹•HýÿÿkÒ‹…hþÿÿÝЋHýÿÿkÉ‹•hþÿÿÝDÊÜ`üÿÿ‹…HýÿÿkÀ‹hþÿÿÝ\ÁëD‹•HýÿÿÁâ‹…HýÿÿkÀ‹hþÿÿ‹uÝÝÁ‹•HýÿÿÁâ‹…HýÿÿkÀ‹hþÿÿ‹uÝDÝ\ÁÙîÝHÿÿÿÙîÝpÿÿÿÝEèÙàÝþÿÿÝEèÙàÝ@þÿÿƒ}¤„oƒ½dþÿÿ„bÝ…8ÿÿÿÜ¥þÿÿÜàþÿÿÝ@üÿÿÝ…@ÿÿÿÜ¥þÿÿÜèþÿÿÜ…@üÿÿÝ@üÿÿÝ…HÿÿÿÜ¥þÿÿÜðþÿÿÜ…@üÿÿÝ@üÿÿÙîÜ@üÿÿßàöÄDz3Ç…\üÿÿÝ…8ÿÿÿÝàþÿÿÝ…@ÿÿÿÝèþÿÿÝ…HÿÿÿÝðþÿÿéÇ…\üÿÿÝ…HþÿÿÜ¥þÿÿÜàþÿÿÝHüÿÿÝ…PþÿÿÜ¥þÿÿÜèþÿÿÜ…HüÿÿÝHüÿÿÝ…XþÿÿÜ¥þÿÿÜðþÿÿÜ…HüÿÿÝHüÿÿÝ…Hüÿÿܵ@üÿÿÝ8üÿÿÙèÜ¥8üÿÿÝPüÿÿÝ…8üÿÿÜ PáÜáßàöÄAtÝ…8üÿÿÜ PáÜáßàöÄz Ç…\üÿÿÝ…8üÿÿÜ8ÿÿÿÝ…PüÿÿÜþÿÿÞÁÝèýÿÿÝ…8üÿÿÜ@ÿÿÿÝ…PüÿÿÜþÿÿÞÁÝðýÿÿÝ…8üÿÿÜHÿÿÿÝ…PüÿÿÜþÿÿÞÁÝøýÿÿÙîÜðþÿÿßàöÄAu6ÝáÜàþÿÿÝàþÿÿÝáÜèþÿÿÝèþÿÿÝáÜðþÿÿÝðþÿÿÝ…àþÿÿÜ8ÿÿÿÝ]ðÝ…èþÿÿÜ@ÿÿÿÜEðÝ]ð‹•HýÿÿkÒ‹…ÿÿÿÝ…èýÿÿÝЋHýÿÿkÉ‹•ÿÿÿÝ…ðýÿÿÝ\Ê‹…HýÿÿkÀ‹ÿÿÿÝ…øýÿÿÝ\ÁëOÙèÝ]ð‹•HýÿÿkÒ‹…ÿÿÿÝ…8ÿÿÿÝЋHýÿÿkÉ‹•ÿÿÿÝ…@ÿÿÿÝ\Ê‹…HýÿÿkÀ‹ÿÿÿÝ…HÿÿÿÝ\ÁÝ…8ÿÿÿÜ¥0þÿÿܨþÿÿÝüÿÿÝ…@ÿÿÿÜ¥8þÿÿܰþÿÿÜ…üÿÿÝüÿÿÝ…HÿÿÿÜ¥@þÿÿܸþÿÿÜ…üÿÿÝüÿÿÙîÜüÿÿßàöÄDz3Ç…4üÿÿÝ…8ÿÿÿݨþÿÿÝ…@ÿÿÿݰþÿÿÝ…HÿÿÿݸþÿÿéÇ…4üÿÿÝ…HþÿÿÜ¥0þÿÿܨþÿÿÝ üÿÿÝ…PþÿÿÜ¥8þÿÿܰþÿÿÜ… üÿÿÝ üÿÿÝ…XþÿÿÜ¥@þÿÿܸþÿÿÜ… üÿÿÝ üÿÿÝ… üÿÿܵüÿÿÝüÿÿÙèÜ¥üÿÿÝ(üÿÿÝ…üÿÿÜ PáÜáßàöÄAtÝ…üÿÿÜ PáÜáßàöÄz Ç…4üÿÿÝ…üÿÿÜ8ÿÿÿÝ…(üÿÿÜ0þÿÿÞÁÝèýÿÿÝ…üÿÿÜ@ÿÿÿÝ…(üÿÿÜ8þÿÿÞÁÝðýÿÿÝ…üÿÿÜHÿÿÿÝ…(üÿÿÜ@þÿÿÞÁÝøýÿÿÙîÜ]ðßàöÄt$‹•HýÿÿkÒ‹…ÿÿÿÝDÐÜøýÿÿßàöÄA…Ï‹HýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝÎÝЋHýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝDÎÝ\ЋHýÿÿkÉ‹•HýÿÿkÒ‹…Tÿÿÿ‹µÿÿÿÝDÎÝ\ЋHýÿÿkÉ‹•ÿÿÿÝ…èýÿÿÝÊ‹…HýÿÿkÀ‹ÿÿÿÝ…ðýÿÿÝ\Á‹•HýÿÿkÒ‹…ÿÿÿÝ…øýÿÿÝ\ЋHýÿÿ‹•þÿÿÇŠë‹…Hýÿÿ‹þÿÿÇ‹•HýÿÿkÒÝEèÙà‹…ÿÿÿÜ\ÐßàöÄAuJ‹HýÿÿkÉ‹•ÿÿÿÝ…þÿÿÝÊ‹…HýÿÿkÀ‹ÿÿÿÝ…þÿÿÝ\Á‹•HýÿÿkÒ‹…ÿÿÿÝ…þÿÿÝ\Ѓ½,þÿÿ„fƒ½dþÿÿ„YÝ…þÿÿÜ¥8ÿÿÿ܈þÿÿÝðûÿÿÝ…þÿÿÜ¥@ÿÿÿÜþÿÿÜ…ðûÿÿÝðûÿÿÝ…þÿÿÜ¥HÿÿÿܘþÿÿÜ…ðûÿÿÝðûÿÿÙîÜðûÿÿßàöÄDz3Ç… üÿÿÝ…þÿÿ݈þÿÿÝ…þÿÿÝþÿÿÝ…þÿÿݘþÿÿéÇ… üÿÿÝE¨Ü¥8ÿÿÿ܈þÿÿÝøûÿÿÝE°Ü¥@ÿÿÿÜþÿÿÜ…øûÿÿÝøûÿÿÝE¸Ü¥HÿÿÿܘþÿÿÜ…øûÿÿÝøûÿÿÝ…øûÿÿܵðûÿÿÝèûÿÿÙèÜ¥èûÿÿÝüÿÿÝ…èûÿÿÜ PáÜáßàöÄAtÝ…èûÿÿÜ PáÜáßàöÄz Ç… üÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜ8ÿÿÿÞÁÝèýÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜ@ÿÿÿÞÁÝðýÿÿÝ…èûÿÿÜþÿÿÝ…üÿÿÜHÿÿÿÞÁÝøýÿÿÙîܘþÿÿßàöÄz6Ýá܈þÿÿ݈þÿÿÝáÜþÿÿÝþÿÿÝáܘþÿÿݘþÿÿÝ…ˆþÿÿÜþÿÿÝ]ðÝ…þÿÿÜþÿÿÜEðÝ]ð‹HýÿÿkÉ‹•¤þÿÿÝ…èýÿÿÝÊ‹…HýÿÿkÀ‹¤þÿÿÝ…ðýÿÿÝ\Á‹•HýÿÿkÒ‹…¤þÿÿÝ…øýÿÿÝ\ÐëOÙèÝ]ð‹HýÿÿkÉ‹•¤þÿÿÝ…þÿÿÝÊ‹…HýÿÿkÀ‹¤þÿÿÝ…þÿÿÝ\Á‹•HýÿÿkÒ‹…¤þÿÿÝ…þÿÿÝ\ÐÝ…`ÿÿÿÜ¥þÿÿÜ ÿÿÿÝÈûÿÿÝ…hÿÿÿÜ¥þÿÿÜ(ÿÿÿÜ…ÈûÿÿÝÈûÿÿÝ…pÿÿÿÜ¥þÿÿÜ0ÿÿÿÜ…ÈûÿÿÝÈûÿÿÙîÜÈûÿÿßàöÄDz3Ç…äûÿÿÝ…`ÿÿÿÝ ÿÿÿÝ…hÿÿÿÝ(ÿÿÿÝ…pÿÿÿÝ0ÿÿÿéÇ…äûÿÿÝE¨Ü¥þÿÿÜ ÿÿÿÝÐûÿÿÝE°Ü¥þÿÿÜ(ÿÿÿÜ…ÐûÿÿÝÐûÿÿÝE¸Ü¥þÿÿÜ0ÿÿÿÜ…ÐûÿÿÝÐûÿÿÝ…ÐûÿÿܵÈûÿÿÝÀûÿÿÙèÜ¥ÀûÿÿÝØûÿÿÝ…ÀûÿÿÜ PáÜáßàöÄAtÝ…ÀûÿÿÜ PáÜáßàöÄz Ç…äûÿÿÝ…ÀûÿÿÜ`ÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝèýÿÿÝ…ÀûÿÿÜhÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝðýÿÿÝ…ÀûÿÿÜpÿÿÿÝ…ØûÿÿÜþÿÿÞÁÝøýÿÿÙîÜ]ðßàöÄt$‹HýÿÿkÉ‹•¤þÿÿÝDÊÜøýÿÿßàöÄŠÌ‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝÆÝÊ‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝDÆÝ\Ê‹…HýÿÿkÀ‹HýÿÿkÉ‹•`þÿÿ‹µ¤þÿÿÝDÆÝ\Ê‹…HýÿÿkÀ‹¤þÿÿÝ…èýÿÿÝÁ‹•HýÿÿkÒ‹…¤þÿÿÝ…ðýÿÿÝ\ЋHýÿÿkÉ‹•¤þÿÿÝ…øýÿÿÝ\Ê‹…Hýÿÿ‹MÀÇë‹•Hýÿÿ‹EÀÇ‹HýÿÿkÉ‹•¤þÿÿÙîÜ\ÊßàöÄzJ‹…HýÿÿkÀ‹¤þÿÿÝ…8ÿÿÿÝÁ‹•HýÿÿkÒ‹…¤þÿÿÝ…@ÿÿÿÝ\ЋHýÿÿkÉ‹•¤þÿÿÝ…HÿÿÿÝ\Êé<îÿÿƒ}$…ƒ} …¯ƒ}u/ƒìÝ…XÿÿÿÝ$‹…LýÿÿP‹¤þÿÿQ‹•ÿÿÿR‹EPèi¤þÿƒÄëu‹ ð‹Qât3ƒìÝ…XÿÿÿÝ$‹…LýÿÿP‹MäQ‹•¤þÿÿR‹…ÿÿÿP‹MQèÕªþÿƒÄë1ƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹EäP‹¤þÿÿQ‹•ÿÿÿR‹EPè¦þÿƒÄéƒ}uOƒìÝ…XÿÿÿÝ$‹LýÿÿQ‹•LýÿÿkÒ U R‹…LýÿÿƒèkÀ E P‹¤þÿÿQ‹•ÿÿÿR‹EPèí¤þÿƒÄ 鯋 ð‹QâtPƒìÝ…XÿÿÿÝ$‹…LýÿÿP‹LýÿÿkÉ M Q‹•LýÿÿƒêkÒ U R‹EäP‹¤þÿÿQ‹•ÿÿÿR‹EP蹬þÿƒÄ$ëNƒìÝ…XÿÿÿÝ$‹LýÿÿQ‹•LýÿÿkÒ U R‹…LýÿÿƒèkÀ E P‹MäQ‹•¤þÿÿR‹…ÿÿÿP‹MQèi§þÿƒÄ$éæƒ} …Ń}u2ƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹…¤þÿÿP‹ÿÿÿQ‹URè§¢þÿƒÄ鈡ð‹Hát=ƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQèw´þÿƒÄ ë;ƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQèú¯þÿƒÄ éƒ}uOƒìÝ…XÿÿÿÝ$‹•LýÿÿR‹…LýÿÿkÀ E P‹LýÿÿƒékÉ M Q‹•¤þÿÿR‹…ÿÿÿP‹MQè£þÿƒÄ é‹ð‹B%tZƒìÝ…XÿÿÿÝ$‹LýÿÿQ‹•LýÿÿkÒ U R‹…LýÿÿƒèkÀ E P‹hþÿÿQ‹•$þÿÿR‹…¤þÿÿP‹ÿÿÿQ‹UR舷þÿƒÄ(ëXƒìÝ…XÿÿÿÝ$‹…LýÿÿP‹LýÿÿkÉ M Q‹•LýÿÿƒêkÒ U R‹…hþÿÿP‹$þÿÿQ‹•¤þÿÿR‹…ÿÿÿP‹MQèî°þÿƒÄ(ƒ½ÄþÿÿtcÇ…Äþÿÿ‹•lþÿÿ‰•(þÿÿÇ…lþÿÿP}¡ð‹Hƒát6ƒ} t‹•LýÿÿƒêkÒ U RÿÜà‹…ÿÿÿP¨þÿÿQ‹URèò,ƒÄ ƒ} t&‹…LýÿÿƒèkÀ E ‰EÄ‹LýÿÿkÉ M ‰üþÿÿëÇEÄÇ…üþÿÿƒ}…'ƒ}¤t •àþÿÿ‰UüëÇEü‹…lþÿÿPj‹MüQ‹•üþÿÿR‹EÄP¨þÿÿQ•HþÿÿR‹…þÿÿP‹TÿÿÿQ‹•ÿÿÿR‹EPèL ƒÄ,‹Mƒé9LýÿÿuM‹ð‹Bƒàt=ƒ} t‹LýÿÿkÉ M QÿÜà‹•¤þÿÿR… ÿÿÿP‹MQè 1ƒÄ Ç…lþÿÿP}ë ‹•(þÿÿ‰•lþÿÿƒ½,þÿÿt …ˆþÿÿ‰EüëÇEü‹lþÿÿQj‹UüR‹EÄP‹üþÿÿQ• ÿÿÿRE¨P‹MÀQ‹•`þÿÿR‹…¤þÿÿP‹MQè‰ ƒÄ,é/ƒ}¤t •àþÿÿ‰UüëÇEü‹…lþÿÿPj‹MüQ‹•üþÿÿR‹EÄP‹$þÿÿQ•¨þÿÿR…HþÿÿP‹þÿÿQ‹•TÿÿÿR‹…ÿÿÿP‹MQè>ƒÄ0‹Uƒê9•LýÿÿuL¡ð‹Hƒát=ƒ} t‹•LýÿÿkÒ U RÿÜà‹…¤þÿÿP ÿÿÿQ‹URèà/ƒÄ Ç…lþÿÿP}ë ‹…(þÿÿ‰…lþÿÿƒ½,þÿÿt ˆþÿÿ‰MüëÇEü‹•lþÿÿRj‹EüP‹MÄQ‹•üþÿÿR‹…hþÿÿP ÿÿÿQU¨R‹EÀP‹`þÿÿQ‹•¤þÿÿR‹EPèuƒÄ0ÿÐà‹$þÿÿ‰ÿÿÿ‹•hþÿÿ‰•$þÿÿ‹…ÿÿÿ‰…hþÿÿÝ…XÿÿÿÝ]è‹Lýÿÿ‰M€‹U„‰•LýÿÿÝ…ÿÿÿÝpþÿÿÝ…ÿÿÿÝxþÿÿÝ…ÿÿÿÝ€þÿÿÝEˆÝÈþÿÿÝEÝÐþÿÿÝE˜ÝØþÿÿ‹…,þÿÿ‰E¤ÝEÈÜpþÿÿÝEÐÜxþÿÿÞÁÝEØÜ€þÿÿÞÁݸûÿÿÝHáܸûÿÿÜpþÿÿÜmÈÝ]ÈÝHáܸûÿÿÜxþÿÿÜmÐÝ]ÐÝHáܸûÿÿÜ€þÿÿÜmØÝ]ØéoÞÿÿ‹|ÿÿÿQÿ´àƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììhVÇEüÇEôè;`‰Eð¡ààPh‡‹MðQè`‹äàRh‡‹EðPè `‹ èàQh‡‹UðRèô_ƒ}t ‹EPÿÜàƒ} „©ƒ}tk‹MÙîÜYßàöÄAu4‹UÝáÜ ‹EÝ‹MÝáÜI‹UÝZ‹EÝáÜH‹MÝY‹ðƒzt‹EP‹ ð‹Qÿ҃ċEPÿØà‹MðQèZ_ÇEô‹UƒêkÒU ‰UüÇEøë ‹EøƒÀ‰Eø‹Mƒé9Møá‹UøkÒ‹E ‹MüÝÜ!Ý]¨‹UøkÒ‹E ‹MüÝDÜaÝ]°‹UøkÒ‹E ‹MüÝDÜaÝ]¸‹UøƒÂkÒ‹EøkÀ‹M ‹u ÝÜ$Ý]À‹UøƒÂkÒ‹EøkÀ‹M ‹u ÝDÜdÝ]È‹UøƒÂkÒ‹EøkÀ‹M ‹u ÝDÜdÝ]ÐÝE¨ÜM¨ÝE°ÜM°ÞÁÝE¸ÜM¸ÞÁÝ]ØÝEÀÜMÀÝEÈÜMÈÞÁÝEÐÜMÐÞÁÝ] ÝPáÜMØÜ] ßàöÄu Ç…Äþÿÿë Ç…Äþÿÿ‹•Äþÿÿ‰Uìƒ}ìuÝPáÜM Ü]ØßàöÄt Ç…Àþÿÿë Ç…Àþÿÿ‹…Àþÿÿ‰EìÝE¨ÜMÀÝE°ÜMÈÞÁÝE¸ÜMÐÞÁÝ]àƒ}ìu5ÝEØÜM ÝEàÜMàÞéÝEØÜM Ü PáÜ PáÞÙßàöÄt Ç…¼þÿÿë Ç…¼þÿÿ‹¼þÿÿ‰Mìƒ}ìu5‹UøkÒU R‹EøkÀE P‹MðQèY]‹UøkÒU ‰Uüƒ}ôu‹Eü‰Eôéþÿÿƒ}ôu‹M ‰Mô‹UƒêkÒ‹E ‹MüÝÜ!Ý`ÿÿÿ‹UƒêkÒ‹E ‹MüÝDÜaÝhÿÿÿ‹UƒêkÒ‹E ‹MüÝDÜaÝpÿÿÿ‹UƒêkÒ‹Eô‹M ÝÜ$Ýxÿÿÿ‹UƒêkÒ‹Eô‹M Ý@ÜdÝ]€‹UƒêkÒ‹Eô‹M Ý@ÜdÝ]ˆÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜhÿÿÿÞÁÝ…pÿÿÿÜpÿÿÿÞÁÝ]Ý…xÿÿÿÜxÿÿÿÝE€ÜM€ÞÁÝEˆÜMˆÞÁÝXÿÿÿÝPáÜMÜXÿÿÿßàöÄu Ç…¸þÿÿë Ç…¸þÿÿ‹•¸þÿÿ‰Uìƒ}ìu"ÝPáÜXÿÿÿÜ]ßàöÄt Ç…´þÿÿë Ç…´þÿÿ‹…´þÿÿ‰EìÝ…`ÿÿÿÜxÿÿÿÝ…hÿÿÿÜM€ÞÁÝ…pÿÿÿÜMˆÞÁÝ]˜ƒ}ìu;ÝEÜXÿÿÿÝE˜ÜM˜ÞéÝEÜXÿÿÿÜ PáÜ PáÞÙßàöÄt Ç…°þÿÿë Ç…°þÿÿ‹°þÿÿ‰Mìƒ}ìu#‹UƒêkÒU R‹EƒèkÀE P‹MðQè3[‹UðRè$[éñƒ}tj‹EÙîÜXßàöÄz4‹MÝáÜ ‹UÝ‹EÝáÜH‹MÝY‹UÝáÜJ‹EÝX‹ ðƒyt‹UR¡ð‹HÿуÄ‹URÿØà‹EðPè²ZÇEô‹M ‰Mü‹Uƒê‰Uøë ‹Eøƒè‰Eøƒ}øŽP‹MøkÉ‹U ‹EüÝ Ü Ýÿÿÿ‹MøkÉ‹U ‹EüÝD Ü`Ý ÿÿÿ‹MøkÉ‹U ‹EüÝD Ü`Ý(ÿÿÿ‹MøƒékÉ‹UøkÒ‹E ‹u ÝÜ$Ý0ÿÿÿ‹MøƒékÉ‹UøkÒ‹E ‹u ÝDÜdÝ8ÿÿÿ‹MøƒékÉ‹UøkÒ‹E ‹u ÝDÜdÝ@ÿÿÿÝ…ÿÿÿÜÿÿÿÝ… ÿÿÿÜ ÿÿÿÞÁÝ…(ÿÿÿÜ(ÿÿÿÞÁÝHÿÿÿÝ…0ÿÿÿÜ0ÿÿÿÝ…8ÿÿÿÜ8ÿÿÿÞÁÝ…@ÿÿÿÜ@ÿÿÿÞÁÝÿÿÿÝPáÜHÿÿÿÜÿÿÿßàöÄu Ç…¬þÿÿë Ç…¬þÿÿ‹¬þÿÿ‰Mìƒ}ìu%ÝPáÜÿÿÿÜHÿÿÿßàöÄt Ç…¨þÿÿë Ç…¨þÿÿ‹•¨þÿÿ‰UìÝ…ÿÿÿÜ0ÿÿÿÝ… ÿÿÿÜ8ÿÿÿÞÁÝ…(ÿÿÿÜ@ÿÿÿÞÁÝPÿÿÿƒ}ìuGÝ…HÿÿÿÜÿÿÿÝ…PÿÿÿÜPÿÿÿÞéÝ…HÿÿÿÜÿÿÿÜ PáÜ PáÞÙßàöÄt Ç…¤þÿÿë Ç…¤þÿÿ‹…¤þÿÿ‰Eìƒ}ìu5‹MøkÉM Q‹UøkÒU R‹EðPèNX‹MøkÉM ‰Müƒ}ôu‹Uü‰Uôéýÿÿƒ}ôu‹EƒèkÀE ‰Eô‹M ‹UüÝÜ"ÝÐþÿÿ‹E ‹MüÝ@ÜaÝØþÿÿ‹U ‹EüÝBÜ`Ýàþÿÿ‹Mô‹U ÝÜ"Ýèþÿÿ‹Eô‹M Ý@ÜaÝðþÿÿ‹Uô‹E ÝBÜ`ÝøþÿÿÝ…ÐþÿÿÜÐþÿÿÝ…ØþÿÿÜØþÿÿÞÁÝ…àþÿÿÜàþÿÿÞÁÝÿÿÿÝ…èþÿÿÜèþÿÿÝ…ðþÿÿÜðþÿÿÞÁÝ…øþÿÿÜøþÿÿÞÁÝÈþÿÿÝPáÜÿÿÿÜÈþÿÿßàöÄu Ç… þÿÿë Ç… þÿÿ‹ þÿÿ‰Mìƒ}ìu%ÝPáÜÈþÿÿÜÿÿÿßàöÄt Ç…œþÿÿë Ç…œþÿÿ‹•œþÿÿ‰UìÝ…ÐþÿÿÜèþÿÿÝ…ØþÿÿÜðþÿÿÞÁÝ…àþÿÿÜøþÿÿÞÁÝÿÿÿƒ}ìuGÝ…ÿÿÿÜÈþÿÿÝ…ÿÿÿÜÿÿÿÞéÝ…ÿÿÿÜÈþÿÿÜ PáÜ PáÞÙßàöÄt Ç…˜þÿÿë Ç…˜þÿÿ‹…˜þÿÿ‰Eìƒ}ìu‹M Q‹U R‹EðPè=V‹MðQè.V‹UðRèV^‹å]ÃU‹ì]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ììèVÇEÀÇE´‹EƒÀkÀÁàPÿ°àƒÄ‰E¸è®ÿÿ‰EÀÇE¼ÇEü‹Mƒ9… ‹ð‹Bƒà„¦‹MÀá…—‹U ‹EÝÜÝ]È‹M ‹UÝAÜBÝ]ЋE ‹MÝ@ÜAÝ]Ø‹U ÝÜeÈ‹EÜÝ]˜‹M ÝAÜeЋUÜJÜE˜Ý]˜‹E Ý@ÜeØ‹MÜIÜE˜Ý]˜ÙîÜ]˜ßàöÄDz.ÇE°‹U‹E ÝÝ‹M‹U ÝBÝY‹E‹M ÝAÝXéÀÇE°‹UÝÜeÈ‹EÜÝ] ‹MÝAÜeЋUÜJÜE Ý] ‹EÝ@ÜeØ‹MÜIÜE Ý] ÝE Üu˜Ý]ÙèÜeÝ]¨ÝEÜ PáÜáßàöÄAtÝEÜ PáÜáßàöÄzÇE°‹U ÝEÜ ÝE¨ÜMÈÞÁÝ]à‹E ÝEÜHÝE¨ÜMÐÞÁÝ]è‹M ÝEÜIÝE¨ÜMØÞÁÝ]ð‹UükÒ‹E¸ÝEàÝЋMükÉ‹U¸ÝEèÝ\Ê‹EükÀ‹M¸ÝEðÝ\Á‹UüƒÂ‰Uü‹EükÀ‹M¸‹U ÝÝÁ‹EükÀ‹M¸‹U ÝBÝ\Á‹EükÀ‹M¸‹U ÝBÝ\Á‹EüƒÀ‰Eü‹M¼‰Mø‹U¼ƒÂ‰U¼ë>ÇE´‹E¼‹Mƒ<t+‹U¼‰Uø‹E¼ƒÀ‰E¼‹M¼;M|‹U¸Rÿ´àƒÄé@ ëÉ¡ð‹Hát‹U‰UÄë ‹Eƒè‰EÄ‹MÀáÿïÿÿQèV«ÿÿƒÄë‹UøƒÂ‰Uø‹E¼ƒÀ‰E¼‹E¼™÷}‰U¼‹Mø;MÄ$‹Eø‹Mƒ<„Ï‹U¼‹Eƒ<…¿‹MøkÉ‹U¼kÒ‹E‹u ÝÜ$‹MÜ Ýpÿÿÿ‹UøkÒ‹E¼kÀ‹M‹u ÝDÜd‹UÜJÜ…pÿÿÿÝpÿÿÿ‹EøkÀ‹M¼kÉ‹U‹u ÝDÜd‹EÜHÜ…pÿÿÿÝpÿÿÿÙîÜpÿÿÿßàöÄDzCÇEŒ‹MøkÉ‹U‹EÝÝ‹MøkÉ‹U‹EÝDÝZ‹MøkÉ‹U‹EÝDÝZé9ÇEŒ‹M¼kÉ‹U‹E ÝÜ$‹MÜ Ýxÿÿÿ‹U¼kÒ‹E‹M Ý@Üd‹UÜJÜ…xÿÿÿÝxÿÿÿ‹E¼kÀ‹M‹U ÝAÜd‹EÜHÜ…xÿÿÿÝxÿÿÿÝ…xÿÿÿܵpÿÿÿÝhÿÿÿÙèÜ¥hÿÿÿÝ]€Ý…hÿÿÿÜ PáÜáßàöÄAtÝ…hÿÿÿÜ PáÜáßàöÄzÇEŒ‹MøkÉ‹UÝ…hÿÿÿÜ ‹E¼kÀ‹M ÝE€Ü ÞÁÝ]à‹UøkÒ‹EÝ…hÿÿÿÜL‹M¼kÉ‹U ÝE€ÜL ÞÁÝ]è‹EøkÀ‹MÝ…hÿÿÿÜL‹U¼kÒ‹E ÝE€ÜLÞÁÝ]ð‹M$Q‹U R‹E,PMàQ‹U¼kÒU R‹EøkÀE P蚃ċMükÉ‹U¸ÝEàÝÊ‹EükÀ‹M¸ÝEèÝ\Á‹UükÒ‹E¸ÝEðÝ\ЋMüƒÁ‰Mü‹U¼kÒ‹EükÀ‹M¸‹u ÝÝÁ‹U¼kÒ‹EükÀ‹M¸‹u ÝDÝ\Á‹U¼kÒ‹EükÀ‹M¸‹u ÝDÝ\Á‹UüƒÂ‰Uü‹Eø‹Mƒ<ua‹U¼‹Eƒ<uU‹M¼kÉ‹UükÒ‹E¸‹u ÝÝЋM¼kÉ‹UükÒ‹E¸‹u ÝDÝ\ЋM¼kÉ‹UükÒ‹E¸‹u ÝDÝ\ЋMüƒÁ‰Mü‹Uø‹Eƒ<…ËM¼‹Uƒ<Š„³ÇE´‹EøkÀ‹M¼kÉ‹U ‹uÝÜ$‹EÜÝHÿÿÿ‹MøkÉ‹U¼kÒ‹E ‹uÝDÜd‹MÜIÜ…HÿÿÿÝHÿÿÿ‹UøkÒ‹E¼kÀ‹M ‹uÝDÜd‹UÜJÜ…HÿÿÿÝHÿÿÿÙîÜHÿÿÿßàöÄDzFÇ…dÿÿÿ‹EøkÀ‹M‹U ÝÝ‹EøkÀ‹M‹U ÝDÝY‹EøkÀ‹M‹U ÝDÝYéKÇ…dÿÿÿ‹E¼kÀ‹M‹UÝÜ$‹EÜÝPÿÿÿ‹M¼kÉ‹U‹EÝBÜd‹MÜIÜ…PÿÿÿÝPÿÿÿ‹U¼kÒ‹E‹MÝ@Üd‹UÜJÜ…PÿÿÿÝPÿÿÿÝ…PÿÿÿܵHÿÿÿÝ@ÿÿÿÙèÜ¥@ÿÿÿÝXÿÿÿÝ…@ÿÿÿÜ PáÜáßàöÄAtÝ…@ÿÿÿÜ PáÜáßàöÄz Ç…dÿÿÿ‹EøkÀ‹M Ý…@ÿÿÿÜ ‹U¼kÒ‹EÝ…XÿÿÿÜ ÞÁÝ]à‹MøkÉ‹U Ý…@ÿÿÿÜL ‹E¼kÀ‹MÝ…XÿÿÿÜLÞÁÝ]è‹UøkÒ‹E Ý…@ÿÿÿÜL‹M¼kÉ‹UÝ…XÿÿÿÜL ÞÁÝ]ð‹E$P‹M Q‹U,REàP‹M¼kÉM Q‹UøkÒU Rè2ƒÄ‹EükÀ‹M¸ÝEàÝÁ‹UükÒ‹E¸ÝEèÝ\ЋMükÉ‹U¸ÝEðÝ\Ê‹EüƒÀ‰Eüƒ}ü| ‹M,Qj‹UR‹E(P‹M Q‹U¸R‹EüPÿU0ƒÄÇEüé´ùÿÿ‹M¼ƒé‰M¼‹U¼U‰U¼‹E¼™÷}‰U¼‹E¼‹Mƒ<…xƒ}üŒn‹U¼kÒ‹E ‹MÝÜÝ]È‹U¼kÒ‹E ‹MÝDÜAÝ]ЋU¼kÒ‹E ‹MÝDÜAÝ]Ø‹U¼kÒ‹E ÝÜeÈ‹MÜ Ý ÿÿÿ‹U¼kÒ‹E ÝDÜeЋMÜIÜ… ÿÿÿÝ ÿÿÿ‹U¼kÒ‹E ÝDÜeØ‹MÜIÜ… ÿÿÿÝ ÿÿÿÙîÜ ÿÿÿßàöÄDzFÇ…<ÿÿÿ‹U¼kÒ‹E‹M ÝÝ‹U¼kÒ‹E‹M ÝDÝX‹U¼kÒ‹E‹M ÝDÝXéÇ…<ÿÿÿ‹UÝÜeÈ‹EÜÝ(ÿÿÿ‹MÝAÜeЋUÜJÜ…(ÿÿÿÝ(ÿÿÿ‹EÝ@ÜeØ‹MÜIÜ…(ÿÿÿÝ(ÿÿÿÝ…(ÿÿÿܵ ÿÿÿÝÿÿÿÙèÜ¥ÿÿÿÝ0ÿÿÿÝ…ÿÿÿÜ PáÜáßàöÄAtÝ…ÿÿÿÜ PáÜáßàöÄz Ç…<ÿÿÿ‹U¼kÒ‹E Ý…ÿÿÿÜ Ý…0ÿÿÿÜMÈÞÁÝ]à‹M¼kÉ‹U Ý…ÿÿÿÜL Ý…0ÿÿÿÜMÐÞÁÝ]è‹E¼kÀ‹M Ý…ÿÿÿÜLÝ…0ÿÿÿÜMØÞÁÝ]ð‹UükÒ‹E¸ÝEàÝЋMükÉ‹U¸ÝEèÝ\Ê‹EükÀ‹M¸ÝEðÝ\Á‹UüƒÂ‰Uüƒ}´u ‹EÀPè„¢ÿÿƒÄ‹M,Qj‹UR‹E(P‹M Q‹U¸R‹EüPÿU0ƒÄ‹MÀQèX¢ÿÿƒÄ‹U¸Rÿ´àƒÄ^‹å]ÃÌÌÌU‹ìƒ}t ‹EPÿÜà‹ ðƒ9tƒìÙîÝ$jû‹ð‹ÿÐƒÄ jÿààƒ}tX‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxtjj‹M Q‹ð‹BÿÐƒÄ ‹M QÿäàëW‹ðƒztjj‹E P‹ ð‹QÿÒƒÄ ‹E Pÿäà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà¡ðƒxtjj‹MQ‹ð‹BÿÐƒÄ ‹MQÿäà‹ðƒzt ¡ð‹HÿÑÿèà]ÃÌÌÌÌÌU‹ììðVÇE¸ÇE¬è¡ÿÿ‰E¸‹EƒÀkÀÑàÁàPÿ°àƒÄ‰E°‹MƒÁkÉ‹U°ʉEüÇE´ÇEø‹Mƒ9…w‹ð‹Bƒà„Ý‹M¸á…΋U ‹EÝÜÝ]À‹M ‹UÝAÜBÝ]È‹E ‹MÝ@ÜAÝ]ЋU ÝÜeÀ‹EÜÝ]‹M ÝAÜeÈ‹UÜJÜEÝ]‹E Ý@ÜeЋMÜIÜEÝ]ÙîÜ]ßàöÄDz.ÇE¨‹U‹E ÝÝ‹M‹U ÝBÝY‹E‹M ÝAÝXéÀÇE¨‹UÝÜeÀ‹EÜÝ]˜‹MÝAÜeÈ‹UÜJÜE˜Ý]˜‹EÝ@ÜeЋMÜIÜE˜Ý]˜ÝE˜ÜuÝ]ˆÙèÜeˆÝ] ÝEˆÜ PáÜáßàöÄAtÝEˆÜ PáÜáßàöÄzÇE¨‹U ÝEˆÜ ÝE ÜMÀÞÁÝ]Ø‹E ÝEˆÜHÝE ÜMÈÞÁÝ]à‹M ÝEˆÜIÝE ÜMÐÞÁÝ]è‹UøkÒ‹E°ÝEØÝЋMøkÉ‹U°ÝEàÝ\Ê‹EøkÀ‹M°ÝEèÝ\Á‹UøkÒ‹Eü‹M ÝÝЋUøkÒ‹Eü‹M ÝAÝ\ЋUøkÒ‹Eü‹M ÝAÝ\ЋUøƒÂ‰Uø‹EøkÀ‹M°‹U ÝÝÁ‹EøkÀ‹M°‹U ÝBÝ\Á‹EøkÀ‹M°‹U ÝBÝ\Á‹EøkÀ‹Mü‹U ÝÝÁ‹EøkÀ‹Mü‹U ÝBÝ\Á‹EøkÀ‹Mü‹U ÝBÝ\Á‹EøƒÀ‰Eø‹M´‰Mô‹U´ƒÂ‰U´ë>ÇE¬‹E´‹Mƒ<t+‹U´‰Uô‹E´ƒÀ‰E´‹M´;M|‹U°Rÿ´àƒÄéƒ ëÉ¡ð‹Hát‹U‰U¼ë ‹Eƒè‰E¼èîÿÿ‰E¸‹M¸áÿïÿÿQè¬ÿÿƒÄë‹UôƒÂ‰Uô‹E´ƒÀ‰E´‹E´™÷}‰U´‹Mô;M¼ñ‹Eô‹Mƒ<„‡‹U´‹Eƒ<…w‹MôkÉ‹U´kÒ‹E‹u ÝÜ$‹MÜ Ýhÿÿÿ‹UôkÒ‹E´kÀ‹M‹u ÝDÜd‹UÜJÜ…hÿÿÿÝhÿÿÿ‹EôkÀ‹M´kÉ‹U‹u ÝDÜd‹EÜHÜ…hÿÿÿÝhÿÿÿÙîÜhÿÿÿßàöÄDzCÇE„‹MôkÉ‹U‹EÝÝ‹MôkÉ‹U‹EÝDÝZ‹MôkÉ‹U‹EÝDÝZéEÇE„‹M´kÉ‹U‹E ÝÜ$‹MÜ Ýpÿÿÿ‹U´kÒ‹E‹M Ý@Üd‹UÜJÜ…pÿÿÿÝpÿÿÿ‹E´kÀ‹M‹U ÝAÜd‹EÜHÜ…pÿÿÿÝpÿÿÿÝ…pÿÿÿܵhÿÿÿÝ`ÿÿÿÙèÜ¥`ÿÿÿÝxÿÿÿÝ…`ÿÿÿÜ PáÜáßàöÄAtÝ…`ÿÿÿÜ PáÜáßàöÄzÇE„‹MôkÉ‹UÝ…`ÿÿÿÜ ‹E´kÀ‹M Ý…xÿÿÿÜ ÞÁÝ]Ø‹UôkÒ‹EÝ…`ÿÿÿÜL‹M´kÉ‹U Ý…xÿÿÿÜL ÞÁÝ]à‹EôkÀ‹MÝ…`ÿÿÿÜL‹U´kÒ‹E Ý…xÿÿÿÜLÞÁÝ]è‹M´kÉM Q‹UôkÒU R‹E(P‹M$Q‹U0REØP‹M´kÉM Q‹UôkÒU RèÀƒÄ ‹EøkÀ‹M°ÝEØÝÁ‹UøkÒ‹E°ÝEàÝ\ЋMøkÉ‹U°ÝEèÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝÝÊ‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eø‹M´kÉ‹UøkÒ‹E°‹u ÝÝЋM´kÉ‹UøkÒ‹E°‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹E°‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹Eü‹u ÝÝЋM´kÉ‹UøkÒ‹Eü‹u ÝDÝ\ЋM´kÉ‹UøkÒ‹Eü‹u ÝDÝ\ЋMøƒÁ‰Mø‹Uô‹Eƒ<…±‹M´‹Uƒ<Š…¡‹E´kÀ‹MøkÉ‹U°‹u ÝÝÊ‹E´kÀ‹MøkÉ‹U°‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹U°‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eø‹Mô‹Uƒ<Š…„‹E´‹Mƒ<„tÇE¬‹UôkÒ‹E´kÀ‹M ‹uÝÜ$‹UÜ Ý@ÿÿÿ‹EôkÀ‹M´kÉ‹U ‹uÝDÜd‹EÜHÜ…@ÿÿÿÝ@ÿÿÿ‹MôkÉ‹U´kÒ‹E ‹uÝDÜd‹MÜIÜ…@ÿÿÿÝ@ÿÿÿÙîÜ@ÿÿÿßàöÄDzFÇ…\ÿÿÿ‹UôkÒ‹E‹M ÝÝ‹UôkÒ‹E‹M ÝDÝX‹UôkÒ‹E‹M ÝDÝXéKÇ…\ÿÿÿ‹U´kÒ‹E‹MÝÜ$‹UÜ ÝHÿÿÿ‹E´kÀ‹M‹UÝAÜd‹EÜHÜ…HÿÿÿÝHÿÿÿ‹M´kÉ‹U‹EÝBÜd‹MÜIÜ…HÿÿÿÝHÿÿÿÝ…Hÿÿÿܵ@ÿÿÿÝ8ÿÿÿÙèÜ¥8ÿÿÿÝPÿÿÿÝ…8ÿÿÿÜ PáÜáßàöÄAtÝ…8ÿÿÿÜ PáÜáßàöÄz Ç…\ÿÿÿ‹UôkÒ‹E Ý…8ÿÿÿÜ ‹M´kÉ‹UÝ…PÿÿÿÜ ÞÁÝ]Ø‹EôkÀ‹M Ý…8ÿÿÿÜL‹U´kÒ‹EÝ…PÿÿÿÜLÞÁÝ]à‹MôkÉ‹U Ý…8ÿÿÿÜL ‹E´kÀ‹MÝ…PÿÿÿÜLÞÁÝ]è‹U´kÒU R‹EôkÀE P‹M(Q‹U$R‹E0PMØQ‹U´kÒU R‹EôkÀE PèXƒÄ ‹MøkÉ‹U°ÝEØÝÊ‹EøkÀ‹M°ÝEàÝ\Á‹UøkÒ‹E°ÝEèÝ\Ћ ð‹QâtN‹EôkÀ‹MøkÉ‹Uü‹u ÝÝÊ‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EôkÀ‹MøkÉ‹Uü‹u ÝDÝ\ÊëL‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eøƒ}ø|"‹M0Q‹UüR‹EP‹M,Q‹U$R‹E°P‹MøQÿU4ƒÄÇEøéç÷ÿÿ‹U´ƒê‰U´‹E´E‰E´‹E´™÷}‰U´‹M´‹Uƒ<Š…æƒ}øŒÜ¡ð‹Hƒá„—‹U¸â…ˆ‹E´kÀ‹M ‹UÝÜÝ]À‹E´kÀ‹M ‹UÝDÜBÝ]È‹E´kÀ‹M ‹UÝDÜBÝ]ЋE´kÀ‹M ÝÜeÀ‹UÜ Ýÿÿÿ‹E´kÀ‹M ÝDÜeÈ‹UÜJÜ…ÿÿÿÝÿÿÿ‹E´kÀ‹M ÝDÜeЋUÜJÜ…ÿÿÿÝÿÿÿÙîÜÿÿÿßàöÄDzFÇ…4ÿÿÿ‹E´kÀ‹M‹U ÝÝ‹E´kÀ‹M‹U ÝDÝY‹E´kÀ‹M‹U ÝDÝYéÇ…4ÿÿÿ‹EÝÜeÀ‹MÜ Ý ÿÿÿ‹UÝBÜeÈ‹EÜHÜ… ÿÿÿÝ ÿÿÿ‹MÝAÜeЋUÜJÜ… ÿÿÿÝ ÿÿÿÝ… ÿÿÿܵÿÿÿÝÿÿÿÙèÜ¥ÿÿÿÝ(ÿÿÿÝ…ÿÿÿÜ PáÜáßàöÄAtÝ…ÿÿÿÜ PáÜáßàöÄz Ç…4ÿÿÿ‹E´kÀ‹M Ý…ÿÿÿÜ Ý…(ÿÿÿÜMÀÞÁÝ]Ø‹U´kÒ‹E Ý…ÿÿÿÜLÝ…(ÿÿÿÜMÈÞÁÝ]à‹M´kÉ‹U Ý…ÿÿÿÜL Ý…(ÿÿÿÜMÐÞÁÝ]è‹EøkÀ‹M°ÝEØÝÁ‹UøkÒ‹E°ÝEàÝ\ЋMøkÉ‹U°ÝEèÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝÝÊ‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹E´kÀ‹MøkÉ‹Uü‹u ÝDÝ\Ê‹EøƒÀ‰Eøƒ}¬u ‹M¸Qè¡’ÿÿƒÄ‹U0R‹EüP‹MQ‹U,R‹E$P‹M°Q‹UøRÿU4ƒÄ‹E¸Pès’ÿÿƒÄ‹M°Qÿ´àƒÄ^‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒ}t ‹EPÿÜà‹ ðƒ9tƒìÙîÝ$jû‹ð‹ÿÐƒÄ jÿàà‹ ð‹Qâ„ ¡ðƒxt‹M Q‹ð‹BÿЃÄ‹M QÿØàƒ}tY‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒytjj‹U R¡ð‹HÿÑƒÄ ‹U RÿäàëW¡ðƒxtjj‹M Q‹ð‹BÿÐƒÄ ‹M Qÿäà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒytjj‹UR¡ð‹HÿÑƒÄ ‹URÿäà鬃}„ª¡ðƒxt‹M Q‹ð‹BÿЃÄ‹M QÿØà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒyt‹U$R¡ð‹HÿуÄ‹U$RÿØà¡ðƒxtjj‹M Q‹ð‹BÿÐƒÄ ‹M QÿäàéÍ‹ðƒzt‹E$P‹ ð‹Qÿ҃ċE$PÿØà‹ ðƒytjj‹U R¡ð‹HÿÑƒÄ ‹U Rÿäà¡ðƒxt‹M Q‹ð‹BÿЃÄ‹M QÿØà‹ðƒztjj‹EP‹ ð‹QÿÒƒÄ ‹EPÿäà‹ ðƒyt‹U$R¡ð‹HÿуÄ‹U$RÿØà¡ðƒxtjj‹MQ‹ð‹BÿÐƒÄ ‹MQÿäà‹ðƒzt ¡ð‹HÿÑÿèà]ÃÌÌÌÌÌÌÌU‹ììÀVÇEüÇEø‹E ÙîÜXßàöÄAu4‹M ÝáÜ ‹U Ý‹E ÝáÜH‹M ÝY‹U ÝáÜJ‹E ÝX‹ ðƒyt‹U R¡ð‹HÿуÄ‹U RÿØàè¡6‰Eð¡ààPh‡‹MðQè„6‹äàRh‡‹EðPèo6‹ èàQh‡‹UðRèZ6‹EðPèK6ÇEø‹MƒékÉM‰MüÇEìë ‹UìƒÂ‰Uì‹Eƒè9Eìá‹MìkÉ‹U‹EüÝ Ü Ý]¨‹MìkÉ‹U‹EüÝD Ü`Ý]°‹MìkÉ‹U‹EüÝD Ü`Ý]¸‹MìƒÁkÉ‹UìkÒ‹E‹uÝÜ$Ý]À‹MìƒÁkÉ‹UìkÒ‹E‹uÝDÜdÝ]È‹MìƒÁkÉ‹UìkÒ‹E‹uÝDÜdÝ]ÐÝE¨ÜM¨ÝE°ÜM°ÞÁÝE¸ÜM¸ÞÁÝ]ØÝEÀÜMÀÝEÈÜMÈÞÁÝEÐÜMÐÞÁÝ] ÝPáÜMØÜ] ßàöÄu Ç…Tÿÿÿë Ç…Tÿÿÿ‹Tÿÿÿ‰Môƒ}ôuÝPáÜM Ü]ØßàöÄt Ç…Pÿÿÿë Ç…Pÿÿÿ‹•Pÿÿÿ‰UôÝE¨ÜMÀÝE°ÜMÈÞÁÝE¸ÜMÐÞÁÝ]àƒ}ôu5ÝEØÜM ÝEàÜMàÞéÝEØÜM Ü PáÜ PáÞÙßàöÄt Ç…Lÿÿÿë Ç…Lÿÿÿ‹…Lÿÿÿ‰Eôƒ}ôu5‹MìkÉMQ‹UìkÒUR‹EðPèJ4‹MìkÉM‰Müƒ}øu‹Uü‰Uøéþÿÿƒ}øu‹E‰Eø‹MƒékÉ‹U‹EüÝ Ü Ý`ÿÿÿ‹MƒékÉ‹U‹EüÝD Ü`Ýhÿÿÿ‹MƒékÉ‹U‹EüÝD Ü`Ýpÿÿÿ‹MƒékÉ‹Uø‹EÝÜ$Ýxÿÿÿ‹MƒékÉ‹Uø‹EÝBÜdÝ]€‹MƒékÉ‹Uø‹EÝBÜdÝ]ˆÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜhÿÿÿÞÁÝ…pÿÿÿÜpÿÿÿÞÁÝ]Ý…xÿÿÿÜxÿÿÿÝE€ÜM€ÞÁÝEˆÜMˆÞÁÝXÿÿÿÝPáÜMÜXÿÿÿßàöÄu Ç…Hÿÿÿë Ç…Hÿÿÿ‹Hÿÿÿ‰Môƒ}ôu"ÝPáÜXÿÿÿÜ]ßàöÄt Ç…Dÿÿÿë Ç…Dÿÿÿ‹•Dÿÿÿ‰UôÝ…`ÿÿÿÜxÿÿÿÝ…hÿÿÿÜM€ÞÁÝ…pÿÿÿÜMˆÞÁÝ]˜ƒ}ôu;ÝEÜXÿÿÿÝE˜ÜM˜ÞéÝEÜXÿÿÿÜ PáÜ PáÞÙßàöÄt Ç…@ÿÿÿë Ç…@ÿÿÿ‹…@ÿÿÿ‰Eôƒ}ôu#‹MƒékÉMQ‹UƒêkÒUR‹EðPè$2‹MðQè2‹UðRè2^‹å]ÃÌÌÌÌÌÌÌU‹ììÀVÇEüÇEø‹E ÙîÜXßàöÄz4‹M ÝáÜ ‹U Ý‹E ÝáÜH‹M ÝY‹U ÝáÜJ‹E ÝX‹ ðƒyt‹U R¡ð‹HÿуÄ‹U RÿØàè‘1‰Eð¡ààPh‡‹MðQèt1‹äàRh‡‹EðPè_1‹ èàQh‡‹UðRèJ1‹EðPè;1ÇEø‹M‰Mü‹Uƒê‰Uìë ‹Eìƒè‰Eìƒ}ìŽá‹MìkÉ‹U‹EüÝ Ü Ý]¨‹MìkÉ‹U‹EüÝD Ü`Ý]°‹MìkÉ‹U‹EüÝD Ü`Ý]¸‹MìƒékÉ‹UìkÒ‹E‹uÝÜ$Ý]À‹MìƒékÉ‹UìkÒ‹E‹uÝDÜdÝ]È‹MìƒékÉ‹UìkÒ‹E‹uÝDÜdÝ]ÐÝE¨ÜM¨ÝE°ÜM°ÞÁÝE¸ÜM¸ÞÁÝ]ØÝEÀÜMÀÝEÈÜMÈÞÁÝEÐÜMÐÞÁÝ] ÝPáÜMØÜ] ßàöÄu Ç…Tÿÿÿë Ç…Tÿÿÿ‹Tÿÿÿ‰Môƒ}ôuÝPáÜM Ü]ØßàöÄt Ç…Pÿÿÿë Ç…Pÿÿÿ‹•Pÿÿÿ‰UôÝE¨ÜMÀÝE°ÜMÈÞÁÝE¸ÜMÐÞÁÝ]àƒ}ôu5ÝEØÜM ÝEàÜMàÞéÝEØÜM Ü PáÜ PáÞÙßàöÄt Ç…Lÿÿÿë Ç…Lÿÿÿ‹…Lÿÿÿ‰Eôƒ}ôu5‹MìkÉMQ‹UìkÒUR‹EðPèF/‹MìkÉM‰Müƒ}øu‹Uü‰Uøé þÿÿƒ}øu‹EƒèkÀE‰Eø‹M‹UüÝÜ"Ý`ÿÿÿ‹E‹MüÝ@ÜaÝhÿÿÿ‹U‹EüÝBÜ`Ýpÿÿÿ‹Mø‹UÝÜ"Ýxÿÿÿ‹Eø‹MÝ@ÜaÝ]€‹Uø‹EÝBÜ`Ý]ˆÝ…`ÿÿÿÜ`ÿÿÿÝ…hÿÿÿÜhÿÿÿÞÁÝ…pÿÿÿÜpÿÿÿÞÁÝ]Ý…xÿÿÿÜxÿÿÿÝE€ÜM€ÞÁÝEˆÜMˆÞÁÝXÿÿÿÝPáÜMÜXÿÿÿßàöÄu Ç…Hÿÿÿë Ç…Hÿÿÿ‹Hÿÿÿ‰Môƒ}ôu"ÝPáÜXÿÿÿÜ]ßàöÄt Ç…Dÿÿÿë Ç…Dÿÿÿ‹•Dÿÿÿ‰UôÝ…`ÿÿÿÜxÿÿÿÝ…hÿÿÿÜM€ÞÁÝ…pÿÿÿÜMˆÞÁÝ]˜ƒ}ôu;ÝEÜXÿÿÿÝE˜ÜM˜ÞéÝEÜXÿÿÿÜ PáÜ PáÞÙßàöÄt Ç…@ÿÿÿë Ç…@ÿÿÿ‹…@ÿÿÿ‰Eôƒ}ôu‹MQ‹UR‹EðPèe-‹MðQèV-‹UðRèG-^‹å]ÃÌÌÌÌÌÌÌÌU‹ìì˜Vƒ}uÙîÝ]àÙèÝ]èÙîÝ]ðë‹EÝÝ]à‹MÝAÝ]è‹UÝBÝ]ð‹EP‹MQUàRèäþÿƒÄ ÙîÝÿÿÿÙîÝÿÿÿÙîÝÿÿÿÙîÝ]ÈÙîÝ]ÐÙèÝ]ØÇEÀ‹EÀ‰…<þÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝÜ$ÝÀþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜdÝÈþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜdÝÐþÿÿÝ…ÀþÿÿÜÀþÿÿÝ…ÈþÿÿÜÈþÿÿÞÁÝ`ÿÿÿÝ…ÐþÿÿÜÐþÿÿÜ…`ÿÿÿÝ`ÿÿÿƒìÝ…`ÿÿÿÝ$è,ƒÄÝ`ÿÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝÜÝþÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜDÝ þÿÿ‹<þÿÿƒÁkÉ‹•<þÿÿkÒ‹E‹uÝDÜDÝ(þÿÿÝ…þÿÿÜþÿÿÝ… þÿÿÜ þÿÿÞÁÝ0þÿÿÝ…(þÿÿÜ(þÿÿÜ…0þÿÿÝ0þÿÿƒìÝ…0þÿÿÝ$èS+ƒÄÝ0þÿÿÝ…0þÿÿÜ PáÝ0þÿÿ‹<þÿÿƒÁ‰<þÿÿÝ…0þÿÿÜ`ÿÿÿßàöÄu‹Uƒê9•<þÿÿŒ$þÿÿÝ…`ÿÿÿÝøþÿÿ‹…<þÿÿkÀEP‹MƒÁQ‹UR… ÿÿÿPèîÆþÿƒÄÝEàÜ ÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜ0ÿÿÿÞÁÝþÿÿÝHáÜþÿÿÜ ÿÿÿÜmàÝ]àÝHáÜþÿÿÜ(ÿÿÿÜmèÝ]èÝHáÜþÿÿÜ0ÿÿÿÜmðÝ]ð‹MkÉ‹UkÒÁâÊPÿ°àƒÄ‰E¼‹M¼‰M€‹UkÒ‹E€ Љ<ÿÿÿ‹UkÒ‹…<ÿÿÿ Љôþÿÿ‹UkÒ‹…ôþÿÿ Љÿÿÿ‹•ôþÿÿ‰Uüƒ}„ƒ}$u}Ç…8þÿÿë‹…8þÿÿƒÀ‰…8þÿÿ‹8þÿÿ;M}R‹•8þÿÿÁâ‹…8þÿÿkÀ‹Mü‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹Mü‹uÝDÝ\Á‹•8þÿÿkÒ‹EüÙîÝ\Ðë”éÇ…8þÿÿë‹8þÿÿƒÁ‰8þÿÿ‹•8þÿÿ;UW‹…<þÿÿƒèkÀ0‹M$ÙîÜ\ßàöÄDzL‹•<þÿÿƒêkÒ0‹E$ÙîÜ\ßàöÄDz0‹<þÿÿƒékÉ0‹•<þÿÿƒêkÒ0‹E$‹u$ÝD ÜßàöÄD‹|‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝD Ü ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝDÜLÞé‹8þÿÿkÉ‹•ôþÿÿÝÊ‹…<þÿÿƒèkÀ0‹M$ÝDÙà‹•8þÿÿÁâ‹EÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹uÝÜLÞÁ‹8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÞÁÝþÿÿƒìÝ…þÿÿÝ$èÄ'ƒÄÙèÞñÝþÿÿ‹…8þÿÿkÀ‹ôþÿÿÝÁÜþÿÿ‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉ‹•ôþÿÿÝDÊÜþÿÿ‹…8þÿÿkÀ‹ôþÿÿÝ\ÁëD‹•8þÿÿÁâ‹…8þÿÿkÀ‹ôþÿÿ‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹ôþÿÿ‹uÝDÝ\Á‹•8þÿÿkÒ‹…ôþÿÿÙîÝ\Ћ8þÿÿkÉ‹•ÿÿÿÙîÝ\Êé‹ýÿÿÇ…\ÿÿÿ‹Eƒè9…<þÿÿô‹<þÿÿ‰MÄ‹UăÂkÒ‹EÄkÀ‹M‹uÝÜ$ÝÀþÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜdÝÈþÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜdÝÐþÿÿÝ…ÀþÿÿÜÀþÿÿÝ…ÈþÿÿÜÈþÿÿÞÁÝ`ÿÿÿÝ…ÐþÿÿÜÐþÿÿÜ…`ÿÿÿÝ`ÿÿÿƒìÝ…`ÿÿÿÝ$è&ƒÄÝ`ÿÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝÜÝèýÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜDÝðýÿÿ‹UăÂkÒ‹EÄkÀ‹M‹uÝDÜDÝøýÿÿÝ…èýÿÿÜèýÿÿÝ…ðýÿÿÜðýÿÿÞÁÝþÿÿÝ…øýÿÿÜøýÿÿÜ…þÿÿÝþÿÿƒìÝ…þÿÿÝ$è^%ƒÄÝþÿÿÝ…þÿÿÜ PáÝþÿÿ‹Uă‰UÄÝ…þÿÿÜ`ÿÿÿßàöÄu‹Eƒè9EÄŒQþÿÿ‹MÄkÉMQ‹•<þÿÿkÒUR‹EÀkÀEPhÿÿÿQèÁþÿƒÄUàR‹…<þÿÿkÀEP‹MÀkÉMQ•@þÿÿRè› ƒÄÿÈà…@þÿÿPÿÌàÝ…@þÿÿÜ ÿÿÿÝ…HþÿÿÜ(ÿÿÿÞÁÝ…PþÿÿÜ0ÿÿÿÞÁÝ@ÿÿÿÝ…`þÿÿÜ ÿÿÿÝ…hþÿÿÜ(ÿÿÿÞÁÝ…pþÿÿÜ0ÿÿÿÞÁÝHÿÿÿÝ…€þÿÿÜ ÿÿÿÝ…ˆþÿÿÜ(ÿÿÿÞÁÝ…þÿÿÜ0ÿÿÿÞÁÝPÿÿÿÝ…@þÿÿÜhÿÿÿÝ…HþÿÿÜpÿÿÿÞÁÝ…PþÿÿÜxÿÿÿÞÁÝ]ˆÝ…`þÿÿÜhÿÿÿÝ…hþÿÿÜpÿÿÿÞÁÝ…pþÿÿÜxÿÿÿÞÁÝ]Ý…€þÿÿÜhÿÿÿÝ…ˆþÿÿÜpÿÿÿÞÁÝ…þÿÿÜxÿÿÿÞÁÝ]˜Ý…øþÿÿÙàÝ]ØÇ…8þÿÿë‹8þÿÿƒÁ‰8þÿÿ‹•8þÿÿ;U~ ƒ}„âƒ}$„‹…<þÿÿkÀ0‹M$ÙîÜ\ßàöÄDzC‹•<þÿÿkÒ0‹E$ÙîÜ\ßàöÄDz*‹<þÿÿkÉ0‹•<þÿÿkÒ0‹E$‹u$ÝD ÜßàöÄD‹p‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝD Ü ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝDÜLÞé‹8þÿÿkÉ‹•ÿÿÿÝÊ‹…<þÿÿkÀ0‹M$ÝDÙà‹•8þÿÿÁâ‹EÜ ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹uÝÜLÞÁ‹8þÿÿkÉ‹•ÿÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ÿÿÿ‹µÿÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ÿÿÿ‹µÿÿÿÝDÂÜLÎÞÁÝàýÿÿƒìÝ…àýÿÿÝ$èð!ƒÄÙèÞñÝàýÿÿ‹…8þÿÿkÀ‹ÿÿÿÝÁÜàýÿÿ‹•8þÿÿkÒ‹…ÿÿÿÝЋ8þÿÿkÉ‹•ÿÿÿÝDÊÜàýÿÿ‹…8þÿÿkÀ‹ÿÿÿÝ\ÁëD‹•8þÿÿÁâ‹…8þÿÿkÀ‹ÿÿÿ‹uÝÝÁ‹•8þÿÿÁâ‹…8þÿÿkÀ‹ÿÿÿ‹uÝDÝ\Á‹ð‹B%„´ƒ}$uD‹8þÿÿÁá‹•8þÿÿkÒ‹…ÿÿÿ‹uÝÝЋ8þÿÿÁá‹•8þÿÿkÒ‹…ÿÿÿ‹uÝDÝ\Ћ8þÿÿkÉ‹•ôþÿÿÙîÝ\Ê‹…8þÿÿkÀ‹ôþÿÿÝÁÜ@ÿÿÿ‹•8þÿÿkÒ‹…ôþÿÿÝDÐÜHÿÿÿÞÁ‹8þÿÿkÉ‹•ôþÿÿÝDÊÜPÿÿÿÞÁÝØýÿÿ‹…8þÿÿkÀÝ…ØýÿÿÜ@ÿÿÿ‹ôþÿÿÜ,Á‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉÝ…ØýÿÿÜHÿÿÿ‹•ôþÿÿÜlÊ‹…8þÿÿkÀ‹ôþÿÿÝ\Á‹•8þÿÿkÒÝ…ØýÿÿÜPÿÿÿ‹…ôþÿÿÜlЋ8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝÂÜ Î‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÞÁÝÐýÿÿ‹…8þÿÿkÀ‹8þÿÿkÉ‹•ôþÿÿ‹µôþÿÿÝDÂÜLÎÜ…ÐýÿÿÝÐýÿÿƒìÝ…ÐýÿÿÝ$èWƒÄÝÐýÿÿÙîÜÐýÿÿßàöÄD‹ÙèܵÐýÿÿÝÐýÿÿ‹…8þÿÿkÀ‹ôþÿÿÝÁÜÐýÿÿ‹•8þÿÿkÒ‹…ôþÿÿÝЋ8þÿÿkÉ‹•ôþÿÿÝDÊÜÐýÿÿ‹…8þÿÿkÀ‹ôþÿÿÝ\Á‹•8þÿÿkÒ‹…ôþÿÿÝDÐÜÐýÿÿ‹8þÿÿkÉ‹•ôþÿÿÝ\Ê‹…8þÿÿkÀ‹ÿÿÿÙîÝ\Á‹•8þÿÿkÒ‹…ÿÿÿÝÐÜMˆ‹8þÿÿkÉ‹•ÿÿÿÝDÊÜMÞÁ‹…8þÿÿkÀ‹ÿÿÿÝDÁÜM˜ÞÁÝÈýÿÿ‹•8þÿÿkÒÝ…ÈýÿÿÜMˆ‹…ÿÿÿÜ,Ћ8þÿÿkÉ‹•ÿÿÿÝÊ‹…8þÿÿkÀÝ…ÈýÿÿÜM‹ÿÿÿÜlÁ‹•8þÿÿkÒ‹…ÿÿÿÝ\Ћ8þÿÿkÉÝ…ÈýÿÿÜM˜‹•ÿÿÿÜlÊ‹…8þÿÿkÀ‹ÿÿÿÝ\Á‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝÑÜ Æ‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝDÑÜLÆÞÁÝÀýÿÿ‹•8þÿÿkÒ‹…8þÿÿkÀ‹ÿÿÿ‹µÿÿÿÝDÑÜLÆÜ…ÀýÿÿÝÀýÿÿƒìÝ…ÀýÿÿÝ$è+ƒÄÝÀýÿÿÙîÜÀýÿÿßàöÄD‹ÙèܵÀýÿÿÝÀýÿÿ‹•8þÿÿkÒ‹…ÿÿÿÝÐÜÀýÿÿ‹8þÿÿkÉ‹•ÿÿÿÝÊ‹…8þÿÿkÀ‹ÿÿÿÝDÁÜÀýÿÿ‹•8þÿÿkÒ‹…ÿÿÿÝ\Ћ8þÿÿkÉ‹•ÿÿÿÝDÊÜÀýÿÿ‹…8þÿÿkÀ‹ÿÿÿÝ\Áƒ}$uU‹•8þÿÿÁâ‹E ÝÝ] ‹8þÿÿÁá‹U ÝD Ý]¨‹…8þÿÿÁà‹M ÝÝØþÿÿ‹•8þÿÿÁâ‹E ÝDÝàþÿÿéx‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜLÞÁ‹<þÿÿƒékÉ0‹U$ÜD Ý] ‹…<þÿÿƒèkÀ0‹8þÿÿÁá‹U$‹u ÝDÜ ‹…<þÿÿƒèkÀ0‹8þÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…<þÿÿƒèkÀ0‹M$ÜD(Ý]¨‹•<þÿÿƒêkÒ0‹…8þÿÿÁà‹M$‹u ÝÜ ‹•<þÿÿƒêkÒ0‹…8þÿÿÁà‹M$‹u ÝDÜLÞÁ‹•<þÿÿƒêkÒ0‹E$ÜDÝØþÿÿ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜ ‹<þÿÿƒékÉ0‹•8þÿÿÁâ‹E$‹u ÝD ÜLÞÁ‹<þÿÿƒékÉ0‹U$ÜD (ÝàþÿÿÙîÝ]°Ý…øþÿÿÙàÝèþÿÿÝE Ü¥ØþÿÿÜ@ÿÿÿÝ ýÿÿÝE¨Ü¥àþÿÿÜHÿÿÿÜ… ýÿÿÝ ýÿÿÝE°Ü¥èþÿÿÜPÿÿÿÜ… ýÿÿÝ ýÿÿÙîÜ ýÿÿßàöÄDz*Ç…¼ýÿÿÝE Ý@ÿÿÿÝE¨ÝHÿÿÿÝE°ÝPÿÿÿé.Ç…¼ýÿÿÝ…ÿÿÿÜ¥ØþÿÿÜ@ÿÿÿݨýÿÿÝ…ÿÿÿÜ¥àþÿÿÜHÿÿÿÜ…¨ýÿÿݨýÿÿÝ…ÿÿÿÜ¥èþÿÿÜPÿÿÿÜ…¨ýÿÿݨýÿÿÝ…¨ýÿÿܵ ýÿÿݘýÿÿÙèÜ¥˜ýÿÿݰýÿÿÝ…˜ýÿÿÜ PáÜáßàöÄAtÝ…˜ýÿÿÜ PáÜáßàöÄz Ç…¼ýÿÿÝ…˜ýÿÿÜM Ý…°ýÿÿÜØþÿÿÞÁ‹…8þÿÿkÀ‹M€ÝÁÝ…˜ýÿÿÜM¨Ý…°ýÿÿÜàþÿÿÞÁ‹•8þÿÿkÒ‹E€Ý\ÐÝ…˜ýÿÿÜM°Ý…°ýÿÿÜèþÿÿÞÁ‹8þÿÿkÉ‹U€Ý\ʃ}$„T‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝÜ ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝDÜLÞÁ‹…<þÿÿkÀ0‹M$ÜDÝ] ‹•<þÿÿkÒ0‹…8þÿÿÁà‹M$‹u ÝDÜ ‹•<þÿÿkÒ0‹…8þÿÿÁà‹M$‹u ÝD ÜLÞÁ‹•<þÿÿkÒ0‹E$ÜD(Ý]¨‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹u ÝÜ ‹<þÿÿkÉ0‹•8þÿÿÁâ‹E$‹u ÝDÜLÞÁ‹<þÿÿkÉ0‹U$ÜD ÝØþÿÿ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝDÜ ‹…<þÿÿkÀ0‹8þÿÿÁá‹U$‹u ÝD ÜLÞÁ‹…<þÿÿkÀ0‹M$ÜD(ÝàþÿÿÝE Ü¥ØþÿÿÜMˆÝxýÿÿÝE¨Ü¥àþÿÿÜMÜ…xýÿÿÝxýÿÿÝE°Ü¥èþÿÿÜM˜Ü…xýÿÿÝxýÿÿÙîÜxýÿÿßàöÄDz!Ç…”ýÿÿÝE Ý]ˆÝE¨Ý]ÝE°Ý]˜é%Ç…”ýÿÿÝEÈÜ¥ØþÿÿÜMˆÝ€ýÿÿÝEÐÜ¥àþÿÿÜMÜ…€ýÿÿÝ€ýÿÿÝEØÜ¥èþÿÿÜM˜Ü…€ýÿÿÝ€ýÿÿÝ…€ýÿÿܵxýÿÿÝpýÿÿÙèÜ¥pýÿÿ݈ýÿÿÝ…pýÿÿÜ PáÜáßàöÄAtÝ…pýÿÿÜ PáÜáßàöÄz Ç…”ýÿÿÝ…pýÿÿÜM Ý…ˆýÿÿÜØþÿÿÞÁ‹•8þÿÿkÒ‹…<ÿÿÿÝÐÝ…pýÿÿÜM¨Ý…ˆýÿÿÜàþÿÿÞÁ‹8þÿÿkÉ‹•<ÿÿÿÝ\ÊÝ…pýÿÿÜM°Ý…ˆýÿÿÜèþÿÿÞÁ‹…8þÿÿkÀ‹<ÿÿÿÝ\Áédòÿÿ‹ð‹Bƒà„„ƒ½\ÿÿÿt=ƒ} t‹<þÿÿƒékÉ M QÿÜàÇ…\ÿÿÿ‹U€R…@ÿÿÿP‹MQèbÞÿÿƒÄ ‹Uƒê9•<þÿÿu0ƒ} t‹…<þÿÿkÀ E PÿÜà‹<ÿÿÿQUˆR‹EPè4ãÿÿƒÄ ƒ}$…Å‹ ð‹Qâ…°ƒ} …¦ƒ}u,ƒìÝ…øþÿÿÝ$‹…<þÿÿP‹<ÿÿÿQ‹U€R‹EPèkQþÿƒÄëo‹ ð‹Qât0ƒìÝ…øþÿÿÝ$‹…<þÿÿP‹MüQ‹•<ÿÿÿR‹E€P‹MQèÚWþÿƒÄë.ƒìÝ…øþÿÿÝ$‹•<þÿÿR‹EüP‹<ÿÿÿQ‹U€R‹EPèÊSþÿƒÄéûƒ}uLƒìÝ…øþÿÿÝ$‹<þÿÿQ‹•<þÿÿkÒ U R‹…<þÿÿƒèkÀ E P‹<ÿÿÿQ‹U€R‹EPèøQþÿƒÄ é©‹ ð‹QâtMƒìÝ…øþÿÿÝ$‹…<þÿÿP‹<þÿÿkÉ M Q‹•<þÿÿƒêkÒ U R‹EüP‹<ÿÿÿQ‹U€R‹EPèÇYþÿƒÄ$ëKƒìÝ…øþÿÿÝ$‹<þÿÿQ‹•<þÿÿkÒ U R‹…<þÿÿƒèkÀ E P‹MüQ‹•<ÿÿÿR‹E€P‹MQèzTþÿƒÄ$éÔƒ} …¼ƒ}u/ƒìÝ…øþÿÿÝ$‹•<þÿÿR‹…<ÿÿÿP‹M€Q‹URè»OþÿƒÄé‚¡ð‹Hát:ƒìÝ…øþÿÿÝ$‹•<þÿÿR‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQèŽaþÿƒÄ ë8ƒìÝ…øþÿÿÝ$‹•<þÿÿR‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQè]þÿƒÄ éƒ}uLƒìÝ…øþÿÿÝ$‹•<þÿÿR‹…<þÿÿkÀ E P‹<þÿÿƒékÉ M Q‹•<ÿÿÿR‹E€P‹MQè2PþÿƒÄ 鼋ð‹B%tWƒìÝ…øþÿÿÝ$‹<þÿÿQ‹•<þÿÿkÒ U R‹…<þÿÿƒèkÀ E P‹ÿÿÿQ‹•ôþÿÿR‹…<ÿÿÿP‹M€Q‹URè¨dþÿƒÄ(ëUƒìÝ…øþÿÿÝ$‹…<þÿÿP‹<þÿÿkÉ M Q‹•<þÿÿƒêkÒ U R‹…ÿÿÿP‹ôþÿÿQ‹•<ÿÿÿR‹E€P‹MQè^þÿƒÄ(ÿÐàÝ…`ÿÿÿÝøþÿÿ‹•<þÿÿ‰UÀ‹Eĉ…<þÿÿÝ…hÿÿÿÝ ÿÿÿÝ…pÿÿÿÝ(ÿÿÿÝ…xÿÿÿÝ0ÿÿÿ‹ôþÿÿ‰M„‹•ÿÿÿ‰•ôþÿÿ‹E„‰…ÿÿÿÝEàÜ ÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜ0ÿÿÿÞÁÝhýÿÿÝHáÜhýÿÿÜ ÿÿÿÜmàÝ]àÝHáÜhýÿÿÜ(ÿÿÿÜmèÝ]èÝHáÜhýÿÿÜ0ÿÿÿÜmðÝ]ðéúéÿÿ‹M¼Qÿ´àƒÄ^‹å]ÃÌÌÌÌU‹ìì‹E ÝÝ þÿÿ‹M ÝAÝ(þÿÿ‹U ÝBÝ0þÿÿÝ… þÿÿÜ þÿÿÝ…(þÿÿÜ(þÿÿÞÁÝþÿÿÝ…0þÿÿÜ0þÿÿÜ…þÿÿÝþÿÿƒìÝ…þÿÿÝ$èQƒÄÝþÿÿÙîÜþÿÿßàöÄD‹ÔÙèܵþÿÿÝþÿÿÝ…þÿÿÜ þÿÿÝ þÿÿÝ…þÿÿÜ(þÿÿÝ(þÿÿÝ…þÿÿÜ0þÿÿÝ0þÿÿÝ…0þÿÿÜ0þÿÿÙèÞáƒìÝ$èÖƒÄÝþÿÿÝ…0þÿÿÙàÝ]€ÙîÝ]ˆÝ…þÿÿÙàÙàÝ]ÙîÝ]˜ÙîÝ] ÙèÝ]¨ÙîÝ]°ÙîÝ]¸Ý…þÿÿÙàÝ]ÀÙîÝ]ÈÝ…0þÿÿÙàÝ]ÐÙîÝ]ØÙîÝ]àÙîÝ]èÙîÝ]ðÙèÝ]øëPÙèÝ]€ÙîÝ]ˆÙîÝ]ÙîÝ]˜ÙîÝ] ÙèÝ]¨ÙîÝ]°ÙîÝ]¸ÙîÝ]ÀÙîÝ]ÈÙèÝ]ÐÙîÝ]ØÙîÝ]àÙîÝ]èÙîÝ]ðÙèÝ]ø‹E ÝÝhÿÿÿ‹M ÝAÝpÿÿÿÙîÝxÿÿÿÝ…hÿÿÿÜhÿÿÿÝ…pÿÿÿÜpÿÿÿÞÁÝþÿÿÝ…xÿÿÿÜxÿÿÿÜ…þÿÿÝþÿÿƒìÝ…þÿÿÝ$詃ÄÝþÿÿÙîÜþÿÿßàöÄD‹ÛÙèܵþÿÿÝþÿÿÝ…þÿÿÜhÿÿÿÝhÿÿÿÝ…þÿÿÜpÿÿÿÝpÿÿÿÝ…þÿÿÜxÿÿÿÝxÿÿÿÝ…hÿÿÿÝÐþÿÿÝ…pÿÿÿÝØþÿÿÙîÝàþÿÿÙîÝèþÿÿÝ…pÿÿÿÙàÝðþÿÿÝ…hÿÿÿÝøþÿÿÙîÝÿÿÿÙîÝÿÿÿÙîÝÿÿÿÙîÝÿÿÿÙèÝ ÿÿÿÙîÝ(ÿÿÿÙîÝ0ÿÿÿÙîÝ8ÿÿÿÙîÝ@ÿÿÿÙèÝHÿÿÿÝE€ÜÐþÿÿÝEˆÜðþÿÿÞÁÝEÜÿÿÿÞÁÝE˜Ü0ÿÿÿÞÁÝ8þÿÿÝE€ÜØþÿÿÝEˆÜøþÿÿÞÁÝEÜÿÿÿÞÁÝE˜Ü8ÿÿÿÞÁÝ@þÿÿÝE€ÜàþÿÿÝEˆÜÿÿÿÞÁÝEÜ ÿÿÿÞÁÝE˜Ü@ÿÿÿÞÁÝHþÿÿÝE€ÜèþÿÿÝEˆÜÿÿÿÞÁÝEÜ(ÿÿÿÞÁÝE˜ÜHÿÿÿÞÁÝPþÿÿÝE ÜÐþÿÿÝE¨ÜðþÿÿÞÁÝE°ÜÿÿÿÞÁÝE¸Ü0ÿÿÿÞÁÝXþÿÿÝE ÜØþÿÿÝE¨ÜøþÿÿÞÁÝE°ÜÿÿÿÞÁÝE¸Ü8ÿÿÿÞÁÝ`þÿÿÝE ÜàþÿÿÝE¨ÜÿÿÿÞÁÝE°Ü ÿÿÿÞÁÝE¸Ü@ÿÿÿÞÁÝhþÿÿÝE ÜèþÿÿÝE¨ÜÿÿÿÞÁÝE°Ü(ÿÿÿÞÁÝE¸ÜHÿÿÿÞÁÝpþÿÿÝEÀÜÐþÿÿÝEÈÜðþÿÿÞÁÝEÐÜÿÿÿÞÁÝEØÜ0ÿÿÿÞÁÝxþÿÿÝEÀÜØþÿÿÝEÈÜøþÿÿÞÁÝEÐÜÿÿÿÞÁÝEØÜ8ÿÿÿÞÁÝ€þÿÿÝEÀÜàþÿÿÝEÈÜÿÿÿÞÁÝEÐÜ ÿÿÿÞÁÝEØÜ@ÿÿÿÞÁ݈þÿÿÝEÀÜèþÿÿÝEÈÜÿÿÿÞÁÝEÐÜ(ÿÿÿÞÁÝEØÜHÿÿÿÞÁÝþÿÿÝEàÜÐþÿÿÝEèÜðþÿÿÞÁÝEðÜÿÿÿÞÁÝEøÜ0ÿÿÿÞÁݘþÿÿÝEàÜØþÿÿÝEèÜøþÿÿÞÁÝEðÜÿÿÿÞÁÝEøÜ8ÿÿÿÞÁÝ þÿÿÝEàÜàþÿÿÝEèÜÿÿÿÞÁÝEðÜ ÿÿÿÞÁÝEøÜ@ÿÿÿÞÁݨþÿÿÝEàÜèþÿÿÝEèÜÿÿÿÞÁÝEðÜ(ÿÿÿÞÁÝEøÜHÿÿÿÞÁݰþÿÿéÝE€Ý8þÿÿÝEˆÝ@þÿÿÝEÝHþÿÿÝE˜ÝPþÿÿÝE ÝXþÿÿÝE¨Ý`þÿÿÝE°ÝhþÿÿÝE¸ÝpþÿÿÝEÀÝxþÿÿÝEÈÝ€þÿÿÝEÐ݈þÿÿÝEØÝþÿÿÝEàݘþÿÿÝEèÝ þÿÿÝEðݨþÿÿÝEøÝ°þÿÿ‹UÝÜ þÿÿ‹EÝ@Ü(þÿÿÞÁ‹MÝAÜ0þÿÿÞÁÝþÿÿÝ…þÿÿÜ þÿÿ‹UÜ*ÝPÿÿÿÝ…þÿÿÜ(þÿÿ‹EÜhÝXÿÿÿÝ…þÿÿÜ0þÿÿ‹MÜiÝ`ÿÿÿÝ…PÿÿÿÜPÿÿÿÝ…XÿÿÿÜXÿÿÿÞÁÝþÿÿÝ…`ÿÿÿÜ`ÿÿÿÜ…þÿÿÝþÿÿƒìÝ…þÿÿÝ$èe ƒÄÝþÿÿÙîÜþÿÿßàöÄD‹RÙèܵþÿÿÝþÿÿÝ…þÿÿÜPÿÿÿÝPÿÿÿÝ…þÿÿÜXÿÿÿÝXÿÿÿÝ…þÿÿÜ`ÿÿÿÝ`ÿÿÿÝ…XþÿÿݸþÿÿÝ…`þÿÿÝÀþÿÿÝ…hþÿÿÝÈþÿÿÝ…¸þÿÿÜPÿÿÿÝ…ÀþÿÿÜXÿÿÿÞÁÝ…ÈþÿÿÜ`ÿÿÿÞÁÝþÿÿÝ…8þÿÿݸþÿÿÝ…@þÿÿÝÀþÿÿÝ…HþÿÿÝÈþÿÿÝ…¸þÿÿÜPÿÿÿÝ…ÀþÿÿÜXÿÿÿÞÁÝ…ÈþÿÿÜ`ÿÿÿÞÁÝþÿÿÝ…þÿÿÝ]€Ý…þÿÿÙàÝ]ˆÙîÝ]ÙîÝ]˜Ý…þÿÿÙàÙàÝ] Ý…þÿÿÝ]¨ÙîÝ]°ÙîÝ]¸ÙîÝ]ÀÙîÝ]ÈÙèÝ]ÐÙîÝ]ØÙîÝ]àÙîÝ]èÙîÝ]ðÙèÝ]øÝE€Ü8þÿÿÝEˆÜXþÿÿÞÁÝEÜxþÿÿÞÁÝE˜Ü˜þÿÿÞÁ‹UÝÝE€Ü@þÿÿÝEˆÜ`þÿÿÞÁÝEÜ€þÿÿÞÁÝE˜Ü þÿÿÞÁ‹EÝXÝE€ÜHþÿÿÝEˆÜhþÿÿÞÁÝE܈þÿÿÞÁÝE˜Ü¨þÿÿÞÁ‹MÝYÝE€ÜPþÿÿÝEˆÜpþÿÿÞÁÝEÜþÿÿÞÁÝE˜Ü°þÿÿÞÁ‹UÝZÝE Ü8þÿÿÝE¨ÜXþÿÿÞÁÝE°ÜxþÿÿÞÁÝE¸Ü˜þÿÿÞÁ‹EÝX ÝE Ü@þÿÿÝE¨Ü`þÿÿÞÁÝE°Ü€þÿÿÞÁÝE¸Ü þÿÿÞÁ‹MÝY(ÝE ÜHþÿÿÝE¨ÜhþÿÿÞÁÝE°ÜˆþÿÿÞÁÝE¸Ü¨þÿÿÞÁ‹UÝZ0ÝE ÜPþÿÿÝE¨ÜpþÿÿÞÁÝE°ÜþÿÿÞÁÝE¸Ü°þÿÿÞÁ‹EÝX8ÝEÀÜ8þÿÿÝEÈÜXþÿÿÞÁÝEÐÜxþÿÿÞÁÝEØÜ˜þÿÿÞÁ‹MÝY@ÝEÀÜ@þÿÿÝEÈÜ`þÿÿÞÁÝEÐÜ€þÿÿÞÁÝEØÜ þÿÿÞÁ‹UÝZHÝEÀÜHþÿÿÝEÈÜhþÿÿÞÁÝEÐ܈þÿÿÞÁÝEØÜ¨þÿÿÞÁ‹EÝXPÝEÀÜPþÿÿÝEÈÜpþÿÿÞÁÝEÐÜþÿÿÞÁÝEØÜ°þÿÿÞÁ‹MÝYXÝEàÜ8þÿÿÝEèÜXþÿÿÞÁÝEðÜxþÿÿÞÁÝEøÜ˜þÿÿÞÁ‹UÝZ`ÝEàÜ@þÿÿÝEèÜ`þÿÿÞÁÝEðÜ€þÿÿÞÁÝEøÜ þÿÿÞÁ‹EÝXhÝEàÜHþÿÿÝEèÜhþÿÿÞÁÝEð܈þÿÿÞÁÝEøÜ¨þÿÿÞÁ‹MÝYpÝEàÜPþÿÿÝEèÜpþÿÿÞÁÝEðÜþÿÿÞÁÝEøÜ°þÿÿÞÁ‹UÝZxé¿‹EÝ…8þÿÿÝ‹MÝ…@þÿÿÝY‹UÝ…HþÿÿÝZ‹EÝ…PþÿÿÝX‹MÝ…XþÿÿÝY ‹UÝ…`þÿÿÝZ(‹EÝ…hþÿÿÝX0‹MÝ…pþÿÿÝY8‹UÝ…xþÿÿÝZ@‹EÝ…€þÿÿÝXH‹MÝ…ˆþÿÿÝYP‹UÝ…þÿÿÝZX‹EÝ…˜þÿÿÝX`‹MÝ… þÿÿÝYh‹UÝ…¨þÿÿÝZp‹EÝ…°þÿÿÝXx‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìì‹E‹M ÝÜ!Ýèþÿÿ‹U‹E ÝBÜ`Ýðþÿÿ‹M‹U ÝAÜbÝøþÿÿ‹EPèþÿÿQU€RèóÿÿƒÄ ÙèÝÿÿÿÙîÝÿÿÿÙîÝÿÿÿÙîÝÿÿÿÙîÝ ÿÿÿÙèÝ(ÿÿÿÙîÝ0ÿÿÿÙîÝ8ÿÿÿÙîÝ@ÿÿÿÙîÝHÿÿÿÙèÝPÿÿÿÙîÝXÿÿÿÙîÝ`ÿÿÿÙîÝhÿÿÿÙîÝpÿÿÿÙèÝxÿÿÿ‹E ÝÝ`ÿÿÿ‹M ÝAÝhÿÿÿ‹U ÝBÝpÿÿÿÝE€ÜÿÿÿÝEˆÜ ÿÿÿÞÁÝEÜ@ÿÿÿÞÁÝE˜Ü`ÿÿÿÞÁ‹EÝÝE€ÜÿÿÿÝEˆÜ(ÿÿÿÞÁÝEÜHÿÿÿÞÁÝE˜ÜhÿÿÿÞÁ‹MÝYÝE€ÜÿÿÿÝEˆÜ0ÿÿÿÞÁÝEÜPÿÿÿÞÁÝE˜ÜpÿÿÿÞÁ‹UÝZÝE€ÜÿÿÿÝEˆÜ8ÿÿÿÞÁÝEÜXÿÿÿÞÁÝE˜ÜxÿÿÿÞÁ‹EÝXÝE ÜÿÿÿÝE¨Ü ÿÿÿÞÁÝE°Ü@ÿÿÿÞÁÝE¸Ü`ÿÿÿÞÁ‹MÝY ÝE ÜÿÿÿÝE¨Ü(ÿÿÿÞÁÝE°ÜHÿÿÿÞÁÝE¸ÜhÿÿÿÞÁ‹UÝZ(ÝE ÜÿÿÿÝE¨Ü0ÿÿÿÞÁÝE°ÜPÿÿÿÞÁÝE¸ÜpÿÿÿÞÁ‹EÝX0ÝE ÜÿÿÿÝE¨Ü8ÿÿÿÞÁÝE°ÜXÿÿÿÞÁÝE¸ÜxÿÿÿÞÁ‹MÝY8ÝEÀÜÿÿÿÝEÈÜ ÿÿÿÞÁÝEÐÜ@ÿÿÿÞÁÝEØÜ`ÿÿÿÞÁ‹UÝZ@ÝEÀÜÿÿÿÝEÈÜ(ÿÿÿÞÁÝEÐÜHÿÿÿÞÁÝEØÜhÿÿÿÞÁ‹EÝXHÝEÀÜÿÿÿÝEÈÜ0ÿÿÿÞÁÝEÐÜPÿÿÿÞÁÝEØÜpÿÿÿÞÁ‹MÝYPÝEÀÜÿÿÿÝEÈÜ8ÿÿÿÞÁÝEÐÜXÿÿÿÞÁÝEØÜxÿÿÿÞÁ‹UÝZXÝEàÜÿÿÿÝEèÜ ÿÿÿÞÁÝEðÜ@ÿÿÿÞÁÝEøÜ`ÿÿÿÞÁ‹EÝX`ÝEàÜÿÿÿÝEèÜ(ÿÿÿÞÁÝEðÜHÿÿÿÞÁÝEøÜhÿÿÿÞÁ‹MÝYhÝEàÜÿÿÿÝEèÜ0ÿÿÿÞÁÝEðÜPÿÿÿÞÁÝEøÜpÿÿÿÞÁ‹UÝZpÝEàÜÿÿÿÝEèÜ8ÿÿÿÞÁÝEðÜXÿÿÿÞÁÝEøÜxÿÿÿÞÁ‹EÝXx‹å]Ãÿ%àÿ% àÿ%àÿ%àÿ%àÿ%àÌÌÿ%`àÿ%Xàÿ%\àÿ%¸àjhøáè(ÿ5|ó‹5„àÿÖY‰Eäƒøÿu ÿuÿ€àYëgjèøYƒeüÿ5|óÿÖ‰Eäÿ5xóÿÖYY‰EàEàPEäPÿu‹5xàÿÖYP軉EÜÿuäÿÖ£|óÿuàÿփģxóÇEüþÿÿÿè ‹EÜèÞÃjèYËÿU‹ìÿuèNÿÿÿ÷ØÀ÷ØYH]Ãÿ%hàÿ%làƒ=pót-U‹ìƒìƒäøÝ$ò,$ÉÃ=pótƒìÙ<$XfƒàfƒøtÓU‹ìƒì ƒäðÙÀÙT$ß|$ßl$‹T$‹D$…Àt<Þé…ÒyÙ$‹ $ñ€ÁÿÿÿƒÐ‹T$ƒÒë,Ù$‹ $ÁÿÿÿƒØ‹T$ƒÚë‹T$÷Âÿÿÿu¸Ù\$Ù\$ÉËÿVh€ÿˆà‹ðVÿxàYY£|ó£xó…öu3À@^Ã&èÖhKÚèôþÿÿÇ$ÚèèþÿÿY3À^ËÿU‹ìQQ3À9E u90ð~<ÿ 0ðƒ} ‹ œà‹ SVW‰ dó…Ôd‹ ‹y‹5Pà‰E P»lóë3ÀéÉ;ÇthèÿHàjWSÿÖ…ÀuçëÇE ¡hój^…Àt jèâëæ\æúäåòäåå å4å>åLå^åfåpå‚åå å¬åºåÈåØåêåæ(æèäàäåXäJä:ä*ää äþãðãæãØãÐãÕ Ú@ð?ð¿-DTû!@333333ã¿333333ã?-DTû! @à?@íµ ÷ÆÀ>ÓBÎûÿï¿ÓBÎûÿï?9R¢Fß‘?@@€v@2@@ð˜ðHðàá5ÙþÿÿÿÌÿÿÿþÿÿÿDÔþÿÿÿÐÿÿÿþÿÿÿ›ØgØ{ØþÿÿÿÔÿÿÿþÿÿÿwÙ“ÙþÿÿÿØÿÿÿþÿÿÿ›Û¯Û ãfäÀààâÖäà8ã(åXàüâ|çà¶ä¤ä”ä„ätäÈäÖæÀæìæ–æzæçç.çJçhç°æTæ>æ\æúäåòäåå å4å>åLå^åfåpå‚åå å¬åºåÈåØåêåæ(æèäàäåXäJä:ä*ää äþãðãæãØãÐãQglEndFglVertex3dv glBeginglColor3fv¼glNormal3dvglTexCoord2dÔglPopMatrix¶glMultMatrixdÙglPushMatrix,glColor4fv–glIsEnabledOPENGL32.dll gluDeleteTess gluEndPolygon2gluTessVertexgluBeginPolygon-gluTessCallbackgluNewTessGLU32.dlläfreemalloc·acosHsqrtÉcosDsin:realloc¼atan2ÎfabsMSVCR90.dllæ_unlock–__dllonexitj_encode_pointerv_lock_onexit`_decode_pointer‡_malloc_crtk_encoded_null_initterm_initterm_e_amsg_exit _adjust_fdivj__CppXcptFilters_except_handler4_commonŒ__clean_type_info_names_internalK_crt_debugger_hook½InterlockedExchange!SleepºInterlockedCompareExchangeËDisableThreadLibraryCallsTQueryPerformanceCounterfGetTickCount­GetCurrentThreadIdªGetCurrentProcessIdOGetSystemTimeAsFileTime-TerminateProcess©GetCurrentProcess>UnhandledExceptionFilterSetUnhandledExceptionFilterÑIsDebuggerPresentKERNEL32.dll™dfN²è¸çè€è -°+°70<À9`0P-€>€+à7@2à+ 8 >01Ðr rsÀE°AÀ?pBCÐÂpÏÀèÍèÝèìèøèé éé&é6éEéOéaépézéŒé›é¤é®é¹éÉéÓéÞéêéúé opengle32.dllgleExtrusiongleGetJoinStylegleGetNumSidesgleHelicoidgleLatheglePolyConeglePolyCylindergleScrewgleSetJoinStylegleSetNumSidesgleSpiralgleSuperExtrusiongleTextureModegleToroidgleTwistExtrusionrot_about_axisrot_axisrot_omegarot_princeurot_about_axisurot_axisurot_omegaurot_princeuview_directionuviewpointÿÿÿÿÿÿÿÿNæ@»±¿DÜ00,0K0f0~0ƒ0ž0¶0À0Ñ0å0÷0ý01"1'131>1U1m1|1¤1ª1Æ1Þ1è1î1 2"2-2A2G2[2m2w2}2‘2£2©2µ2À2Õ2í2ü2353M3S3o3‡33©3Á3Ì3Ü3ë3ý344(4.4B4T4Z4f4q4…44¬4Ô4Ú4ï45 5'5?5I5O5d5|55œ5´5¾5×5Ü5ì5þ566*646:6J6\6b6u6‡6Œ6˜6£6µ6Í6Ü6770767R7j7p7Œ7¤7ª7Ì7ç7í78*858I8a8|88¢8½8Â8ã8þ899)9/9C9U9[9g9r9…99¬9×9Ý9ò9 ::*:B:L:R:g::„:Ÿ:·:Á:Ç:Ü:ô:ù:;5;?;E;Z;r;w;˜;³;½;Ö;Û;ô;<<7/>E>]>c>>—>>³>Ë>Ñ>í>??$?4?F?L?`?r?x?‡?™?ž?²?Ä?Ê?Õ?à?õ? T 00D0J0_0w0|0—0¯0¹0¿0Ô0ì0ñ0 1$1.1G1L1\1n1t1ˆ1š1¤1ª1º1Ì1Ò1å1÷1ü122%2=2L2r2ˆ2 2¦2Â2Ú2à2ö23303H3N3c3{3€3¡3¼3Á3×3ï3õ3424=4Q4i4„4‰4ª4Å4Ê4ã4þ45&5A5G5`5{55”5¦5«5Ä5ß5å5ù5 666(656M6\6‡66¢6º6¿6Ú6ò6ü677/747O7g7q7w7Œ7¤7©7Ê7å7ï7õ7 8"8'8H8c8m8†8‹8¤8¿8Å8ç89 99*9E9K9m9ˆ9’9—9°9Ë9Ñ9å9÷9:: :;:A:T:f:k:w:‚:¦:É:Ù:ë: ;;.;™;©;»;ë<=p?0l'4¾4Û4õ5ý5 666(6/686—6»6Õ6µ7Â7Ç7Ô7å7ò7÷7 8&83888E8K8U8[8f8l8w8}8ˆ8Ž8œ8¢8Ó8Ø8Þ8ä8ë8ñ899999"9,92989?9E9V9\9b9i9o9€9†9Œ9“9™9ª9°9¶9½9Ã9Ê9Ô9Ú9à9ç9í9þ9: :::(:.:4:;:A:O:U:[:b:h:o:v:|:‚:‰:::£:©:°:¶:Ñ:×:â:è:ô:ú:; ;;;-;3;B;N;Z;g;t;€;;”;˜;œ; ;¤;¨;¬;°;´;¸;¼;Ê;Ö;â;û;<<â<è<ô<==&=2===I=V=b=r=}=‰=™=¢=­=¹=É=Ô=à=ð=ù=>0><>H>n>ƒ>?8?Q?t?}?†?•?ž?©?µ?À?@t‚0ˆ0”0œ0¨0´0À0Ë0×0ç0ñ0ý0 11(1@1K1T1l11œ1¨1Î1ã1d2ˆ2¡2 3"3.373O3p3|3ˆ3¿3Ø34(4A4“6§6»6Ð6 8¦8¾:Û>ð>?D?Q?™?PÈ&04n444¢4¸4Á4Ñ4ã4L5ñ566-6?6b6h6p6€6’6¨6_8­8Ï8ä8ù89”9©9':?:N:–:¬:¾:Ì:â:ô:ÿ:&;:;L;Z;m;;„;;›; ;÷;<T>c>¦>µ>Ç>ñ>??'?=?O?Z?…?•?§?Â?Ö?è?ö?`p 00"0.090?0`0p0‚0¢0«0º0Ì0 1$131d1‰1™1«1Õ1ë1ý1 22"242B2X2j2u2–2­2¼2Î2ê2þ23 373F3X3e3y3‹3‘3œ3§3­3Ì3â3ò34.444=4L4^4œ4´4Ã4 55*5T5j5|5Š5 5²5â5û5 6646F6Q6Š6š6¬6Ü6õ677.7@7\7o77Ž7¢7´7º7Å7Ð7Ö7ø78898B8R8d8œ8´8Ã8÷89,9>9h9~99 9¥9µ9Ç9Õ9ë9ý9::%:7:f:~:: :¦:µ:Ç:Ô:ì:þ:;T;;;¡;§;À;Ò;â;è;ø; <<1!?'?7?=?p(p0í01Ÿ1È2ø23T5ì566G6I;Ú;ç;Q?€47 7 7&7ó9ù9 ::«:Ü:$;K;œ;bä>o?‡?Ÿ?À?$0020¿03C8ï8a:;;6;á<º>S? $¡0-1:1ƒ:‰:œ:¢:(;:;L;4=:=M=S=°`p0v0‰001'191331373n5=6278ú8ÿ8#9÷9:<:$;E;i;à;’<ª<Â<æ3?˜?ž?ÀL1>1¸1¾1;2K2]2l2{22Ó34£4©4ð5.6À6Æ6W7…7š8 8°8¶8¼9Ë9¦;¬;¿;Å;???!?Ðdï1õ12233%3:3I3U3h3z33“3¥3­3Á3Ó3Ù3ì3þ344)4/4:4E44¹4Î5Ô5ä5ê5^7m7S9Y9l9r9¸=¾=Ñ=×=Ü>ù?à”†1Œ1Ÿ1¥1æ233*393?3S3c3u33•3§3­3À3Ò3Ù3í3ÿ344+414D4V4j4z4Œ4’4¦4¸4¾4Í4ß4ä4ø4 55%575=5P5b5g5w5‰55£5µ5»5Ê5Ü5á5õ56 66#6¦6¾8Û<ð<=D=Q=™=&>ðô2n222¢2¸2Á2Ñ2ã2L3ñ344-4?4b4h4p4€4’4¨4_6­6Ï6ä6ù67”7©7'8?8N8–8¬8¾8Ì8â8ô8ÿ8&9:9L9Z9m99„99›9 9÷9::s:y::¡:¹:¾:Ó:å:ï:';-;A;S;k;q;…;—;;©;´;º;Õ;ÿ;<>">.>9>?>`>p>‚>¢>«>º>Ì> ?$?3?d?‰?™?«?Õ?ë?ý?l 00"040B0X0j0u0–0­0¼0Î0ê0þ01 171F1X1e1y1‹1‘1œ1§1­1Ì1â1ò12.242=2L2^2œ2´2Ã2 33*3T3j3|3Š3 3²3â3û3 4444F4Q4Š4š4¬4Ü4õ455.5@5\5o55Ž5¢5´5º5Å5Ð5Ö5ø56696B6R6d6œ6´6Ã6÷67,7>7h7~77 7¥7µ7Ç7Õ7ë7ý788%878f8~88 8¦8µ8Ç8Ô8ì8þ89T999¡9§9À9Ò9â9è9ø9 ::1:C:V:m:|:Ž:ª:¾:Ð:à:æ:ö:;;);;;@;L;W;\;{;; ;²;Ü;â;ë;û; > >³?˜)040C0Q0®0Ð0ƒ1Ÿ1Ï1“2¶2Ù2é2û23,3>3©3¹3Ë3û4*5€77<Î<å<ý< =4=:=V=n=x=~=š=²=½=Ñ=×=ë=ý=> >!>3>9>E>P>e>}>Œ>´>º>Ï>ç>ì>??)?/?D?\?a?|?”?ž?·?¼?Ì?Þ?ä?ø? ¨ 000*0<0B0U0g0l0x0ƒ0•0­0¼0ç0í0111:1R1\1b1w11”1¯1Ç1Ñ1×1ì12 2*2E2O2U2j2‚2‡2¨2Ã2Í2æ2ë233%3G3b3l3q3Š3¥3«3Í3è3ò3÷34+414E4W4a4g4€4›4¡4´4Æ4Ë4×4â4õ4 55D5J5_5w5|5—5¯5¹5¿5Ô5ì5ñ5 6$6.6G6L6\6n6t6ˆ6š6¤6ª6º6Ì6Ò6å6÷6ü677%7=7L7w7}7’7ª7¯7Ê7â7ì7ò788$8?8W8a8g8|8”8™8º8Õ8ß8å8ú89989S9]9v9{9”9¯9µ9×9ò9ü9::5:;:]:x:‚:‡: :»:Á:Õ:ç:ñ:÷:;+;1;D;V;[;g;r;…;’;—;¤;µ;Â;Ç;Ô;æ;ó;ø;<<<(<4<@$>‹>±>Ä>›?¨?Ë?@(ç0»1`3g3Ð3Ô3Ø3Ü3é506L6b6ï6C9s>?P‘061N1f13ê4ƒ5Ñ6]7j7`D³0¹0Ì0Ò0X1j1|1d3j3}3ƒ3 6¦6¹6¿6E7W7i7H9N9a9g9ž;m*?/?S?pp'0H0l0T1u1™12Â2Ú2ò23Q3f3{3š3Â3Ò3ä3ó344+5c5È5Î537n7è7î7k8{88œ8«8½8:A:Ó:Ù: <^<ð<ö<‡=µ=Ê>Ð>à>æ>ì?û?€hÖ1Ü1ï1õ12585K5Q58%888>819O9U9j9y9…9˜9ª9¯9Ã9Õ9Ý9ñ9: ::.:3:G:Y:_:j:u:±:é:þ;<<<Ž==ƒ?‰?œ?¢?¨è3î344 5)6¶7¼7Ï7Õ79?9E9Z9i9o9ƒ9“9¥9±9Å9×9Ý9ð9: ::/:5:I:[:a:t:†:š:ª:¼:Â:Ö:è:î:ý:;;(;:;E;U;g;m;€;’;—;§;¹;¿;Ó;å;ë;ú; <<%<7<=r>×>Ý> DB0}0÷0ý0œ1¬1¾1Í1Ü1î1û12%2>3v3Û3á35N5È5Î5T8ì899G9I>Ú>ç>°(Q2: : :&:ó<ù< ==«=Ü=$>K>œ>b?ÀN0(1ä1o2‡2Ÿ2À2Ð$l3r3x3~3„3Š3’3˜3ž3¤3«3¶3¼3Ð3å3ð344+4f4l4r4Ž4%5.555:5P5\5z5‚5Œ5—5­5¶5Î5æ5û566!6&626B6H6O6f6l66’6£6»6Ó6Ù6í677*727]7d7i7n7u7‚7“7°7½7Õ7(8U88Ì8Ò8Ø8Ý8ú8G9L9]9::):.:O:T:;;/;M;a;g;Ð;Ö;Ü;â;ó;ÿ;<6ƒÄé´ƒ}ôu‹URh¸è"ƒÄ阋Eô;Eðué‹‹MðQèԃċUô‹BƒÀ‹Mô‰A‹@N¡@N‹J,;H u‹@N‹Eô‰B ‹ @N‹Uô‹B‰Aë!‹ @N‹Q$‹Eô‰B‹ @N‹Q$‹Eô‹H‰J‹Uô‹BP‹ @N‹Q,R¡ÐLPèUÓƒÄ ‹å]ÂÌÌÌÌÌÌÌÌÌÌÌÌU‹ììjè“ØƒÄ‰…üÿÿƒ½üÿÿu hdè䌃ÄÇ…üÿÿ‹…üÿÿÇ‹üÿÿÇA ‹•üÿÿÇB‹…üÿÿ‹H kÉ Qè2؃Ä‹•üÿÿ‰B‹…üÿÿƒxu hdè}ŒƒÄ‹üÿÿ‹Q ƒê‰•üûÿÿë‹…üûÿÿƒè‰…üûÿÿƒ½üûÿÿ|O‹üûÿÿkÉ ‹•üÿÿ‹BÇ€¿‹üûÿÿkÉ ‹•üÿÿ‹BÇD€¿‹üûÿÿkÉ ‹•üÿÿ‹BÇD€¿ë™‹MQ‹ÐLRè/¸ƒÄ‰…øûÿÿƒ½øûÿÿÿt‹…üÿÿ‹øûÿÿ;H |,j‹•üÿÿ‹P‹ øQQ‹ÐLRè>σÄ‹üÿÿ‰Aë"jj‹øQR¡ÐLPèσÄ‹üÿÿ‰A‹•üÿÿ¡XL‰B‹üÿÿ‰ XL‹…üÿÿ‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ì‹E‹HစÉu ‹U3ÀŠBƒøu ‹MQè7ƒÄ‹U ‰‹E ‹‹U‹A‰ë‹M Ç‹UÇ]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ì‹EPèÔýÿÿƒÄ]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì‹E‹Hƒé‹U‰J‹Eƒxug‹ XL‰MøÇEüXLƒ}øt)‹Uø;Uu ‹Eü‹M‹Q‰ë‹EøƒÀ‰Eü‹Mø‹Q‰UøëÑ‹E‹HQÿ$€‹U‹BPè'׃Ä‹MQè׃Ä‹å]ÃÌÌÌÌÌÌÌU‹ìƒì ‹E‹H<‰Müƒ}ü|Bƒ}üs<‹Uüƒ<Õ|u‹Eü‹ ÅxQjÿä‹Uü‰Õ|‹Eü‹ Å|‰Møé‹‹Uü‰Uôƒ}ôdtƒ}ôet`ƒ}ôftcëq‹EƒxXt"‹M‹QX‰U‹Eƒx‹Eƒxht9‹MQè[ƒÄ‹U‹B8P‹M‹Q4R‹Eÿ¬ƒÄ‹MÇAh‹UüƒÊ‰Uü‹Eƒx$„|‹M‹Q$ƒz,„l‹E‹‰M¸‹Uƒz$t‹E‹H$‹Q‰U°ëÇE°‹E°‰E¼‹Müá…É„Šƒ=8Mt'‹Uƒzlt‹Eü%=u‹M‹QRÿ€ëZ‹E‹M‹Q‰P(‹E‹M‹Q ‰P,‹E‹M‹Q‰P0‹Eü%£„L‹MQèZƒÄ‹UÇBl‹Eÿ¨Ç„L‹Müá…É„’‹U¸¡DN‹ ‰Mƒ}t~‹Uƒz$tu‹E‹H$‹Q;U¼ug‹E‹H$ƒy,t[‹U‹B$‹M‹P‰Q(‹E‹H$‹U‹A‰B,‹M‹Q$‹E‹J ‰H0‹Uü≄L‹EPèoYƒÄ‹M‹Q$ÿR,Ç„Lësƒ=8Mt2‹Eƒx$u)‹Mƒylt ‹Uüâúu‹E‹HQÿ€ë8‹Uü≄L‹EPèYƒÄ‹MÇAl‹Uÿ’¨Ç„L‹E‹Mü ˆ€‰Mü‹Uüƒâ@…Òt‹EPèÂXƒÄÿÀ‹MüစÉt‹URè£XƒÄè+U‹E‹ˆ€á?þÿÿ‹U‰Š€‹Eƒ¸€t‹Eë$‹MÁ„9 hLu ÇhL‹U‹‚„‹å]ÃùM.N}NdNINÌÌÌÌÌÌU‹ìƒì Wj ‹EP莪ƒÄ‰Eüƒ}üu ‹M¾…Òu3Àéƒ=˜Luhÿ¼£˜L¡˜L‰Eø‹MQ‹UøR賩ƒÄ‰Eüƒ}üuëR‹}ƒÉÿ3Àò®÷уÁÿ‹EüÁ‰Eô‹Mü;Møt ‹Uü3ÀŠBÿƒø u‹Mô3ÒŠƒú t ‹Eô3ÉŠ…Éu¸ë ‹Uô‰Uøë“3À_‹å]ÂÌÌÌÌÌÌÌÌÌÌU‹ìQ‹E‰Eüƒ}üf‡³‹Uü3ÉŠŠ}Tÿ$T¡@N‹M ‰ˆü鎋@N‹E ‰‚éz‹ @N‹U ‰‘éf¡@N‹M ‰ˆéS‹@N‹E ‰‚ é?‹ @N‹U ‰‘é+¡@N‹M ‰ˆé‹@N‹E ‰‚é‹ @N‹U ‰‘éð¡@N‹M ‰ˆ éÝ‹@N‹E ‰‚$éÉ‹ @N‹U ‰‘(鵡@N‹M ‰ˆ,颋@N‹E ‰‚0鎋 @N‹U ‰‘4ë}¡@N‹M ‰ˆ8ëm‹@N‹E ‰‚<ë\‹ @N‹U ‰‘@ëK¡@N‹M ‰ˆDë;‹@N‹E ‰‚Hë*‹ @N‹Q$‹E ‰B0ë‹ |L‹U ‰Q,ë ¡R‹M ‰H‹å]ÂvR‰RR±RÄRØRìRÿRS'S:SNSbSuS‰SšSªS»SÌSÜSíSþS TT ÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQ‹E‰Eüƒ}üf‡n‹Uü3ÉŠŠÚVÿ$zV¡@N‹€üéN‹ @N‹é=‹@N‹‚é,¡@N‹€é‹ @N‹ é ‹@N‹‚éú¡@N‹€éê‹ @N‹éÙ‹@N‹‚éÈ¡@N‹€ 鸋 @N‹$é§‹@N‹‚(é–¡@N‹€,醋 @N‹0ëx‹@N‹‚4ëj¡@N‹€8ë]‹ @N‹<ëO‹@N‹‚@ëA¡@N‹€Dë4‹ @N‹Hë&‹@N‹B$‹@0ë‹ |L‹A,ë ‹tL‹Bë3À‹å]ÂU&U7UHUXUiUzUŠU›U¬U¼UÍUÞUîUüU VV%V3V@VNV\VgVrV ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒ=¨Ltëo¡@NÇ€”‹ @Nǘ‹@N¡ôQ‰‚œ‹ @N‹üQ‰‘ ¡@N‹ˆƒÉ‹@N‰Šh¡@NPèÖïÿÿƒÄ]ÃÌU‹ìƒ= Ltjjÿd‚Ç LǨL]ÃÌÌÌÌU‹ìƒ=¨Luh˜èºMƒÄ롨LP‹ ¨LQèÓ`ƒÄǨL]ÃÌÌÌÌU‹ìƒìèUEüP‹MQèXƒÄ‰Eø‹UüR‹EøP‹ ”Q‹œLRèƒÄ£¤L‹EøP賚ƒÄ‹å]ÂÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ììœVWƒ=”|éÁǔDždÿÿÿ…lÿÿÿP‹dÿÿÿQjÿ`‚…Àt5}Ørƒ}ätƒ}ä¸ë7‹ @N‹øë)¡$Më"¡(Më¡,Më‹URhpèÂ%ƒÄƒÈÿ‹å]ÂooyŠ˜¦­´»ÂÉÖë€òùÝÌÌU‹ìQƒ=4Mt¡MëOÇ4Mj+ÿX‚£`ƒ=Muƒ=Muƒ= Mu ÇEüëÇEü‹Eü£M¡M‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìQƒ}tMƒ} ~G¡@NƒxHu+jjj‹ @N‹Q Rÿ°‚‰Eüƒ}üu ‹E Pjÿ¬‚‹ @N‹U ‰‘øë@¡@Nƒ¸ôt#‹ @Nƒ¹ø~‹@NƒzHujÿ¨‚¡@NÇ€ø‹ @N‹U‰‘ô‹å]ÂÌÌÌÌU‹ìƒìP¡@Nƒ¸ô„—ÇEÌ4ÇEÐÿMÌQjÿ¤‚‰Eȃ}Èut‹UÔ‰UÄ‹E؉EÀ‹M܉M¼‹U¼êÿ‰U¸ÛE¸Ü5Ð0èõoP‹EÀ-ÿ‰E´ÛE´Ü5Ð0èÛoP‹MÄéÿ‰M°ÛE°Ü5Ð0èÀoP‹UìR¡@NÿôƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQƒ}u¡@Nƒ¸Ðu ÇEüëÇEü‹MüQjè8ƒÄ‹@N‹E‰‚À‹å]ÂÌÌÌÌÌU‹ìQƒ}u¡@Nƒ¸Àu ÇEüëÇEü‹MüQjèM8ƒÄ‹@N‹E‰‚Ћå]ÂÌÌÌÌÌU‹ì¡@N‹M‰ˆŒ]ÂÌÌÌÌÌÌÌÌÌÌÌU‹ì]ÂÌÌÌÌÌÌÌÌÌU‹ìQƒ}u¡@Nƒ¸Ôu ÇEüëÇEü‹MüQjèÍ7ƒÄ‹@N‹E‰‚Ä‹å]ÂÌÌÌÌÌU‹ìQƒ}u¡@Nƒ¸Äu ÇEüëÇEü‹MüQjè}7ƒÄ‹@N‹E‰‚Ô‹å]ÂÌÌÌÌÌU‹ìƒì4ƒ=ÆEÜ‹EüƒÀ‰Eüë/ÆEã ‹MüƒÁ‰Müë ‹UüƒÂ‰Uü‹EüŠˆMäë ÆEÞ‹UüƒÂ‰Uü‹EüƒÀ‰EüéáþÿÿMÌQ‹ÜQRÿ€‰Eȃ}È~qj(èP-ƒÄ‰Eô‹EôPj(‹MÈQ‹ÜQRÿ€ƒ}øt‹Eô‹Hƒá…Éu‹UôRèQ.ƒÄ3Àë-‹Eô3ÉŠHƒùu‹Uô3ÀŠB ƒø|‹MôQè'.ƒÄ3Àë‹Eô_‹å]äñÃÇÃÝÃæÃôÃÄÄ(Ä7ÄFÄUÄdÄwÄwÄwÄwÄÌÌÌÌÌÌÌU‹ì‹E£èQ]ÂÌU‹ì‹E£èQ]ÂÌU‹ì‹E£|L]ÃÌÌÌU‹ì¡RP貃Äÿ4€ƒ=èQt;‹ LNQèäãÿÿƒÄ‹RRèµÿÿÿƒÄÇR‹EP‹M QjÿèQƒÄ ÇRƒ=äQtD‹äQƒzu8¡LNPè‹ãÿÿƒÄ‹ äQ‹QRèYÿÿÿƒÄ¡äQ‹H Q‹äQ‹BÿPƒÄÇLN]ÃÌÌU‹ì‹Eƒxt‹M‹QRèèÿÿÿƒÄ‹EÇ@‹MÇA ‹UÇB]ÃÌÌÌÌÌU‹ì‹E£R‹M ‰ LNÇäQƒ=èQt+‹URèÀþÿÿƒÄ‹E PèÔâÿÿƒÄ‹MQ‹URjÿèQƒÄ ‹EP‹MQ‹URè ƒÄ ]ÃÌÌÌÌÌÌÌÌU‹ìj¡@N‹H Qj‹UR‹E P3Ƀ=àQ”Á÷ÙɃáQ‹U‹BPÿ8‚]ÃÌÌÌÌÌU‹ìƒì ‹E‹H‰Mø‹U‹B ‰Eüƒ}ütW‹Mü‹Q;U u‹EüëI‹Eüƒxt*‹M Q‹Uü‹B ‹ XN‹Rè°ÿÿÿƒÄ‰Eôƒ}ôt‹Eôë‹Eøƒè‰Eø‹Mü‹Q ‰Uüë£3À‹å]ÃÌÌÌÌÌU‹ìƒ}| ‹E;\N~3Àë ‹M‹XN‹DŠü]ÃÌÌÌÌÌÌÌÌÌU‹ìƒìƒ=Rtèl觉Eøj0èà)ƒÄ‰Eüƒ}üu hdè7ÞÿÿƒÄ‹Eü‹Mø‰‹UüÇB‹EüÇ@‹Mü‹U‰Q‹EüÇ@ ‹MüÇA‹UüÇB‹EüÇ@ ÿ4‚‹Mü‰A‹Uø¡XN‹Mü‰ ‹UüRèäüÿÿƒÄ‹EøƒÀ‹å]ÂÌÌÌÌÌU‹ìQÇEüë ‹EüƒÀ‰Eü‹Mü; \N}‹Uü¡XNƒ<u‹Eüëzë׋ \NƒÁ‰ \Nƒ=XNt‹\NÁâR¡XNPè+ƒÄ£XNëjèÏ(ƒÄ£XNƒ=XNu hdè!ÝÿÿƒÄ‹ \N‹XNÇDŠü¡\Nƒè‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìhØèCÜÿÿƒÄh„èÖÜÿÿƒÄ]ÃÌU‹ì‹E £øL‹MQèLþÿÿ]ÂÌÌÌÌÌÌÌÌU‹ìƒì ‹EPèþÿÿƒÄ‰Eüƒ=Rtèÿÿÿ‹Mü‹QRÿ0‚‹E‹ XNÇDü‹Uü‹B ‰Eøƒ}øt,‹Mø‹Q ‰Uô‹Eø‹HQè)ƒÄ‹UøRè )ƒÄ‹Eô‰Eøë΋ |L;Müu Ç|L‹UüRèã(ƒÄ‹å]ÂÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒ=|Lt ¡|L‹ƒÀë3À]ÃÌÌÌÌU‹ìQƒ}| ‹E;\N~h¸è!ÛÿÿƒÄë1‹M‹XN‹DŠü‰Eüƒ}üuh¸èüÚÿÿƒÄë ‹MüQè®úÿÿƒÄ‹å]ÂÌÌÌÌÌU‹ìQƒ=Rtè~þÿÿj$èú&ƒÄ‰Eüƒ}üu hdèQÛÿÿƒÄ‹Eü‹ |L‰Hj‹U R‹EP‹MüQè?ƒÄ‹|L‹BƒÀ‹ |L‰A‹Uü¡|L‹H ‰J ‹|L‹Eü‰B ‹å]ÂÌÌÌÌÌÌÌU‹ìQW‹E‹H‰Mü‹U RèÙÙÿÿƒÄ‹M‰A‹Uƒzu hdè½ÚÿÿƒÄ‹E‹M‰H‹} ƒÉÿ3Àò®÷уÁÿ‹U‰J‹E‹M‰H ‹U¡€‰B‹ €ƒÁ‰ €ƒ}t‹U R‹E‹Qj‹Uü‹BPÿ,‚ë‹M Q‹U‹BPj‹Mü‹QRÿ,‚_‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒìƒ=Rtè,ýÿÿj$è¨%ƒÄ‰Eøƒ}øu hdèÿÙÿÿƒÄ¡|L‹HƒÁ‹|L‰J‹Eø‹ |L‰H‹U Rè3ûÿÿƒÄ‰Eüƒ}üt ‹Eø‹Mü‹Q‰j‹E ƒèP‹MQ‹UøRè¶þÿÿƒÄ¡|L‹HƒÁ‹|L‰J‹Eø‹ |L‹Q ‰P ¡|L‹Mø‰H ‹å]ÂÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìWƒ=Rtè[üÿÿ¡|L‹H‰Mø‹|L‹B ‰Eüƒ}ü„ý‹Mø;M…Ú‹Uüƒzt‹Eü‹H‹Qƒê‹Eü‹H‰Q‹Uü‹BPèÁ%ƒÄ‹M Qè-£ƒÄ‹Uü‰B‹Eüƒxu hèÌØÿÿƒÄ‹MüÇA‹} ƒÉÿ3Àò®÷уÁÿ‹Uü‰J‹Eü‹M‰H ‹Uü¡€‰B‹ €ƒÁ‰ €h‹UøƒêR¡|L‹HQÿ$‚‹U R‹Eü‹HQh‹UøƒêR¡|L‹HQÿ(‚ë(‹Uøƒê‰Uø‹Eü‹H ‰Müéùþÿÿ‹URhàè×ÿÿƒÄ_‹å] ÌÌÌÌÌU‹ìƒì Wƒ=Rtè ûÿÿ¡|L‹H‰Mô‹|L‹B ‰Eüƒ}ü„!‹Mô;M…þ‹Uüƒzu‹Eü‹H‹QƒÂ‹Eü‹H‰Q‹Uü‹BPèq$ƒÄ‹M QèÝ¡ƒÄ‹Uü‰B‹Eüƒxu hè|×ÿÿƒÄ‹MüÇA‹} ƒÉÿ3Àò®÷уÁÿ‹Uü‰J‹Eƒè‹Mü‰A ‹Uü¡€‰B‹ €ƒÁ‰ €‹URè‹øÿÿƒÄ‰Eøƒ}øt ‹Eü‹Mø‹Q‰h‹EôƒèP‹ |L‹QRÿ$‚‹E P‹Mü‹Rh‹EôƒèP‹ |L‹QRÿ(‚ë(‹Eôƒè‰Eô‹Mü‹Q ‰UüéÕþÿÿ‹EPhàè ÖÿÿƒÄ_‹å] ÌU‹ìƒì ƒ=Rtèœùÿÿ¡|L‹H‰Mø‹|LƒÂ ‰Uô¡|L‹H ‰Müƒ}ü„€‹Uø;UuX¡|L‹Hƒé‹|L‰J‹Eô‹Mü‹Q ‰h‹EøƒèP‹ |L‹QRÿ$‚‹Eü‹HQèÞ"ƒÄ‹UüRèÒ"ƒÄë1‹Eøƒè‰Eø‹MüƒÁ ‰Mô‹Uü‹B ‰Eüévÿÿÿ‹MQhàè2ÕÿÿƒÄ‹å]ÂÌÌÌÌÌÌÌÌÌU‹ì¡@N;¨LuhèÕÿÿƒÄëHƒ=Rtè£øÿÿ‹M‹@Nƒ|ŠL}¡@N‹HtƒÁ‹@N‰Jt¡|L‹ƒÁ‹U¡@N‰LL]ÂÌÌÌÌÌU‹ìƒ=RtèOøÿÿ‹E‹ @Nƒ|L~%‹@N‹Btƒè‹ @N‰At‹U¡@NÇDL]ÂÌÌÌÌÌÌU‹ìƒìEøPÿ…Àt\MðQÿ ‹UôR‹EðP‹MüQ‹UøRèm1‹M‰ßmøßmðÞùØ PÜØ PÜ‹U‹iÀèiÀè‰EèÚeèè ‹M‰Aë,ÿ´‚‰Eì‹Eì3Ò¹è÷ñ‹U‰‹Eì3Ò¹è÷ñ‹E‰P3À‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQ‹E‰Eüƒ}üwI‹Müÿ$ŒÒ¸Ø ëG¸ ë@¸XÌë9¸(§ë2¸ˆ­ë+¸@Üë$¸êë¸8 ë¸À0ëhdèíÓÿÿƒÄ3À‹å]Ã:ÒAÒHÒOÒVÒ]ÒdÒkÒrÒU‹ì3À]ÃÌÌÌÌÌÌÌÌÌU‹ìƒì‹E ‹‰Mð‹U‹‰Eô‹M ‹‹E‰Uø‹M‹‹E‰Uüj‹M÷ÙÉá1?ÁÏÉQUðRÿ€‚ƒ}ð} ‹E Çë‹M ‹Uð‰ƒ}ô} ‹EÇë‹M‹Uô‰‹Eø+Eð‹M‰‹Uü+Uô‹E‰‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQ‹E ‰Eüƒ}ü w/ƒ}ü „‘‹Müƒé‰Müƒ}ü‡á‹Eü3ÒŠ¾Øÿ$•šØ}üwv}ü„i}üw5}ü„ø‹Müƒé$‰Mü}üᇋEü3ÒŠæØÿ$•ÎØ‹Müé‰Mü}üñ‡b‹Eü3ÒŠàÙÿ$•ÈÙ}üwa}ü„}üw,}ü„W}ü„n}ü„æé}ü„<}ü„Ïéæ‹Müé ‰Müƒ}ü‡Ð‹Eü3ÒŠÚÚÿ$•ÒÚ‹MQ‹URè3ƒÄ÷ØÀ÷ØH鸋EPè+ƒÄ3À饋MQèHƒÄ3Àé’‹URèuƒÄ3Àé‹EÁè%ÿÿ¿ÈQ¿UR‹EP‹MQ誃Ä3ÀéT‹UÁêâÿÿâÿÿR‹EP‹MáÿÿQ‹URèƒÄ3Àé ‹EP‹MQèσÄ3Àé ‹UR‹EPèhƒÄ3Àéò‹MQ‹URèуÄ3ÀéÛ‹EÁè%ÿÿ%ÿÿP¿MQj‹UR‹EPè2 ƒÄ3À鬋MÁéáÿÿáÿÿQ¿URj‹EP‹MQè ƒÄ3Àé{‹UÁêâÿÿâÿÿR¿EPj‹MQ‹URèЃÄ3ÀéJ‹EÁè%ÿÿ%ÿÿP¿MQj‹UR‹EP衃Ä3Àé‹MQ‹UÁêâÿÿ¿ÂP¿MQj‹URèó ƒÄ3Àéí‹EP‹MÁéáÿÿ¿ÑR¿EPj‹MQè5ƒÄ3Àé¿‹UR‹EÁè%ÿÿ¿ÈQ¿URj‹EPè(ƒÄ3Àé’‹MQ‹UÁêâÿÿ¿ÂP¿MQ‹URèƒÄ3Àéf‹EP‹MÁéáÿÿ¿ÑR¿EP‹MQèЃÄ3Àé:‹UR‹EÁè%ÿÿ¿ÈQ¿UR‹EPèŃÄ3Àé‹MQ‹UÁêâÿÿ¿ÂP¿MQ‹UR蹃Ä3Àéã‹EPèvƒÄéÒ‹MQè…ƒÄéÁ‹UÁêâÿÿâÿÿR‹EP‹MáÿÿQ‹URèsƒÄ3Àé‹EP‹MQ較Ä3Àëy‹UâÿÿƒútëS‹EÁè%ÿÿ%ÿÿP‹MáÿÿQ‹UR‹EPèƒÄë<‹M;Muë‹UR赃Äë$‹EPèƒÄë‹MQ‹UR‹E P‹MQÿ ‚‹å]ÂÀÔïÔÕ@ÕtÕ‹ÕÕÜÔ~Ø¢Õ¹ÕèÕÖJÖ~ØØ…×yÖ×§Ö~ØpØ~ØÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ì¸]ÃÌÌÌÌÌÌU‹ìƒ=øLt jÿøLƒÄ‹EPÿL‚]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQ‹EPèSÍÿÿƒÄ‰Eüƒ}üt ‹MüƒytjjÿŒ‹Uü‹BPÿ¸‹å]ÃÌÌÌU‹ìƒìD‹EPèÍÿÿƒÄ‰EüM¼Q‹URÿ‚E¼P‹MQÿ‚ƒ}üt‹Uü‹B ;Euh‹MüQè lÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìQ‹EPè³ÌÿÿƒÄ‰Eüƒ}üti‹Mü‹Q4;Uu ‹Eü‹H8;MtS‹Uü‹E‰B4‹Mü‹U‰Q8‹EüPè†ÍÿÿƒÄÿ4€‹MQ‹UR‹Eüÿ¬ƒÄ‹MüÇAhh‹UüRè‘kÿÿƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌU‹ìƒì‹EPè!ÌÿÿƒÄ‰Eüƒ}üt3Ƀ}”Á‰Mø‹UøR‹EüPè,ƒÄƒ} tjjh‹MQÿH‚‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQ‹E‹M ‰HD‹U‹E ;B@t1‹Mƒ¹Èt%‹U‹E ‰B@‹MQèªÌÿÿƒÄ‹U R‹EÿȃÄ‹M‹Q\‰Uüƒ}üt‹E P‹MüQè›ÿÿÿƒÄ‹Uü‹B`‰Eüëß‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒì‹EPèAËÿÿƒÄ‰Eüƒ}ü„†‹MüÇAH‹Uüƒº¼t‹EüPè"ÌÿÿƒÄj‹Müÿ‘¼ƒÄ‹UüƒºôtJƒ=@NtA¡@Nƒ¸ø~3jjj‹ @N‹Q Rÿ°‚‰Eøƒ}øu¡@N‹ˆøQjÿ¬‚‹å]ÃÌÌÌÌÌÌÌU‹ìQ‹EPè“ÊÿÿƒÄ‰Eüƒ}üt[‹MüÇAH‹Uüƒº¼t‹EüPèxËÿÿƒÄj‹Müÿ‘¼ƒÄ‹Uüƒºôtƒ=@Nt¡@Nƒ¸ø~jÿ¨‚‹å]ÃÌÌÌÌÌÌÌÌU‹ìƒì‹EPèÊÿÿƒÄ‰Eüƒ}üteÇEðÇEìÇEøÇEôjjð‹MQÿl‚PUìRÿ€‚‹Eô+Eì‹M ‰A‹Uø+Uð‹E ‰P‹M ‹ôQ‰Q ‹E ‹ üQ‰H$‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒì‹EPèÉÿÿƒÄ‰Eüƒ}ü„d‹MüQ‹URèdƒÄ‰Eüƒ}t+‹EÁèƒàƒè÷ØÀ@‰Eì‹Müƒ¹Œt ƒ}ìté UðRÿìEðP‹Mü‹Q Rÿ‚è£d‹E PèïƒÄ‰Eøƒ}ø}nƒ}t4‹Müƒ¹Ðt&‹UüRèèÉÿÿƒÄ‹EôP‹MðQ‹Uø÷ÚR‹EüÿÐƒÄ ë2‹Müƒ¹Ôt&‹UüRè´ÉÿÿƒÄ‹EôP‹MðQ‹Uø÷ÚR‹EüÿÔƒÄ ënƒ}ø~hƒ}t2‹Müƒ¹Àt$‹UüRètÉÿÿƒÄ‹EôP‹MðQŠUøR‹EüÿÀƒÄ ë0‹Müƒ¹Ät$‹UüRèBÉÿÿƒÄ‹EôP‹MðQŠUøR‹EüÿÄƒÄ Çdÿÿÿÿ‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒì‹E ƒx\tcMøQÿìUøR‹EPÿ‚‹MüQ‹UøR‹EPÿ‚‰Eôƒ}ôt0‹Mô;Mt(‹UôRè­ÇÿÿƒÄ‰Eðƒ}ðt‹EðP‹MôQè”ÿÿÿƒÄ‰E ‹E ‹å]ÃÌÌÌÌÌÌÌU‹ìQÇEüjÿ ‚¿À%ÿ…Àt ‹MüƒÉ‰Müjÿ ‚¿Ðâÿ…Òt‹Eü ‰Eüjÿ ‚¿Èáÿ…Ét ‹UüƒÊ‰Uü‹Eü‹å]ÃÌÌÌÌÌÌU‹ìì…ÿÿÿPÿ‚jüþÿÿQ•ÿÿÿRj‹EPÿ‚ƒøu ‹…üþÿÿ%ÿÿëƒ}.u¸ë ‹MQèƒÄ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQ‹E‰Eü‹Müƒé!‰Müƒ}üZ‡¬‹Eü3ÒŠ'ãÿ$•ÏâƒÈÿ锸þÿÿÿ銸ýÿÿÿ逸üÿÿÿëy¸ûÿÿÿër¸úÿÿÿëk¸ùÿÿÿëd¸øÿÿÿë]¸÷ÿÿÿëV¸öÿÿÿëO¸õÿÿÿëH¸ôÿÿÿëA¸œÿÿÿë:¸›ÿÿÿë3¸šÿÿÿë,¸™ÿÿÿë%¸˜ÿÿÿ븗ÿÿÿ븖ÿÿÿ븕ÿÿÿë ¸”ÿÿÿë3À‹å]æâ­â»â´âŠâ‘â˜âŸâÂâ/â7âAâKâRâYâ`âgânâuâ|âƒâÉâ ÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìj‹EP‹MQ‹URè ƒÄ]ÃÌÌÌÌÌU‹ìƒì‹EPèáÄÿÿƒÄ‰Eüƒ=RtFƒ}uéMðQÿìUðR‹EPÿ‚ÇäQ‹MôQ‹UðR‹EPè”áÿÿƒÄ éÙ‹MQÿD‚ƒ}ü„Å‹U‹Eü‹LLQè˜ãÿÿƒÄ‰Eøƒ}øtc‹U ‰Uè‹E‰EìMèQ‹Uü‹B Pÿx‚ƒ}u ÇEäë 3Ƀ}•Á‰Mä‹Uä‰àQ‹EP‹M Q‹UìR‹EèP‹MüQ‹UøRèþáÿÿƒÄëF‹Eüƒ¸°t:èhüÿÿ£d‹MüQèêÄÿÿƒÄ‹UR‹E Pj‹MQ‹Uüÿ’°ƒÄÇdÿÿÿÿ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìj‹EP‹MQ‹URèšþÿÿƒÄ]ÃÌÌÌÌÌU‹ìj‹EP‹MQ‹URèzþÿÿƒÄ]ÃÌÌÌÌÌU‹ìj‹EP‹M Q‹URè ƒÄ]ÃÌÌÌÌÌU‹ìƒì ‹EPè1ÃÿÿƒÄ‰Eüƒ=Rt@MôQÿìUôR‹EPÿ‚ƒ}uërÇäQ‹MøQ‹UôR‹EPèçßÿÿƒÄ ëRÿüƒ}ütF‹Müƒ¹°t:èEûÿÿ£d‹UüRèÇÃÿÿƒÄ‹EP‹M Qj‹UR‹Eüÿ°ƒÄÇdÿÿÿÿ‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌU‹ìj‹EP‹M Q‹URè*ÿÿÿƒÄ]ÃÌÌÌÌÌU‹ìj‹EP‹M Q‹URè ÿÿÿƒÄ]ÃÌÌÌÌÌU‹ìƒì ‹EPè1ÂÿÿƒÄ‰Eüƒ=Rt颃}ü„˜‹Mƒá…Éu‹Uƒâ…Òu‹Eƒà…Àu ÇEôëÇEô‹Mô‰Mø‹Uüƒº´t&ƒ}øt ‹EüPèÔÂÿÿƒÄ‹MQ‹U R‹Eüÿ´ƒÄ‹Müƒ¹¸t&ƒ}øu ‹UüRè¢ÂÿÿƒÄ‹EP‹M Q‹Uüÿ’¸ƒÄ‹å]ÃÌÌÌÌÌÌÌU‹ìjjhUNEM‹EPÿø3À]ÃÌÌÌÌÌÌU‹ìhUNEM‹EPÿô3À]ÃÌÌÌÌÌÌÌÌÌÌU‹ìƒìƒ=RtD‹E P‹ RQèÁßÿÿƒÄ£äQUøRÿìEøP‹MQÿ‚‹UüR‹EøP‹MQèàÝÿÿƒÄ ‹å]ÃÌÌÌÌÌÌÌÌÌU‹ìƒ=tLtè/_ÿÿ]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìQ‹EPè£ÀÿÿƒÄ‰Eüƒ}üt ‹MüQè4ÿÿƒÄ3À‹å]ÃÌÌÌÌÌU‹ìQ‹EPèsÀÿÿƒÄ‰Eüƒ}ütF‹Müƒy t=‹Uü‹B ‹HQÿ(€j‹Uü‹B ‹HQ‹Uü‹BPÿ,€‹Mü‹QRÿ0€¸ë3À‹å]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìP‹EPèÀÿÿƒÄ‰Eü‹Müƒ¹ô„“ÇEÈ4ÇEÌÿUÈRjÿ¤‚‹EЉEÄ‹MÔ‰MÀ‹U؉U¼‹E¼-ÿ‰E¸ÛE¸Ü5Ð0èâP‹MÀéÿ‰M´ÛE´Ü5Ð0èÇP‹UÄêÿ‰U°ÛE°Ü5Ð0è¬P‹EèP‹Müÿ‘ôƒÄ¸ë3À‹å]ÃÌÌU‹ìƒì WÇEôjjj¡ÜQPÿ€‰Eøƒ}ø~+‹MøkÉ(Qè~ƒÄ‰Eô‹MøkÉ(3À‹}ô‹ÑÁéó«‹ÊƒáóªÇEüë ‹EüƒÀ‰Eü‹Mü;Mø}$‹UükÒ(‹EôÂPj(‹MüƒÁQ‹ÜQRÿ€ëË‹E‹Mø‰‹Eô_‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìDW¹ 3À}Ôó«EÔPj(‹ ÜQQÿ €P‹ÜQRÿ€‹EØ%€…Àu‹MÜáÿƒùt3À雋MÝáÿºÓâ‰UЋEÐ …Q苃ĉEÌ‹UÐ •3À‹}Ì‹ÑÁéó«‹Êƒáóª‹EÌfÇ‹MÌf‹UÐf‰Q‹ẼÀPhj‹ ÜQQÿ €‹UÜâÿ…Ò…Û‹MÞáÿ¸Óàƒè‰E¼‹MàáÿºÓâƒê‰UÀ‹Mâáÿ¸Óàƒè‰EÈÇEÄë ‹MăÁ‰MÄ‹UÄ;UÐ}‹Mßáÿ‹EÄÓø#E¼iÀÿ™÷}¼‹MÄ‹ÜDŠ‹Mááÿ‹EÄÓø#EÀiÀÿ™÷}À‹MÄ‹ÜDŠ‹Mãáÿ‹EÄÓø#EÈiÀÿ™÷}È‹MÄ‹ÜDŠ‹EÄ‹MÌÆDépÿÿÿ‹UÌRÿ€‰Eü‹EÌPèrƒÄj‹MüQ‹ÜQRÿ,€¡ÜQPÿ0€‹Eü_‹å]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ìQ‹E3Éf‹H‹Á™âÿÂÁøˆEü‹U3Àf‹B™âÿÂÁøˆEý‹E3Éf‹H‹Á™âÿÂÁøˆEþÆEÿUüRj‹E‹Q‹U Rÿ€ƒ=ÜQt)‹E Pÿ(€j‹M Q‹ÜQRÿ,€¡ÜQPÿ0€‹å]ÃU‹ìQ‹E Pÿ‚‰Eüj‹MQ‹UüRÿ,€‹EüPÿ0€‹å]ÃÌU‹ìƒì‹E‰Eø‹M‰MüUøR‹E Pÿx‚‹M‹Uø‰‹E ‹Mü‰¸‹å]ÃÌÌÌÌÌÌÌU‹ìƒìEðP‹M Qÿ|‚ÇEèÇEìUèR‹E Pÿx‚‹M‹U艋E‹M쉋U‹Eø‰‹M ‹Uü‰¸‹å]ÃÌÌÌÌÌÌÌU‹ìƒì ÿ˜‚‰Eü‹EüPÿ‚‰Eôj‹MôQÿ€‰Eø‹UôR‹EüPÿ\‚‹Eø‹å]ÃU‹ìƒì ÿ˜‚‰Eü‹EüPÿ‚‰Eøj‹MøQÿ€‰Eô‹UøR‹EüPÿ\‚‹Eô‹å]ÃU‹ìƒì‹E$‰Eø‹M(‰MüUøR‹EPÿx‚‹MüQ‹UøRÿð‹å]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìjjjjEäPÿˆ‚‹å]ÃÌÌÌÌU‹ìƒìÇEìƒ}t ‹E¾…Éu‹EìéL‹U¾ƒø=u ‹MƒÁ‰M‹U‰Uä‹E侃ù+tG‹U侃ø-t<‹M侃úxt1EüP‹MäQèƒÄ‰Eð‹Uä;Uüu3Àéï‹Eü‰Eä‹MìƒÉ‰Mì‹U侃øxt ‹M侃úXu:‹EäƒÀ‰EäMüQ‹UäRèÃĉEè‹Eä;Eüu3À韋Mü‰Mä‹UìƒÊ‰Uì‹E侃ù+t‹U侃ø-…‹M侃ú-u>‹EäƒÀ‰EäMüQ‹UäRèdƒÄ÷؉Eø‹Eä;Eüu3Àé>‹Mü‰Mä‹UìƒÊ‰Uìë1‹EäƒÀ‰EäMüQ‹UäRè&ƒÄ‰Eø‹Eä;Eüu3Àé‹Mü‰Mä‹UìƒÊ‰Uì‹E侃ù+t‹U侃ø-…€‹M侃ú-u>‹EäƒÀ‰EäMüQ‹UäRèǃÄ÷؉Eô‹Eä;Eüu3Àé¡‹Mü‰Mä‹UìƒÊ ‰Uìë.‹EäƒÀ‰EäMüQ‹UäR艃ĉEô‹Eä;Eüu3Àëh‹Mü‰Mä‹UìƒÊ‰Uì‹Eä¾…Ét3ÀëK‹Uìƒâ…Òt‹E ‹Mø‰‹Uìƒâ…Òt‹E‹Mô‰‹Uìƒâ…Òt‹E‹Mð‰‹Uìƒâ…Òt‹E‹M艋Eì‹å]ÃÌÌÌÌÌÌÌÌÌÌÌU‹ìƒìÇEüÇEø‹E¾ƒù+u ‹UƒÂ‰Uë‹E¾ƒù-u‹UƒÂ‰UÇEøÿÿÿÿë ‹EƒÀ‰E‹M¾ƒú0| ‹E¾ƒù9‹UükÒ ‹E¾T ЉUüëÌ‹E ‹M‰ƒ}ø|‹Eüë‹Eü÷Ø‹å]ÃÌÿ%L€ÿ%<€ÿ%@€ÿ%D€ÿ%H€ÿ%P€èè£dNèÃÛâÃøŒ Ç6£Ç œÇÜÇ„£ÃU‹ìƒÄô›Ù}þ›f‹Eþ€Ì f‰EüÙmüß}ôÙmþ‹Eô‹UøÉÃÿ5ÄNÿt$èYYÃ|$àw"ÿt$è…ÀYu9D$tÿt$èÉ…ÀYuÞ3ÀÃU‹ìjÿhXÜh° d¡Pd‰%ƒì SVW¡dUƒøuC‹u;5\U‡“j è¼,YƒeüVè¤Y‰EäƒMüÿè ‹Eä…Àtmé†j èò,YÃøuZ‹E…Àtpƒæðëj^‰u;5D>w.j èf,YÇEü‹ÆÁèPèé'Y‰EäƒMüÿè ‹Eä…Àu-Vë‹uj è“,YËE…ÀujXƒÀ$ðPjÿ5`UÿH‹Mðd‰ _^[ÉÃU‹ìjÿhpÜh° d¡Pd‰%ƒìSVW‹u…ö„¬¡dUƒøu;j èÄ+YƒeüVèXY‰Eä…Àt VPètYYƒMüÿèƒ}äëQj èó+YÃøuSj è„+YÇEüEàPEØPVèh&ƒÄ ‰EÜ…ÀtPÿuàÿuØè©&ƒÄ ƒMüÿè ƒ}Üuÿuë j è›+YÃVjÿ5`UÿD‹Mðd‰ _^[ÉÃU‹ìjÿhˆÜh° d¡Pd‰%ƒì(SVW‹]3ÿ;ßuÿu è©ýÿÿYéæ‹u ;÷u SèÐþÿÿYéÑ¡dUƒø…9‰}܃þà‡ñj è¬*Y‰}üSèAY‰EØ;Ç„¤;5\UwLVSPè. ƒÄ …Àt‰]Üë8VègY‰EÜ;Çt*‹CüH‰Eà;Ær‹ÆPSÿuÜè¥,Sèî‰EØSPèƒÄ9}ÜuK;÷uj^‰u ƒÆƒæð‰u VWÿ5`UÿH‰EÜ;Çt#‹CüH‰Eà;Ær‹ÆPSÿuÜèN,SÿuØè¿ƒÄƒMüÿèZ9}Øu";÷uj^ƒÆƒæð‰u VSWÿ5`Uÿ@‰EÜ‹EÜ;Ç…½9=ÄN„±VègY…À…Ýþÿÿ雋u ‹]3ÿj èé)YÃø…Gƒþàw;÷vƒÆƒæðëj^‰u ‰}܃þà‡ój èS)YÇEüEÔPEÈPSè7$ƒÄ ‹ø‰}Ð…ÿ„ª;5D>s\‹ÞÁëSWÿuÔÿuÈèÕ'ƒÄ…Àt‹E‰EÜë8Sè”$Y‰EÜ…Àt*¶Áà‰EÌ;Ær‹ÆPÿuÿuÜè++WÿuÔÿuÈè $ƒÄ‹]ƒ}ÜuSVjÿ5`UÿH‰EÜ…Àt=¶Áà‰EÌ;Ær‹ÆPSÿuÜèä*WÿuÔÿuÈèÙ#ƒÄëVSjÿ5`Uÿ@‰E܃Müÿè&‹EÜ;Çuf9=ÄNt^VèY…À…ãþÿÿëK‹u ‹]j è›(Y3ÿÃ3Àƒþàw;÷uj^ƒÆƒæðVSWÿ5`Uÿ@;Çu9=ÄNt VèÃY…ÀuÆ3À‹Mðd‰ _^[ÉÃU‹ìƒì SV‹u Wèä-j‰E Y3À}àjó«_г¶Ê‹Á#ÏÁèÒãDàF„Òuå‹U…Òu‹E ‹PŠj¶ð‹Î[#ÏÓãÁîŠL5à„Ùt„ÀtBëà‹ÚŠ„Àt¶ð‹Îj#ÏXÓàÁîŠL5à„ÁuBëà€"B‹E _^‰P‹Ã+Â÷ØÀ#Ã[ÉÃjÿt$ÿt$ÿt$èƒÄÃU‹ìƒì SƒeøVW‹}Šw‰uüƒ=œB~¶ÃjPèÕ/YYë‹ @¶ÃŠAƒà…ÀtŠFëЀû-‰uüuƒMë€û+uŠF‰uü‹E…ÀŒ‰ƒø„€ƒø$wj…ÀYu$€û0t ÇE ë2Šƒàt }ø€w …Àu,9uøv'èý,öEÇ"tƒMøÿë‹E$öØÀ÷ØƉEø…Ût‹Eü‰öEt‹Eø÷؉Eø‹Eøë ‹E …Àt‰83À_^[ÉÃÌÌÌÌÌÌÌÌÌÌÌU‹ìV3ÀPPPPPPPP‹U IŠ ÀtB«$ëó‹uŠ Àt F£$sóFÿƒÄ ^Éá<…ÀtÿÐhhèûhhèìƒÄÃjjÿt$ è$ƒÄ Ãjjÿt$ èƒÄ ÃjjjèƒÄ ÃWèŸj_9=¨Nuÿt$ÿ4Pÿ8ƒ|$ S‹\$‰=¤Nˆ Nu<¡e…Àt"‹ ŒeVqü;ðr‹…ÀtÿЃî;5esí^h$hèCYYh,h(è2YY…Û[tè_Ãÿt$‰=¨Nÿ<_Ãj èÜ#YÃj è4$YÃV‹t$;t$ s ‹…ÀtÿЃÆëí^ÃÌÌÌÌÌÌÌ‹L$WSVŠ‹|$„ÒtiŠq„ötO‹÷‹L$ŠF8Ðt„Àt ŠF8Ðt „Àuõ^[_3ÀÊF8ðuë~ÿŠa„ät(ŠƒÆ8àuÄŠA„ÀtŠfÿƒÁ8àtßë±3À^[_ŠÂé#Gÿ^[_ËÇ^[_ÃBÿ[ä$d$3ÀŠD$S‹ØÁà‹T$÷ÂtŠ B8ÙtÑ„ÉtQ÷Âuí ØW‹ÃÁãV Ø‹ ¿ÿþþ~‹Á‹÷3Ëðùƒñÿƒðÿ3Ï3ƃÂáu%tÓ%uæ€uÄ^_[3ÀËBü8Øt6„Àtï8Üt'„ätçÁè8Øt„ÀtÜ8Üt„ätÔë–^_Bÿ[ÃBþ^_[ÃBý^_[ÃBü^_[ÃVè{þÿÿÿ5eè™+‹eY‹ Œe‹ñ+òƒÆ;Æs=Rè{+ƒÀPÿ5eè ÷ÿÿƒÄ …Àu3öë,‹ Œe+ e£eÁù ˆ‰ Œe‹D$‰ƒŒe‹ðèþÿÿ‹Æ^Ãÿt$èyÿÿÿ÷ØÀY÷ØHÃh€èôÿÿ…ÀY£eu jè©¡eYƒ ¡e£ŒeÃÌÌÌÌÌU‹ìW‹}3ÀƒÉÿò®A÷ÙOŠE ýò®G8t3Àë‹Çü_ÉÃÌÌÌÌÌÌÌÌÌU‹ìWVS‹Mã&‹Ù‹}‹÷3Àò®÷ÙË‹þ‹u ó¦ŠFÿ3É:GÿwtII÷Ñ‹Á[^_ÉÃVj è0!ÿt$ èj ‹ðè!ƒÄ ‹Æ^Ã=„eSV‹5ˆNWte…öu95NtYèï+…ÀuP‹5ˆN…ötF‹\$…Ût>SèX+Y‹ø‹…Àt/PèI+;ÇYv‹€<8=uWSPèè*ƒÄ …ÀtƒÆëÓ‹D8ë3À_^[ÃÌÌÌÌÌÌÌÌÌ̃ìÝ$èM.è ƒÄÃT$èø-R›Ù<$tPf<$tÙ-8ÝÙþ›ßàžzƒ=`N…'.º Pé$.Û-:ÝÙÉÙõ›ßàžzøÝÙÙþëÍèŠ-ë©ÿÿuòƒ|$uëÝØÛ-°B¸ƒ=`N…Ò-º PèË.ZÃÌ̃ìÝ$è-è ƒÄÃT$èH-R›Ù<$tPf<$tÙ-8ÝÙÿ›ßàžzƒ=`N…w-º `ét-Û-:ÝÙÉÙõ›ßàžzøÝÙÙÿëÍèÚ,ë©ÿÿuòƒ|$uëÝØÛ-°B¸ƒ=`N…"-º `è.ZÃÌ̃ìÝ$èí,è ƒÄÃT$è˜,R›Ù<$‹D$ tQf<$tèP,©€uÙúƒ=`N…Ã,º péÀ,©ðu,©ÿÿu%ƒ|$uëÌè%,ë"©ÿÿuòƒ|$uë%€t°ÝØÛ-°B¸ƒ=`N…f,º pè_-ZÃV‹t$ WVèrÿNYx‹ŠD$ ¶øˆÿëVÿt$èn-Y‹øYVè›Y‹Ç_^Ãÿt$ÿt$è¸ÿÿÿYYÃSV‹t$ WVè&VèS.ÿt$ ‹øÿt$ Vèú.VW‹ØèÇ.VèSƒÄ ‹Ã_^[ÃSV‹t$ WVèëVè.‹øD$ Pÿt$ Vè¾.VW‹Øè‹.VèƒÄ ‹Ã_^[á€eVj…À^u¸ë;Æ}‹Æ£€ejPè™8Y£pU…ÀYu!jV‰5€eè€8Y£pU…ÀYujèRY3ɸx‹pU‰ƒÀ ƒÁ=ø|ê3ɺˆ‹ñ‹ÁÁþƒà‹4µ@TÀ‹†ƒøÿt…Àuƒ ÿƒÂ Aúè|Ñ^Ãè[:€= NtéB9ËD$¹x;Ár=Øw+ÁÁøƒÀPèÖYÃÀ Pÿ0ËD$ƒø} ƒÀPè·YËD$ƒÀ Pÿ0ËD$¹x;Ár=Øw+ÁÁøƒÀPèåYÃÀ Pÿ,ËD$ƒø} ƒÀPèÆYËD$ƒÀ Pÿ,Ãj èF<jèG:YYjè•÷ÿÿÌÌÌÌÌÌÌÌÌÌÌÌÌWVS3ÿ‹D$ À}G‹T$÷Ø÷ڃ؉D$‰T$‹D$ À}G‹T$÷Ø÷ڃ؉D$‰T$ Àu‹L$‹D$3Ò÷ñ‹Ø‹D$÷ñ‹ÓëA‹Ø‹L$‹T$‹D$ÑëÑÙÑêÑØ Ûuô÷ñ‹ð÷d$‹È‹D$÷æÑr;T$wr;D$vN3Ò‹ÆOu÷Ú÷؃Ú[^_‹D$ƒø…ˆÿ$j£lNè¹…ÀYt<¡lN3ÉŠ mN%ÿÁ-lN£tN‰ xNÁàÁ£pNè´ …Àu èÕ3Àërÿ(£hUèd?£´Nè4è=èJ<èöÿÿÿ°Në>3É;Áu,9 °N~½ÿ °N9 ¤Nuè9öÿÿèƒ5èŸ èpë ƒøuQè%!YjX U‹ìS‹]V‹u W‹}…öu ƒ=°Në&ƒþtƒþu"¡lU…Àt WVSÿÐ…Àt WVSèçþÿÿ…Àu3ÀëNWVSèá?ƒþ‰E u …Àu7WPSèÃþÿÿ…ötƒþu&WVSè²þÿÿ…Àu!E ƒ} t¡lU…ÀtWVSÿЉE ‹E _^[] ¡¼Nƒøt …Àuƒ=ÀNuè´9ÿt$èä9hÿÿYYÃhhè?YYÃU‹ìƒìݨÜÝ]øÝ ÜÝ]ðÝEðÜuøÜMøÜmðÝ]èÝEèÜhÌßàžvjXÉÃ3ÀÉÃhÌÜÿ…Àth°ÜPÿ …ÀtjÿÐÃé™ÿÿÿV‹t$¾PèF@ƒøeYt,Fƒ=œB~¾jPè "YY뾋 @ŠAƒà…ÀuÔŠ  BŠˆFŠˆŠÁŠF„Éuó^ËD$Š BŠ„Ét :ÊtŠH@„ÉuôŠ@„Ét*Š„Ét €ùet€ùEt@ëí‹ÈH€80tú8uHŠ@A„ÒˆuöËD$ÝÜxÌßàžrjXÃ3ÀÃU‹ìQQƒ}ÿutEøPèID‹E YY‹Mø‰‹Mü‰HÉÃEPè[D‹E YY‹M‰ÉÃU‹ìƒì(EØVPEðP‹EQQÝÝ$èÕD‹uEðP‹U FP3Àƒ}ð-”À3É…öŸÁÐÊQè6DEðjPÿuVÿu è ‹E ƒÄ0^ÉÃU‹ìS3Û8]V‹uW‹}t3À9] ŸÀP3Àƒ>-”ÀÇPèvYYƒ>-‹ÇuÆ-G9] ~ŠPHˆ‹ÁŠ  Bˆ3É8]hØÜ”ÁÈM Qè;E9]YY‹ÈtÆE‹F A€80t<‹^Ky÷ÛÆ-Aƒûd|‹Ãjd™^÷þ‹Ã™÷þ‹ÚAƒû |‹Ãj ™^÷þ‹Ã™÷þ‹ÚY‹Ç_^[]ÃU‹ìƒì(EØVPEðP‹EQQÝÝ$è²C‹uEðP‹EôÆP3Àƒ}ð-”ÀE PèCEðjPVÿu è ‹E ƒÄ,^ÉÃU‹ìSV‹u‹]W‹FH€}t;E u3Ƀ>-”ÁÈË‹ÁÆ0€`ƒ>-‹ûuÆ-{‹F…ÀjWè?YÆ0YGëøƒ} ~DjWè'  BYˆ‹vGY…ö}+€}t÷Þë÷Þ9u |‰u ÿu Wèùÿu j0WèáDƒÄ_‹Ã^[]ÃU‹ìƒì(SVEØWPEðP‹EQQÝÝ$è´B‹Eô‹]pÿ3Àƒ}ð-”ÀE ‹øEðPSWèB‹EôƒÄH;ðœÁƒøü|&;Ã}"„Ét ŠG„Àuù GþEðjPSÿu èåþÿÿƒÄëEðjPÿuSÿu è·ýÿÿƒÄ_^[ÉÃU‹ìƒ}et2ƒ}Et,ƒ}fuÿuÿu ÿuèNþÿÿƒÄ ]Ãÿuÿuÿu ÿuè4ÿÿÿëÿuÿuÿu ÿuèýÿÿƒÄ]ÃW‹|$ …ÿtV‹t$ VèÏ@PV÷Vè4DƒÄ^_áÈN…Àtÿt$ÿÐ…ÀYtjXÃ3ÀÃV‹t$jƒ&ÿf8MZu‹H<…Ét ÁŠHˆŠ@ˆF^ÃU‹ì¸,èG…hÿÿÿSPÇ…hÿÿÿ”ÿ…Àtƒ½xÿÿÿuƒ½lÿÿÿrjXé…ÔíÿÿhPhøÜÿ…À„Ð3ÛÔíÿÿ8ÔíÿÿtŠj,PèÚðÿÿY;ÃYt0@‹È8t€9;uˆëA8uòj SPèìÿÿƒÄ ƒøtƒøtƒøtEüPè˜þÿÿ€}üYÀƒÀ[ÉÃ3Àj9D$h”ÀPÿø€…À£`Ut6è“þÿÿƒø£dUu høèÌYë ƒøuè …Àuÿ5`Uÿü€3ÀÃjXádUVƒøWufS3Û9TUU‹-D~@¡XU‹=ô€p h@hÿ6ÿ×h€jÿ6ÿ×ÿvjÿ5`UÿÕƒÆC;TU|Îÿ5XUjÿ5`UÿÕ][ë'ƒøu"¿ ‹÷‹F…Àth€jPÿô€‹6;÷uåÿ5`Uÿü€_^Ãh@jÿ5`UÿH…À£XUuËL$ƒ%PUƒ%TUj£LU‰ \UÇDUXáTU €¡XU ˆ;Ás‹T$+P úrƒÀëè3ÀÃU‹ìƒì‹MSV‹u ‹AW‹þƒÆü+y Áï‹ÏiÉŒD‰Mð‹IöÁ‰Mü…æ‹11‰Uô‹Vü‰Uø‹Uôö‰] u~ÁúJƒú?vj?Z‹K;KuLƒú s»€‹ÊÓëL÷Ó!\¸Dþ u(‹M!ë!JເÓëL÷Ó!œ¸Äþ u‹M!Y‹Mü‹] ë‹Mü‹S‹[Mô‰Z‹U ‰Mü‹Z‹R‰S‹ÑÁúJƒú?vj?Z‹]øƒã‰]ô…”+uø‹]øÁûj?‰u K^;Þv‹ÞMø‹Ñ‰MüÁúJ;Öv‹Ö;Útc‹M ‹q;qu@ƒû s¾€‹ËÓî÷Ö!t¸DþLu&‹M!1ëKྀÓî÷Ö!´¸ÄþLu‹M!q‹M ‹q‹I‰N‹M ‹q‹I‰N‹u ë‹]ƒ}ôu;Ú„‹Mð‹\Ñ щ^‰N‰q‹N‰q‹N;Nu`ŠLƒú ˆMþÁˆLs%€}u»€‹ÊÓë‹M »€‹ÊÓëD¸D ë)€}uJເÓë‹M YJ຀Óê„¸Ä ‹Eü‰‰D0ü‹Eðÿ…÷¡PU…À„Ü‹ HU‹5ô€ÁáH »€h@SQÿÖ‹ HU¡PUº€Óê P¡PU‹ HU‹@ƒ¤ˆÄ¡PU‹@þHC¡PU‹H€yCu ƒ`þ¡PUƒxÿuiSjÿp ÿÖ¡PUÿpjÿ5`UÿD¡TU‹XU€Áà‹È¡PU+ÈLìQHQPè2>‹EƒÄ ÿ TU;PUvƒm¡XU£LU‹E‰=HU£PU_^[ÉÃU‹ìƒì¡TU‹XUSV€W<‚‹E‰}üHƒáð‰MðÁùIƒù }ƒÎÿÓîƒMøÿ‰uôëƒÁàƒÈÿ3öÓè‰uô‰Eø¡LU‹Ø;߉]s‹K‹;#Mø#þ Ïu ƒÃ;]ü‰]rç;]üuy‹Ú;؉]s‹K‹;#Mø#þ ÏuƒÃëæ;ØuY;]üsƒ{uƒÃ‰]ëí;]üu&‹Ú;؉]s ƒ{uƒÃëî;Øuè8‹Ø…Û‰]tSèÚY‹K‰‹Cƒ8ÿu3Àé‰LU‹C‹ƒúÿ‰Uüt‹ŒÄ‹|D#Mø#þ Ïu7‹Ä‹pD#Uø#uôƒeüHD Ö‹uôu‹‘„ÿEü#UøƒÁ‹þ#9 ×té‹Uü‹Ê3ÿiÉŒD‰Mô‹LD#Îu ‹ŒÄj #Mø_…É|ÑáGë÷‹Mô‹Tù‹ +Mð‹ñ‰MøÁþNƒþ?~j?^;÷„ ‹J;Juaƒÿ }+»€‹ÏÓë‹Mü|8÷Ó‰]ì#\ˆD‰\ˆDþu8‹]‹Mì! ë1OເÓë‹Mü|8ŒˆÄ÷Ó!þ‰]ìu ‹]‹Mì!Kë‹]‹J‹zƒ}ø‰y‹J‹z‰y„”‹Mô‹|ñ ñ‰z‰J‰Q‹J‰Q‹J;JudŠLƒþ ˆM })þÁ€} ˆLu ¿€‹ÎÓï ;¿€‹ÎÓï‹Mü |ˆDë/þÁ€} ˆLu Nà¿€Óï {‹Mü¼ˆÄNྀÓî 7‹Mø…Ét ‰ ‰Lüë‹Mø‹uðÑN‰ ‰L2ü‹uô‹…Éy‰>u;PUu‹Mü; HUuƒ%PU‹Mü‰B_^[ÉáTU‹ DUVW3ÿ;Áu0D‰PÁàPÿ5XUWÿ5`Uÿ@;ÇtaƒDU£XU¡TU‹ XUhÄAj€ÿ5`U4ÿH;ljFt*jh hWÿð€;ljF uÿvWÿ5`UÿD3ÀëƒNÿ‰>‰~ÿTU‹Fƒÿ‹Æ_^ÃU‹ìQ‹MSVW‹q‹A3Û…À|ÑàCë÷‹Ãj?iÀZ„0D‰Eü‰@‰@ƒÀJuô‹ûjÁçy hh€Wÿð€…ÀuƒÈÿé“—p;úwu‹F£@>þ t ‹F‹Vj‰‹‹N‰Hÿ5`UÿD^à 0ÿ^ÃU‹ìQSV‹5$Wƒ~ÿ„”ƒeü¾ »ð??ðu9‹Ãh@FhPÿô€…Àtƒÿÿ ÌN‹F …Àt;Çv‰~ ÿEüÿMt ëƒï…Û}²ƒ}ü‹Î‹vt,ƒyÿu&jA Zƒ8ÿu BƒÀú|ïúuQèÿÿÿY;5$t ƒ}Pÿÿÿ_^[ÉËD$º V‹Ê;Av;Ar‹ ;Êt7ëî¨u1‹ðºæÿ;òr ‹t$ ‰‹t$‹Èfáð+Á‰+Â^ÁøDÃ3À^ËD$‹L$+HÁù DÈ‹L$ ¶€!8ðÇ@ñuÿÌNƒ=ÌN ujè¤þÿÿYÃU‹ìQQSV‹5@>W‹Vƒúÿ„Ÿ‹~Ž ‹Ç+ƃèÁøÁà Â;ù‰Eüs:‹‹];Ë|9_vSQPè¹ƒÄ …Àuu‹Eü‰_ƒÇŽ ;ù‰EürÈë‹]‹F‹N~‰Eø;ø‰Müs3‹;Ã|9_vSPÿuüèjƒÄ …Àu&‰_EüƒÇ;}ørÒë‹]‹6;5@>téCÿÿÿ‰5@>)‰~é(¸ ‹øƒÿtƒ u ‹?;ø„×ëè‹_ ƒeü‹ó‹Ã+÷ƒîÁþÁæ wƒ;ÿuƒ}ü} ƒÀÿEüƒ8ÿtï‹EüjÁà hPV‰Eøÿð€;Æ…¸jÿuøVè¦1‹UüƒÄ …Ò‹Ë~0F‰Uü€ˆôÿP‰Püºð‰‰ÇAñƒÁÿMüuÖ‰=@>‡ ;Ès ƒ9ÿtƒÁëò;ÈÀ#Á‰G ‹EˆF‰_))FL†‰ë4è4ûÿÿ…Àt)‹HˆYT£@>‰ºð+Ó‰Q¶Ó)Pë3À_^[ÉÃU‹ìQ‹M‹USV‹qW‹9™ø;ò‰}ü‹Ç‰]r!ˆ;Ãs)Që ƒaA‰GéÎ÷€>t‹Æ4;ósCŠ„Ûu0jX^€;uCFë÷;òsN;Eüu‰që )u 9U ‚™‹}ü‹Ãë¶óÆ4;ur½q;÷s~;EsvŠ„Àu@j^X€;u%C@ë÷;]s +ò‰‰që ƒaq‰1ˆƒÀë6;Âs)E 9U r4‹óë®¶Àðë§;]s +‰‰Aë ƒaA‰ˆFkÉÁà+Áë3À_^[ÉÃU‹ìQ‹US‹] V¶ W‹}ƒeü‹Ã+GÁø ;M|Çv‹E+ȈÇGñë`se‹E4ƒø;ÆrU;Æs €8u@ëô;ÆuBŠEˆ‹;Ðw+;ðv'ƒø;ðs3À‰38u@€<tù‰Cë ƒcC‰+MÇEü‹Eü_^[ÉÃV‹5Ä€ÿ5Œ>ÿÖÿ5|>ÿÖÿ5l>ÿÖÿ5L>ÿÖ^ÃVW‹=À€¾H>‹…Àt+þŒ>t#þ|>tþl>tþL>t Pÿ×ÿ6è,ÔÿÿYƒÆþ?|Äÿ5l>ÿ×ÿ5|>ÿ×ÿ5Œ>ÿ×ÿ5L>ÿ×_^ÃU‹ì‹EVƒ<…H>4…H>u>Wjè£Òÿÿ‹øY…ÿujèÂåÿÿYjèÊÿÿÿƒ>YWu ÿÄ€‰>ëè±ÓÿÿYjè Y_ÿ6ÿ0^]ÃU‹ì‹Eÿ4…H>ÿ,]ÃÌÌU‹ìSVWUjjhÐÿuè^]_^[‹å]ËL$÷A¸t‹D$‹T$‰¸ÃSVW‹D$PjþhØdÿ5d‰%‹D$ ‹X‹p ƒþÿt.;t$$t(4v‹ ³‰L$‰H ƒ|³uh‹D³è@ÿT³ëÃdƒÄ _^[Ã3Àd‹ yØu‹Q ‹R 9Qu¸ÃSQ»?ë SQ»?‹M‰K‰C‰k Y[ÂÌÌVC20XC00U‹ìƒìSVWUü‹] ‹E÷@…‚‰Eø‹E‰EüEø‰Cü‹s ‹{ƒþÿta vƒ|tEVUkÿT]^‹] Àt3x<‹{Sè©þÿÿƒÄkVSèÞþÿÿƒÄ vj‹Dèaÿÿÿ‹‰C ÿT‹{ v‹4롸ë¸ëUkjÿSèžþÿÿƒÄ]¸]_^[‹å]ÃU‹L$‹)‹AP‹APèyþÿÿƒÄ]ÂÌÌÌÌÌÌÌÌU‹ìWV‹u ‹M‹}‹Á‹ÑÆ;þv;ø‚x÷ÇuÁéƒâƒùr)ó¥ÿ$•Ø"‹Çºƒér ƒàÈÿ$…ð!ÿ$è"ÿ$l"","P"#ÑŠˆŠFˆGŠFÁéˆGƒÆƒÇƒùrÌó¥ÿ$•Ø"I#ÑŠˆŠFÁéˆGƒÆƒÇƒùr¦ó¥ÿ$•Ø"#ÑŠˆFÁéGƒùrŒó¥ÿ$•Ø"IÏ"¼"´"¬"¤"œ"”"Œ"‹DŽä‰Dä‹DŽè‰Dè‹DŽì‰Dì‹DŽð‰Dð‹DŽô‰Dô‹DŽø‰Dø‹DŽü‰Düðøÿ$•Ø"‹ÿè"ð"ü"#‹E^_Éʈ‹E^_ÉʈŠFˆG‹E^_ÉÃIŠˆŠFˆGŠFˆG‹E^_ÉÃt1ü|9ü÷Çu$Áéƒâƒùr ýó¥üÿ$•p$‹ÿ÷Ùÿ$ $I‹Çºƒùr ƒà+Èÿ$…x#ÿ$p$ˆ#¨#Ð#ŠF#шGNÁéOƒùr¶ýó¥üÿ$•p$IŠF#шGŠFÁéˆGƒîƒïƒùrŒýó¥üÿ$•p$ŠF#шGŠFˆGŠFÁéˆGƒîƒïƒù‚Zÿÿÿýó¥üÿ$•p$I$$,$4$<$D$L$T$g$‹DމD‹DމD‹DމD‹DމD‹DŽ ‰D ‹DމD‹DމDðøÿ$•p$‹ÿ€$ˆ$˜$¬$‹E^_ÉÊFˆG‹E^_ÉÃIŠFˆGŠFˆG‹E^_ÉÊFˆGŠFˆGŠFˆG‹E^_ÉÃVèàùÿÿÿ°€ƒøÿ£ ?t:jtjèh‹ðY…öYt)Vÿ5 ?ÿ´€…ÀtVè4Yÿ¸€ƒNÿj‰X^Ã3À^Ãè¶ùÿÿ¡ ?ƒøÿtPÿ¬€ƒ ?ÿËD$Ç@PÐCÇ@ÃVWÿ €ÿ5 ?‹øÿ¤€‹ð…öu?jtjèÝ‹ðY…öYt&Vÿ5 ?ÿ´€…ÀtVè©ÿÿÿYÿ¸€ƒNÿ‰ëjèŒßÿÿYWÿ¨€‹Æ_^á ?ƒøÿ„‘V‹t$…öu Pÿ¤€‹ð…ötl‹F$…ÀtPè[ÍÿÿY‹F(…ÀtPèMÍÿÿY‹F0…ÀtPè?ÍÿÿY‹F8…ÀtPè1ÍÿÿY‹F@…ÀtPè#ÍÿÿY‹FD…ÀtPèÍÿÿY‹FP=ÐCtPèÍÿÿYVèýÌÿÿYjÿ5 ?ÿ´€^ÃVèv‹L$3ö‰¸(?;t"ƒÀF=@|ñƒùr"ƒù$wèBÇ ^Ãè5‹ õ,?^‰Ãù¼rùÊw èÇ^ÃèÇ^ÃèþÿÿƒÀÃèxþÿÿƒÀ ÃS3Û9lPu‹D$ƒøa|YƒøzTƒè [ÃV¾,TWVÿ9(T‹=œ€tVÿ×jè&øÿÿYj[ÿt$è…ÛY‰D$t jèjøÿÿYëVÿ׋D$_^[ÃU‹ìQƒ=lPSu‹EƒøaŒ¯ƒøz¦ƒè éž‹]û}(ƒ=œB~ jSè…YYë ¡@ŠXƒà…Àu‹Ãëk‹@‹ÃÁø¶ÈöDJ€t€e ˆEˆ] jë €e ˆ]jXMüjjjQPEPhÿ5lPè°)ƒÄ …Àt©ƒøu¶Eüë ¶Eý¶MüÁà Á[ÉÃU‹ìQ‹EHùw ‹ @·AëR‹ÈV‹5@Áù¶ÑöDV€^t€eþˆMüˆEýjë €eýˆEüjXM jjjQPEüPjèO+ƒÄ…ÀuÉ÷E #E ÉÃU‹ìjÿhÝh° d¡Pd‰%ƒìSVW¡dUƒøuFj è†öÿÿYƒeü‹uVèäÿÿY‰Eä…Àt ‹vüƒî ‰uàë‹uàƒMüÿè ƒ}äëU‹uàj èªöÿÿYÃøuFj è;öÿÿYÇEüEÜPEÔPÿuèñÿÿƒÄ ‰EØ…Àt ¶0Áæ‰uàë‹uàƒMüÿè-ƒ}Øuÿujÿ5`Uÿ”€‹ð‹Æ‹Mðd‰ _^[ÉËuàj è/öÿÿYÃU‹ìƒ}u3À]Ãÿ5 Rÿuÿu ÿuÿujÿ5$Tèl+ƒÄ…Àu¸ÿÿÿ]ÃÀþ]ÃÌÌÌÌÌÌÌÌÌÌÌÌÌ‹L$÷ÁtŠA„Àt@÷Áuñ‹ºÿþþ~Ѓðÿ3ƒÁ©tè‹Aü„Àt2„ät$©ÿt©ÿtëÍAÿ‹L$+ÁÃAþ‹L$+ÁÃAý‹L$+ÁÃAü‹L$+ÁÃQSUV‹5NW3ÿ‹;ÇtN‹€WWWWjÿPWjÿÓ‹è;ït>Uè—Çÿÿ;ÇY‰D$t/WWUPjÿÿ6WjÿÓ…ÀtWÿt$è1‹FƒÆY;ÇYu¸3À_^][YÃÈÿëõÌÌÌÌÌÌÌ€zuf‹\ÿÿÿ€Ï€çþ³?ëf»?f‰^ÿÿÿÙ­^ÿÿÿ»ÌBÙ剕lÿÿÿ›Ý½`ÿÿÿÆ…pÿÿÿ›ŠaÿÿÿÐáÐùÐÁŠÁ$×¾Àá‹Ú؃Ãÿ#€zuf‹\ÿÿÿ€Ï€çþ³?ëf»?f‰^ÿÿÿÙ­^ÿÿÿ»ÌBÙ剕lÿÿÿ›Ý½`ÿÿÿÆ…pÿÿÿÙÉŠaÿÿÿÙå›Ý½`ÿÿÿÙÉŠ­aÿÿÿÐåÐýÐÅŠÅ$׊àÐáÐùÐÁŠÁ$×ÐäÐä ľÀá‹Ú؃Ãÿ#èÁÙÉÝØÃè·ëöÝØÝØÙîÃÝØÝØÙèÃÛ½bÿÿÿÛ­bÿÿÿö…iÿÿÿ@tÆ…pÿÿÿÃÆ…pÿÿÿÜÄBÃÙÉÛ½bÿÿÿÛ­bÿÿÿö…iÿÿÿ@t Æ…pÿÿÿëÆ…pÿÿÿÞÁÃÛ½bÿÿÿÛ­bÿÿÿö…iÿÿÿ@t ÙÉÛ½bÿÿÿÛ­bÿÿÿö…iÿÿÿ@t Æ…pÿÿÿëÆ…pÿÿÿÞÁÃÝØÝØÛ-°B€½pÿÿÿÆ…pÿÿÿ Éà ÉtÙàÃÌÌÌÌÌÌÙÀÙüÜáÙÉÙàÙðÙèÞÁÙýÝÙËT$âƒÊf‰T$Ùl$ét¸ÃÜ0ݸËB%ð=ðtÝËBƒì ÿ‰D$‹B‹ ¤È Áá ‰D$‰ $Û,$ƒÄ ©‹BËD$%ð=ðtËD$Ãf<$tÙ,$ZÃf‹$f=tfƒà t›ßàfƒà t ¸èÙZÃÙ,$ZÃìÝ$‹D$ƒÄ%ðëƒìÝ$‹D$ƒÄ%ðt==ðt_f‹$f=t*fƒà u!›ßàfƒà t¸ƒútè{ZÃè]ZÃÙ,$ZÃÝ\ÝÙÉÙýÝÙÙÀÙáÜLÝ›ßàž¸sÇÜ lÝë¿ÝTÝÙÉÙýÝÙÙÀÙáÜDÝ›ßàž¸vžÜ dÝë–ÌÌÌÌU‹ìƒÄà‰Eà‹E‰Eð‹E‰Eôë U‹ìƒÄà‰EàÝ]ø‰Mä‹E‹M‰Eè‰MìEMàPQRèž/ƒÄ ÝEøf}tÙmÉÃU‹ìSV‹u ‹F ‹^¨‚„ö¨@…î¨tƒf¨„Þ‹N$þ‰‰F ‹F ƒfƒe $ï f© ‰F u"þ˜tþ¸u Sè3…ÀYuVè²2Yf÷F Wtg‹F‹>+øH‰‹NI…ÿ‰N~WPSè™0ƒÄ ‰E ë6ƒûÿt‹Ë‹ÃÁùƒà‹ @TÀë¸èBö@ t jjSè†/ƒÄ ‹FŠMˆëjE_WPSèC0ƒÄ ‰E 9} _tƒN ë‹E%ÿë ‰F ƒÈÿ^[]ÃV‹t$ÿvèB2…ÀYtwþ˜u3Àë þ¸ucjXÿ¬Nf÷F uRƒ<…0OSW<…0O»u Sè3Âÿÿ…ÀY‰uFj‰F‰X‰F‰Fë ‹?‰^‰~‰>‰^fN jX_[^Ã3À^Ã|$Vt ‹t$ öF tVè €f îƒfƒ&ƒfY^ÃU‹ììHSVW‹} 3öŠG„Û‰uô‰uì‰} „ô‹Mð3Òë‹Mð‹uÐ3Ò9UìŒÜ€û |€ûx¾ÃŠ€T݃àë3À¾„ÆtÝÁøƒø‰EЇšÿ$…S7ƒMðÿ‰ỦU؉Uà‰Uä‰Uü‰UÜéx¾Ãƒè t;ƒèt-ƒètHHtƒè…YƒMüéPƒMüéGƒMüé>€Mü€é5ƒMüé,€û*u#EPèõ…ÀY‰EàƒMü÷؉Eàé‹Eà¾Ë€DAÐëé‰Uðéí€û*uEPè¶…ÀY‰EðÓƒMðÿéʉ¾ËDAЉEð鸀ûIt.€ûht €ûlt€ûw… €Mýé—ƒMü鎃Mü é…€?6u€4uGG€Mý€‰} él‰UЋ @‰UܶÃöDA€tEìPÿu¾ÃPèŠƒÄ G‰} EìPÿu¾ÃPèfƒÄ é%¾Ãƒøgƒøe–ƒøXë„xƒèC„ŸHHtpHHtlƒè …éf÷Eü0u€Mý‹uðƒþÿu¾ÿÿÿEPèœf÷EüY‹È‰Mø„þ…Éu ‹ äB‰MøÇEÜ‹Á‹ÖN…Ò„Ôfƒ8„Ê@@ëçÇÈà ƒMü@½¸ýÿÿ;ʉ}øÏÇEðéÑf÷Eü0u€Mýf÷EüEPt;è0P…¸ýÿÿPèè.ƒÄ ‰Eô…À}2ÇEØë)ƒèZt2ƒè tÅH„èéèØYˆ…¸ýÿÿÇEô…¸ýÿÿ‰EøéçEPè³…ÀYt3‹H…Ét,öEýt¿Ñè‰Mø‰EôÇEÜ鵃e܉Mø¿é£¡àB‰EøPéŽu €ûguÇEð‹EÿũÀ‰Eÿuð‹Hø‰M¸‹@ü‰E¼¾ÃP…¸ýÿÿPE¸Pÿ‹uüƒÄæ€tƒ}ðu…¸ýÿÿPÿY€ûgu…öu…¸ýÿÿPÿY€½¸ýÿÿ-u €Mý½¹ýÿÿ‰}øWè‰õÿÿYéüƒèi„у脞H„„HtQƒè„ýýÿÿHH„±ƒè…ÉÇEÔ'ë<+ÁÑøé´…Éu ‹ àB‰Mø‹Á‹ÖN…Òt€8t@ëñ+ÁéÇEðÇEÔöEü€ÇEôt]ŠEÔÆEê0QÇEäˆEëëHöEü€ÇEôt;€Mýë5EPèöEü Yt f‹Mìf‰ë‹Mì‰ÇEØé#ƒMü@ÇEô öEý€t EPèíYëAöEü t!öEü@EPt èÈY¿À™ë%è¼Y·ÀëòöEü@EPtè§YëàèŸY3ÒöEü@t…Ò|…Às÷؃ҋð÷Ú€Mý‹úë‹ð‹úöEý€uƒçƒ}ð} ÇEðëƒeü÷‹Æ ÇuƒeäE·‰Eø‹EðÿMð…À‹Æ Çt;‹Eô™RPWV‰EÀ‰UÄèG-ÿuċ؃Ã0ÿuÀWVèÅ,ƒû9‹ð‹ú~]Ô‹EøÿMøˆëµE·+EøÿEøöEý‰Eôt‹Mø€90u…Àu ÿMø@‹MøÆ0‰Eôƒ}Ø…ô‹]üöÃ@t&öÇtÆEê-ëöÃtÆEê+ë öÃt ÆEê ÇEä‹uà+uä+uôöà uEìPÿuVj èƒÄEìPEêÿuÿuäPè2ƒÄöÃtöÃuEìPÿuVj0èåƒÄƒ}ÜtAƒ}ô~;‹Eô‹]øxÿf‹CPEÈPCè +Y…ÀY~2MìQÿuPEÈPèØƒÄ‹ÇO…ÀuÐëEìPÿuÿuôÿuøèºƒÄöEütEìPÿuVj èqƒÄ‹} ŠG„Û‰} …ùÿÿ‹Eì_^[ÉÃÑ1§0Â01E1M1‚12U‹ì‹M ÿIx‹ŠEˆÿ¶Àë QÿuèÎöÿÿYYƒøÿ‹Euƒÿ]Ãÿ]ÃVW‹|$‹ÇO…À~!‹t$Vÿt$ÿt$è¬ÿÿÿƒÄ ƒ>ÿt‹ÇO…Àã_^ÃS‹\$ ‹ÃKVW…À~&‹|$‹t$¾WFÿt$PèuÿÿÿƒÄ ƒ?ÿt‹ÃK…Àâ_^[ËD$ƒ‹‹@üËD$ƒ‹‹Aø‹QüËD$ƒ‹f‹@üÃU‹ìƒìHSVWh€è´¹ÿÿ‹ðY…öujèÓÌÿÿY‰5@TÇ@U †€;ðs€fƒÿƒfÆF ¡@TƒÆ$€ëÞE¸Pÿ€€fƒ}ê„Ñ‹Eì…À„Æ‹8X;‰Eü¸;ø|‹ø9=@U}V¾DTh€è ¹ÿÿ…ÀYt<ƒ@U ‰ˆ€;Ás€`ƒÿƒ`Æ@ ‹ƒÀ$Á€ëàƒÆ9=@U|·ë‹=@U3ö…ÿ~L‹Eü‹ƒùÿt8Ѝt2¨u Qÿ„€…Àt#‹Î‹ÆÁùƒà‹ @TÀ‹Mü‹ ‰Š ˆHƒEüFC;÷|´3Û‹ @TÛƒ<ÿ4uM…ÛÆFujöXë ‹ÃH÷ØÀƒÀõPÿˆ€‹øƒÿÿtWÿ„€…Àt %ÿ‰>ƒøu€N@ëƒøu €Në€N€Cƒû|—ÿ5@UÿŒ€_^[ÉÃSVW¾@T‹…Àt7‹ø€;øs!_ ƒ{ütSÿÀ€‹ƒÇ$€ƒÃ$;ørâÿ6è¹ÿÿƒ&YƒÆþ@U|¸_^[ÃU‹ìjÿhèÝh° d¡Pd‰%ƒìSVW‹u¯u ‰u ‰uäƒþàw3Û;óuj^ƒÆƒæð‰u ë3Û‰]àƒþà‡¨¡dUƒøuA‹}ä;=\Uw|j èäÿÿY‰]üWèjÕÿÿY‰EàƒMüÿè9]àt^ÿuäëH3Û‹u j èµäÿÿYÃøuA;5D>w9j è>äÿÿYÇEü‹ÆÁèPèÁßÿÿY‰EàƒMüÿèL9]àtVSÿuàèŸƒÄ 9]àu>Vjÿ5`UÿH‰Eà9]àu'9ÄNtVè¤ÎÿÿY…À…0ÿÿÿë3Û‹u j è,äÿÿYËEà‹Mðd‰ _^[ÉÃSWj3Ûè¬ãÿÿYj_9=€e~]V¡pU‹÷Áæ‹…ÀtAö@ ƒt Pèç'ƒøÿYtCƒÿ|)¡pU‹ƒÀ PÿÀ€¡pUÿ4èT·ÿÿ¡pUYƒ$G;=€e|¥^jèãÿÿY‹Ã_[ÃV‹t$Vè#…ÀYtƒÈÿ^ÃöF @tÿvèõ'÷ØY^ÀÃ3À^ÃSV‹t$ 3ÛW‹F ‹Èƒá€ùu7f©t1‹F‹>+ø…ÿ~&WPÿvè-#ƒÄ ;Çu‹F ¨€t$ý‰F ëƒN ƒËÿ‹Fƒf‰_‹Ã^[ÃjèYÃSVWj3Û3ÿè•âÿÿ3öY95€e~t¡pU‹°…Àt_ö@ ƒtYPVè¨Åÿÿ¡pUYY‹°‹H öÁƒt0ƒ|$uPèÿÿÿƒøÿYtCëƒ|$uöÁtPèÿÿÿƒøÿYu ø¡pUÿ4°VèªÅÿÿYYF;5€e|Œjèpâÿÿƒ|$Y‹Ãt‹Ç_^[ÃU‹ìƒì ‹EƒeüHSVHWtgHHtFƒètAƒèt<ƒèt*ƒètHtƒÈÿéF‹@O¿@OëB‹1uÿBëWèÞÿÿ@PWVèkƒÄ_^[]ÃU‹ìƒì(VEWPEôPèGYEØYuôPjjƒì ‹ü¥¥f¥è³ ‹u‹}‰F¾EÚ‰¿E؉FEÜPWèÃƒÄ ‰~ ‹Æ_^ÉÃU‹ìQ‹U SVWf‹B¿ÿ‹È%€Áé#ωE ‹B‹·Ù¾€%ÿÿ…Û‰uüt;ßt¹<ë(¿ÿë!3Û;Ãu;Óu‹E‰X‰f‰XëK¹<‰]ü‹ÊÁéÁà È‹E MüÁâ ‰H‰…Îu‹É‹ÚÁë Ù ‰‰XÇÿÿ‹Ëëß‹M Ïf‰H_^[ÉÃÌW‹|$ëj¤$‹ÿ‹L$W÷ÁtŠA„Àt;÷Áuñ‹ºÿþþ~Ѓðÿ3ƒÁ©tè‹Aü„Àt#„ät©ÿt©ÿtëÍyÿë yþëyýëyü‹L$ ÷ÁtŠA„ÒtdˆG÷Áuî뉃Ǻÿþþ~‹Ѓðÿ3‹ƒÁ©tá„Òt4„öt'÷Âÿt÷Âÿtëlj‹D$_Ãf‰‹D$ÆG_Ãf‰‹D$_È‹D$_ËT$ ‹L$…ÒtG3ÀŠD$W‹ùƒúr-÷Ùƒát+шGIuú‹ÈÁàÁ‹ÈÁàÁ‹ÊƒâÁétó«…ÒtˆGJuú‹D$_ËD$ÃÌÌÌÌÌÌÌÌU‹ìWV‹u ‹M‹}‹Á‹ÑÆ;þv;ø‚x÷ÇuÁéƒâƒùr)ó¥ÿ$•xO‹Çºƒér ƒàÈÿ$…Nÿ$ˆOÿ$ O NÌNðN#ÑŠˆŠFˆGŠFÁéˆGƒÆƒÇƒùrÌó¥ÿ$•xOI#ÑŠˆŠFÁéˆGƒÆƒÇƒùr¦ó¥ÿ$•xO#ÑŠˆFÁéGƒùrŒó¥ÿ$•xOIoO\OTOLODOEäPj^VhôàVÿX€…Àt‹ÆëEäPVhðàVSÿ\€…À„ÎjX£ˆPƒøu$‹E;Ãu¡lPÿuÿuÿu ÿuPÿ\€韃ø…”9]u¡|P‰ESSÿuÿu ‹E ÷ØÀƒà@Pÿuÿh€‰Eà;Ãtc‰]ü<‹ÇƒÀ$üèÉüÿÿ‰eè‹ô‰uÜWSVèùÿÿƒÄ ë jXËeè3Û3öƒMüÿ;ót)ÿuàVÿuÿu jÿuÿh€;ÃtÿuPVÿuÿX€ë3ÀeÌ‹Mðd‰ _^[ÉÃU‹ìjÿh áh° d¡Pd‰%ƒì0SVW‰eè3Û9ŒPj_u@W¸ôàPWPSSÿÌ€…Àt‰=ŒPë#W¸ðàPWPSSÿÈ€…À„ÇŒP‹u;ó~VÿuèúYY‹ð‰u9]~ÿuÿuèãYY‰E¡ŒPƒøuÿuÿuVÿuÿu ÿuÿÈ€é§;Ç…9] u¡|P‰E ;ót 9]…˜;uujXéx9}~‹Çél;÷AEÄPÿu ÿ˜€…À„Q;ó~,ƒ}Är"EÊ8]ÊtŠP:Ót‹MŠ :r:Êv­@@8uæjë¥9]~1ƒ}Är¥EÊ8]ÊtŠP:Ót–‹MŠ :r:ʆxÿÿÿ@@8uâézÿÿÿSSVÿuj ÿu ÿh€‰Eä;Äω]üÀƒÀ$üè»úÿÿ‰eè‹Ä‰E܃MüÿëjXËeè3Û‰]܃Müÿ‹uj_9]Ü„“ÿuäÿuÜVÿuWÿu ‹5h€ÿÖ…ÀtySSÿuÿuj ÿu ÿÖ‹ð‰uà;óta‰}ü6ƒÀ$üèLúÿÿ‰eè‹ü‰}؃MüÿëjXËeè3Û3ÿƒMüÿ‹uà;ût-VWÿuÿujÿu ÿh€…ÀtVWÿuäÿuÜÿu ÿuÿÌ€ë3Àe´‹Mðd‰ _^[ÉËT$‹D$…ÒVJÿt €8t@‹ñI…öuó€8^u+D$ËÂÃU‹ìƒìSVWjè|Çÿÿÿuè•‹ØY; RY‰]u3öép…Û„V3Ò¸pE9ttƒÀ0B=`F|ñEèPSÿ˜€j^;Æ…!j@ƒ%$TY3À¿ S9uè󫪉 R†ë€}M҄¯¶Aÿ¶Ò;‡”€ˆ!S@ëîƒeüj@Y3À¿ S4Ró«Á檞€E€;‹Ët,ŠQ„Òt%¶¶ú;Çw‹UüŠ’hE!S@;ÇvõAA€9uÔÿEüƒÃƒ}ürÁ‹EÇRP£ RèζtE¿R¥¥Y£$T¥ëRAA€yÿ…Gÿÿÿ‹Æ€ˆ!S@=ÿrñSè•Y£$T‰5Rëƒ%R3À¿R«««ëƒ=Ptè™è½éŒþÿÿƒÎÿjèHÆÿÿY‹Æ_^[ÉËD$ƒ%PƒøþuÇPÿ%Ô€ƒøýuÇPÿ%Ѐƒøüu¡|PÇPËD$-¤t"ƒètƒè t Ht3ÀøøøøÃWj@Y3À¿ Só«ª3À¿R£ R£R£$T«««_ÃU‹ììEìVPÿ5 Rÿ˜€ƒø…3À¾ˆ„ìþÿÿ@;ÆrôŠEòÆ…ìþÿÿ „Àt7SWUó¶ ¶À;Áw+ȼìþÿÿA¸ ‹ÙÁéó«‹ËƒáóªBBŠBÿ„ÀuÐ_[j…ìúÿÿÿ5$Tÿ5 RP…ìþÿÿVPjèùÿÿj…ìýÿÿÿ5 RVP…ìþÿÿVPVÿ5$TèÕöÿÿj…ìüÿÿÿ5 RVP…ìþÿÿVPhÿ5$Tè­öÿÿƒÄ\3Àìúÿÿf‹öÂt€ˆ!SŠ”ìýÿÿˆ RëöÂt€ˆ!S Š”ìüÿÿë〠 R@AA;Ær¿ëI3À¾ƒøArƒøZw€ˆ!SŠÈ€Á ˆˆ Rëƒøarƒøzw€ˆ!S ŠÈ€é ëà€  R@;Ær¾^ÉÃ=ˆeujýèüÿÿYLjeÃU‹ìQQSVW3ÿ9}tUj=ÿuè]‹ðY;÷Y‰uøt@9ut;¡ˆN3Û8^”Ã;ŒNu Pè›Y£ˆN;ÇuT9} t9=Ntè3Îÿÿ…Àt>ƒÈÿ_^[ÉÃ;ß… jèà•ÿÿ;ÇY£ˆNt߉89=NujèÅ•ÿÿ;ÇY£Ntĉ8+u‹=ˆN‰}üVÿuèЋðY…öY|Cƒ?t>…Ût2ÿ4·<·è–ÿÿYƒ?t ‹GF‰ƒÇëð‹ÆÁàPÿuü茗ÿÿY…ÀYt<ë5‹E‰·ë2…Ûuz…ö}÷ÞµPWèd—ÿÿY…ÀY„@ÿÿÿ‹M‰ °ƒd°£ˆNƒ} tFÿuèÖÌÿÿ@@Pè•ÿÿ‹ðY…öYt.ÿuVèÝïÿÿ‹ÆY+EYEø€ @÷ÛÛ÷Ó#ØSVÿØ€Vè–ÿÿY3ÀéàþÿÿV‹5ˆNW‹…Àt-‹|$WPÿt$è(ÌÿÿƒÄ …Àu ‹Š8<=t„Àt‹FƒÆ…Àu׋Æ+ˆNÁø÷Ø_^ËÆ+ˆNÁøëðW‹|$3É…ÿu3À_Ã?Gt ‹AƒÀ…ÒuöSUVPèK”ÿÿ‹ðY…ö‹îuj èh§ÿÿY‹‹ß…ÀtPƒÃèÛ‰‹YƒÆëéƒ&‹Å^][_ÃU‹ìƒìX‹ESV‹u ·‹WH‰Mt+Ht$HtHtHtHHtHunjëÇëbjë jëjëj[~QWSèRƒÄ …ÀuA‹Eƒøtƒøt ƒøtƒeàþë‹MàÝFƒáãÝ]ЃÉ‰MàNWQPESPE¨PèZƒÄhÿÿÿuè\ƒ>YYtƒ=8Gu Vè&…ÀYuÿ6èòY_^[ÉÃV‹t$;5@Us@‹Î‹ÆÁùƒà‹ @TÀöDt%WVè?ÿt$ÿt$Vè(V‹øèˆƒÄ‹Ç_^Ãè´ÇÿÿÇ è²Çÿÿƒ ƒÈÿ^ÃV‹t$WV軃øÿYu èŠÇÿÿÇ ë-ÿt$jÿt$PÿÜ€‹øƒÿÿuÿ €ë3À…Àt PèãÆÿÿYƒÈÿë‹ÎƒæÁù‹Æ‹ @TÀ€dýD‹Ç_^ÃV‹t$;5@Us@‹Î‹ÆÁùƒà‹ @TÀöDt%WVègÿt$ÿt$Vè(V‹øè°ƒÄ‹Ç_^ÃèÜÆÿÿÇ èÚÆÿÿƒ ƒÈÿ^ÃU‹ììSVW3ÿ9}‰}ø‰}ðu3Àéf‹EÁø…@T‹Eƒà4À‹ÁæöD0 tjWÿuèÛþÿÿƒÄ ‹Æö@€„Á‹E 9}‰Eü‰}†ê…ìûÿÿ‹Mü+M ;Ms)‹MüÿEüŠ €ù uÿEðÆ @ˆ@‹È•ìûÿÿ+Êù|Ì‹ø…ìûÿÿ+øEôjP…ìûÿÿWP‹ÿ40ÿ|€…ÀtC‹EôEø;Ç| ‹Eü+E ;ErŠ3ÿ‹Eø;Ç…9}tbj^9uuLèÄÅÿÿÇ èÂÅÿÿ‰0ëAÿ €‰EëÇMôWQÿuÿu ÿ0ÿ|€…Àt ‹Eô‰}‰Eøë§ÿ €‰EëœÿuèÅÿÿYƒÈÿë,‹öD0@t ‹E €8„ªþÿÿèUÅÿÿÇèSÅÿÿ‰8ëÒ+Eð_^[ÉÃÿ¬NhèmÿÿY‹L$…À‰At ƒI ÇAëƒI A‰AÇA‹Aƒa‰ËD$;@Ur3ÀËȃàÁùÀ‹ @TŠDƒà@ÃU‹ìSV¾,TWVÿ‹=œ€3Û9(TtVÿ×jè!½ÿÿYj[ÿu ÿuèY‰E …ÛYt jèc½ÿÿYëVÿ׋E _^[]ÃU‹ì‹E…Àu]Ã=lPuf‹M fùÿw9jˆX]ÃMƒeQjÿ5œBPE jPh ÿ5|Pÿ€…Àtƒ}tèÄÿÿÇ*ƒÈÿ]ÃÌÌÌÌÌÌÌÌÌÌÌSV‹D$ Àu‹L$‹D$3Ò÷ñ‹Ø‹D$ ÷ñ‹ÓëA‹È‹\$‹T$‹D$ ÑéÑÛÑêÑØ Éuô÷ó‹ð÷d$‹È‹D$÷æÑr;T$wr;D$ vN3Ò‹Æ^[ÂÌÌÌÌÌÌÌÌS‹D$ Àu‹L$‹D$ 3Ò÷ñ‹D$÷ñ‹Â3ÒëP‹È‹\$‹T$ ‹D$ÑéÑÛÑêÑØ Éuô÷ó‹È÷d$‘÷d$Ñr;T$ wr;D$v+D$T$+D$T$ ÷Ú÷؃Ú[ÂV‹t$WƒÏÿöF @tƒf ëV舞ÿÿVèV‹øèÌžÿÿƒÄ ‹Ç_^ÃV‹t$WƒÏÿöF ƒt4VèMØÿÿV‹øèšÿvè²ƒÄ …À}ƒÏÿë‹F…Àt Pè)ÿÿƒfYƒf ‹Ç_^ÃS‹\$;@UVWsr‹ÃÁø<…@T‹Ãƒà4À‹ÁæöD0tRSèÕ‹YöD0t)SèƒYPÿà€…Àu ÿ €‹ðë3ö…ötèEÂÿÿ‰0è5ÂÿÿÇ ƒÎÿSèíY‹ÆëèÂÿÿÇ ƒÈÿ_^[ÃS3Û9”PVWuBhháÿ‹ø;ûtg‹5 h\áWÿÖ…À£”PtPhLáWÿÖh8áW£˜PÿÖ£œP¡˜P…ÀtÿЋ؅Ût¡œP…ÀtSÿЋØÿt$ÿt$ÿt$Sÿ”P_^[Ã3ÀëøÌÌ‹L$ W…ÉtzVS‹Ù‹t$÷Æ‹|$uÁéuoë!ŠFˆGIt%„Àt)÷Æuë‹ÙÁéuQƒãt ŠFˆG„Àt/Kuó‹D$[^_Ã÷ÇtˆGI„Š÷Çuî‹ÙÁéulˆGKuú[^‹D$_ɃÇIt¯ºÿþþ~‹Ѓðÿ3‹ƒÆ©tÞ„Òt,„öt÷Âÿt ÷ÂÿuƉëâÿÿ‰ëâÿ‰ë3Ò‰ƒÇ3ÀIt 3À‰ƒÇIuøƒãu…‹D$[^_ËT$V‹t$ 3À 2;Êr;ÎsjX‹T$^‰ ÃV‹t$W‹|$Vÿ7ÿ6èËÿÿÿƒÄ …ÀtFPjÿ0è·ÿÿÿƒÄ …ÀtÿFFPÿwÿ0èŸÿÿÿƒÄ …ÀtÿFFPÿwÿ0è‡ÿÿÿƒÄ _^ËD$VW‹0‹x‹Îö‰04?Áé ñ‹H‹×‰pÁêÑá Ê_‰H^ËD$VW‹P‹H‹ò‹ùÁæÑé ΉH‹ÁçÑéÑê Ï_‰P‰^ÃU‹ìƒì‹E S‹]3Ò;ÂVÇEüN@‰‰S‰SvQW‰E‹ó}ð¥¥S¥èpÿÿÿSèjÿÿÿEðPSèÿÿÿSèZÿÿÿ‹Eƒeôƒeø¾‰EðEðPSèáþÿÿƒÄÿEÿMu¶3Ò_9Su(‹K‹ÁÁè‰C‹‹ðÁîÁá ñÁàEüðÿ‰s‰ëÓ¾€…suSèôþÿÿEüÿÿYëëf‹Eü^f‰C [ÉÃU‹ìƒì\SVW‹}E¤j‰Eô3ÀZ‰E؉Uè‰Eü‰Eð‰E܉Eà‰EÔ‰EЉEä‰Eø‰Eì‰}Š€ù t€ù t €ù t€ù uGëçj^ŠGƒø ‡wÿ$…€l€û1| €û9jé: BujéF¾Ãƒè+tHHtƒè…ÔéjÇEØ€X맃eØjX란û1‰Uð|€û9~®: B„¼€û+t1€û-t,€û0tR€ûCމ€ûE~€ûcŽ{€ûerjéÈOj éÀ€û1| €û9ŽVÿÿÿ: B„Yÿÿÿ€û0…µ‹Âéÿÿÿ‰Uð9œB~¶ÃVPèã¾ÿÿYYjZë‹ @¶ÃŠA#Æ…Àtƒ}üs‹EôÿEü€ë0ÿEôˆëÿEøŠGë·: Bug‹ÆéÂþÿÿƒ}ü‰Uð‰UÜu €û0uÿMøŠGëó9œB~¶ÃVPèr¾ÿÿYYjZë‹ @¶ÃŠA#Æ…Àtƒ}üs‹EôÿEü€ë0ÿEôÿMøˆŠGë¹€û+„ ÿÿÿ€û-„ÿÿÿéÕþÿÿ9œB‰UÜ~¶ÃVPè¾ÿÿYYjZë‹ @¶ÃŠA#Æ…À„ª‹ÆëWOþ€û1‰M|€û9~D¾Ãƒè+ttHHtdƒè…jëe‰Uà€û0uŠGëö€û1Œò€û9éë €û1|€û9 j XOé¸ýÿÿ€û0uDëÁƒ} t*¾ÃOÿƒè+‰MtHH…´ƒMèÿjXé‰ýÿÿjXéýÿÿj OXƒø „•éoýÿÿ‹}éˆÇEà3öƒ=œB~¶ÃjPè%½ÿÿYYë‹ @¶ÃŠAƒà…Àt¾Ë¶tAÐþPŠGë¾¾Q‰uäƒ=œB~¶ÃjPèÛ¼ÿÿYYë‹ @¶ÃŠAƒà…ÀtŠGëÐOë‹ù‹E ƒ}ð‰8„ÙjX9Eüv€}»|þE»‰Eü‹EôHÿEøë‹Eôƒ}ü†¥H€8uÿMüÿEøëòEÀPE¤ÿuüPèjûÿÿ‹Eä3ÉƒÄ 9Mè}÷ØEø9MàuE9MÜu+E=P~0ÇEÔ‹]‹u‹E‹Uƒ}Ôt`3Û¸ÿ¾€3ÒÇEìë^=°ëÿÿ} ÇEÐëÇÿuPEÀPè´‹UÀ‹]‹uÆ‹EÊƒÄ ëµ3Ò3À3ö3Ûë«3Ò3À3ö3ÛÇEìëƒ}Ðt3Ò3À3ö3ÛÇEì‹M EØ_‰q‰Yf‰A ‹Eì^f‰[ÉÃIh˜hïhitiëi!jkjJjÏj¹j…jU‹ìƒì‹ES‹]V‹È¾ÿá€#Æf…ÉWÆEäÌÆEåÌÆEæÌÆEçÌÆEèÌÆEéÌÆEêÌÆEëÌÆEìÌÆEíÌÆEîûÆEï?ÇEü‹ÐtÆC-ëÆC ‹} f…Òu…ÿu9}ufƒ#ÆC ÆCÆC0éþf;Öuz¸€fÇ;øuƒ}t÷Ç@uhŒáëFf…ÉtÿÀu ƒ}u.h„áë;øu#ƒ}uh|áCPèJßÿÿYÆCYƒeüénhtáCPè-ßÿÿYÆCYëá·Â‹Ï‹ðÁéiÀMÁîfƒeðj Nf‰UúkÉM‰}ö´ í¼ì‹EÁþ‰Eò¿Æ÷ØPEðPè× ƒÄ f}úÿ?rEäFPEðPèž YYöEf‰3t‹}¿Æø…ÿéñþÿÿ‹}ƒÿ~j_·uúîþ?fƒeúÇEEðPè]øÿÿÿMYuñ…ö}÷Þæÿ~ EðPènøÿÿNYuóOC…ɉE~P‰Muð}¥¥EðP¥èøÿÿEðPèøÿÿEPEðPè¦÷ÿÿEðPèû÷ÿÿŠEû‹M€eûƒÄ0ÿEÿMˆu¶‹EŠHÿHH€ù5K|0;Ár€89uÆ0Hëñ;Ás@fÿþ*Ã,ˆC¾À€d‹Eü_^[ÉÃ;Ár €80uHëô;ÁsÙfƒ#ÆC ÆCÆ0€cjXëÓÌÌÌÌÌÌÌÌÌÌÌÌÌ‹T$‹L$÷Âu<‹:u. Àt&:au% ätÁè:Au Àt:auƒÁƒÂ äuÒ‹ÿ3ÀÃÀÑà@Ëÿ÷ÂtŠB:uéA Àtà÷Ât¨f‹ƒÂ:uÒ ÀtÊ:auÉ ätÁƒÁëŒÌÌÌÌÌÌÌÌÌÌÌÌU‹ìV3ÀPPPPPPPP‹U IŠ ÀtB«$ëó‹uƒÉÿAŠ ÀtF£$sò‹ÁƒÄ ^ÉÃU‹ìƒ=RSVuÿu ÿuèé‹ÿÿYYëvjèþ®ÿÿ‹uYf¶f…ÛtJ¶Ãö€!StŠFF„Àt·Ë¶ÀÁá È9M të·Ã9E tFëÆjè¯ÿÿY3Àë%jè¯ÿÿYFÿëjè¯ÿÿ‹E Y·Ë+Á÷ØÀ÷Ð#Æ^[]ÃV‹t$…ötVèü¸ÿÿ@Pè8ÿÿY…ÀYt VPèÜÿÿYY^Ã3À^ÃU‹ì‹M3ÀSV‰A‹MWj‰A‹M[‰A ŠMöÁt ‹EÇEÀ XöÁt‹EÇE“ÀƒH„Ët‹EÇE‘ÀƒHöÁt‹EÇEŽÀƒHöÁt‹EÇEÀƒH‹u ‹Ej‹‹P÷Ñ#˃âïÁá Ê_‰H‹‹E÷Ñ‹PƒáÑáƒâ÷ ʉH‹‹E÷Ñ‹PÑéƒáƒâû ʉH‹‹E÷Ñ‹PÁé#σâý ʉH‹‹E÷Ñ‹PÁé#˃âþ ʉHèú„Ãt‹MƒI ¨t‹MƒI ¨t‹MƒI ¨t‹M y ¨ t‹E X ‹¹ #Át4=t=t ;Áu(‹Eƒë ‹E‹ƒáþ Ïë ‹E‹ƒáý ˉë‹Eƒ ü‹¹#Át =t ;Áu"‹Eƒ ãë‹E‹ƒáçƒÉë ‹E‹ƒáëƒÉ‰‹E‹Máÿ‹Ááâþÿ ʉ‹E X ‹E‹H ƒáã ωH ‹EÝ‹EÝX‹E XP‹E‹HPƒáã Ï‹}‰HP‹EÝÝX@èøEPSjÿuÿ䀋Eö@tƒ&þö@tƒ&ûö@tƒ&÷ö@tƒ&ï„Xtƒ&ß‹ºÿóÿÿƒáƒét%ItIt Iu€N ë‹€åû€Íë‹€å÷€Í‰ë!‹ÁéƒáƒétItIu!ë‹#Ê€Íë‹#ʀ͉Ý@@Ý_^[]ÃU‹ìƒì ‹ESW‹øƒçj¨[t„]tSè`Yƒç÷éʨtöEtjèFYƒçû鰄ÄÒöE„Èjè$Y¸ ‹M#È„ˆùtXùt(;È…‹M ÝÜxÌÝ`HßàžwÙàÝ]ôÝEôën‹M ÝÜxÌßàžvÝPHëÝ`HÙàÝ]ôÝEôëF‹M ÝÜxÌßàžvÝ`HëÝPHÙàÝ]ôÝEôë‹M ÝÜxÌÝPHßàžwÙàÝ]ôÝEô݃çþéÖ¨„ÎöE„ÄV3ö¨t‹ó‹E ÝÝ]ôÝEôÜxÌßàž„ÝEôEüPQQÝ$èb‹EüƒÄ Ý]ôˆúÿÿùÎûÿÿ} Ùî‹óÝ]ôëTÝEôÜxÌßàžs‹Óë3ÒŠEúƒà f‰Eú¸üÿÿ;È}+Á„]ôt…öu‹óÑmô„]øt€M÷€ÑmøHuã…ÒtÝEôÙàÝ]ôÝEô‹E Ýë‹ó…ö^tjè‘YƒçýöEtöE t j èzYƒçï3À…ÿ_[”ÀÉËD$ƒøt~ƒøè±ÿÿÇ"Ãèù°ÿÿÇ!Ã3ÀÃU‹ìQ›Ý}þ¿EþÉÃU‹ìQÝ}þÛâ¿EþÉÃU‹ìQ›Ù}ü‹E ‹È#E÷Ñ#Mü ȉM Ùm ¿EüÉÃU‹ìQQŠMöÁt Û- Pˆˆ @A°¡> ˆ˜¨Èˆ @AØ¡þþA¢pˆˆp€¿ ÀA ¢ < >ø€€€ @A@¢""<"ˆˆøˆˆ @A¸¢UªUªUªUªUªUª @Aà¢8|þ|8€¿A£È‚£ð¢È¢ ¢x¢P¢(¢¢è¡À¡˜¡x¡X¡8¡¡ð Р°  p P (  àŸÀŸ˜ŸxŸXŸ8ŸŸðžè‚О¨žˆžhžHž žžà¸pP0ðœÈœ œxœPœ(œœØ›°›ˆ›`›8››øšК°šˆš`š8ššè™À™˜™p™H™ ™ø˜И¨˜€˜X˜0˜˜à—¸——h—@——ð–È– –x–P–(––Ø•°••p•P•0••è”À” ”x”X”0””è“À“˜“x“X“8““ø’Ø’¸’˜’x’X’8’’ø‘Ø‘°‘ˆ‘`‘ƒ(ƒ@‘‘øÐ°ˆ`8ðаpH(èŽÈŽ¨ŽˆŽhŽ@Ž ŽŽàÀ xP(ØŒ°ŒˆŒ`Œ8ŒŒè‹À‹˜‹p‹H‹ ‹øŠЊ¨Š€ŠXŠ0ŠŠà‰¸‰‰h‰H‰ ‰øˆЈ¨ˆ€ˆXˆ0ˆˆà‡¸‡‡h‡@‡‡ø†؆°†ˆ†`†8††è…À…˜…p…H… …ø„Є¨„€„`„@„„ðƒȃ ƒxƒPƒ0(£A8§AX§Ax§A˜§x„tŒ„„„„„((€¿@@A¸§€€€¼Â‚‚‚¼€€ €¿@@Aà§x„tŒ„„„„„0€¿@@A¨z„„„„„„(( €¿A0¨z„„„„„„D8 €¿AX¨z„„„„„„0 €¿A€¨z„„„„„„  €¿A¨¨€|¢¢’ŠŠ| €¿€?AШ8þ8 €¿Aø¨|‚‚‚‚‚|(( €¿A ©|‚‚‚‚‚|P( €¿AH©|‚‚‚‚‚|D8 €¿Ap©|‚‚‚‚‚|0 €¿A˜©|‚‚‚‚‚|  €¿AÀ©‚‚‚‚‚¼P( €¿Aè©|‚‚‚‚‚|P0H €¿Aªø àPP ÀA8ªø à` ÀA`ªø à` ÀAˆªø à0@ ÀA°ª|€€þ‚‚|(( €¿Aت|€€þ‚‚|D8 €¿A«|€€þ‚‚|0 €¿A(«|€€þ‚‚|  €¿AP«0H|‚€€€‚| €¿@@Ax«n’|’l€¿A «z†‚~|$ €¿AÀ«z†‚~|(( €¿Aè«z†‚~|P( €¿A¬z†‚~|D8 €¿A8¬z†‚~|0 €¿A`¬z†‚~|  €¿Aˆ¬€¼Â‚‚ü‚‚| €¿€?A°¬€€€ü‚‚‚ü€€ €¿Aج(D‚‚0 €¿A­|‚‚‚‚‚‚‚(( €¿A(­|‚‚‚‚‚‚‚D8 €¿AP­|‚‚‚‚‚‚‚0 €¿Ax­|‚‚‚‚‚‚‚  €¿A ­€|¢¢’’ŠŠ†| €¿€?AÈ­‚D((D‚€¿€¿Að­|‚‚‚‚‚‚|(( €¿A®|‚‚‚‚‚‚|P( €¿A8®|‚‚‚‚‚‚|D8 €¿A`®|‚‚‚‚‚‚|0 €¿Aˆ®|‚‚‚‚‚‚|  €¿A°®‚†Š’’¢Â‚P( €¿AØ®üBBBBòBBBü €¿A¯ø øPP ÀA(¯ø øˆp ÀAP¯ø ø` ÀAx¯ø ø0@ ÀA ¯þ@@@x@@þ(( €¿Aȯþ@@@x@@þD8 €¿Að¯þ@@@x@@þ0 €¿A°þ@@@x@@þ  €¿A@°0H|‚€€€€€€‚| €¿@@Ah°žün €¿A°‚‚‚þ‚‚D8( €¿A¸°‚‚‚þ‚‚D8(( €¿Aà°‚‚‚þ‚‚D8P( €¿A±‚‚‚þ‚‚D8D8 €¿A0±‚‚‚þ‚‚D80 €¿AX±‚‚‚þ‚‚D8  €¿A€±|‚‚€@  €¿A¨± f’ ` €¿Aб òL@@À@ €¿Aø± æB@@À@ €¿A ²H$$H€¿€¿AH²øpˆˆp€¿ ÀAh²à@@@À@€¿€ÀAˆ²`0À@@A¨²ÀÀ€À€ÀAȲ zŠŠŠ~ €¿Aè²€€ºÆ‚‚‚‚‚ €¿@A³À @ÀÁA8³` `€¿€ÀAX³ð€``€¿€ÀAx³þþ €¿€¿A˜³``@ÀÀÀAÀ³ü€¿ÁAà³ Pˆˆ €¿@AàÆ> ˆ˜¨Èˆ €¿@AÇþþ€¿A0ÇpˆˆpÀÀÀAPÇ < >ø€€€ €¿@ApÇ""<"<x€€x €¿@A˜Ç€€à€ð €¿@AÀÇ>ˆˆøˆˆ €¿@AèÇUªUªUªUªUªUªUª@@AÈ8|þ|8€¿A8È@§@È ÈøÇÐǨǀÇXÇ8ÇÇðÆÈƠƀÆ`Æ8ÆÆàÅÀŠŀÅ`Å8ÅÅàĸÄÄhÄ@Ä ÄÄØÃ`§¸ÃÃpÃPÃ(ÃÃØÂ¸ÂÂhÂHÂ(ÂÂèÁÈÁ ÁxÁPÁ(ÁÁØÀ°ÀˆÀ`À8ÀÀð¿È¿ ¿€¿X¿0¿¿à¾¸¾¾h¾@¾¾ð½Ƚ ½x½P½(½½ؼ°¼ˆ¼`¼8¼¼è»À»˜»p»H» »øºк¨º€º`º@º ººع¸¹¹p¹H¹ ¹ø¸и¨¸€¸X¸8¸¸ø·з¨·ˆ·h·@· ··à¶À¶˜¶x¶P¶(¶¶€§ §àµ¸µ˜µpµPµ(µµØ´¸´´p´P´0´´è³ȳ¨³€³`³@³ ³ø²в°²²p²P²0²²à±¸±±h±@±±ð°Ȱ °x°P°(°°د°¯ˆ¯`¯8¯¯è®À®˜®p®H® ®ø­Ø­°­ˆ­`­8­­è¬À¬˜¬p¬H¬ ¬ø«Ы¨«ˆ«`«8««èªÀª˜ªpªHª ªø©Щ¨©€©X©0©©à¨¸¨¨h¨@¨¨ð§ȧlXÈð?ÿG€¿€@@`  P @ @ˆÌ€€°ÈˆˆÈ°€€ @À@°Ì€@@`    @ @ØÌpP @ÍpP   @ Íp@   @HÍp @  @pÍpˆÈ¨˜tÀ@˜Í ø €¿À@¸ÍpˆˆˆˆpPÀ@ØÍpˆˆˆˆpP( À@øÍpˆˆˆˆpP  À@ Îpˆˆˆˆp  À@HÎpˆˆˆˆp @ À@pÎà P  @˜Îpˆˆˆˆx`P À@ÀÎ@@@@@@ @èÎ@@@@@@ @ €?@Ï€€€€€€€@ @0Ï@@@@@@@€ €?@XÏ`€ð`P @€Ï`€ð`P   @ Ï`€ð`@   @ÈÏ`€ð` @  @ðÏ` `€€`@ @Ðl’~ìA8Ðhpà P   @XÐhpàP @€Ðhpà P  @ ÐhpàP   @ÈÐhpà   @ðÐhpà @  @Ñ  ` @@Ñ€€ðˆˆð€€€¿à@`Ñ((DD‚ à@€Ñx„„„„„„„H €¿A¨Ñx„„„„„„„( €¿AÐÑx„„„„„„„  €¿AøÑx„„„„„„„  €¿A Ò€xĤ¤””Œx €¿€?AHÒˆP Pˆ€¿À@pÒx„„„„„„xH €¿AÒx„„„„„„xP( €¿A¸Òx„„„„„„x( €¿AàÒx„„„„„„x €¿AÓx„„„„„„x  €¿A0ÓŒŒ””¤¤ÄÄP( €¿AXÓxDBBòBDxA€Ó@@@@@@@@  @@ Ó@@@@@@@@ @ @@ÈÓ€€€€€€€€€@ €¿@@ðÓ@@@@@@@@@€ @@Ôø€€€ø€€øP €¿à@@Ôø€€ø€€€øP  €¿à@hÔø€€€ø€€ø  €¿à@Ôø€€€ø€€ø @ €¿à@¸Ô0x„€€€€„x €¿@AàÔ€ˆxH/€(€  AÕ‚‚|D((( à@0Õ‚‚|D((( à@XÕ‚‚|D((( à@€Õ‚‚|D((( à@¨Õ‚‚|D(( à@ÐÕ‚‚|D((  à@øÕ`€@ €¿@À@ Ö!€ È$Dâ A@Ö' HDÄBAhÖ!€ HDÄB AˆÖ P(P À@°Öàà à@À€@ÐÖ@@À@@À@@ðÖÀ@@@@×À@À@@0×(((((hèèè| @À@P×€€ð@ @x×€@ÀÀ@@˜×À @à@À@@¸×à@ `@À@@Ø×ø ø À@ø×``@À€@ØààÀ@@8Ø8Dª²ºD8€¿AXØà@À€@xØø€¿Àà@˜Ø(P P(À@¸Øà  à@À€@ØØ8Dš¢šD8€¿AøØ àÀ@@ÙpˆpȘpÀˆp @À@8Ù€€€€€€€€ €¿@@@`Ù ø øPPˆˆÀ@ˆÙ``€¿ @¨Ù°H@@à@H0À@ÈÙ@p¨  ¨p€?À@èÙ€€€€€€€€¿@@@Ú@@(Ú˜d@Àà@HÚ€@@@@ @@@€ @@@hÚ€€€€€€€€€€ €¿@@@Ú @@@@€@@@  @@@¸Úð€@ ð @àÚ€@@`  @ @ÛˆˆP PˆÀ@ Û((TT’’A@Û PPˆˆÀ@`Ûp @€Û`@@@@à@@€@ Û``` @ÀÛ€€€€À €@àÛh˜ˆˆ˜h@À@Ü€€°ÈˆˆÈ°@À@ ÜpˆˆˆˆpÀ@@܈ˆˆˆÈ°À@`Ü’’’’’ìA€Ü€€€€€€€€@ Ü À €€ @ÀÜ€€€€€€€€ €?@àÜ€€€€€€€@݈ˆˆˆÈ°€€À@(Ýph˜ˆˆ˜h@À@HÝ@@@@@à@0€@hÝ`€ð` @ˆÝh˜ˆˆ˜hÀ@¨Ý`€€` @ÈݰȈˆÈ°€€À@èÝhpà @Þ€€@ À@@(Þü@À@HÞˆPP @ÀÀ@hÞÀ@@@@@@@@À @@@ˆÞ @@@@€€@@°ÞÀ€€€€€€€€À €¿@@@ÐÞø€@ ø€¿à@øÞ((DD‚à@߈ˆPP Pˆˆ€¿à@8ß"""UIIˆ€ˆ€ AXß((DDD‚‚à@€ßx„„„„„„„€¿A ß ø @Àßpˆˆp€ˆp€¿à@à߈ˆˆˆðˆˆð€¿à@à|Œ”„„„„x €¿€?A à€€€€ðˆˆð€¿à@Hàx„„„„„„x€¿AhàŒŒ””¤¤ÄÄ€¿Aˆà’’’ªªÆÆ‚€¿A¨àð€€€€€€€€¿À@Èàˆˆà ˆ€¿à@èà` @က€€€€€€€¿@@(á„„„„ü„„„€¿AHátŒ„Œ€€„x€¿Ahက€€ð€€ø€¿À@ˆáø€€€ø€€ø€¿à@¨áðˆ„„„„ˆð€¿AÈáx„€€€€„x€¿Aèáðˆˆˆðˆˆð€¿à@â‚‚|D((à@(â>@›¤€¤€¢@’@M@ € @0AHâ@@@ `€¿À@xâ€@ @€€¿€¿À@˜âððÀ @¸â @€@ €¿€¿À@Øâ€@@@@@@øâ€€€¿@@ãpˆh˜ˆˆpÀ@8ãpˆˆˆpˆˆpÀ@Xã@@ øÀ@xãpˆˆÈ°€ˆpÀ@˜ãpˆð€€øÀ@¸ãøPP0À@Øãpˆ0ˆpÀ@øãø€@0ˆpÀ@ä@@@@@@À@€¿À@8äpˆˆˆˆˆˆpÀ@X䀀@@@@ @@x䀀¿@@˜äø€¿@Àà@¸ä€@@@@@Øä ø €¿À@øä @  À€@å€@@ @@€ €¿@€@8å @@€€€€@@  @€@`å€@@€¿ À@@ˆåd˜˜¤`PP €¿A¨å&)h”dAÈå p¨(p ¨p  €?À@èåPPø(|((À@æ  €¿ÀÀ€@0怀€€€€€€¿@@Pæ@@pæxæXæ8ææøåÐå°ååpåHå ååàäÀä ä€ä`ä@ä ääàãÀã ã€ã`ã@ã ããàâÀâ â€â`â0ââðáÐá°áápáPá0ááðàÐà°ààpàPà0ààèßÈߨ߈ßhß@ß ßßàÞ¸Þ˜ÞpÞPÞ0ÞÞðÝÐݰÝÝpÝPÝ0ÝÝðÜÈܨ܈ÜhÜHÜ(ÜÜèÛÈÛ¨ÛˆÛhÛHÛ(ÛÛèÚÈÚ ÚxÚPÚ0ÚÚðÙÐÙ°ÙÙpÙHÙ ÙÙàØÀؠ؀Ø`Ø@Ø ØØà×À× ×€×`×8××øÖØÖ¸Ö˜ÖpÖPÖ(ÖÖàÕ¸ÕÕhÕ@ÕÕðÔÈÔ ÔxÔPÔ(ÔÔØÓ°ÓˆÓhÓ@ÓÓðÒÈÒ ÒxÒXÒ0ÒÒàѸÑÑhÑHÑ(ÑÑØÐ°ÐˆÐhÐ@Ð ÐÐØÏ°ÏˆÏhÏ@ÏÏðÎÐΨ΀ÎXÎ0ÎÎàÍÀ̀͠ÍXÍ0ÍÍèÌÀ̘Ìlà æÀ 0PPHˆˆP €¿@@à@ ꀀ€°ÈˆˆˆÈ°€€ €¿@@à@Hê€@ PPˆˆˆ  €¿@@à@pêh˜ˆˆˆˆˆP €¿à@˜êh˜ˆˆˆˆˆP  €¿à@Àêh˜ˆˆˆˆˆ  €¿à@èêh˜ˆˆˆˆˆ @ €¿à@ë¸DdTLD:à@8ë ø €¿€¿à@XëpˆˆˆˆˆpP €¿à@xëpˆˆˆˆˆpP( €¿à@ ëpˆˆˆˆˆpP  €¿à@Èëpˆˆˆˆˆp  €¿à@ðëpˆˆˆˆˆp @ €¿à@숈ˆˆˆÈ°P( €¿à@@ìpˆˆˆˆxP0h €¿à@hì@@@@@@@  @@ì@@@@@@@ @ @@¸ì€€€€€€€€@ €¿@@àì@@@@@@@@€ @@ípˆ€øˆˆpP €¿à@0ípˆ€øˆˆpP  €¿à@Xípˆ€øˆˆp  €¿à@€ípˆ€øˆˆp @ €¿à@¨í` pˆ€€€ˆp €¿@@à@Ðíwˆ€ˆ€€ˆ€w €¿0Aøítˆˆxˆp0H0 €¿à@ îtˆˆxˆpP €¿à@HîtˆˆxˆpP( €¿à@pîtˆˆxˆpP  €¿à@˜îtˆˆxˆp  €¿à@Àîtˆˆxˆp  €¿à@èî°ˆˆˆ°ˆˆˆp €¿à@ø„„„ø€€ €¿A8ï(DD‚‚ €¿A`ïx„„„„„„„„H €¿Aˆïx„„„„„„„„( €¿A°ïx„„„„„„„„ €¿AØïx„„„„„„„„  €¿Að€^!P€H€D€D€B€!€@ €? A(ðˆP Pˆ€¿€¿à@XðA”€”€˜€”€œ€A> €¿0A€öð@À @°öü€¿ÀAÐö(P P(€¿€¿à@ðöà  à€¿€À @÷>Aœ€¢€ €¢€œ€A> €¿0A0÷ Á@@`÷pˆ0Hˆˆ`€ˆp @@À@€÷€€€€€€€€ €¿@@@¨÷ ø ø Pˆˆ €¿à@Ð÷„xHHx„€¿à@ø÷°H ð@@H0 €¿à@ø@pÈ   ¨p €¿€?à@@ø€€€€€€€€€ €¿@@@@hø€@ø˜d@Àà@°øÀ  À @@€@Ðø€€€€€€€€€€€€ €¿@@@@øø0@@@@@€@@@@0 @@€@ ùð€@@ ð€¿À@Hù€@ PPˆˆˆ €¿@@à@hù„„H00H„À@ù""UIIˆ€ˆ€ A°ù PPˆˆˆ€¿à@Øùh˜ˆˆˆˆˆ€¿à@øù`@@@@@à@@ @@ú``€`€¿À@@ú€€€€€À €¿€@`úh˜ˆˆˆ˜h €¿@@à@€ú€€€°ÈˆˆˆÈ° €¿@@à@¨úpˆˆˆˆˆp€¿à@ÐúˆˆˆˆˆÈ°€¿à@ðú’’’’’Ú¤€¿Aû€€€€€€€€€ €¿@@0ûˆ ÀÀ €€ €¿À@Xû€@@@@@@@@@@ @@@@€û€€€€€€€€ €¿@@¨ûˆˆˆˆˆÈ°€€ €¿à@Ðûpˆh˜ˆˆˆ˜h €¿@@à@øû@@@@@@à@0 @@ üpˆ€øˆˆp€¿à@Hüh˜ˆˆˆ˜h €¿à@hüpˆ€€€ˆp€¿à@ü°ÈˆˆˆÈ°€€ €¿à@°ütˆˆxˆp€¿à@ØüÀ€@ÀÀ@@øüþ@à@ýˆP  ÀÀ@8ýÀ@@@@@@@@@@À @@@@Xý @@€€ €@€ýÀ€€€€€€€€€€À €¿@@@@¨ýþ€@ þ €¿AÐý(DD‚‚ €¿Aøý‚DD((DD‚ €¿A þ"""UUIˆ€ˆ€ˆ€ €¿0AHþ((DDD‚‚ €¿Axþx„„„„„„„„ €¿A þþ à@Èþx„„`€„x €¿Aðþ„„„ˆø„„„ø €¿Aÿ=B…‰B< €¿ A@ÿ€€€€ø„„„ø €¿Ahÿ@›¦€¢@¢@’@M@`€ €¿€?@A𠈈p €¿à@ À0 0À€¿€¿à@Høø€¿Àà@h 0À0 €¿à@ˆ€@@@@@@¨€€€¿@@Èpˆxˆˆˆp €¿à@èpˆˆˆˆpˆˆp €¿à@@@ ø €¿à@8pˆˆˆÈ°€ˆp €¿à@`pˆˆð€€ø €¿à@ˆüˆH(( à@°pˆˆ0ˆp €¿à@Øø€€@ ˆp €¿à@ à  €¿à@(pˆˆˆˆˆˆˆp €¿à@P€€@@@  €@x€€¿@@ ø€¿@ÀAÀ€@@€¿@€@à ø €¿€¿à@ @ €¿ÀÀ @ €@@ @@€ @@€@@ @@€€€€€€@@  €¿@@€@h€@À€¿ÀÀ@@rŒ„ŠP0HH0 €¿A°#€€h””b €¿0AØ p¨¨(p ¨p  €¿€?à@PPPü(ü((à@0   €¿ÀÀ @P€€€€€€€€ €¿@@p€@˜ €X8ðÀ˜xP(èȨˆ`8èÀ˜pH øÐ°pP0ذˆ`8èÀ˜pH øÿÈÿ ÿxÿPÿ(ÿÿØþ°þˆþ`þ0þþàý¸ýýhý@ý ýýàüÀü˜üxüPü0üüàû¸ûûhû@ûûøúØú¸úúhúHú(úúàùÀù˜ùxùPù0ùùàø¸ø˜øxøPø(øøà÷¸÷÷h÷H÷÷øöØö¸ö˜öhöHö(ööèõÈõ¨õ€õXõ8õõøôØô¸ôˆôXô(ôôØó°óˆó`ó8óóàò¸òòhò@òòðñÈñ ñxñPñ(ññØð°ðˆð`ð@ððèïÀï˜ïpïHï ïøîÐî¨î€îXî0îîàí¸ííhí@ííðìÈì ìxìPì(ììØë°ëˆë`ë@ë ëøêÐê¨ê€êXê0ê¬à ¸pp<$fffÃÃÃff€¿€@ AH ÀÀÀÀÞÿãÁ€Á€Á€Á€ãÿÞÀÀÀÀ €¿€@0Ax pp<$fffÃÃà €¿€@ A¸ sûÇÃÃÃÃÃÃÃff €¿ Aè sûÇÃÃÃÃÃÃÃf<€¿ A sûÇÃÃÃÃÃÃà €¿ A8 sûÇÃÃÃÃÃÃà 0€¿ A` ΀1€xÀlÀfÀcÀ1€?À` 0Aˆ ÿÿ€¿€¿ A¸ >cÁ€Á€Á€Á€c>66 €¿0AØ >cÁ€Á€Á€Á€c>&- €¿0A >cÁ€Á€Á€Á€c>3 €¿0AH >cÁ€Á€Á€Á€c>  €¿0A€ >cÁ€Á€Á€Á€c> 0 €¿0A¸ ÃÃÃÃÃÃÃãßÎLZ2€¿ Að >cÁ€Á€Á€Á€c>L86` €¿0A ``````````ØØ €@P 0000000000Ìx0€?€@x ``````````À`0€@  ``````````0`À€@È <ãÀÀÿÃÃ~<66 €¿ Að <ãÀÀÿÃÃ~<f<€¿ A<ãÀÀÿÃÃ~< €¿ A@<ãÀÀÿÃÃ~<0`€¿ Ahxl 8>cÀÀÀÀc>€¿€@ AuàïøÇÆæøÆïð}à €¿pA¸vîÆÆæ~Æî|8ll8€¿AèvîÆÆæ~Æî|ll €¿AvîÆÆæ~Æî|LZ2€¿A8vîÆÆæ~Æî|f<€¿A`vîÆÆæ~Æî|0 €¿AˆvîÆÆæ~Æî|0`€¿A°ÜÞÆÆÆÆÜÜÆÆÆÆ|8€¿AØÀÀÀÿÿ€ÁÀÀÀÀÀÁÀÿ€ÿÀÀÀ €¿@A€0À0À````À0À0€ €¿`A8À`ÀÀ`À`À`À`À`À`À`À`À`À`À`€€ €¿PAxÀ`ÀÀ`À`À`À`À`À`À`À`À`À`À`€ €¿PA¸À`ÀÀ`À`À`À`À`À`À`À`À`À`À`  €¿PAøÀ`ÀÀ`À`À`À`À`À`À`À`À`À`À`  €¿PA8ÇÀÿðx88ln g cŒaÌpÜ0x88üÌpAxÀÀa€3 3a€ÀÀ A°€?àpp`0à8ÀÀÀÀà8`0pp?à€ € € €¿pAà€?àpp`0à8ÀÀÀÀà8`0pp?à€ € @@ €¿pA €?àpp`0à8ÀÀÀÀà8`0pp?à€ À€ €¿pA`€?àpp`0à8ÀÀÀÀà8`0pp?à€€À €¿pA €?àpp`0à8ÀÀÀÀà8`0pp?à€ €¿pAàÀ`ÀàÁàÁàÃ`Æ`Æ`Ì`Ì`Ø`Ø`ð`à`à`€ € €¿PA €À`à```0`0ü0ü0`0`0```àÀ€ PA`00000000000000ÌÌÀ@˜00000000000000Ìx0À@ÈÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ`0ÀÀ@ø000000000000000`ÀÀ@(ÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€33 €¿0AXÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€3 €¿0A˜ÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€  €¿0AØÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€ 0 €¿0A€?àpp`0àÀÀÀÀà`0pp?à€ €¿€@`AXÁÿÁÿa€a€€?€1þ1þ€€ € €ÿÿ€¿A˜À0À0````à?À0À0À€€€€ @AÐÀ0À0````à?À0À0À€€€€ @AÀ0À0````à?À0À0À€€€ € @APÀ0À0````à?À0À0À€€€ @AÀ0À0````à?À0À0À€€€ @AÐÀ0À0````à?À0À0À€€  @A|þÆÆàp8€¿€@ AP üØxs8ù™ˆ0À0À˜`ø0p0 pAx0ø0ø` 0 f˜bøcpa€a€àÀà``` €¿pA°0000ø ° ðfpb0ca€a€àÀà``` €¿pAèØl66lØ€¿€¿A øp؈ˆØp€¿ÀÀà@@`````àà`€¿ ÀÀ@`ðØp`€@ @€ÀÀ€¿€À€@ 2ròòòòr?€¿€@ AÀÀÀÀÀÛÿçÃÃÃÃÃÃÀ¿€@ AðÀ`00Á€@pø˜00˜øp ÀÀ@8øø`0˜øp ÀÀ@Xÿÿÿÿ €¿ Axp؈Øp€¿Áà@ ø@Á @À€0`@HPˆˆ‰ˆˆHˆHO@0`€ €¿`Aàøø€¿€Àà@€€€ÿ€ÿ€ €¿@À0A86lØØl6€¿€¿A`øhØH8Èp€¿ÀÀà@€€0`@GˆˆˆˆG@0`€ €¿pA ØØ0ÁÀ@Ø<~ÃÃ>sãÃÇn|ðÃÃ~<€¿€@ AøÀÀÀÀÀÀÀÀÀÀÀÀÀ€¿@@€@(ÿÿkÈÈÈÈk>€¿@ AØÀÀÀÀÀÀÀÀ@@ÀÀÀ€@À@ @(Ì~3€¿€À AHÀ`000000 00000`À€@À@hÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€¿€@€@˜ 000000`À`00000 €@À@ÈþþÀ`0 þþ €¿Aøpp<$fffÃÃÀ¿€@ A Ãçf<üÀÆ~< €¿AÀÀÀÀÀÀÀàØØ €¿À@@€€€€=€€c€Á€Á€Á€Á€c€€=€ €¿€@0AhÀÀÀÀÞÿãÁ€Á€Á€Á€ãÿÞ €¿€@0A >cÁ€Á€Á€Á€c> €¿0AØÃÃÃÃÃÃÃãßÎ €¿ AÆ0Æ0Æ0Æ0Æ0Æ0Æ0ç0ÞðÌ` €¿`A0ÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€¿€@`ÇÆÎÌØøðØÌÆÀÀÀÀ€¿Aˆàð00000000000000€?€@€@°ÀÀÀÀÀÀÀÀÀÀÀÀ€¿€@àÃÃÃÃÃÃÃãßÎÀÀÀÀ€¿ A c€=€€c€Á€Á€Á€Á€a€€=€ €¿€@0A0 00000000üü00<À@h <ãÀÀÿÃÃ~< €¿ A =€€c€Á€Á€Á€Á€c€€=€€€€€ €¿0A¸ >cÀÀÀÀc> €¿ Að ÞÿãÁ€Á€Á€Á€ãÿÞÀÀÀÀ €¿0A!vîÆÆæ~Æî| €¿AP!ÀÀ€€@€¿Á€@x!ÿÀÿÀ €@ A˜!‚Æl8€¿ÁA¸!ðð00000000000000ðð€@ @Ø!00 ``@@ÀÀ @"ððÀÀÀÀÀÀÀÀÀÀÀÀÀÀðð€¿€@ @0"ÿÀÿÀÀ`0 €ÀÿÀÿÀ €¿@A`"€0À0À````À0À0 €¿`A˜"À`àà`ÀqÀ1€1€qÀ`ÀààÀ` €¿PAÐ"84,6l6lffffbFcÆÃÃÁƒÁƒÁƒ€¿A#€€€0À0À0À``````À0À0 €¿`A@#À`ÀÀ`À`À`À`À`À`À`À`À`À`À` €¿PAx# ÿÀÿÀ €¿@A°#?ÀààÀ``àÀ|àÀ`ààÀ €¿PAè#ÀÀÀÀÀÀÀÀÁ€Á€ÿÿ€ÁÀÀÀÀÀÁÀÿ€ÿ €¿@A $0°?àpða°á¸ÀÀÀÀà8`0pp?à€ €¿€?pAX$ÀÀÀÀÀÀÿÿ€ÁÀÀÀÀÀÁÀÿ€ÿ €¿@A$€?àpp`0à8ÀÀÀÀà8`0pp?à€ €¿pAÈ$À`ÀàÁàÁàÃ`Æ`Æ`Ì`Ì`Ø`ð`ð`à`À` €¿PA%à à njČÌÌÌÌØlØlð<ð<ààÀ À €¿€A8%ÿÿÀÀÀÀÀÀÀÀÀÀÀÀ€¿ Ap%ÀpÀàÁÀÀÇÎüøÜÎÇÀÁÀÀà €¿PA˜%<~çÃÀ¿ AÐ%ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ@ø%À`À`À`À`À`À`ÿàÿàÀ`À`À`À`À`À` €¿PA &°?ðpp`0à0ÁðÁðÀÀà0`0pp?à€ €¿`AX&ÀÀÀÀÀÀÿÿÀÀÀÀÿ€ÿ€ €¿0A&ÿ€ÿ€ÀÀÀÀÿÿÀÀÀÀÿ€ÿ€ €¿0AÈ&ÿÿ€ÁÀÀÀÀ`À`À`À`À`À`ÀÀÁÀÿ€ÿ €¿PA'€?àpp`0àÀÀÀÀà`0pp?à€ €¿`A8'ÿ€ÿÀÀàÀ`À`ÀàÿÀÿ€Á€ÀÀÀÀÁÀÿ€ÿ €¿PAp'À0À0````à?À0À0À€€ @A¨'àð8pgpÏøÌÌÌfÌfÌcÆ3gsc³0üð€¿@@Aà'000008ÆÆþ|€¿ A (Àð<<ðÀ €¿ AH(þþþþÀÀ0Ap(ë€É€ €>xèÈË> €¿@ Ah,$$$ÿ€ÿ€ÀÀ A ,ØØØÁ @Ø,ÀÀ€€ÀÀÀÀÀÀÀÀÀÀ@ø, @ -(--à,À,ˆ,P,,à+À++`+@++ø*Ø*¸**h*@**ð)¸))h)@))ð(È( (x(X(0((È''X' 'è&°&x&@&&à%¸%€%X% %è$°$x$@$$Ð#˜#`#(#ð"¸"€"H""ð!À! !€!`!8!!Ø   x P  ðȘpHðÀˆP(ذˆX0à°€P0èÀˆh@àÀˆhH Ȩˆ`@ بˆhH(И`8ø¸x8ø¸€@À€@à°€HȈHȘ` à ` èÀ˜pH øÐ xP(Ø ° ˆ ` 8  Ø   h 0 ø À   p H  ø Ð   ` ìà @-ü©ñÒMb@@%†QBÈB%†QBMUB%†QB|aAõy>B|a˜@%†QBT’dB|a˜@%†QB|aAØ0è0gUBÈBgUBZU…BqÛŽBÈBqÛŽBZU…B 1010 [B“îBÆm«AMU³ª¦B“îBHBMUÂÆm«AT’dB¾0°BT’dBgU…A:’äA³ª¦B:’äAP1`1p1€1¬m+B“îB¬m+B|a˜ÁjžwB“îBjžwB|a˜Á¹m«B¹m«B‰a˜Bèy¾BjžwBÈB¬m+BÈB:’äAèy¾B|a˜A¹m«B|a˜A‰a˜BÛy¾AZU…B:’äA„žwB|aBT’dBMU…BÛy>B‰a˜B¬m+B¡ç¡B|aB¹m«B:’äA¹m«B:’dA‰a˜B|a˜@jžwB¬m+B:’äA|a˜@|a˜A:’dA°1À1Ð1èy¾BÈB|aAMUBÈB¬m+BÐó´B¬m+B¡ç¡B|aBqÛŽB:’äAZU…B|a˜AZU…B|aA‰a˜B|aA¹m«B:’dAèy¾BÛy¾AÈBMUBÈB¬m+Bèy¾B:’dBÐó´BqÛŽBÐó´B¹m«Bèy¾Bèy¾BÈB‰a˜BMUBZU…B:’äA„žwB|a˜A„žwB|aAqÛŽB¡ç¡BÐó´B|a˜@èy¾B:’dAèy¾BÛy¾A¹m«BMUB‰a˜BMUBˆ2˜2 3ÈBT’dBÈB„žwBèy¾BZU…BÐó´BZU…B¹m«B„žwB¡ç¡B%†QBqÛŽB:’äA„žwB:’dA †QB|a˜@¬m+BÛy¾A:’dA|a˜@|aA|aA|a˜@|a˜A|a˜@:’äA|aA|aB:’dA¬m+BÛy>B„žwB †QBZU…BT’dB‰a˜BT’dB¹m«B †QBèy¾B¬m+BÈBMUBèy¾B:’äA¹m«B:’äA‰a˜BMUB„žwB¬m+BÛy>BZU…B:’dA‰a˜B|a˜@¹m«Bèy¾BÈB|a˜@ÈB|aA"ˆ3%†QBÈB%†QBZU…B 4_ŠB“îB_nBJ ÛBHBèy¾B¡ç!B‰a˜BqÛB%†QBqÛBMUB¡ç!B|aAHB|aÁ_nBÛy¾Á_ŠBMU ¸4qÛB“îBÐó4BJ ÛB0 [Bèy¾BG’€B‰a˜B_ŠB%†QB_ŠBMUBG’€B|aA0 [B|aÁÐó4BÛy¾ÁqÛBMU 5%†QBqÛŽB%†QB:’dAo’äAT’dB‰a˜B:’äA‰a˜BT’dBo’äA:’äAh5x5ˆ5 †QB¹m«B †QB|aA¬m+Bèy¾B¬m+B°5À5T’dB|a˜@%†QBõy>B|a˜@%†QB|aAT’dB|a˜@T’dB|a˜À%†QB:’dÁõy>B|a˜Áà5|aA¬m+Bèy¾B¬m+B(6%†QB|aAõy>B|a˜@%†QBT’dB|a˜@%†QB|aA@6|a˜A:’dÁ¹m«BÈBp6Ûy>BÈBMUBèy¾BÛy¾A¡ç¡B|a˜AT’dB|a˜A¬m+BÛy¾A|a˜AMUB|a˜@Ûy>B:’dBqÛŽB|a˜@¡ç¡B|a˜A¹m«B¬m+B¹m«BT’dB¡ç¡B¡ç¡BqÛŽBèy¾B:’dBÈBÛy>BÈBˆ6¡ç!B¡ç¡BHB¹m«BG’€BÈBG’€B7Ûy¾A‰a˜BÛy¾A¡ç¡B:’äAÐó´BMUBèy¾B¬m+BÈBjžwBÈBqÛŽBèy¾B‰a˜BÐó´B¡ç¡B¡ç¡B¡ç¡BqÛŽB‰a˜B„žwBMU…BÛy>B|a˜A¹m«B@7:’äAÈB¡ç¡BÈB †QB„žwBMU…B„žwB‰a˜BT’dB¡ç¡B%†QB¹m«B|aB¹m«B:’äA¡ç¡B:’dAqÛŽB|a˜@:’dB¬m+B:’äA|a˜@Ûy¾A|aA|a˜A|a˜A¸7G’€BÈBgU…AMUB¾0°BMUBG’€BÈBG’€B88P8‰a˜BÈB:’äAÈBÛy¾AT’dB:’äA„žwB¬m+BZU…B:’dBZU…BqÛŽB„žwB¡ç¡B%†QB¹m«B|aB¹m«B:’äA¡ç¡B:’dAqÛŽB|a˜@:’dB¬m+B:’äA|a˜@Ûy¾A|aA|a˜A|a˜Ap8$B¹m«B„ž“Bèy¾B_nBÈBHBÈBqÛBèy¾B%†ÑA¡ç¡BÆm«AT’dBÆm«AMUB%†ÑA:’dAqÛB|a˜@HB0 [B_ŠB|a˜@$B:’dA³ª¦B:’äA³ª¦BMUB$BÛy>B_ŠBT’dB0 [B„žwBHB„žwBqÛBT’dB%†ÑAÛy>BÆm«AMUB9¹m«BÈB|aB|a˜AÈB¹m«BÈBÀ9Ð9¬m+BÈB:’äAèy¾BÛy¾A¹m«BÛy¾A‰a˜B:’äAZU…B|aB„žwB:’dBT’dBqÛŽB%†QB¡ç¡B¬m+B¹m«BMUB¹m«B|a˜A¡ç¡B|aA‰a˜B|a˜@jžwB¬m+B:’äA|a˜@Ûy¾A|aA|a˜A|a˜A|a˜AMUBÛy¾A¬m+BMUB%†QBÛy>BT’dBMU…B„žwB‰a˜BZU…B¡ç¡B‰a˜B¡ç¡B¹m«B‰a˜Bèy¾BjžwBÈB¬m+BÈBð9³ª¦BZU…B$B%†QB_ŠB¬m+B0 [B|aBHB|aBqÛB¬m+B%†ÑA%†QBÆm«AZU…BÆm«AqÛŽB%†ÑA¹m«BqÛBèy¾BHBÈB0 [BÈB_ŠBèy¾B$B¹m«B³ª¦BZU…B³ª¦B¬m+B$B|a˜A_ŠB|a˜@0 [BÐó4B„ž÷A|a˜@%†ÑA:’dAà:%†QBZU…Bõy>B„žwB%†QBT’dBT’dB„žwB%†QBZU…B%†QB|aAõy>B|a˜@%†QBT’dB|a˜@%†QB|aA ;È;%†QBZU…Bõy>B„žwB%†QBT’dBT’dB„žwB%†QBZU…BT’dB|a˜@%†QBõy>B|a˜@%†QB|aAT’dB|a˜@T’dB|a˜À%†QB:’dÁõy>B|a˜Á<(<Ðó´B¹m«B:’dA¬m+BÐó´Bx<|aAT’dBèy¾BT’dB|aA:’äAèy¾B:’äA˜<¨<:’dA¹m«BÐó´B¬m+B:’dAÈ<Ûy¾A‰a˜BÛy¾A¡ç¡B:’äAÐó´BMUBèy¾B¬m+BÈBjžwBÈBdÛŽBèy¾B‰a˜BÐó´B¡ç¡B¡ç¡B¡ç¡BqÛŽB‰a˜B„žwBdÛŽBT’dB †QBÛy>B †QBMUB †QB|aAÛy>B|a˜@ †QB:’dB|a˜@ †QB|aAè<X=G’€B%†QB0 [BT’dBÐó4BT’dB¡ç!BÛy>B¡ç!B¬m+BÐó4BMUB0 [BMUBG’€B|aBG’€BT’dBG’€B|aB_ŠBMUB$BMUB³ª¦B¬m+B³ª¦BÛy>B$B„žwB_ŠBqÛŽB0 [B‰a˜BHB‰a˜BqÛBqÛŽB%†ÑA„žwBÆm«AÛy>BÆm«A¬m+B%†ÑA:’äAqÛB|a˜AHB:’dA0 [B:’dA_ŠB|a˜A=Ð= †QBÈB:’dA †QBÈBÐó´B:’äAMUB‰a˜BMUBx>ˆ>˜>|a˜AÈB|a˜A|a˜AÈBjžwBÈB‰a˜Bèy¾B¡ç¡BÐó´B¹m«B¡ç¡B¹m«BqÛŽB¡ç¡B„žwB‰a˜BT’dBjžwB%†QB|a˜A%†QBjžwB%†QB‰a˜BÛy>B¡ç¡B¬m+B¹m«BMUB¹m«B|a˜A¡ç¡B|aA‰a˜B|a˜@jžwB|a˜AÀ> Ð> ?¾0°B‰a˜B³ª¦B¹m«B„ž“Bèy¾BG’€BÈBÐó4BÈBqÛBèy¾B%†ÑA¹m«BÆm«A‰a˜BgU…A„žwBgU…A|aBÆm«AÛy¾A%†ÑA:’dAqÛB|a˜@Ðó4BG’€B„ž“B|a˜@³ª¦B:’dA¾0°BÛy¾A€?|a˜AÈB|a˜A|a˜AÈB †QBÈBMU…Bèy¾B‰a˜B¹m«B¡ç¡B‰a˜B¹m«B„žwB¹m«B|aB¡ç¡BÛy¾A‰a˜B:’dAMU…B|a˜@ †QB|a˜A@ (@Æm«AÈBÆm«AÆm«AÈB³ª¦BÈBÆm«A%†QB_nB%†QBÆm«A³ª¦B˜@¨@¸@È@Æm«AÈBÆm«AÆm«AÈB³ª¦BÈBÆm«A%†QB_nB%†QBø@AA¾0°B‰a˜B³ª¦B¹m«B„ž“Bèy¾BG’€BÈBÐó4BÈBqÛBèy¾B%†ÑA¹m«BÆm«A‰a˜BgU…A„žwBgU…A|aBÆm«AÛy¾A%†ÑA:’dAqÛB|a˜@Ðó4BG’€B„ž“B|a˜@³ª¦B:’dA¾0°BÛy¾A¾0°B|aBG’€B|aB¾0°B|aB@AØA|a˜AÈB|a˜A¹m«BÈB¹m«B|a˜A%†QB¹m«B%†QBøABB%†QBÈB%†QB@B‰a˜BÈB‰a˜BÛy¾AqÛŽB|aAZU…B|a˜@T’dBõy>B–aB|a˜@gUB|aAo’äAÛy¾Ao’äAMUB XB|a˜AÈB|a˜A¹m«BÈB|a˜AMUB¬m+BT’dB¹m«B°BÀBÐBÛy¾AÈBÛy¾AÛy¾A¡ç¡BøBC:’dAÈB:’dA:’dAÈB †QBÐó´BÈB †QBÐó´BÈBÐó´B(C8CHCXC|a˜AÈB|a˜A|a˜AÈB¹m«B¹m«BÈB¹m«BˆC˜C¨C¬m+BÈBMUBèy¾BÛy¾A¹m«B|a˜A‰a˜B:’dA„žwB:’dA|aB|a˜AÛy¾AÛy¾A:’dAMUB|a˜@¬m+BjžwBqÛŽB|a˜@¡ç¡B:’dA¹m«BÛy¾AÐó´B|aBÐó´B„žwB¹m«B‰a˜B¡ç¡B¹m«BqÛŽBèy¾BjžwBÈB¬m+BÈBÐC|a˜AÈB|a˜A|a˜AÈBjžwBÈB‰a˜Bèy¾B¡ç¡BÐó´B¹m«B¡ç¡B¹m«BZU…B¡ç¡BT’dB‰a˜B%†QBjžwBÛy>B|a˜AÛy>B€D D¬m+BÈBMUBèy¾BÛy¾A¹m«B|a˜A‰a˜B:’dA„žwB:’dA|aB|a˜AÛy¾AÛy¾A:’dAMUB|a˜@¬m+BjžwBqÛŽB|a˜@¡ç¡B:’dA¹m«BÛy¾AÐó´B|aBÐó´B„žwB¹m«B‰a˜B¡ç¡B¹m«BqÛŽBèy¾BjžwBÈB¬m+BÈB:’dB|a˜A¹m«B|aÁðD˜E|a˜AÈB|a˜A|a˜AÈBjžwBÈB‰a˜Bèy¾B¡ç¡BÐó´B¹m«B¡ç¡B¹m«BqÛŽB¡ç¡B„žwB‰a˜BT’dBjžwB%†QB|a˜A%†QB †QB%†QB¹m«B¸E ÈEF¹m«B¹m«B‰a˜Bèy¾BjžwBÈB¬m+BÈB:’äAèy¾B|a˜A¹m«B|a˜A‰a˜BÛy¾AZU…B:’äA„žwB|aBT’dBMU…BÛy>B‰a˜B¬m+B¡ç¡B|aB¹m«B:’äA¹m«B:’dA‰a˜B|a˜@jžwB¬m+B:’äA|a˜@|a˜A:’dA@F †QBÈB †QB|a˜AÈB¹m«BÈBèFøF|a˜AÈB|a˜A:’äAÛy¾A:’dAMUB|a˜@Ûy>B:’dBqÛŽB|a˜@¡ç¡B:’dA¹m«B:’äA¹m«BÈB G:’dAÈB †QBÐó´BÈB †QBpG€G|a˜@ÈB:’äA †QBÈB:’äA †QBÈB‰a˜BÈBÈB‰a˜B G°GÀGÐG|a˜AÈB¹m«B¹m«BÈB|a˜AHH:’dAÈB †QB%†QB †QBÐó´BÈB †QB%†QB0HHH¹m«BÈB|a˜A|a˜AÈB¹m«BÈB|a˜A¹m«BhHxHˆHqÛB“îBqÛBMU¡ç!B“îB¡ç!BMUÂqÛB“îB_ŠB“îBqÛBMUÂ_ŠBMU°HÀHÐHàH|a˜AÈB¹m«B:’dÁIG’€B“îBG’€BMUÂ_ŠB“îB_ŠBMUÂqÛB“îB_ŠB“îBqÛBMUÂ_ŠBMUÂ(I8IHIXI †QBJ ÛB:’dA¬m+B †QBJ ÛBÐó´B¬m+BˆI˜IMUÂ%†ÑBMUÂ%†ÑB:’äÁ:’äÁMU¸IÆm+BÈBZU…BqÛŽBÆm+BÈB–aBèy¾BZU…BqÛŽBèIøI¡ç¡BZU…B¡ç¡B¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dA J0JÛy¾AÈBÛy¾AÛy¾A%†QBMUB„žwB¬m+BZU…B:’dBZU…BMU…B„žwB‰a˜B%†QB¡ç¡B|aB¡ç¡B:’äA‰a˜B:’dAMU…B|a˜@:’dB¬m+BMUB|a˜@Ûy¾A:’dA°JÀJ¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dA@K¡ç¡BÈB¡ç¡B¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dA¸KÈKÛy¾A|aB¡ç¡B|aB¡ç¡BÛy>B‰a˜BT’dBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dAHLqÛŽBÈB„žwBÈB%†QBèy¾Bõy>B¡ç¡Bõy>BgUBZU…BZU…BZU…BØLM¡ç¡BZU…B¡ç¡B|aÁ‰a˜BÛy¾ÁdÛŽB:’äÁjžwBMUÂÛy>BMUÂ|aB:’äÁ¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dA MXM%†ÑAÈB%†ÑA%†ÑAÛy>B¡ç!B„žwBHBZU…BG’€BZU…Bwž“B„žwBœ$BÛy>Bœ$BØMèMõy>BÈB%†QBèy¾BT’dBÈB%†QB%†ÑBõy>BÈB%†QBZU…B%†QB0NXNT’dBÈB„žwBèy¾BZU…BÈB„žwB%†ÑBT’dBÈB„žwBZU…B„žwB:’dÁT’dB:’äÁõy>BMU–aBMUÂxN N%†ÑAÈB%†ÑAwž“BZU…B%†ÑA|a˜AÐó4B|aBœ$BØNèNøN%†QBÈB%†QB OZU…BÛy>B:’dA„žwBÛy¾AZU…B|aBZU…BÛy>B„žwB%†QBÛy>B%†QB%†QBÛy>BZU…B„žwB‰a˜BZU…BÐó´BZU…BÈB„žwB%†ÑBÛy>B%†ÑB8OHO€O%†ÑAZU…B%†ÑA%†ÑAÛy>B¡ç!B„žwBHBZU…BG’€BZU…Bwž“B„žwBœ$BÛy>Bœ$BÐOàOÐó4BZU…BqÛB„žwB%†ÑA%†QBÆm«A|aBÆm«A:’äA%†ÑA:’dAqÛB|a˜@Ðó4B_nB_ŠB|a˜@$B:’dA³ª¦B:’äA³ª¦B|aB$B%†QB_ŠB„žwB_nBZU…BÐó4BZU…B(PÛy¾AZU…BÛy¾AMUÂÛy¾A%†QBMUB„žwB¬m+BZU…B:’dBZU…BMU…B„žwB‰a˜B%†QB¡ç¡B|aB¡ç¡B:’äA‰a˜B:’dAMU…B|a˜@:’dB¬m+BMUB|a˜@Ûy¾A:’dA¸PÈP¡ç¡BZU…B¡ç¡BMU¡ç¡B%†QBdÛŽB„žwBjžwBZU…BÛy>BZU…B|aB„žwB:’äA%†QBÛy¾A|aBÛy¾A:’äA:’äA:’dA|aB|a˜@Ûy>BjžwBdÛŽB|a˜@¡ç¡B:’dAHQXQgUBZU…BgUBgUB|aB–aB%†QBõy>B„žwBT’dBZU…BqÛŽBZU…BØQèQœ$B%†QBwž“B„žwB_nBZU…BÐó4BZU…B„ž÷A„žwB%†ÑA%†QB„ž÷A¬m+B¡ç!B|aBG’€BMUBwž“B:’äAœ$B|a˜Aœ$B:’dAwž“B|a˜@_nBÐó4B„ž÷A|a˜@%†ÑA:’dA Rõy>BÈBõy>B|a˜A%†QB|a˜@„žwBqÛŽBgUBZU…BZU…BZU…B°RØR%†ÑAZU…B%†ÑA|a˜A„ž÷A|a˜@¡ç!B0 [BG’€B|a˜@œ$B|a˜Aœ$BZU…Bœ$BøR0SÛy¾AZU…B †QB¡ç¡BZU…B †QBPS`S:’dAZU…BMUB †QBZU…BMUB †QBZU…BqÛŽBÐó´BZU…BqÛŽB€SS S°S%†ÑAZU…Bœ$Bœ$BZU…B%†ÑAàSðS%†ÑAZU…B0 [B³ª¦BZU…B0 [BÐó4B|a˜ÁqÛB:’äÁ%†ÑAMUÂÆm«AMUÂT Tœ$BZU…B%†ÑA%†ÑAZU…Bœ$BZU…B%†ÑAœ$B`TpT€TG’€B“îB0 [Bo’äBHBJ ÛBÐó4BÈBÐó4BÐó´BHB¡ç¡B0 [B‰a˜B_nBZU…B_nBT’dBHBÛy>B0 [Bo’äBHB%†ÑBHBèy¾B0 [B¹m«B_nB¡ç¡BG’€BqÛŽBG’€B„žwB_nB%†QB¡ç!B¬m+B_nBMUBG’€BÛy¾AG’€B:’dA_nB|a˜@0 [BHB|aÁHB|a˜Á0 [B:’äÁHB|aB_nB:’äA_nB|a˜A0 [B|aAHB|a˜@Ðó4B|a˜ÀÐó4B:’dÁHBÛy¾Á0 [B:’äÁG’€BMU ¨TøT €U%†QB“îB%†QBMUÂèU¡ç!B“îBHBo’äB0 [BJ ÛB_nBÈB_nBÐó´B0 [B¡ç¡BHB‰a˜BÐó4BZU…BÐó4BT’dB0 [BÛy>BHBo’äB0 [B%†ÑB0 [Bèy¾BHB¹m«BÐó4B¡ç¡B¡ç!BqÛŽB¡ç!B„žwBÐó4B%†QBG’€B¬m+BÐó4BMUB¡ç!BÛy¾A¡ç!B:’dAÐó4B|a˜@HB0 [B|aÁ0 [B|a˜ÁHB:’äÁ0 [B|aBÐó4B:’äAÐó4B|a˜AHB|aA0 [B|a˜@_nB|a˜À_nB:’dÁ0 [BÛy¾ÁHB:’äÁ¡ç!BMU VPV ØV|aA:’äA|aA|aB:’dA%†QBÛy¾AT’dBMUBT’dB¬m+B%†QB„žwB|aBqÛŽBMUB¡ç¡BMUBÐó´B|aBèy¾BÛy>B|aA|aB:’dAÛy>BÛy¾A%†QBMUB%†QB¬m+BÛy>B„žwBMUBqÛŽB:’äA¡ç¡B:’äAÐó´BMUBèy¾BÛy>Bèy¾BT’dB @W ˜WqÛŽBÈBMUBMUÂÛy>BZU…BMUB„žwBÛy¾A%†QB|a˜A|aB|a˜AÛy¾AÛy¾A:’dAMUB|a˜@Ûy>B:’dBqÛŽB|a˜@¡ç¡B:’dA¹m«B:’äA¹m«B¬m+B¡ç¡B%†QBqÛŽB„žwB:’dBZU…BÛy>BZU…BXX%†QB%†ÑB1%†QB%†ÑB@1%†QB%†ÑB1%†QB%†ÑBp2%†QB%†ÑBp3%†QB%†ÑB˜4%†QB%†ÑB°4%†QB%†ÑB5%†QB%†ÑB`5%†QB%†ÑB˜5%†QB%†ÑBÐ5%†QB%†ÑB 6%†QB%†ÑB86%†QB%†ÑBh6%†QB%†ÑB€6%†QB%†ÑB7%†QB%†ÑB87%†QB%†ÑB°7%†QB%†ÑB08%†QB%†ÑB`8%†QB%†ÑBø8%†QB%†ÑB¸9%†QB%†ÑBà9%†QB%†ÑBØ:%†QB%†ÑB˜;%†QB%†ÑBð;%†QB%†ÑBh<%†QB%†ÑB<%†QB%†ÑB¸<%†QB%†ÑBà<%†QB%†ÑB€=%†QB%†ÑBh>%†QB%†ÑB¨>%†QB%†ÑBh?%†QB%†ÑB@%†QB%†ÑBˆ@%†QB%†ÑBØ@%†QB%†ÑB(A%†QB%†ÑBèA%†QB%†ÑB(B%†QB%†ÑBPB%†QB%†ÑB¨B%†QB%†ÑBàB%†QB%†ÑBC%†QB%†ÑBhC%†QB%†ÑB¸C%†QB%†ÑBxD%†QB%†ÑBàD%†QB%†ÑB¨E%†QB%†ÑB(F%†QB%†ÑBàF%†QB%†ÑBG%†QB%†ÑBhG%†QB%†ÑBG%†QB%†ÑBàG%†QB%†ÑB H%†QB%†ÑBXH%†QB%†ÑB˜H%†QB%†ÑBðH%†QB%†ÑB I%†QB%†ÑBhI%†QB%†ÑB¨I%†QB%†ÑBàI%†QB%†ÑBJ%†QB%†ÑB J%†QB%†ÑB0K%†QB%†ÑB°K%†QB%†ÑB8L%†QB%†ÑBÐL%†QB%†ÑBM%†QB%†ÑBÈM%†QB%†ÑB N%†QB%†ÑBhN%†QB%†ÑBÈN%†QB%†ÑBO%†QB%†ÑB0O%†QB%†ÑB¸O%†QB%†ÑBP%†QB%†ÑB°P%†QB%†ÑB8Q%†QB%†ÑBÈQ%†QB%†ÑBR%†QB%†ÑB¨R%†QB%†ÑBèR%†QB%†ÑB@S%†QB%†ÑBpS%†QB%†ÑBÀS%†QB%†ÑBT%†QB%†ÑBPT%†QB%†ÑBT%†QB%†ÑBÐU%†QB%†ÑBøU%†QB%†ÑB(W%†QB%†ÑBðW%†QB%†ÑB˜X%†QB%†ÑBCVAÈBCVAMUBCVA|aA…ë A|a˜@CVA&‘A|a˜@CVA|aA¨`¸`×£€@ÈB×£€@ZU…B÷u(BÈB÷u(BZU…Bð`aI.%B“îBãÇþ@MUÂÀ»‹B“îB"BMUÂãÇþ@T’dBØA•BT’dBÍÌL@:’äAÀ»‹B:’äA a0a@aPa7 åA“îB7 åA|a˜ÁZµ>B“îBZµ>B|a˜Á1ùŽB¹m«BÚwBèy¾BZµ>BÈB7 åAÈB4€eAèy¾Bq=š@¹m«Bq=š@‰a˜BvOAZU…B4€eA„žwBØð¾AT’dB‰ÁQBÛy>BÚwB¬m+Bs…B|aB1ùŽB:’äA1ùŽB:’dAÚwB|a˜@Zµ>B7 åA4€eA|a˜@q=š@:’dA€aa a &¸BÈB…Ë@#[ñAÈBðÅBÐó´BðÅB¡ç¡BÁ¹ BqÛŽBÄBËAZU…B $~AZU…B…Ë@‰a˜B…Ë@¹m«BMó1Aèy¾Be*¥AÈB#[ñAÈBðÅBèy¾BêWBÐó´B”‡ˆBÐó´BÛ¥Bèy¾B &¸BÈB¬ ’BMUBø~B:’äAÉöjB|a˜AÉöjB|aA”‡ˆBÓ›BóŸ®B|a˜@ &¸B:’dA &¸BÛy¾AÛ¥BMUB¬ ’BMUBXbhb èbžoÊBT’dBžoÊB„žwB“éÀBZU…B{c·BZU…BdÝ­B„žwBLW¤B%†QBK‘B:’äAÙ}|B:’dA`eVB|a˜@M0B†8ÈA‘xA|a˜@ÓÞ+A|aA)\¿@|a˜A)\¿@:’äAÓÞ+A|aB‘xA¬m+B1YCB„žwB`eVBZU…BªqiB‰a˜BªqiB¹m«B`eVBèy¾BM0BÈB¢4 Bèy¾BåPîA¹m«BåPîA‰a˜B¢4 B„žwBM0BÛy>BŇB:’dA4ÑšB|a˜@dÝ­B“éÀBžoÊB|a˜@žoÊB|aA"Xc{Ž@ÈB{Ž@ZU…Bpd8§#B“îB²ûAJ ÛBôì®Aèy¾BlxEA‰a˜B\ò@%†QB\ò@MUBlxEA|aAôì®A|aÁ²ûAÛy¾Á8§#BMU ˆdÃõ¨@“îB]ÜlAJ ÛBížÂAèy¾BÕgB‰a˜BtB%†QBtBMUBÕgB|aAížÂA|aÁ]ÜlAÛy¾ÁÃõ¨@MU àdð'öAqÛŽBð'öA:’dAR¸Þ@T’dBåPZB:’äAåPZBT’dBR¸Þ@:’äA8eHeXe1YCB¹m«B1YCB)\¿@¬m+B{c·B¬m+B€ee9E’A|a˜@´YXAö( A|a˜@´YXA|aA9E’A|a˜@9E’A|a˜À´YXA:’dÁö( A|a˜Á°eö(ì@¬m+BH0ºB¬m+Bøeb¡QA|aA¤pA|a˜@b¡QAéŽA|a˜@b¡QA|aAf®ç@:’dÁ;ГBÈB@f¢4BÈB' šAèy¾BÓÞA¡ç¡B)\Ÿ@T’dB)\Ÿ@¬m+BÓÞA|a˜A' šA|a˜@¢4BM,BªqeB|a˜@Å…B|a˜AKB¬m+BKBT’dBÅ…B¡ç¡BªqeBèy¾BM,BÈB¢4BÈBXf¸=A¡ç¡BÀªA¹m«Bœ„BÈBœ„Bèfé"A‰a˜Bé"A¡ç¡BÎoAÐó´BF¥Aèy¾BÖéAÈBÀABÈB94gBèy¾Bi@zBÐó´BL¦†B¡ç¡BL¦†BqÛŽBi@zB„žwBð'TBÛy>B¤p­@d,Bg|ahAÈBBÏ…BÈBMUB„žwBÛyRB„žwBT’xBT’dBBÏ…B%†QBZUB|aBZUB:’äABÏ…B:’dA%†eB|a˜@|a,BÛyæA|ahA|a˜@¾0A|aA @|a˜AˆgúþMBÈBìQx@MUBž–BMUBúþMBÈBúþMBh høxBÈB $fAÈBMóAT’dB $fA„žwB#[åAZU…B Ò+BZU…BÉödB„žwB”‡…B%†QB¬ B|aB¬ B:’äA”‡…B:’dAÉödB|a˜@ Ò+B#[åA $fA|a˜@MóA|aA…›@|a˜A@h@äzB¹m«BØgBèy¾Bh³.BÈB ›BÈBôìžAèy¾Blx%A¡ç¡B\²@T’dB\²@MUBlx%A:’dAôìžA|a˜@ ›B8§BÇËTB|a˜@@äzB:’dA8ø†B:’äA8ø†BMUB@äzBÛy>BÇËTBT’dB8§B„žwB ›B„žwBôìžAT’dBlx%AÛy>B\²@MUBÐhtBÈB]ÜÄA…ë±@ÈBtBÈBi i¨FëAÈBûqAèy¾BXÊ%A¹m«BXÊ%A‰a˜BûqAZU…BI.ÅA„žwBãÇ.BT’dB‹ìgB%†QBu‡B¬m+BˆBMUBˆB|a˜Au‡B|aA»øzB|a˜@ÔAB¨FëAûqA|a˜@XÊ%A|aA33³@|a˜A33³@MUBXÊ%A¬m+BêŸA%†QBƒ¯BT’dBBàTB„žwB»øzBZU…Bu‡B‰a˜Bu‡B¹m«B»øzBèy¾BÔABÈB¨FëAÈBÀiu‰BZU…B»ø~B%†QBBàXB¬m+B³»B|aBƒ¯ B|aBê§A¬m+BXÊ5A%†QB33Ó@ZU…B33Ó@qÛŽBXÊ5A¹m«Bê§Aèy¾Bƒ¯ BÈB³»BÈBBàXBèy¾B»ø~B¹m«Bu‰BZU…Bu‰B¬m+B»ø~B|a˜ABàXB|a˜@³»B¨FóA‹ý€A|a˜@XÊ5A:’dA°jvOaAZU…B¸A„žwBvOaAT’dBÀ–A„žwBvOaAZU…BvOaA|aA¸A|a˜@vOaAÀ–A|a˜@vOaA|aApk˜kñcOAZU…B33A„žwBñcOAT’dBXÊA„žwBñcOAZU…BXÊA|a˜@ñcOA33A|a˜@ñcOA|aAXÊA|a˜@XÊA|a˜ÀñcOA:’dÁ33A|a˜ÁÐkøkB€žB¹m«B ×C@¬m+BB€žBHlff¶@T’dBÔ¶BT’dBff¶@:’äAÔ¶B:’äAhlxl…ë1@¹m«BåðB¬m+B…ë1@˜lR¸A‰a˜BR¸A¡ç¡BéRAÐó´BçŒAèy¾B¥½ÛAÈB‘:BÈBð'`Bèy¾B94sBÐó´B4 ƒB¡ç¡B4 ƒBqÛŽB94sB„žwBð'`BT’dB2÷BÛy>B2÷BMUB2÷B|aAëB|a˜@2÷Ba'B|a˜@2÷B|aA¸l(mOÞDB%†QBðÅBT’dB#[ñAT’dBÄBËAÛy>BÄBËA¬m+B#[ñAMUBðÅBMUBOÞDB|aBOÞDBT’dBOÞDB|aBêWBMUBø~BMUB”‡ˆB¬m+B”‡ˆBÛy>Bø~B„žwBêWBqÛŽBðÅB‰a˜BÁ¹ B‰a˜Be*¥AqÛŽBMó1A„žwB…Ë@Ûy>B…Ë@¬m+BMó1A:’äAe*¥A|a˜AÁ¹ B:’dAðÅB:’dAêWB|a˜A`m m|a"BÈB @|a"BÈB‰aBI†AMUBBÏ€BMUBHnXnhnR¸6AÈBR¸6AR¸6AÈBÀYBÈB4 ‰Bèy¾BL¦’BÐó´Bd,œB¡ç¡Bd,œBqÛŽBL¦’B„žwB4 ‰BT’dBÀYB%†QBR¸6A%†QBÀYB%†QB4 ‰BÛy>BL¦’B¬m+Bd,œBMUBd,œB|a˜AL¦’B|aA4 ‰B|a˜@ÀYBR¸6An  n èn]-œB‰a˜BE§’B¹m«B+6Bèy¾B²YBÈBôì BÈB*©ÍAèy¾BlxA¹m«BÀ6A‰a˜B¸Õ@„žwB¸Õ@|aBÀ6AÛy¾AlxA:’dA*©ÍA|a˜@ôì B²YB+6B|a˜@E§’B:’dA]-œBÛy¾APo)\?AÈB)\?A)\?AÈBW,5BÈBåPnBèy¾B¯4ŠB¹m«BǺ“B‰a˜Bß@B„žwBß@B|aBǺ“BÛy¾A¯4ŠB:’dAåPnB|a˜@W,5B)\?Aèo øoR¸6AÈBR¸6AR¸6AÈBL¦’BÈBR¸6A%†QB‘FB%†QBR¸6AL¦’Bhpxpˆp˜pR¸6AÈBR¸6AR¸6AÈBL¦’BÈBR¸6A%†QB‘FB%†QBÈpØpèp*úœB‰a˜Bt“B¹m«Bãg€Bèy¾BL·ZBÈBކBÈB]ÜÐAèy¾BŸ«„A¹m«B&=A‰a˜B…ëá@„žwB…ëá@|aB&=AÛy¾AŸ«„A:’dA]ÜÐA|a˜@ކBL·ZBãg€B|a˜@t“B:’dA*úœBÛy¾A*úœB|aBL·ZB|aB*úœB|aBq¨qR¸6AÈBR¸6Ad,œBÈBd,œBR¸6A%†QBd,œB%†QBÈqØqèqÂ-AÈBÂ-ArÛyHBÈBÛyHBÛy¾A¬m5B|aA|a"B|a˜@:’øA|a¬A|a@A|a˜@|aè@|aA @Ûy¾A @MUB (ráz4AÈBáz4A¶ä›BÈBáz4AMUB¦[ BT’dB¶ä›B€rr rHá:AÈBHá:AHá:AS¥‰BÈrØrÂ-AÈBÂ-AÂ-AÈB ÒCBÛ®BÈB ÒCBÛ®BÈBÛ®Børss(sq=2AÈBq=2Aq=2AÈB›B›BÈB›BXshsxsà> BÈBMÊAèy¾B†8|A¹m«BÈ0A‰a˜B®Ç@„žwB®Ç@|aBÈ0AÛy¾A†8|A:’dAMÊA|a˜@à> BžoWBˆ}B|a˜@;БB:’dASV›BÛy¾AjܤB|aBjܤB„žwBSV›B‰a˜B;БB¹m«Bˆ}Bèy¾BžoWBÈBà> BÈB sš™AAÈBš™AAš™AAÈBÔ[BÈB]|ŠBèy¾Bu”BÐó´BˆB¡ç¡BˆBZU…Bu”BT’dB]|ŠB%†QBÔ[BÛy>Bš™AAÛy>BPt `tP|BÈBãÇÂAèy¾BI.mA¹m«B‹ý A‰a˜Bš™©@„žwBš™©@|aB‹ý AÛy¾AI.mA:’dAãÇÂA|a˜@P|B­SBˆÅyB|a˜@óîB:’dA u™BÛy¾A#û¢B|aB#û¢B„žwB u™B‰a˜BóîB¹m«BˆÅyBèy¾B­SBÈBP|BÈBß @B|a˜A u™B|aÁÀthuHá:AÈBHá:AHá:AÈBþ%ZBÈBS¥‰Bèy¾Bk+“BÐó´Bƒ±œB¡ç¡Bƒ±œBqÛŽBk+“B„žwBS¥‰BT’dBþ%ZB%†QBHá:A%†QBŸ 4B%†QBƒ±œBˆu ˜uèuZU•B¹m«B*I‚Bèy¾B¬mKBÈBÛyþAÈB¾0ŒAèy¾BA¹m«BA‰a˜B¾0LAZU…B¾0ŒA„žwB|aØAT’dBÛy^BÛy>B*I‚B¬m+BBÏ‹B|aBZU•B:’äAZU•B:’dA*I‚B|a˜@¬mKBÛyþA¾0ŒA|a˜@A:’dAvðÅBÈBðÅB= @ÈB¬ ŠBÈB¸vÈv×£8AÈB×£8A:’äAKj‚A:’dA ›ÎA|a˜@r BrŠFB¯B|a˜@½ã’B:’dAÕiœB:’äAÕiœBÈB èv= @ÈB Ò!BÛBÈB Ò!B@wPw{@ÈBj<ÐA#[GBÈBj<ÐA#[GBÈBL“BŒêÂBÈBL“Bpw€ww w @ÈBZUŠBZUŠBÈB @Ðwàw\Â?ÈB÷uB%†QB÷uBÇk›BÈB÷uB%†QBxxZUŠBÈB @ @ÈBZUŠBÈB @ZUŠB8xHxXxÃõø@“îBÃõø@MUŸ«HA“îBŸ«HAMUÂÃõø@“îBt$B“îBÃõø@MUÂt$BMU€xx x°xHáº@ÈBn‘B:’dÁàx¬ B“îB¬ BMUÂÜB“îBÜBMUÂ{Ž@“îBÜB“îB{Ž@MUÂÜBMUÂøxyy(yM0BJ ÛB)\¿@¬m+BM0BJ ÛBLW¤B¬m+BXyhyÍÌŒ¿MUÂòRÏBMUÂòRÏB:’äÁÍÌŒ¿:’äÁÍÌŒ¿MUˆymBÈB[ScBqÛŽBmBÈB{âAèy¾B[ScBqÛŽB¸yÈy¦JBZU…B¦JB¦JB%†QB-2YB„žwBÎ3BZU…BêóAZU…BÁ¹§A„žwB7A%†QBÂÕ@|aBÂÕ@:’äA7A:’dAÁ¹§A|a˜@êóAÎ3B-2YB|a˜@¦JB:’dAðyzö( AÈBö( Aö( A%†QB9E’A„žwB÷uÞAZU…BŠ_(BZU…BéwNB„žwBbtB%†QBI΃B|aBI΃B:’äAbtB:’dAéwNB|a˜@Š_(B÷uÞA9E’A|a˜@ö( A:’dA€zzϦzB%†QBVŽTB„žwB÷u.BZU…BÑ¢êAZU…BržA„žwBª‚$A%†QB×£°@|aB×£°@:’äAª‚$A:’dAržA|a˜@Ñ¢êA÷u.BVŽTB|a˜@ϦzB:’dA{±!wBÈB±!wB±!wB%†QB7 QB„žwBØð*BZU…B“˜ãAZU…BÕg—A„žwB/nA%†QBáz”@|aBáz”@:’äA/nA:’dAÕg—A|a˜@“˜ãAØð*B7 QB|a˜@±!wB:’dAˆ{˜{= ·@|aBœs{B|aBœs{BÛy>BmghBT’dB#[UB„žwBÄB/BZU…Bj<ìAZU…B¬  A„žwBݵ'A%†QB= ·@|aB= ·@:’äAݵ'A:’dA¬  A|a˜@j<ìAÄB/B#[UB|a˜@œs{B:’dA|ÎBÈBÞêAÈB ÒAèy¾B‚soA¡ç¡B‚soA{.?ZU…BŸ BZU…B¨|Ð|øzBZU…BøzB|aÁÉöfBÛy¾ÁêSB:’äÁ Ò-BMUÂ#[éAMUÂe*A:’äÁøzB%†QBêSB„žwB Ò-BZU…B#[éAZU…Be*A„žwBMó!A%†QB…«@|aB…«@:’äAMó!A:’dAe*A|a˜@#[éA Ò-BêSB|a˜@øzB:’dAð|(}š™AÈBš™Aš™AÛy>Bê¿A„žwBT£BZU…BãÇ>BZU…BBàdB„žwB‹ìwBÛy>B‹ìwB¨}¸}ìQ AÈBª‚lAèy¾B´YœAÈBª‚lA%†ÑBìQ AÈBª‚lAZU…Bª‚lA~(~΋AÈB-2±Aèy¾BŒJ×AÈB-2±A%†ÑB΋AÈB-2±AZU…B-2±A:’dÁ΋A:’äÁ@¤û@MUÂázÔ¿MUÂH~p~š™AÈBš™ABàdBZU…Bš™A|a˜AI.åA|aB‹ìwB¨~¸~È~ìQ AÈBìQ Að~š™AZU…Bš™Aš™AÛy>Bê¿A„žwBT£BZU…BãÇ>BZU…BBàdB„žwB‹ìwBÛy>B‹ìwB‹ìwBÛy>Bˆ˜B„žwB¼”«BZU…Bé&ÈBZU…B33ÛB„žwBX¹äBÛy>BX¹äBPHáAZU…BHáAHáAÛy>BÁ¹»A„žwB?õBZU…BÎ=BZU…B-2cB„žwBw>vBÛy>Bw>vB °åPæAZU…B' šA„žwBÓÞA%†QB)\Ÿ@|aB)\Ÿ@:’äAÓÞA:’dA' šA|a˜@åPæAM,B`eRB|a˜@Ù}xB:’dAÅ…B:’äAÅ…B|aBÙ}xB%†QB`eRB„žwBM,BZU…BåPæAZU…Bø)\AZU…B)\AMUÂ)\A%†QBÓÞ—A„žwB‘äAZU…BW,+BZU…B¶DQB„žwB/]wB%†QB¯4…B|aB¯4…B:’äA/]wB:’dA¶DQB|a˜@W,+B‘äAÓÞ—A|a˜@)\A:’dAˆ€˜€}îwBZU…B}îwBMUÂ}îwB%†QBÖQB„žwB¥½+BZU…B-2åAZU…Bo™A„žwBb¡A%†QBHáš@|aBHáš@:’äAb¡A:’dAo™A|a˜@-2åA¥½+BÖQB|a˜@}îwB:’dA()\AZU…B)\A)\A|aBçŒcA%†QB2÷½A„žwBøBZU…B†8>BZU…B¨¸òRdB%†QB¨FQB„žwB"BZU…Bû½AZU…BñcA„žwBff–@%†QBñcA¬m+B·â—A|aBI.+BMUB¨FQB:’äAòRdB|a˜AòRdB:’dA¨FQB|a˜@"Bû½AñcA|a˜@ff–@:’dAð6mAÈB6mA|a˜Ah³œA|a˜@&äèArŠBq= ?ZU…BB~BZU…B€‚¨‚)\AZU…B)\A|a˜AçŒcA|a˜@2÷½A' B†8>B|a˜@/]wB|a˜A/]wBZU…B/]wBÈ‚ƒffæ?ZU…B¡øòAˆÅkBZU…B¡øòA ƒ0ƒ @ZU…B|a¬A|a"BZU…B|a¬A|a"BZU…BT’nB‰aBZU…BT’nBPƒ`ƒpƒ€ƒázÔ?ZU…Bü)XBü)XBZU…BázÔ?°ƒÀƒûÑ@ZU…B€ˆ B·Ñ~BZU…B€ˆ BBàÌA|a˜Áƒ¯€A:’äÁûÑ@MUÂffæ?MUÂàƒðƒ´HcBZU…B{Ž@{Ž@ZU…B´HcBZU…B{Ž@´HcB0„@„P„„ùA“îB[S­Ao’äBû:‡AJ ÛB9EBAÈB9EBAÐó´Bû:‡A¡ç¡B[S­A‰a˜BºkÓAZU…BºkÓAT’dBû:‡AÛy>B[S­Ao’äBû:‡A%†ÑBû:‡Aèy¾B[S­A¹m«BºkÓA¡ç¡B„ùAqÛŽB„ùA„žwBºkÓA%†QBö(ì@¬m+BºkÓAMUB„ùAÛy¾A„ùA:’dAºkÓA|a˜@[S­Aû:‡A|aÁû:‡A|a˜Á[S­A:’äÁû:‡A|aBºkÓA:’äAºkÓA|a˜A[S­A|aAû:‡A|a˜@9EBA|a˜À9EBA:’dÁû:‡AÛy¾Á[S­A:’äÁ„ùAMU x„È„ P…×£8A“îB×£8AMU¸…HáA“îBb¡•Ao’äBÁ¹»AJ ÛB ÒáAÈB ÒáAÐó´BÁ¹»A¡ç¡Bb¡•A‰a˜B_AZU…B_AT’dBÁ¹»AÛy>Bb¡•Ao’äBÁ¹»A%†ÑBÁ¹»Aèy¾Bb¡•A¹m«B_A¡ç¡BHáAqÛŽBHáA„žwB_A%†QB?õB¬m+B_AMUBHáAÛy¾AHáA:’dA_A|a˜@b¡•AÁ¹»A|aÁÁ¹»A|a˜Áb¡•A:’äÁÁ¹»A|aB_A:’äA_A|a˜Ab¡•A|aAÁ¹»A|a˜@ ÒáA|a˜À ÒáA:’dÁÁ¹»AÛy¾Áb¡•A:’äÁHáAMU Ѕ † ¨†Há:@:’äAHá:@|aB Òõ@%†QBF¥‰AT’dBÖÕAT’dBaB%†QB94]B|aBL¦BMUB|²”BMUB«¾§B|aBÃD±BÛy>BHá:@|aB Òõ@Ûy>BF¥‰A%†QBÖÕA%†QBaBÛy>B94]BMUBL¦B:’äA|²”B:’äA«¾§BMUBÃD±BÛy>BÃD±BT’dB ‡ h‡%†QBÈB:’dAMUÂ:’äAZU…B:’dA„žwB|a˜@%†QB|aBÛy¾A|a˜@:’dA:’dA|a˜@:’äA|aB%†QB|a˜@„žwB:’dAZU…B:’äAZU…B¬m+B„žwB%†QB%†QB„žwB|aBZU…B:’äAZU…BЇà‡%†QB%†ÑBà`CVA‹ýÔAarЏA¥½MB`a"B*úžB@bûœBÕi˜B@cOÞDB &ÁBhd`eVB„ËB€d{Ž@…ëYAØdôì®Av±Bheð'öA‰ÁmB e1YCB4‚ÂBðe´YXAª‚ÐAfÊòHB ‚ÉB8fb¡QAÓÞÓAPfK"B¡6¤BàfÒ@B'"šBgØðöA…B€gaBK›BhMUBéšB0hkÚBSV BÈhðÅB—_›Bˆi ›Bœ“B°i½’BtšB¨j³»BZU›Bhk³»B-!”BÀkvOaAXÊÑA8lñcOA/nÒA`líž$B“8£Bˆlx:BB4‚ÂB°l4€#B“8£BPm2÷BIΓB8nÁ¹ BǺ”Bxn|a"B#û B8oa3Bß@§Bào$ùB*ú¨BXpW,5BÊ’ªB¨p2÷Bž^œBøp2÷BV}B¸q½’!B†‰³Bøqa3Bd,²B rÂ-AffªAxr:’øAúþoB°rt2BE§žBèro!BS¥ŽB8s ÒCBÇkÂBˆs©ä1B±BHt?W1B7©±B°t³»5BZU«Bxu¯”-BV.°BøuŸ 4BÀ»¤B°vMU%BE§¡BØvðÅB¶äB8wB~3B1ù²B`w Ò!B“8£B°w#[GB7 ÉBðwMUBÀ»B(x÷uBMŸBhxMUBO~“BÀxކ°At8Bðxv±BÕiœB8y›æ»A½’9BxyM0Bv´B°y¾MB¾ÐBàyÌ.*B$§Bpzo B¯4…B{[SBíŒB€{˜]B†Ø‰B|yØB›†ŒB |e* Bº ‰Bà|‚soAížB˜}Á¹B?÷Bð}T£BÁ ŽB8~ª‚lAéæA˜~΋AôìBØ~T£BzBìQ AR¸šAˆ‹ìwB‹ì÷Bè?õBÃB€€¢4BV}B' B›B˜F¥B]|Bà2÷½AûEBx‚uäA´HyB¸‚6mAÄBBƒøBoRŽB@ƒ¡øòA_irBƒ|a"B#û BЃ‰ÁËA šaB „€ˆ B-!„B`„úþáA´HwB …[S­Aœ„&BÈ…×£8Aq=¾Aø†b¡•AÅà%BÀ‡À7BqŒ¶BhˆMUBZU…B@-DTû!@@@@@€?ð¿à?€À@` ¸  @ @ÀÀ€àà€€ @ @è€À@` ¸  @ @‘hP @8‘hP  @X‘h@  @x‘h @ @˜‘€pHHH8€?€? @¸‘ ø À@Ø‘``  @ø‘`` P @’`` @ @8’``@  @X’`` @ @x’Øà P @˜’`p p@ @¸’à@@@À €@Ø’à@@@À @€@ø’à@@@À@ €@“à@@@À@€€@8“`€À ` €@X“`€À ` @€@x“`€À `@ €@˜“`€À `@€€@¸“À @`€€€`@@€@ؓؠp(ØÀ@ø“à ` À@ @€@”à ` À €@8”à ` À P€@X”à ` À @€@x”à ` À@ €@˜”à ` À@€€@¸”àPP`PP  @Ø”à@pHp@àÀ@ø”8((Dî A•8lDDDDî( A@•8lDDDDî( Ah•8lDDDDî A•8lDDDDî  A¸•€|fRRJf> €?Aà•ˆP PˆÀ@–xÌ„„„ÌxP à@(–xÌ„„„ÌxP( à@P–xÌ„„„ÌxP  à@x–xÌ„„„Ìx à@ –xÌ„„„Ìx @ à@È–äLLTTdîP( Að–øLDäDLøà@—à@@@@@à  €@8—à@@@@@à @ €@`—à@@@@@à@  €@ˆ—à@@@@@à@€ €@°—øH@p@HøP À@Ø—øH@p@HøP  À@˜øH@p@Hø  À@(˜øH@p@Hø @ À@P˜` xÄ€€€Ä| @@à@x˜ïIx.(9A ˜îD|((8( AÀ˜îD|((8( Aè˜îD|((8( A™îD|((8( A8™îD|((8 A`™îD|((8  Aˆ™à €@@@@€@°™D>,Ô(HäAЙN$*öHÈDAð™D>,ôHÈDAš PP €¿ @0šà@ @À€@Pšà@À@@À@@pšÀ @@@€@š€À@°š((((hèèè| @À@К€€è@ @øš€@ À@@›À @à@À@@8›à@ `@À@@X›ø ø À@x›``@À€@˜›àÀÀ€@¸›8Dª²ºD8€¿AØ›àÀ€@ø›ø€¿€¿à@œP  P€¿ @8œà  ÀÀ€@Xœ8Dš¢šD8€¿Axœ €¿ÀÀ @˜œà P @p €? @¸œ€€€€€€@àœp ø ØPˆ @ˆpPPpˆ€¿ @ ðÈ@à@P0 @@€à€p€? @`€€€€€€€¿@@@€@ ˜dÀà@À€@@@ @@@€ @€@à€€€€€€€€€ @@ž @@@€@@@  @€@0žð@ ð @Xž@@ 0PHÜ€?@ @xžØP PØÀ@˜ž(lT’ÛA¸ž `PØ @Øžh @øž0@@@à@€@Ÿà `€à€@8Ÿà@@` €@XŸ8pp@ @xŸÀ€àà@ @˜Ÿ`` @¸ŸØà @ØŸÛ’’’ìAøŸà@@@@@À€@ ˜à €€ @8 €@@@@@À@ @@@X @@@@À@@@€ Øà€€ @  à`@  p@ @À à@@@à@0€@à `€À `€@¡hp0 @ ¡`€€€`€@@¡àà€€ @`¡à ` À€@€¡À€ À@@ ¡ø@@ @À¡  @€¿€À @à¡À@@@@@@@À @@@¢ @@@€€@@(¢À€€€€€€€À @@@H¢øˆ@ ˆøÀ@p¢8((DîA¢îD((DîA°¢""UUÉ€ˆ€ÝÀ  AТ((lDîAø¢8lDDDDîA£p ¨øÀ@8£à`Àp @X£ìHPpHHðà@x£ pÌ„„„Ìx @à@˜£à@@pHHðÀ@À£xÌ„„„Ìxà@à£äLLTTdîA¤ë€IUUcc〠 A ¤øH@@@@àÀ@H¤ìHP`PHìà@h¤À  p€@ˆ¤à@@@@@à€@¨¤îDD|DDîAȤxÄ„œ€Ä|à@è¤à@@p@HøÀ@¥øH@p@HøÀ@(¥øLDDDLøà@H¥xÄ€€€Ä|à@h¥ðHHpHHðÀ@ˆ¥îD|((8A¨¥>@’­¥¥B< @AÈ¥@@@  à€@ð¥€@ @€ @¦øø€¿À@0¦ @€@ €¿ @P¦€€€€€¿@@@p¦€€€¿@@¦À p` @°¦``` @Ц@@@ ð @ð¦`à@0 @§àà@p @0§øP0 @P§à`` @p§ð@ ` @§à@@@@À@€¿ @°§`` @Ч€€@@@ @@ð§€€¿@@¨ð€¿Àà@0¨€€€€¿@@@P¨ ø À@p¨ @ €À @¨€@@ @@€ @€@°¨ @@€€€@@  @€@ب@À À@@©v˜tnP0A ©D**V¨¤~A@© à`€p  €? @`©PPøPøPP @ˆ©   À€@¨©€€€€€€€¿@@È©@è©ð©Щ°©©p©H©(©©è¨À¨˜¨x¨X¨8¨¨ø§ا¸§˜§x§X§8§§ø¦ئ¸¦˜¦x¦X¦8¦¦ø¥Ø¥°¥¥p¥P¥0¥¥ð¤Ф°¤¤p¤P¤0¤¤è£È£¨£€£`£@£ ££à¢¸¢˜¢x¢X¢0¢¢è¡È¡¨¡ˆ¡h¡H¡(¡¡è È ¨ ˆ h @    àŸÀŸ Ÿ€Ÿ`Ÿ@Ÿ ŸŸàžÀž ž€ž`ž@žžðȨˆhH(èœÈœ œ€œ`œ@œ œœà›À› ›€›`›@› ››àš¸š˜šxšXš8ššø™Ø™¸™˜™p™H™ ™ø˜И¨˜ˆ˜`˜8˜˜è—À—˜—p—H— ——Ø–°–ˆ–`–8––ð•È• •x•P•(••à”À” ”€”`”@” ””à“À“ “€“`“@“ ““à’À’ ’€’`’@’ ’’à‘À‘ ‘€‘`‘@‘ ‘øÐÐà ªàð 10€0€`€`Àñà33  @0A˜­ð````ns€a€`À`À`À`À`À`Àa€s€n````à €¿ @@Aà­àð 10€0€`€`Àñà€€  @0A(®à>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ33 €¿PAp®à>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ! €¿PA¨®à>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ€€ €¿PAè®à>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ 80 €¿PA(¯ÀÞs€q€ÐÀØÀÈÀÌÀÄÀÆÀc€s€ÀÀ €¿€?@Ah¯ÿðÿ𠀿À`A ¯s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€33 €¿@AЯs€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€'€ €¿@A°s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€! €¿@A@°s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€€€ €¿@A€°s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€ 80 €¿@AÀ°ñà`À`À`À`À`À`À`À`ÀqÀo€ç'€ €¿PA±s€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€Æ<q€À €¿@A8±x0000000000pÌÌÀ@x±x0000000000p„Hx0À@ ±ð``````````à€`8€¿À@бx0000000000p0àÀÀ@²p€àÀÀÀÿ€Á€A€c33 €¿0A0²p€àÀÀÀÿ€Á€A€c! €¿0Ah²p€àÀÀÀÿ€Á€A€c  €¿0A¨²p€àÀÀÀÿ€Á€A€cp` €¿0Aè²<fp€àÀÀÀÀÀA€c€ €¿À@0A(³pðûøÇ„ÃÃc;ü c g˜<𠀿€Ah³q€ûÇÃÃc;cg>"" €¿0A˜³q€ûÇÃÃc;cg>ff €¿0Aسq€ûÇÃÃc;cg>\: €¿0A´q€ûÇÃÃc;cg>B$< €¿0AH´q€ûÇÃÃc;cg>  €¿0Aˆ´q€ûÇÃÃc;cg>p` €¿0AÈ´çl€lÀ`À`ÀaÀa€c€glca€a€a€a€3 €¿@Aµü000?À0p00000000p?À000ü €¿pAHµà€€€€€€À@` 080 ü?Àp0€Aˆµà00000000000000ü00€¿Aеà00000000000000ü`À€€¿A¶à00000000000000üÀp0€¿A`¶à00000000000000ü@€€¿A¨¶ 'à88hdÂÂÁÁÀƒÀƒÀC`F`&88䀿€?Að¶€@ÀÀa€3 3a€ÀÀ€@ À€¿`A0·à88``ÀÀÀÀÀÀÀ``88à``€¿A`·à88``ÀÀÀÀÀÀÀ``88àà€¿A¨·à88``ÀÀÀÀÀÀÀ``88à`À€€¿Að·à88``ÀÀÀÀÀÀÀ``88àÀp0€¿A8¸à88``ÀÀÀÀÀÀÀ``88à@€€¿A€¸ø   4 d d Ä!„!„#&&,880ðà€¿Aȸà8ÿ8àˆA¹ü000000000000000üÌÌ€¿AP¹~~f<€¿A€¹ü000000000000000ü@0 €¿A°¹ü000000000000000ü0àÀ€¿Aà¹ÿø000000@0@?À0@0@000000ÿð€€ €¿pAºÿø000000@0@?À0@0@000000ÿð À€ €¿pAXºÿø000000@0@?À0@0@000000ÿðÀÀ €¿pA ºÿø000000@0@?À0@0@000000ÿ𠀿pA躀 ÀÀÀà88``ÀÀÀÀÀÀÀ``8 <䀿À@€A0»ùÿð0`0````à€ `€€`€`€``` ` à`ÿà¨Ax»ü€0   ø 000``ÀÀ€À  ÀˆAÈ»ü€0   ø 000``ÀÀ€00ˆA ¼ü€0   ø 000``ÀÀ€àˆAx¼ü€0   ø 000``ÀÀ€`À€ˆAмü€0   ø 000``ÀÀ€Àp0ˆA0½ü€0   ø 000``ÀÀ€ À€ˆA½>cÁÃÃàp08 €¿ @0Að½ €"2 qŽˆ†ŒÂ ` 00ŒL 8A ¾0~" ûF!&!œ À @ `  0` €¿Ap¾0ÿD d$û! !„ À @ `  0` €¿A°¾ˆÌf3€€3f̈ À€¿@Að¾üxÌÌÌÌÌx €¿ÁA ¿ø  `  €¿àÀà@H¿xÌ <0€¿À@Ap¿ÀÀÀÀÀÀ@¿ 9yyùùùyy9€ €¿ @0A°¿@àÀ@@\à~ÀqÀ`À`À`À`À`À`À`À`ÀáÀ €¿ @PAø¿€`8ÀPÁA8ÀpˆŒ 0ŒL8 àÀà@XÀüD 0 ŒL8 àÀà@€Àÿðÿðÿðÿ𠀿`A¨À8D‚‚‚D8€¿ ÁAàÀüü€¿`ÁAÁð0`GÂ1€‚ €‚@€ƒà€‚0€‚€Â€B1gã0ð€¿˜A Áþþ€¿ ÀApÁ00000ÿðÿ𠀿@À`AÁ€€3fÌÌf3€€ À€¿PA¸Á~vÌÌ| Ìx ÁAèÁð0aÃGqÄ€Œ€ˆ€ˆ€ˆ€Œ€Ä€G1aã0ð€¿˜AÂÌÌ€¿`ÁA`Â8db8tâÇN<8p`F&À@@A€ÂÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ@°ÂÀàà€ € À@`0 p0ø|`AàÂÀ`îàÀ1€`À`À`À`À1€ÀîàÀ` €¿@ÀPA Ã瀾Àx@000000ü00001€€ €¿@APÃ@@>p€ÐÈÈÈÄÄC€c€ €¿@@AÃÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€À @AÈÃÀ@øÃƒ€ÇÀ|`8 €¿ ÀPAÄà0  0à€¿ @ A8ÄÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ@hÄ 0 À 0 €¿ @ A˜ÄÿÃap08†Ãÿ €¿ AÈÄàð 10€0€`€`Àñà  @0AðÄñà`À!€3€ 91€`Àñà €¿PA0Å88(dd1d0Â0Â`Â`Ãñç€ ˆA`Å10€0€`€`Àñà 0A Åà>ÀqÀ`À`À`À`À`À`À`À`ÀáÀ €¿PAÐÅ2000000000þp0à@ÆøÆƒ|pàÂf> €¿ A(Æð````````vnæ €¿APÆÀ€€€€€s€a€Á€Á€Á€Á€Á€Á€a€s€€ €¿ @@AxÆð````ns€a€`À`À`À`À`À`Àa€s€î €¿ @@A¸Æs€a€ÀÀÀÀÀÀÀÀÀÀÀÀa€s€ €¿@AøÆñà`À`À`À`À`À`À`À`ÀqÀo€ç €¿PA(ÇñãÀ`Á€`Á€`Á€`Á€`Á€`Á€`Á€`Á€qã€oŸç €¿ AXÇð```````````````à€¿À@˜ÇóàaÀc€gnlxhdfcgÀ````à €¿@AÈÇÀà00000000000000p00 @À@Èð``````````à``€¿À@8Èñà`À`À`À`À`À`À`À`ÀqÀo€g````à €¿PAhÈ?ñÀÀ`À ``?À`0>3a€a€a€a€3À €¿ @@A¨Èx0000000000þ000à@èÈp€àÀÀÀÿ€Á€A€c €¿0AÉÀs€a€Á€Á€Á€Á€Á€Á€a€s€€€€€€€ €¿@AHÉp€àÀÀÀÀÀA€c€ €¿0AˆÉ^s€a€`À`À`À`À`À`Àa€s€n````à €¿@A¸Éq€ûÇÃÃc;cg> €¿0AøÉ`à€À`À@Áà@(Êÿøÿø  @PAHÊ€€Á€Ac"6 €¿Á0AhÊøø€¿€@A˜Ê 00 ``@ÀÀà@ÈÊøÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀøÀ€@AøÊÿøàp08€À€À€àÀpÿ𠀿pA(Ëà€€€€€€À@` 080 ü?€AhËüÀ0€ 8pàÀÀ  ~€A¨Ëƒƒƒ€‡€F€FÀF@L@L` ,` , , 000ü~~¸AøË€€€À@`  0   00ü€ˆAHÌà00000000000000ü€¿A˜ÌÀƒƒà ÿü€¿€AØÌžñ€ÀÀ€`€``àÀ€xàÀ@À@ÀÀcÀ@ €¿PAÍü0080p0`0À1À3€?À0p0008008000pÿÀ€¿€AXÍ8pàÀà88``ÀÀÀÀÀÀÀ``88à€¿ @A˜Íü0000000?À0p00000000pÿÀ €¿pAàÍà88``ÀÀÀÀÀÀÀ``88à€¿A Îø   4 d d Ä!„!„#&&,880ð€¿A`Îø!ø `` `` Ð` Ð`!ˆ`!ˆ`#`#`&`&`,`,`8`8`0àðø€¿°A Îÿø000000000000000ü €¿`AðÎü00080p0à1À3€?>31€0À0`000ü~€¿ˆA0ÏxÌÆ€ €¿0ApÏü000000000000000ü€¿A°Ïü€0000000?þ0000000ü€€¿˜AàÏà88` ` À À À?ÀÀÀÀ``8 <䀿A0Ðü000000 0 ?à0 0 000000ÿ𠀿`ApÐÿø000000@0@?À0@0@000000ÿ𠀿pA°ÐÿÀ0p080 0 00000000 0 080pÿÀ€¿ˆAðÐà88``ÀÀÀÀÀÀÀ``8 <䀿€A0Ñÿà0x00 0 0 008?à0@00000000pÿÀ€¿€ApÑü€0   ø 000``ÀÀ€ˆA°Ñð 0aÞc{Æ9€Æ€ÆÀÆ@Æ @à @ÃŒ@áü@`ìÀp€8€øÀ@@°AÒ00 ÃÃÆ|À0AXÒÀpÀ`ÀpÀ €¿€¿PAˆÒÿðÿðÿðÿ𠀿€À`A¸Ò`ÀpÀpÀ` €¿€¿PAàÒÀ` àÀÀÀÀ@@à@ÓÀÀÀÀ ÀÀ@8Óð€€€sÀaÀÀÀÀÀÀÀÀÀÁÀa€w€ €¿@A`Ós€á€ÀÀÀÀÀÀAÀa€73a€a€a€3 €¿@A Ó €€ÀÀÿÀÀ €¿@AàÓ{€a€àÀÀÀÀÀÀÀÀÀÁ€ó€î`p0À €¿@A Ô~ã€Á€ÀÀÀÀÀ€€~x` €À €¿@A`ÔÿÀÿÀÃCc#3  €¿@A ÔxæÃ€€€€ ƒƒG~ €¿@AàÔÿ€ÿÀ`@0 €€€€C€ €¿@A ÕÿxÀ@A`Õ3a€a€áÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀa€a€3 €¿@AÕÀÀÀ`` 00 €?@@à@ÐÕÀÀÀÀ@Öÿðÿ𠀿ÀÀ`A ÖÀ` àÀÀ@@à@@Öÿðÿ𠀿€¿`A`ÖÉ€ë€ë€É€ ÀÁ@AÖ€@ 0 0 @€€¿ @AÀÖ0 ``ÀÀÀÀÀÀÀÀ`` 0€¿ @AðÖÀ` àÀ@À@ÁA ×<<~ááÀÀÁÀÁ c 7>€À@@ À€€¿A@×0<r a`€`€0€€xÀä@Â`Á0Áa3ü €¿˜A€×?åÀÄÀ„`„``àÀ€<tdd d`4à€ @@AÈ×"""""ÿÀÿÀàà€€€€€ €¿PA؈ÌÌÌÌ€¿@Á APØÀÀÀÀÀÀÀÀÀÀÀÀÀÀ@ÀApØÀ@ Ø¨ØˆØXØ8Øø×°×h×(×ר֍ÖxÖHÖ(ÖÖèÕ¸ÕxÕHÕÕÈÔˆÔHÔÔÈÓˆÓHÓ ÓøÒÈÒ ÒpÒ@ÒèјÑXÑÑØÐ˜ÐXÐÐÈϘÏXÏÏØÎˆÎHÎÎÈÍ€Í@ÍÍÀÌ€Ì0ÌàËËPËËàʰʀÊPÊ0ÊÊàÉ ÉpÉ0ÉÉÐÈÈPÈ ÈðǰǀÇ@ÇÇàÆ Æ`Æ8ÆÆèŸňÅHÅŨİĀÄPÄ ÄÄàðÃxÃ8ÃÃȘÂhÂHÂøÁÐÁ ÁxÁXÁÁèÀÈÀÀhÀ@À À࿘¿x¿X¿0¿¿ؾ˜¾X¾¾ؽx½½¸¼`¼¼°»`»»кˆº@ºø¹ȹ˜¹h¹8¹ø¸°¸h¸ ¸Ø··H··ض¶H¶¶¸µpµ0µð´°´p´0´ø³À³€³P³³в²P²²è±¸±ˆ±`± ±è°¨°h°(°ð¯¸¯ˆ¯P¯¯Ю®X®®È­ à ÀØzDÿÿÿÿ¨òÿÿÿÿóÿÿÿÿ§óÿÿÿÿÿóÿÿÿÿ©õÿÿÿÿùöÀ~PA€ÿÿGAIsProcessorFeaturePresentKERNEL32e+000__GLOBAL_HEAP_SELECTED__MSVCRT_HEAP_SELECTÿÿÿÿí(ÿÿÿÿh)ð?5Âh!¢ÚÉ>@ÿÿÿÿÿÿï˜À˜@ðEEE50P (8PX700WP `h````ppxxxx(null)(null)ÿÿÿÿà:ÿÿÿÿi;runtime error TLOSS error SING error DOMAIN error R6028 - unable to initialize heap R6027 - not enough space for lowio initialization R6026 - not enough space for stdio initialization R6025 - pure virtual function call R6024 - not enough space for _onexit/atexit table R6019 - unable to open console device R6018 - unexpected heap error R6017 - unexpected multithread lock error R6016 - not enough space for thread data abnormal program termination R6009 - not enough space for environment R6008 - not enough space for arguments R6002 - floating point not loaded Microsoft Visual C++ Runtime Library Runtime Error! Program: ...ÿÿÿÿ¯R³RÿÿÿÿcSgSÿÿÿÿ¼TÀTÿÿÿÿÃVÇVÿÿÿÿ2W6WGetLastActivePopupGetActiveWindowMessageBoxAuser32.dll1#QNAN1#INF1#IND1#SNAN_yn_y1_y0frexpfmod_hypot_cabsldexpmodffabsfloorceiltancossinsqrtatan2atanacosasintanhcoshsinhlog10logpowexpH:mm:ssdddd, MMMM dd, yyyyM/d/yyPMAMDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSunSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecäNçX€æŒêØ8ä’ë€Øæì ‚täpì<€ˆå^îPDë¨ê¼êÊêÜêîê‚ënëTë˜ê2ë"ëëëì*ì@ìPì ì^ìšñˆñxñhñRñ8ñ ññìðàðÎðÀð°ðžðˆð|ð¬ñLð<ð.ððððúïäïØïÀï¤ï¸ñÊñÜñæñòñ òò2òDòTò”ï†ïxïjïZï@ï4çççdðôæ*ïï ïøîàîÈî´î î’î„îxîlî0í@íPí^ílí|íŠí˜í¦í´í¾íÊíÖíæíòíîî$î<îJî"ííüìôìäìÔìÀì²ì¦ì–ì†ìzì í2é\çnçzçˆçšç|êpêdêRêªç0ê&êêêîéàéÔéÂé´é¦é˜éŠéxéféTéDéDê"éééôèàèÔè¼è¢è’è€ènè^èLè<è(èè èöçâçÆç²çœë®ë¼ëÐëâëòëÂLoadLibraryA&GetModuleHandleAQueryPerformanceFrequencyQueryPerformanceCounterKERNEL32.dll’IsWindowVisible&SetCursoršLoadCursorA©WindowFromPointüGetCursorPosýGetDCÿGetDesktopWindowÊMsgWaitForMultipleObjects•DispatchMessageA‚TranslateMessageÜPeekMessageAjShowWindowAdjustWindowRectðGetClientRect:ClientToScreen[SetWindowPosXSetWindowLongAVGetWindowLongA\GetWindowRectChangeDisplaySettingsAÅEnumDisplaySettingsAReleaseDCFGetSystemMetricsòRegisterClassAžLoadIconAŽDestroyWindowÞPostMessageAYCreateWindowExAçGetClassInfoA^SetWindowTextA|TrackPopupMenuXCreatePopupMenuDestroyMenuAppendMenuAtInsertMenuARemoveMenu„DefWindowProcA»EndPaint BeginPaint ScreenToClient7ChildWindowFromPointGetKeyStatewToAsciiGetKeyboardStateSetCaptureReleaseCaptureRSetTimer•KillTimer(SetCursorPosUSER32.dllSDeleteObjectChoosePixelFormatSwapBuffersWGetPixelFormatéSetPixelFormatTDescribePixelFormat×GdiFlush¬RealizePaletteÈSelectPalette UnrealizeObjectBCreatePalettecGetSystemPaletteEntriesçSetPaletteEntries%GetDeviceCapsGDI32.dlljoyGetDevCapsAjoyGetPosEx!joyReleaseCapture#joySetThreshold"joySetCapture˜timeGetTimeWINMM.dll*gluSphere&gluQuadricNormals%gluQuadricDrawStylegluNewQuadricgluCylindergluErrorStringGLU32.dll glBitmapËglPixelStoreipglGetIntegervaglFinish}glGetString\wglDeleteContextôglReadBufferJglDrawBufferRglEndIglVertex3fv¿glNormal3fv glBeginÓglPopAttribÐglPolygonModeØglPushAttribHglVertex3f¾glNormal3f=glTranslatef@glVertex2fÕglPopMatrix]glEvalMesh2±glMapGrid2f­glMap2fglScalefglRotatefÚglPushMatrixPglEnablenglGetErrorewglMakeCurrent`wglGetCurrentDC_wglGetCurrentContextWglViewportZwglCreateContextOPENGL32.dll™HeapAllocŸHeapFree¢HeapReAlloc}ExitProcessžTerminateProcess÷GetCurrentProcessfEnterCriticalSectionÁLeaveCriticalSectionÊGetCommandLineAtGetVersion>GetProcAddress$GetModuleFileNameA GetEnvironmentVariableAuGetVersionExAHeapDestroy›HeapCreate¿VirtualFree»VirtualAllocªInitializeCriticalSectionUDeleteCriticalSection/RtlUnwindúGetCurrentThreadId¥TlsSetValue¢TlsAlloc£TlsFreeqSetLastError¤TlsGetValueGetLastError­InterlockedDecrement°InterlockedIncrement£HeapSizeÒWideCharToMultiBytemSetHandleCountRGetStdHandleGetFileTypePGetStartupInfoAßWriteFile²FreeEnvironmentStringsA³FreeEnvironmentStringsWGetEnvironmentStringsGetEnvironmentStringsWäMultiByteToWideChar¿LCMapStringAÀLCMapStringWSGetStringTypeAVGetStringTypeW¿GetCPInfo!CompareStringA"CompareStringW¹GetACP1GetOEMCPbSetEnvironmentVariableAjSetFilePointerªFlushFileBuffers RaiseException|SetStdHandleCloseHandleóOê;>÷ww˜òtôPö É ¸ðTÐ}PRðÊ@̰ÐpÍ`ÎðÈÀ¸à·ÀÉÀº Ñ@ »°f@½à…€Q€PWh@X ipÊ…©0ŠÀÀ`À`Eà‚ðu°~Ðð}P~Ѐ@‚ƒÐŠXHpÅ€Å@¼À»Šà¼À¿à¾°‰PHЉpHÀÐϰˆ@¦P¾@¿ ƒƒÊ0ª€¾ ¨€ŠÀ€ ˜ œÀ›ÐŒÀŸ€œp‘ðœœÀœ‚`ƒ@¨ Àž`žžŸ@ŸpE‰P¨P¨€§à½`¨ ½0ð ‘Л0˜@ŒP¥0œ }÷ ÷I÷b÷÷°÷Á÷Ð÷ß÷ó÷øø&ø<øPøaøpø„ø•ø¥ø·øÆøÔøâøòøùù'ù>ùTùcùsù†ùŽù›ù§ù¸ùÆùÖùåù÷ùúú!ú5úKúbúuú†ú—úªú·úÉúÖúèúûú ûû/ûEûSûfûû‘û°ûÈû×ûêûüû üü/ü<üJü[ülüxü†ü™ü°üÀüÏüÝüëüýý*ý:ýJý_ýný†ýžý¶ýÆýØýîýþþ#þ3þHþ]þkþxþ…þ•þ¨þ»þËþàþíþúþÿ#ÿ6ÿEÿTÿhÿ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvglut32.dll__glutCreateMenuWithExit__glutCreateWindowWithExit___glutGetFCB@4__glutInitWithExit___glutSetFCB@8glutAddMenuEntryglutAddSubMenuglutAttachMenuglutBitmapCharacterglutBitmapLengthglutBitmapWidthglutButtonBoxFuncglutChangeToMenuEntryglutChangeToSubMenuglutCopyColormapglutCreateMenuglutCreateSubWindowglutCreateWindowglutDestroyMenuglutDestroyWindowglutDetachMenuglutDeviceGetglutDialsFuncglutDisplayFuncglutEnterGameModeglutEntryFuncglutEstablishOverlayglutExtensionSupportedglutForceJoystickFuncglutFullScreenglutGameModeGetglutGameModeStringglutGetglutGetColorglutGetMenuglutGetModifiersglutGetWindowglutHideOverlayglutHideWindowglutIconifyWindowglutIdleFuncglutIgnoreKeyRepeatglutInitglutInitDisplayModeglutInitDisplayStringglutInitWindowPositionglutInitWindowSizeglutJoystickFuncglutKeyboardFuncglutKeyboardUpFuncglutLayerGetglutLeaveGameModeglutMainLoopglutMenuStateFuncglutMenuStatusFuncglutMotionFuncglutMouseFuncglutOverlayDisplayFuncglutPassiveMotionFuncglutPopWindowglutPositionWindowglutPostOverlayRedisplayglutPostRedisplayglutPostWindowOverlayRedisplayglutPostWindowRedisplayglutPushWindowglutRemoveMenuItemglutRemoveOverlayglutReportErrorsglutReshapeFuncglutReshapeWindowglutSetColorglutSetCursorglutSetIconTitleglutSetKeyRepeatglutSetMenuglutSetWindowglutSetWindowTitleglutSetupVideoResizingglutShowOverlayglutShowWindowglutSolidConeglutSolidCubeglutSolidDodecahedronglutSolidIcosahedronglutSolidOctahedronglutSolidSphereglutSolidTeapotglutSolidTetrahedronglutSolidTorusglutSpaceballButtonFuncglutSpaceballMotionFuncglutSpaceballRotateFuncglutSpecialFuncglutSpecialUpFuncglutStopVideoResizingglutStrokeCharacterglutStrokeLengthglutStrokeWidthglutSwapBuffersglutTabletButtonFuncglutTabletMotionFuncglutTimerFuncglutUseLayerglutVideoPanglutVideoResizeglutVideoResizeGetglutVisibilityFuncglutWarpPointerglutWindowStatusFuncglutWireConeglutWireCubeglutWireDodecahedronglutWireIcosahedronglutWireOctahedronglutWireSphereglutWireTeapotglutWireTetrahedronglutWireToruslýŒŒ[4-misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1-misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1glutSetColor: index %d out of rangeglutSetColor: current window is RGBAglutSetColor: cannot set color of overlay transparent index %d glutGetColor: index %d out of rangeglutGetColor: current window is RGBAglutGetColor: requesting overlay transparent index %d glutCopyColormap: source colormap of window %d must be color indexglutCopyColormap: destination colormap must be color indexglutCopyColormap: window %d has no overlayout of memory.†ˆ‹ˆ†…„…„„‚ƒ‚ƒ ÿÿÿÿfailed to parse mode stringUnrecognized display string word: %s (ignoring) win32pfdslowsamplesstereosinglestencilrgbrgbarednumluminanceindexgreendoubledepthconformantbufferblueauxbufsaccaccaalpha=>?@ABCDEFGHIJKLMNOPQRSPQRSTUVWXYZ[\]^_ÍÌL>ÍÌ,@ÍÌL>B`å½ÍÌ,@B`å=ÍÌL¾ÍÌ,@ÍÌL¾ÍÌ,@33«?"@33«?w¾?¿"@w¾??33«¿"@33«¿"@¸?"@¸?{N¿"@{N?¸¿"@¸¿"@À?š™@À?= W¿š™@= W?À¿š™@À¿š™@à?ð?à?Ház¿ð?Ház?à¿ð?à¿ð?@Í̬?@)\¿Í̬?)\?ÀÍ̬?ÀÍ̬?@fff?@)\¿fff?)\?Àfff?Àfff?Àfff?@ffæ>@)\¿ffæ>)\?Àffæ>Àffæ>À?fff>À?= W¿fff>= W?À¿fff>À¿fff>À?š™>À?= W¿š™>= W?À¿š™>À¿š™>ÍÌÌ¿š™@ÍÌÌ¿š™™¾š™@À¿š™™¾@À¿@33Àš™@33Àš™™¾š™@ Àš™™¾@ À@ÍÌ,Àš™@ÍÌ,Àš™™¾š™@@Àš™™¾@@À@ÍÌ,Àffæ?ÍÌ,Àš™™¾ffæ?@Àš™™¾ffæ?@Àffæ?ÍÌ,Àš™É?ÍÌ,Àš™™¾š™É?@Àš™™¾Í̬?@ÀÍ̬? À? Àš™™¾?š™)Àš™™¾p?š™)Àp?Àš™™¾fff?33ó¿š™™¾š™?33ó¿š™?š™Ù?ff¶?š™Ù?Ãõ(¿ff¶?š™Ù?Ãõ(¿š™?š™Ù?š™?ff&@ff¶?ff&@Ãõ(¿ff¶?ffF@Ãõ(¿33S?ffF@33S?33@ff@33@€¾ff@š™@€¾š™@š™@š™@ÍÌ,@š™@ÍÌ,@€¾š™@33S@€¾š™@33S@š™@333@ff@333@€¾ff@š™a@€¾š™@š™a@š™@š™9@ff@š™9@š™¾ff@ÍÌ\@š™¾ÍÌ @ÍÌ\@ÍÌ @333@š™@333@š™¾š™@ÍÌL@š™¾š™@ÍÌL@š™@š™I@ÍÌL?š™I@ÍÌL?ff澚™I@ffæ>ÍÌL¿š™I@ÍÌL¿š™I@ff6@33³?š™@33³?9´H¿š™@9´H?33³¿š™@33³¿š™@ÍÌÌ>33#@ÍÌÌ>B`e¾33#@B`e>ÍÌ̾33#@ÍÌ̾33#@ff¦?33#@ff¦?5^:¿33#@5^:?ff¦¿33#@ff¦¿33#@ff¦?š™@ff¦?5^:¿š™@5^:?ff¦¿š™@ff¦¿š™@ff¶?ºIL¿À?š™™=ff¶?ºIL?ff¶¿À¿š™™=ff¶¿À?= W¿š™™== W?À¿š™™=€?€?€?€?-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1GLUT: Warning in %s: (unamed)GL error: %sGLUT: Fatal Error in %s: GLUT: Fatal API Usage in %s: ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿinvalid glutVideoResizeGet parameter: %dglutEstablishVideoResizing: video resizing not possible. € glutSetWindow attempted on bogus window.redisplay needed for window %d, but no display callback.The following is a new check for GLUT 3.0; update your code.failed to create OpenGL rendering context.SetPixelFormat failed during window create.pixel format with necessary capabilities not found.cannot create windows in game mode.destroying menu window not allowed while menus in useNULL display callback not allowed in GLUT 3.0; update your code.glutReshapeWindow: non-positive width or height not allowedmenu manipulation not allowed while menus in use.glutSetMenu attempted on bogus menu.Current menu has no %d item.out of memorycannot attach menus in game mode.u˜s˜Œñ£ñ£ñsincossqrt€U€U˜úeQeQeQeQeQeQ  88ÿÿÿÿÿÿÿÿðñ àÐNOOèN “ÿÿÿÿ        ! 5A CPR S WY l m pr € ‚ ƒ„ ‘)ž ¡¤ § ·Î×  š@š@ ((((( H„„„„„„„„„„‚‚‚‚‚‚ .Àÿÿ5Âh!¢ÚÉÿ?ð?  àÝÐÝÿÿÿÿ dà8à à è߼ߌßhß<ßßÜÞ¤ÞlÞDÞx4Þy$ÞzÞüÞÿÞüÿÿ5 @ÿ€ÿÿÿ À À–ÀÀŽÀÀÀ‘À’À“Àx CCC¤`‚y‚!¦ß¡¥Ÿàü@~€ü¨Á£Ú£ þ@þµÁ£Ú£ þAþ¶Ï¢ä¢å¢è¢[þ@~¡þQQÚ^Ú _ÚjÚ2ÓØÞàù1~þDâ@â<â4â,â$â!ââ ââüáôáðáìá èá àá ØáÐáÈáÀá¸á°á¨á á"œá#˜á$”á”&€D€0XGhãdã`ã\ãXãTãPãHã@ã8ã,ã ãã ããããüâøâôâðâìâèâäâàâÜâÔâÈâÀâ¸âøâ°â¨â â”âŒâ€âtâpâlâdâPâHâ.H Q Q Q Q Q Q Q Q QHðøÿÿÿÿÿÿÿ@È@ú@@œ @PÃ@$ô@€–˜@ ¼¾@¿ÉŽ4@¡íÌÎÂÓN@ ðžµp+¨­Åi@Ð]ý%åŽOëƒ@q–וC)¯ž@ù¿ D킹@¿<Õ¦ÏÿIxÂÓ@oÆàŒé€ÉGº“¨A¼…kU'9÷pà|B¼ÝŽÞùûë~ªQC¡ævãÌò)/„&D(ªø®ãÅÄúDë§Ôó÷ëáJz•ÏEeÌÇ‘¦® ã£F e u†uvÉHMXBä§“9;5¸²íSM§å]=Å];‹ž’Zÿ]¦ð¡ ÀT¥Œ7aÑý‹Z‹Ø%]‰ùÛgª•øó'¿¢È]Ý€nLÉ›— ŠR`Ä%uÍÌÍÌÌÌÌÌÌÌû?q= ×£p= ×£ø?Zd;ßO—nƒõ?ÃÓ,eâX·Ññ?Ð#„GG¬Å§î?@¦¶il¯½7†ë?3=¼BzåÕ”¿Öç?ÂýýÎa„wÌ«ä?/L[áMľ”•æÉ?’ÄS;uD;š¯?Þgº”9E­±Ï”?$#Æâ¼º;1a‹z?aUYÁ~±S|»_?×î/¾’…ûD?$?¥é9¥'ê¨*?}¬¡ä¼d|FÐÝU>c{Ì#Twƒÿ‘=‘ú:zc%C1À¬>'>7>X>`>o>y>ƒ>‹>˜>Æ>ç>î>†?Œ?ì?ò? H0W01]1n1œ1£1m2°4·4Ø5ß5N6œ6q7)9-9195999=9A99¢9Õ9S:¥:²:Ó>*?j?q?00†00”0[1¿1ë2¨3•4o5Y68789+:;\5B5g5ƒ5‹5™5³5˜6ñ6&737A7O7l7u77…7×7æ7V8z8˜8 8®8¶8¿8ä8é8ô8ú89959T9b9l99¨9À9*:3:^:d:~:”:®:¼:Å:ÿ:; ;[;‡;Ž;;Ê;ñ;>9>T>o>,?T?‡?¬?É?P`40O0[0Ž0Ÿ0Ä0ó0I1Q1f1j1n1r1v1±1¿1Ä1É1k2r2w2‹2Ÿ2²2Æ2Ú2í233(3<3P3c3w3‹3›3¬3½3Í3Þ3ï34 44!4%4)4-4145494=4A4E4I4M4Q4U4Y4]4a4e4i4m4q4u4y4 555(595I5Z5k5{5Œ55­5¾5Ï5ß5ð5þ5 66'646B6P6^6i6z6~6‚6†6Š6Ž6’6–6š6ž6¢6¦6ª6®6²6¶6º6¾6Â6Æ6Ê6Î6Ò6Ö6U7_7o77„77–7¡7°7À7Õ7â7è7ò78 88#828h8o8}8­8»8ß8þ89929\9“9³9Ð9ì9:*:I:®:ü:Ý;Œ==”=˜=œ= =¤=Ö=ù=(>_>©>¶>ú>:?A?`\V0]0d0ý0Ž1'2À2n3r3v3z3~3‚3ä3è3ì3ð3ô30474N4N6R6V6Z6^6¸6À6Î6Ö6ß6ø67 777+747C7R7Z7h7x7ø7,848E8T8]8z8ƒ8 8¨8Å8Î8ê8ù8ý899 9 99\9‘9˜9»9Â9Ç9Ñ9Û9å9ï9 :::@:G:Q:h:“:œ:³:Á:ì:õ: ;;;2;<;S;`;w;|;;™;°;½;Ô;Ù;ì;ö; <<1<6>>$>;>H>_>d>w>>˜>¥>¼>Á>Ô>Þ>õ>???1?;?R?_?v?{?Ž?˜?¯?¼?Ó?Ø?ë?õ?p 00?0J0r0§0¬0¿0É0à0í011!1+121F1L1`1n1u1z1—1ž1¥182B2M2c2g2k2o2s2w2{22ƒ2‡2‹22“2—2›2Ÿ2£2§2«2¯2³2·2»2¿2Ã2Ç2Ë2Ï2Ó2×2£3§3«3¯3³3·3›4¤4²4¶4Ð4Û4å4÷4 55!575A5K5X5f5v5{5ƒ5ˆ5Ž5˜5¢5µ5¿5Í5Ú5â5 66A6O6Y6_6p6v6~6¡6¾6Ê6Õ6ç67 7717>7G7£7½7Ä7Õ7ü78n8u8†8­8¶89"9+999[9c9¿9Ï9Ø9æ9::•:º:Â:O;t;}; <<•<®<´<º<Ü<å<ö<==,=2=9=×=÷=>>>#>,>4>=>W>`>u>}>ƒ>Œ>”>>·>Ô>Þ>ö>? ???)?k?}?Ž?œ?§?®?µ?¼?Ã?Ê?ß?ì?ó?ú?€`000"0&0*0.02060:0>0B0F0J0N0R0V0Z0f0n0v0‚0‡00–0Ÿ0º0¿0á0ó0ý011(171F1T1Y1i1‡1®1Þ1ø12"2K2x2›2È2ä23H3k3˜3¸3Å3444y4×4í4÷45565L5a5¤5±5è5ì5ñ5$6Z6i6x6•6Æ67.7p7{7˜7Í7×7Ý7ã7í7ô7"8+8”8·8À89Œ9¹9Ý9:::4:?:Q:^:d:„::¡:®:´:ø:>;D;\;o;{;“;©;Ç;Ò;è;<#<'<+;>[>y>™>·>ò>þ>???+?9?E?S?_?m?s?ª?º?ä?û?<0a0Ë0ñ0171B1µ1¾1è2ó2ù23333$3/353I3W3]3i3r3x3…3‹3•3Ÿ3©3³3½3Ç3Ñ3Û3å3ï3ù34 44!4+454?4I4S4]4g4q4}4†4Œ4™4¤4ª4¹4Á4Ç4Ö4á4ç4ö4ü4 555)5/5<5D5J5W5b5h5w5€5†5•5 5Ä5Ê5ß5å5ú56660666K6Q6~6ˆ6“6š6¦6­6¹6À6Ë6Ò6Þ6å6ë6´7À7Ý7a8f8‚;Œ;–; ;ª;°;<>,>G>Q>D?S?W?_?s?€?”?£?§?¯?ñ?ü? ø000#070=0P0c0v0…0D1u1œ1Í12X2‰2¿2333i3À3ø34A4]4s4›4±4â4ø4 565A5G5Þ5ç5ó5ü566*6F6^6~6‡6“6œ6¡6¶6Ê6Ú6å677#7,717F7Z7¢7§7®7µ7¼7Ã7Ê7Ú7ï7ó7÷7û7ÿ788 888$8u88¦8®8¼8Ç8×8÷899#9,919;9L9c9k9p9•99º9À9É9Ò9ß9í9÷9:::?:F:Y:k:(<85>Z>k>u>‰>¾>È>å>ï>þ> ??)?E?[?h?w?†?”?¢?Å?Ï?ß?í?û?ÀX00/0=0K0e0o00•0Ÿ0±0Å0Ï0á0õ0ü0C1Ï2Ó2×2Û2ß2ã2ç2ë2ï2ó2÷2û2ÿ233 33 3˜4Ÿ4Å4Ì4%5)5-5155595=5A5E5I5M5Q5U5Y5]5a5e5w5‡5—5¤5³5¹5Â5Ñ5à5ô5ý5666*6;6E6T6§6°6¶6À6ë67,7E7“7Þ7í7808‹8™8Û8å8ø89999'989>9F9T9Z9g9„9‘9§9×9ì9õ9>:I:u:}:Ÿ:¦:¹:Ë:ö:;';F;R;];i;ª;á;ê;ó;<.>&>H>i>v>‚>ë>&?/?8?j?t??š?¼?Ø?å?ñ?ü?ÐÔ0%0E0O0•0´0º0Á0Ñ0â0î0ú011%161C1O1Z1|1Š1²1¸1â162;2B2I2P2W2^2e2l2s2z2Œ22”2˜2œ2 2¤2¨2¬23¤3«3ø3ÿ3#4*4µ4¼48š8ž8¢8¦8ª8®8²8¶8º8Î8Ò8Ö8Ú8Þ8â8È9Ì9Ð9Ô9Ø9Ü9Ò:Ö:; ;-;h;u;Ÿ;­;/<¼<­=µ=Ê=Ô=â=ñ=W>_>p>Á>Ì>í>ù>y?Š?”?àØ‹0µ0Ã0Õ0/1L1i1¢1¾1$2+2Ï2Ó2×2Û2ß2ã2ç2ë2ï2ó2÷2û2ÿ233 333333#3Ç3ß3í3ó34]44¹4å4w5„5’5 5À5Ü56w6B7^7x7…7“77«7Õ7N8g8t8Ë8ñ8 9'9e9l9Õ9Ü9:":):0:¾:Å:»;Ö;Ý;â;é;f>D>ðØj1p1v1|1‚1ˆ1—1¥1«1¯1´1º1¾1Ä1È1Î1Ò1×12G2L2e2s2Í2$3*3C3H3l3 44,414t4¬45 5q5w5‹56‚6ˆ6Ã6É6â6#7)737*8B8ç8þ89)9[:f:k:u:z:Ã:Ï:Ö:æ:ì:ó:ý:;;#;/;4;Q;W;ä<ï<ö<='=-=2=>=J=z=ˆ=‘=–=+>4>A>R>Þ>ì>þ> ?6?A?S?Ž?œ?®?¹?æ?ñ?ì0P0b0¢0­0¿01§1µ1Ã1Î1â1è1ö1ÿ12,2;2M2V2r2•2Ÿ2¨2Ä2ç2É3Ð3ß3ç3ò3ø3þ34 4%4/4I4W4_4e4¨4º4515@5\5}5†5¡5´5º5Ã5Ê5ó566<6Œ6‡7“7·8:):k:š: :Ù:;¥;¬;»;Þ;ä;ð;<<<<;´>¼>Ä>Ì>Ø>Ý>é>ñ>ù>???'?/?7?J?R??š?ª?°?Ä? ð0n0ˆ0‘0È1à1ç1ï1ô1ø1ü1%2K2e2l2p2t2x2|2€2„2ˆ2Ò2Ø2Ü2à2ä2J3U3p3w3|3€3„3¡3Ë3ý344 44444 4j4p4t4x4|4Í4Õ4ï4õ455+515>5N5T5\5z5€5‘5¨5²5Ë5-6E6K6`6m6’6Û6ö6þ67 7K7}7‘7¥7æ7%848Œ8‘8ª8K9Q9ƒ9—9A:P:Ù:@;è;\<»<¼=Ì=Ý=å=õ=>µ>½>?$??›?¦?µ?¿?0¬~00£0Ó12—3Þ3ÿ34‹4S7W7[7_7c7g7k7o7`8f8ˆ8œ8Î8Õ8ê89&9G9\9€9ª9¸9é9ï9ü9:B:R:W:¤:²:õ:>;D;R;š;¢;Ë;Ø;Ý;ê;ö;°<·<Ð<=$=z==‡=Œ=”=™=¾=Ã=B>G>d>j>É>??"?H?U?c?n??¨?·?ù?@˜ 0+070S0h0~0…0‘0 0Ò0â0%111;1O1]1j1o1u1Ð1×12d2G3`3•33·3Ã3Ó34b4u4³456P6X6^6d6¥6Ý6ï67>7Ñ:ç:h>€>‡>>”>˜>œ>Å>ë>? ????? ?$?(?r?x?|?€?„?ê?õ?P(000 0$0A0k00¤0¨0¬0°0´0¸0¼0À0 11111¥1ª1É1Ö1ã1í1÷1ÿ1 2+2H2`2€2Ø2î2!3‰3®3É3Î3ê3ý3444.4?4R4j4Š4à4ò45565A5L5V5^5i5w5¬5Ç5Þ56—6ò6W7o7Ñ7í7ú788#8/8a8s8‚8£8©8Ê8Ô8ß8ä8ì8999&9.999g9s9}9ˆ9’9œ9¢9å9ï9ô9ù9þ9::Œ:’:°:Á:Ô:é:;;";2;S;_;q;;Ž;Ÿ;Ò;à;î;ý;'<1Å>Ø>O?\???°?`ˆ$0Ä01)1>1ˆ1Ð1ç1ù1222Z22‘2—2)494k4u4º4Ã4É4Õ4Ú4ä4ë4ó4ù455525E8\8§8ÿ8979g99¨9í9 :Ú:ò:$;<;€<„<ˆ<Œ<<”<˜<œ< <¤<¨<¬<^=x=‰=¦=pl#0T0÷2!4'4A4L4T4i4t4|4‘4—4Ú45$666H6r66¡6Ã6ð67>7E7k7ƒ77¨7´7Ç7F8P8l8à:ô:n;¶;¼;Ê;€¼Ü2ü23<3d3Œ3´3Ü34,4T4t4”4¼4ä4 545\5„5¬5Ô5ü5$6L6t6œ6Ä6ì6 7,7T7|7¤7Ì7ô78D8l8”8¼8ä8 949\9|9¤9Ì9ô9:D:l:”:¼:ä: ;4;\;„;¬;Ô;ü;$4>T>|>œ>¼>Ü>ü>?4>\>|>œ>¼>ä>?,?L?l?Œ?¬?Ô?ô? l0<0d0„0¤0Ä0ä01,1L1l1Œ1¬1Ô1ü12<2d2Œ2´2Ü23$3(3,3034383<3@3D3H3L3P3T3X3\3`3d3h3l3p3t3x3|3€3„3ˆ3Œ33”3˜3œ3 3¤3¨3¬3°3´3¸3¼3À3Ä3È3Ì3Ð3Ô3Ø3Ü3à3ä3è3ì3ð3ô3ø3ü3444 44444 4$4(4,4044484<4@4D4H4L4P4T4X4\4`4d4h4l4p4t4x4|4€4„4ˆ4Œ44”4˜4œ4 4¤4¨4¬4°4´4¸4¼4À4Ä4È4Ì4Ð4Ô4Ø4Ü4à4ä4è4ì4ð4ô4ø4ü4555 55555 5$5¨5¬5°5´5¸5¼5À5Ä5È5Ì5Ð5Ô5Ø5Ü5à5ä5è5ì5ð5ô5ø5ü5666 66666 6$6(6,6064686<6@6D6H6L6P6T6X6\6`6d6h6l6p6t6x6|6€6„6ˆ6Œ66”6˜6œ6 6¤6¨6¬6°6´6¸6¼6À6Ä6È6Ì6Ð6Ô6Ø6Ü6à6ä6è6ì6ð6ô6ø6ü6777 77777 7$7(747T7t7”7´7Ü78,8T8|8¤8Ì8ô89D9l9”9¼9ä9 :4:\:„:¬:Ô:ü:$;L;t;œ;¼;ä; <4<\<„<¬<Ô<ü<$=L=t=œ=Ä=ì= >4>\>„>¬>Ô>ü>$?L?t?œ?Ä?ì?°ä0<0d0Œ0´0Ü01,1T1|1¤1Ì1ô12D2d2„2¤2Ä2ä2 343T3t3”3¼3Ü3ü3$4D4d4„4¤4Ì4ì45<5d5„5¬5Ì5ô56<6d6Œ6¬6Ô6ô6747T7|7œ7¼7ä7 8,8L8l8”8¼8ä8 949\9„9¤9Ì9ì9:4:T:t:”:¼:ä: ;4;\;„;¬;Ô;ü;$,>T>|>¤>Ì>ô>?D?l?”?´?Ü?Àp0$0L0t0œ0Ä0ì01<1d1Œ1´1Ü1ü12<2\2|2¤2Ì2ì23<3d3„3¤3Ì3ì3444T4|4¤4Ì4ô4$5L5t5”5´5Ô5ô56L6t6”6´6Ü67,7L7l7”7¼7ä7 848T8X8\8`8d8h8l8p8t8x8|8€8„8ˆ8Œ88”8˜8œ8 8¤8¨8¬8°8´8¸8¼8À8Ä8È8Ì8Ð8Ô8Ø8Ü8à8ä8è8ì8ð8ô8ø8ü8999 99999 9$9(9,9094989<9@9D9H9L9P9T9X9\9`9d9h9l9p9t9x9|9€9„9ˆ9Œ99”9˜9œ9 9¤9¨9¬9°9´9¸9¼9À9Ä9È9Ì9Ð9Ô9Ø9Ü9à9ä9è9ì9ð9ô9ø9ü9::: ::::: :$:(:,:0:4:8:<:@:D:H:L:P:T:Ø:Ü:à:ä:è:ì:ð:ô:ø:ü:;;; ;;;;; ;$;(;,;0;4;8;<;@;D;H;L;P;T;X;\;`;d;h;l;p;t;x;|;€;„;ˆ;Œ;;”;˜;œ; ;¤;¨;¬;°;´;¸;¼;À;Ä;È;Ì;Ð;Ô;Ø;Ü;à;ä;è;ì;ð;ô;ø;ü;<<< <<<<< <$<(<,<0<4<8<<<@D>l>”>¼>ä>?,?T?|?œ?Ä?ì?Ðô040T0|0œ0Ä0ì01<1\1|1¤1Ì1ô12D2l2Œ2´2Ü23,3T3|3œ3Ä3ì34<4d4Œ4´4Ü45,5T5|5¤5Ì5ô56<6d6„6¬6Ì6ì6 7,7L7t7”7´7Ô7ô7848T8t8”8´8Ô8ô8949\9„9¤9Ä9ä9:$:D:d:Œ:´:Ü:ü:;<;\;|;œ;¼;Ü;ü;<<<\<|<œ<¼<Ü<=$=D=d=„=¤=Ä=ä=>$>D>d>„>¬>Ì>ô>?4?T?|?œ?¼?Ü?ü?à<0D0d0„0¤0Ä0ä01$1D1d1„1¤1Ä1ä12$2D2t2”2´2Ô2ô2343T3t3”3´3Ô3ô3444T4t4”4´4Ô4ô4545\5„5¤5Ä5ä5 6,6L6l6Œ66”6˜6œ6 6¤6¨6¬6°6´6¸6¼6À6Ä6È6Ì6Ð6Ô6Ø6Ü6à6ä6è6ì6ð6ô6ø6ü6777 77777 7$7(7,7074787<7@7D7H7L7P7T7X7\7`7d7h7l7p7t7x7|7€7„7ˆ7Œ77”7˜7œ7 7¤7¨7¬7°7´7¸7¼7À7Ä7È7Ì7Ð7Ô7Ø7Ü7à7ä7è7ì7ð7ô7ø7ü78888”8˜8œ8 8¤8¨8¬8°8´8¸8¼8À8Ä8È8Ì8Ð8Ô8Ø8Ü8à8ä8è8ì8ð8ô8ø8ü8999 99999 9$9(9,9094989<9@9D9H9L9P9T9X9\9`9d9h9l9p9t9x9|9€9„9ˆ9Œ99”9˜9œ9 9¤9¨9¬9°9´9¸9¼9À9Ä9È9Ì9Ð9Ô9Ø9Ü9à9ä9è9ì9ð9ô9ø9ü9::: :::D:l:”:¼:ä: ;4;T;t;œ;Ä;ì;<<D>l>”>¼>ä> ?4?\?„?¬?Ô?ü?ðà$0T0t0œ0Ä0ì01<1d1Œ1´1Ü12,2T2|2¤2Ì2ô2$3L3t3œ3Ä3ì34<4l4œ4Ì4ì4 5,5L5l5”5¼5Ü5ü56<6\6|6¬6Ì6ì6 7,7\7|7¤7Ì7ô78<8d8Œ8¬8Ì8ô89D9d9Œ9¬9Ô9ô9:<:\:|:¤:Ì:ì: ;,;T;|;¤;Ì;ô;D>t>œ>Ä>ì>?<>d>Œ>´>ä> ?4?\?„?¬?Ô?ü?°40t0´0ô041t1¬1Ü12\2œ2Ü23\3”3Ä3ô3$4T4”4Ô45T5”5Ì5 6L6Œ6Ì6 7L7t7¬7ä78<8\8|8œ8¼8ì8949T9t9œ9¼9Ü9:4:\:|:œ:Ô:ô:$;T;|;œ;Ô;ü;$<>d>œ>Ô>?,?\?„?¬?Ü? ¼0,0d0Œ0´0ì01L1t1”1´1Ô12,2\2”2Ì23<3t3¬3ä34T4Œ4Ä4ü445l5”5Ì5ô56T6Œ6Ä6ü647l7¤7Ü78D8l8Œ8´8Ü89,9T9|9¤9Ì9:,:T:|:¤:Ì:ì: ;,;T;t;¤;Ô;ô;,>> >>>>> >$>(>,>0>4>8><>@>D>H>L>P>T>X>\>`>d>h>l>p>t>x>|>€>„>ˆ>Œ>>”>˜>œ> >¤>¨>¬>°>´>¸>@?D?H?L?P?T?X?\?`?d?h?l?p?t?x?|?€?„?ˆ?Œ??”?˜?œ? ?¤?¨?¬?°?´?¸?¼?À?Ä?È?Ì?Ð?Ô?Ø?Ü?à?ä?è?ì?ð?ô?ø?ü?0à000 00000 0$0(0,0004080<0@0D0H0L0P0T0X0\0`0d0h0l0p0t0x0|0€0„0ˆ0Œ00”0˜0œ0 0¤0¨0¬0°0´0¸0¼0À0Ì011D1L1”1œ1¤1¬1t2|2„2t3|3„3œ4´4 5d5œ5¤5¬5Ô5Ü5$6<6l6„67<7´748d8l8ü8¼9ä9ì9Ü:œ;ô;ü;lt>¬>´>¼>l?t?|?@Ä0Œ0”0Ü0ä0ì0ô0,141<1ì1ô1,242<2T2¬2ä2ì2ô23$3l3t3|3„3¼3Ä3Ì3|4ä4ì4¬5´5,646<6ä6 77l7”7œ7ä7ì7ô7ü7$8,8\8d8œ8¤8¬8ô8ü89 9$9l9t9|9„9¬9´9ä9::¤:¬:4;<;´;<,>l>t>Ì>Ô> ???4?¼?Ä?Ì?P0$0´0<1D1Ì1Ô122¬2ì2ô2D3L3t3|3Ä3Ì3Ô3Ü34 4T4\4”4œ4¤4Ô5Ü5ä5ü5,747<7ô7ü7œ8¤8¼:Ì:Ü:ì:ü: ;;,;<;L;\;l;|;Œ;œ;¬;¼;Ì;Ü;ì;ü; <<,<<>,><>L>\>l>|>Œ>œ>¬>¼>Ì>Ü>ì>ü> ??,?D>|>„>Œ>D>œ>¤>Ü>ä>ì>?Œ?”?œ?ì?ô?€„0 11œ1¤1ä1ì1|2¼2Ä233D3L3”3œ3¤3¬3Ô3Ü3$4,4d4l4t4¤5¬5´5Ì5ü67 7Ä7Ì7l8t8Œ:œ:¬:¼:Ì:Ü:ì:ü: ;;,;<;L;\;l;|;Œ;œ;¬;¼;Ì;Ü;ì;ü; <<,<<>,><>L>\>l>|>Œ>œ>¬>¼>Ì>Ü>ì>ü> ??,?,>T>t>”>´>Ô>ô>?4?T?t?”?´?Ô?ô? 8040T0|0œ0¼0Ü0ü01<1\1|1œ1¼1Ü1ü1$2D2l2Œ2¬2Ì2ô2343T3t3”3¼3Ü3ü34D4d4„4¤4Ä4ä45$5D5d5„5¤5Ä5ì5 6,6L6l6Œ6¬6Ì6ì6 7,7L7l7Œ7¬7Ì7ì7 8,8L8l8Œ8¬8Ô8ü89<9\9„9¤9Ä9ä9:: ::::: :$:(:,:0:4:8:<:@:D:H:L:P:T:X:\:`:d:h:l:p:t:x:|:€:„:ˆ:Œ::”:˜:œ: :¤:¨:¬:°:´:¸:¼:À:Ä:È:Ì:Ð:Ô:Ø:Ü:à:ä:è:ì:ð:ô:ø:ü:;;; ;;;;; ;$;(;,;0;4;8;<;@;D;H;L;P;T;X;\;`;d;h;l;p;t;x;|;€;< <<<<< <$<(<,<0<4<8<<<@l>¤>ä>$?d?œ?Ì?°Œ0<0|0¼0ü041t1œ1Ì1ü1,2d2¤2ä2$3d3”3Ô3 4D4„4Ä45D5„5Ì56\6¤6ì6,7\7¤7ì748|8Ä8 9L9|9¬9Ü9 :T:œ:ä:,;t;Ä;l>¬>ì>?D?l?Œ?¬?ô?À 40T0|0¤0Ü0ü01l1Œ1´1ä1 2\2|2¬2Ü23L3Œ3Ä3ô3444d4”4Ä4ì4,5\5œ5Ì5ü5$6L6t6´6ô6$7T7”7Ä7848d8¤8ä89D9„9´9ô9$:D:d:”:Ä:ô:$;d;¤;ô;D<”<Ô<=T=”=Ü=>\>œ>ì>,?l?¬?Ü?Ðð,0l0¬0ì0,1l1¬1ü1T2„2´2Ü2 343\3œ3Ü34\4œ4Ü45\5Œ5Ì5ü56<6\6Œ6¼6ì67<7|7Ä7 8L8l8œ8¼8À8Ä8È8Ì8Ð8Ô8Ø8Ü8à8ä8è8ì8ð8ô8ø8ü8999 99999 9$9(9,9094989<9@9D9H9L9P9T9X9\9`9d9h9l9p9t9x9|9€9„9ˆ9Œ99”9˜9œ9 9¤9¨9¬9°9´9¸9¼9À9Ä9È9Ì9Ð9Ô9Ø9Ü9à9ä9è9ì9ð9ô9ø9ü9::: ::::: :$:(:,:0:4:8:À:Ä:È:Ì:Ð:Ô:Ø:Ü:à:ä:è:ì:ð:ô:ø:ü:;;; ;;;;; ;$;(;,;0;4;8;<;@;D;H;L;P;T;X;\;`;d;h;l;p;t;x;|;€;„;ˆ;Œ;;”;˜;œ; ;¤;¨;¬;°;´;¸;¼;À;Ä;È;Ì;Ð;Ô;Ø;Ü;à;ä;è;ì;ð;ô;ø;ü;<<< <<<<< <$<(<,<0<4<8<<<@>> >>>> >$>(>,>0@>L>l>|>Œ>@Ü0”0à2ä233$3,343<3D3L3T3\3d3l3t3|3„3Œ3”3œ3d6l6t6|6„6Œ6”6œ6¤6¬6´6¼6Ä6Ì6Ô6Ü6ä6ì6ô6ü67 777$7,747T7X7\7`7d7h7l7p7t7x7|7€7„7ˆ7Œ77”7˜7œ7 7¤7¨7¬7°7´7¸7¼7À7Ä7È7Ì7Ð7Ô7Ø7Ü7à7ä7è7ì7ð7ô7ø7ü788888 8$8(8,80848@8À;Ä;PyOpenGL-3.0.2/OpenGL/platform/0000755000175000001440000000000012032640120017053 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/platform/baseplatform.py0000644000175000001440000003454712025001653022125 0ustar mcfletchusers00000000000000"""Base class for platform implementations """ import ctypes from OpenGL.platform import ctypesloader from OpenGL._bytes import as_8_bit import sys from OpenGL import _configflags from OpenGL import logs, MODULE_ANNOTATIONS class _CheckContext( object ): def __init__( self, func, ccisvalid ): self.func = func self.ccisvalid = ccisvalid def __setattr__( self, key, value ): if key not in ('func','ccisvalid'): return setattr( self.func, key, value ) else: self.__dict__[key] = value def __repr__( self ): if getattr( self.func, '__doc__', None ): return self.func.__doc__ else: return repr( self.func ) def __getattr__( self, key ): if key != 'func': return getattr(self.func, key ) raise AttributeError( key ) def __call__( self, *args, **named ): if not self.ccisvalid(): from OpenGL import error raise error.NoContext( self.func, args, named ) return self.func( *args, **named ) def _find_module( exclude = (__name__,)): frame = sys._getframe() while frame and '__name__' in frame.f_globals: if exclude: if not frame.f_globals['__name__'] in exclude: return frame.f_globals['__name__'] else: return frame.f_globals['__name__'] frame = frame.f_back return None class BasePlatform( object ): """Base class for per-platform implementations Attributes of note: EXPORTED_NAMES -- set of names exported via the platform module's namespace... GL, GLU, GLUT, GLE, OpenGL -- ctypes libraries DEFAULT_FUNCTION_TYPE -- used as the default function type for functions unless overridden on a per-DLL basis with a "FunctionType" member GLUT_GUARD_CALLBACKS -- if True, the GLUT wrappers will provide guarding wrappers to prevent GLUT errors with uninitialised GLUT. EXTENSIONS_USE_BASE_FUNCTIONS -- if True, uses regular dll attribute-based lookup to retrieve extension function pointers. """ EXPORTED_NAMES = [ 'GetCurrentContext','CurrentContextIsValid','safeGetError', 'createBaseFunction', 'createExtensionFunction', 'copyBaseFunction', 'GL','GLU','GLUT','GLE','OpenGL', 'getGLUTFontPointer', 'GLUT_GUARD_CALLBACKS', ] DEFAULT_FUNCTION_TYPE = None GLUT_GUARD_CALLBACKS = False EXTENSIONS_USE_BASE_FUNCTIONS = False def install( self, namespace ): """Install this platform instance into the platform module""" for name in self.EXPORTED_NAMES: namespace[ name ] = getattr(self,name) namespace['PLATFORM'] = self return self def functionTypeFor( self, dll ): """Given a DLL, determine appropriate function type...""" if hasattr( dll, 'FunctionType' ): return dll.FunctionType else: return self.DEFAULT_FUNCTION_TYPE def errorChecking( self, func, dll ): """Add error checking to the function if appropriate""" from OpenGL import error if _configflags.ERROR_CHECKING: if dll not in (self.GLUT,): #GLUT spec says error-checking is basically undefined... # there *may* be GL errors on GLUT calls that e.g. render # geometry, but that's all basically "maybe" stuff... func.errcheck = error.glCheckError return func def wrapContextCheck( self, func, dll ): """Wrap function with context-checking if appropriate""" if _configflags.CONTEXT_CHECKING and dll is not self.GLUT: return _CheckContext( func, self.CurrentContextIsValid ) return func def wrapLogging( self, func ): """Wrap function with logging operations if appropriate""" return logs.logOnFail( func, logs.getLog( 'OpenGL.errors' )) def finalArgType( self, typ ): """Retrieve a final type for arg-type""" if typ == ctypes.POINTER( None ) and not getattr( typ, 'final',False): from OpenGL.arrays import ArrayDatatype return ArrayDatatype else: return typ def constructFunction( self, functionName, dll, resultType=ctypes.c_int, argTypes=(), doc = None, argNames = (), extension = None, deprecated = False, module = None, ): """Core operation to create a new base ctypes function raises AttributeError if can't find the procedure... """ if extension == 'GL_VERSION_GL_1_1': extension = None if extension and not self.checkExtension( extension ): raise AttributeError( """Extension not available""" ) argTypes = [ self.finalArgType( t ) for t in argTypes ] if extension and not self.EXTENSIONS_USE_BASE_FUNCTIONS: # what about the VERSION values??? if self.checkExtension( extension ): pointer = self.getExtensionProcedure( as_8_bit(functionName) ) if pointer: func = self.functionTypeFor( dll )( resultType, *argTypes )( pointer ) else: raise AttributeError( """Extension %r available, but no pointer for function %r"""%(extension,functionName)) else: raise AttributeError( """No extension %r"""%(extension,)) else: func = ctypesloader.buildFunction( self.functionTypeFor( dll )( resultType, *argTypes ), functionName, dll, ) func.__doc__ = doc func.argNames = list(argNames or ()) func.__name__ = functionName func.DLL = dll func.extension = extension func.deprecated = deprecated func = self.wrapLogging( self.wrapContextCheck( self.errorChecking( func, dll ), dll, ) ) if MODULE_ANNOTATIONS: if not module: module = _find_module( ) if module: func.__module__ = module return func def createBaseFunction( self, functionName, dll, resultType=ctypes.c_int, argTypes=(), doc = None, argNames = (), extension = None, deprecated = False, module = None, ): """Create a base function for given name Normally you can just use the dll.name hook to get the object, but we want to be able to create different bindings for the same function, so we do the work manually here to produce a base function from a DLL. """ from OpenGL import wrapper result = None try: if ( _configflags.FORWARD_COMPATIBLE_ONLY and dll is self.GL and deprecated ): result = self.nullFunction( functionName, dll=dll, resultType=resultType, argTypes=argTypes, doc = doc, argNames = argNames, extension = extension, deprecated = deprecated, ) else: result = self.constructFunction( functionName, dll, resultType=resultType, argTypes=argTypes, doc = doc, argNames = argNames, extension = extension, ) except AttributeError, err: result = self.nullFunction( functionName, dll=dll, resultType=resultType, argTypes=argTypes, doc = doc, argNames = argNames, extension = extension, ) if MODULE_ANNOTATIONS: if not module: module = _find_module( ) if module: result.__module__ = module return result def checkExtension( self, name ): """Check whether the given extension is supported by current context""" if not name or name == 'GL_VERSION_GL_1_1': return True context = self.GetCurrentContext() if context: from OpenGL import contextdata from OpenGL.raw.GL.VERSION.GL_1_1 import GL_EXTENSIONS set = contextdata.getValue( GL_EXTENSIONS, context=context ) if set is None: set = {} contextdata.setValue( GL_EXTENSIONS, set, context=context, weak=False ) current = set.get( name ) if current is None: from OpenGL import extensions result = extensions.hasGLExtension( name ) set[name] = result return result return current else: return False createExtensionFunction = createBaseFunction def copyBaseFunction( self, original ): """Create a new base function based on an already-created function This is normally used to provide type-specific convenience versions of a definition created by the automated generator. """ from OpenGL import wrapper, error if isinstance( original, _NullFunctionPointer ): return self.nullFunction( original.__name__, original.DLL, resultType = original.restype, argTypes= original.argtypes, doc = original.__doc__, argNames = original.argNames, extension = original.extension, deprecated = original.deprecated, ) elif hasattr( original, 'originalFunction' ): original = original.originalFunction return self.createBaseFunction( original.__name__, original.DLL, resultType=original.restype, argTypes=original.argtypes, doc = original.__doc__, argNames = original.argNames, extension = original.extension, deprecated = original.deprecated, ) def nullFunction( self, functionName, dll, resultType=ctypes.c_int, argTypes=(), doc = None, argNames = (), extension = None, deprecated = False, module = None, ): """Construct a "null" function pointer""" if deprecated: base = _DeprecatedFunctionPointer else: base = _NullFunctionPointer cls = type( functionName, (base,), { '__doc__': doc, 'deprecated': deprecated, } ) if MODULE_ANNOTATIONS: if not module: module = _find_module( ) if module: cls.__module__ = module return cls( functionName, dll, resultType, argTypes, argNames, extension=extension, doc=doc, ) def GetCurrentContext( self ): """Retrieve opaque pointer for the current context""" raise NotImplementedError( """Platform does not define a GetCurrentContext function""" ) def CurrentContextIsValid( self ): """Return boolean of whether current context is valid""" raise NotImplementedError( """Platform does not define a CurrentContextIsValid function""" ) def getGLUTFontPointer(self, constant ): """Retrieve a GLUT font pointer for this platform""" raise NotImplementedError( """Platform does not define a GLUT font retrieval function""" ) def safeGetError( self ): """Safety-checked version of glError() call (checks for valid context first)""" raise NotImplementedError( """Platform does not define a safeGetError function""" ) class _NullFunctionPointer( object ): """Function-pointer-like object for undefined functions""" def __init__( self, name, dll, resultType, argTypes, argNames, extension=None, doc=None, deprecated=False ): from OpenGL import error self.__name__ = name self.DLL = dll self.argNames = argNames self.argtypes = argTypes self.errcheck = None self.restype = resultType self.extension = extension self.doc = doc self.deprecated = deprecated resolved = False def __nonzero__( self ): """Make this object appear to be NULL""" if self.extension and not self.resolved: self.load() return self.resolved def load( self ): """Attempt to load the function again, presumably with a context this time""" from OpenGL import platform if not platform.PLATFORM.checkExtension( self.extension ): return None try: func = platform.PLATFORM.constructFunction( self.__name__, self.DLL, resultType=self.restype, argTypes=self.argtypes, doc = self.doc, argNames = self.argNames, extension = self.extension, ) except AttributeError, err: return None else: # now short-circuit so that we don't need to check again... self.__class__.__call__ = staticmethod( func.__call__ ) self.resolved = True return func return None def __call__( self, *args, **named ): if self.load(): return self( *args, **named ) else: from OpenGL import error raise error.NullFunctionError( """Attempt to call an undefined function %s, check for bool(%s) before calling"""%( self.__name__, self.__name__, ) ) class _DeprecatedFunctionPointer( _NullFunctionPointer ): deprecated = True def __call__( self, *args, **named ): from OpenGL import error raise error.NullFunctionError( """Attempt to call a deprecated function %s while OpenGL in FORWARD_COMPATIBLE_ONLY mode. Set OpenGL.FORWARD_COMPATIBLE_ONLY to False to use legacy entry points"""%( self.__name__, ) ) PyOpenGL-3.0.2/OpenGL/platform/ctypesloader.py0000644000175000001440000000447312025001653022137 0ustar mcfletchusers00000000000000"""ctypes abstraction layer We keep rewriting functions as the main entry points change, so let's just localise the changes here... """ import ctypes, logging, os log = logging.getLogger( 'OpenGL.platform.ctypesloader' ) #log.setLevel( logging.DEBUG ) ctypes_version = [ int(x) for x in ctypes.__version__.split('.') ] from ctypes import util import OpenGL DLL_DIRECTORY = os.path.join( os.path.dirname( OpenGL.__file__ ), 'DLLS' ) def loadLibrary( dllType, name, mode = ctypes.RTLD_GLOBAL ): """Load a given library by name with the given mode dllType -- the standard ctypes pointer to a dll type, such as ctypes.cdll or ctypes.windll or the underlying ctypes.CDLL or ctypes.WinDLL classes. name -- a short module name, e.g. 'GL' or 'GLU' mode -- ctypes.RTLD_GLOBAL or ctypes.RTLD_LOCAL, controls whether the module resolves names via other modules already loaded into this process. GL modules generally need to be loaded with GLOBAL flags returns the ctypes C-module object """ if ctypes_version <= [0,9,9,3]: raise RuntimeError( """Unsupported ctypes version (%s), please upgrade to ctypes 1.x or above"""%( ".".join( [str(x) for x in ctypes_version] ), ) ) if isinstance( dllType, ctypes.LibraryLoader ): dllType = dllType._dlltype fullName = None try: fullName = util.find_library( name ) if fullName is not None: name = fullName elif os.path.isfile( os.path.join( DLL_DIRECTORY, name + '.dll' )): name = os.path.join( DLL_DIRECTORY, name + '.dll' ) except Exception, err: log.info( '''Failed on util.find_library( %r ): %s''', name, err ) # Should the call fail, we just try to load the base filename... pass try: return dllType( name, mode ) except Exception, err: err.args += (name,fullName) raise def buildFunction( functionType, name, dll ): """Abstract away the ctypes function-creation operation""" if ctypes_version <= [0,9,9,3]: raise RuntimeError( """Unsupported ctypes version (%s), please upgrade to 1.x or above"""%( ".".join( [str(x) for x in ctypes_version] ), ) ) return functionType( (name, dll), ) PyOpenGL-3.0.2/OpenGL/platform/__init__.py0000644000175000001440000000453612025001653021200 0ustar mcfletchusers00000000000000"""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 # create instance of this platform implementation plugin = plugin_class() # install into the platform module's namespace now 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 function.argNames = function.func_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 ): """Allows the more compact declaration format to use the old-style constructor""" return createExtensionFunction( function.__name__, dll or PLATFORM.GL, resultType = function.resultType, argTypes = function.argTypes, doc = None, argNames = function.argNames, extension = extension, deprecated = deprecated, module = function.__module__, ) PyOpenGL-3.0.2/OpenGL/platform/osmesa.py0000644000175000001440000001502112025001653020717 0ustar mcfletchusers00000000000000"""OSMesa-specific features To request an OSMesa context, you need to run your script with: PYOPENGL_PLATFORM=osmesa defined in your shell/execution environment. """ import ctypes, ctypes.util from OpenGL.platform import baseplatform, ctypesloader from OpenGL.constant import Constant class OSMesaPlatform( baseplatform.BasePlatform ): """OSMesa implementation for PyOpenGL""" try: GL = OpenGL = ctypesloader.loadLibrary( ctypes.cdll, 'OSMesa', mode=ctypes.RTLD_GLOBAL ) except OSError, err: raise ImportError("Unable to load OpenGL library", *err.args) try: GLU = ctypesloader.loadLibrary( ctypes.cdll, 'GLU', mode=ctypes.RTLD_GLOBAL ) except OSError, err: GLU = None # glut shouldn't need to be global, but just in case a dependent library makes # the same assumption GLUT does... try: GLUT = ctypesloader.loadLibrary( ctypes.cdll, 'glut', mode=ctypes.RTLD_GLOBAL ) except OSError, err: GLUT = None try: GLE = ctypesloader.loadLibrary( ctypes.cdll, 'gle', mode=ctypes.RTLD_GLOBAL ) except OSError, err: GLE = None DEFAULT_FUNCTION_TYPE = staticmethod( ctypes.CFUNCTYPE ) GLenum = ctypes.c_uint GLboolean = ctypes.c_ubyte GLsizei = ctypes.c_int GLint = ctypes.c_int baseplatform.BasePlatform.EXPORTED_NAMES += ['OSMesaCreateContext', 'OSMesaCreateContextExt', 'OSMesaMakeCurrent', 'OSMesaGetIntegerv', 'OSMesaGetCurrentContext', 'OSMesaDestroyContext', 'OSMesaPixelStore', 'OSMesaGetDepthBuffer', 'OSMesaGetColorBuffer', 'OSMESA_COLOR_INDEX', 'OSMESA_RGBA', 'OSMESA_BGRA', 'OSMESA_ARGB', 'OSMESA_RGB', 'OSMESA_BGR', 'OSMESA_BGR', 'OSMESA_ROW_LENGTH', 'OSMESA_Y_UP', 'OSMESA_WIDTH', 'OSMESA_HEIGHT', 'OSMESA_FORMAT', 'OSMESA_TYPE', 'OSMESA_MAX_WIDTH', 'OSMESA_MAX_HEIGHT'] # export OSMesa functions from osmesa.h class struct_osmesa_context(ctypes.Structure): __slots__ = [ ] struct_osmesa_context._fields_ = [ ('_opaque_struct', ctypes.c_int) ] OSMesaContext = ctypes.POINTER(struct_osmesa_context) # Values for the format parameter of OSMesaCreateContext() OSMESA_COLOR_INDEX = Constant('OSMESA_COLOR_INDEX', 6400) OSMESA_RGBA = Constant('OSMESA_RGBA', 6408) OSMESA_BGRA = Constant('OSMESA_BGRA', 0x1) OSMESA_ARGB = Constant('OSMESA_ARGB', 0x2) OSMESA_RGB = Constant('OSMESA_RGB', 6407) OSMESA_BGR = Constant('OSMESA_BGR', 0x4) OSMESA_RGB_565 = Constant('OSMESA_BGR', 0x5) # OSMesaPixelStore() parameters: OSMESA_ROW_LENGTH = Constant('OSMESA_ROW_LENGTH', 0x10) OSMESA_Y_UP = Constant('OSMESA_Y_UP', 0x11) # Accepted by OSMesaGetIntegerv: OSMESA_WIDTH = Constant('OSMESA_WIDTH', 0x20) OSMESA_HEIGHT = Constant('OSMESA_HEIGHT', 0x21) OSMESA_FORMAT = Constant('OSMESA_FORMAT', 0x22) OSMESA_TYPE = Constant('OSMESA_TYPE', 0x23) OSMESA_MAX_WIDTH = Constant('OSMESA_MAX_WIDTH', 0x24) OSMESA_MAX_HEIGHT = Constant('OSMESA_MAX_HEIGHT', 0x25) OSMesaCreateContext = GL.OSMesaCreateContext OSMesaCreateContext.argtypes = [GLenum, OSMesaContext] OSMesaCreateContext.restype = OSMesaContext OSMesaCreateContextExt = GL.OSMesaCreateContextExt OSMesaCreateContextExt.argtypes = [GLenum, GLint, GLint, GLint, OSMesaContext] OSMesaCreateContextExt.restype = OSMesaContext OSMesaDestroyContext = GL.OSMesaDestroyContext OSMesaDestroyContext.argtypes = [OSMesaContext] OSMesaMakeCurrent = GL.OSMesaMakeCurrent OSMesaMakeCurrent.argtypes = [OSMesaContext, ctypes.POINTER(None), GLenum, GLsizei, GLsizei] OSMesaMakeCurrent.restype = GLboolean OSMesaGetCurrentContext = GL.OSMesaGetCurrentContext #OSMesaGetCurrentContext.restype = OSMesaContext GetCurrentContext = CurrentContextIsValid = OSMesaGetCurrentContext OSMesaPixelStore = GL.OSMesaPixelStore OSMesaPixelStore.argtypes = [GLint, GLint] OSMesaPixelStore.restype = None OSMesaGetProcAddress = GL.OSMesaGetProcAddress OSMesaGetProcAddress.restype = ctypes.c_void_p getExtensionProcedure = staticmethod( OSMesaGetProcAddress ) def OSMesaGetIntegerv(self, pname): value = self.GLint() self.GL.OSMesaGetIntegerv(pname, ctypes.byref(value)) return value.value def OSMesaGetDepthBuffer(self, c): width, height, bytesPerValue = self.GLint(), self.GLint(), self.GLint() buffer = ctypes.POINTER(self.GLint)() if self.GL.OSMesaGetDepthBuffer(c, ctypes.byref(width), ctypes.byref(height), ctypes.byref(bytesPerValue), ctypes.byref(buffer)): return width.value, height.value, bytesPerValue.value, buffer else: return 0, 0, 0, None def OSMesaGetColorBuffer(self, c): # TODO: make output array types which can handle the operation # provide an API to convert pointers + sizes to array instances, # e.g. numpy.ctypeslib.as_array( ptr, bytesize ).astype( 'B' ).reshape( height,width ) width, height, format = self.GLint(), self.GLint(), self.GLint() buffer = ctypes.c_void_p() if self.GL.OSMesaGetColorBuffer(c, ctypes.byref(width), ctypes.byref(height), ctypes.byref(format), ctypes.byref(buffer)): return width.value, height.value, format.value, buffer else: return 0, 0, 0, None def getGLUTFontPointer( self, constant ): """Platform specific function to retrieve a GLUT font pointer GLUTAPI void *glutBitmap9By15; #define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15) Key here is that we want the addressof the pointer in the DLL, not the pointer in the DLL. That is, our pointer is to the pointer defined in the DLL, we don't want the *value* stored in that pointer. """ name = [ x.title() for x in constant.split( '_' )[1:] ] internal = 'glut' + "".join( [x.title() for x in name] ) pointer = ctypes.c_void_p.in_dll( self.GLUT, internal ) return ctypes.c_void_p(ctypes.addressof(pointer)) safeGetError = staticmethod( OpenGL.glGetError ) PyOpenGL-3.0.2/OpenGL/platform/darwin.py0000644000175000001440000000740312025001653020721 0ustar mcfletchusers00000000000000"""Darwin (MacOSX)-specific platform features This was implemented with the help of the following links: [1] Apple's Mac OS X OpenGL interfaces: http://developer.apple.com/qa/qa2001/qa1269.html [2] As above, but updated: http://developer.apple.com/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_pg_concepts/chapter_2_section_3.html [3] CGL reference: http://developer.apple.com/documentation/GraphicsImaging/Reference/CGL_OpenGL/index.html#//apple_ref/doc/uid/TP40001186 [4] Intro to OpenGL on Mac OS X: http://developer.apple.com/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/chapter_1_section_1.html#//apple_ref/doc/uid/TP40001987-CH207-TP9 About the CGL API, (from [1]): CGL or Core OpenGL is the lowest accessible interface API for OpenGL. It knows nothing about windowing systems but can be used directly to find both renderer information and as a full screen or off screen interface. It is accessible from both Cocoa and Carbon and is what both NSGL and AGL are built on. A complete Pbuffer interface is also provided. Functionality is provided in via the OpenGL framework and applications can include the OpenGL.h header to access CGL's functionality. Developers can see an example of using CGL with Carbon in the Carbon CGL code sample. Documentation and header files are found in: /System/Library/Frameworks/OpenGL.framework /System/Library/Frameworks/GLUT.framework """ import ctypes, ctypes.util from OpenGL.platform import baseplatform, ctypesloader class DarwinPlatform( baseplatform.BasePlatform ): """Darwin (OSX) platform implementation""" DEFAULT_FUNCTION_TYPE = staticmethod( ctypes.CFUNCTYPE ) EXTENSIONS_USE_BASE_FUNCTIONS = True # Get the pointers to the libraries... try: OpenGL = ctypesloader.loadLibrary( ctypes.cdll, 'OpenGL', mode=ctypes.RTLD_GLOBAL ) except OSError, err: raise ImportError("Unable to load OpenGL library", *err.args) # CGL provides the windowing environment functionality # but it is built into the GL libs. GL = GLU = CGL = OpenGL # glut shouldn't need to be global, but just in case a dependent library makes # the same assumption GLUT does... GLUT = ctypesloader.loadLibrary( ctypes.cdll, 'GLUT', mode=ctypes.RTLD_GLOBAL ) # GLE is handled by GLUT under OS X GLE = GLUT GetCurrentContext = CurrentContextIsValid = staticmethod( CGL.CGLGetCurrentContext ) def getGLUTFontPointer( self, constant ): """Platform specific function to retrieve a GLUT font pointer GLUTAPI void *glutBitmap9By15; #define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15) Key here is that we want the addressof the pointer in the DLL, not the pointer in the DLL. That is, our pointer is to the pointer defined in the DLL, we don't want the *value* stored in that pointer. """ name = [ x.title() for x in constant.split( '_' )[1:] ] internal = 'glut' + "".join( [x.title() for x in name] ) pointer = ctypes.c_void_p.in_dll( self.GLUT, internal ) return ctypes.c_void_p(ctypes.addressof(pointer)) def safeGetError( self ): """Provide context-not-present-safe error-checking Under OS-X an attempt to retrieve error without checking context will bus-error. This function checks for a valid context before running glGetError Note: This is a likely candidate for rewriting in C, as it is called for every almost function in the system! """ if self.CurrentContextIsValid(): return glGetError() return None glGetError = DarwinPlatform.OpenGL.glGetError PyOpenGL-3.0.2/OpenGL/platform/glx.py0000644000175000001440000000510512025001653020224 0ustar mcfletchusers00000000000000"""GLX (x-windows)-specific platform features""" import ctypes, ctypes.util from OpenGL.platform import baseplatform, ctypesloader class GLXPlatform( baseplatform.BasePlatform ): """Posix (Linux, FreeBSD, etceteras) implementation for PyOpenGL""" # On Linux (and, I assume, most GLX platforms, we have to load # GL and GLU with the "global" flag to allow GLUT to resolve its # references to GL/GLU functions). try: GL = OpenGL = ctypesloader.loadLibrary( ctypes.cdll, 'GL', mode=ctypes.RTLD_GLOBAL ) except OSError, err: raise ImportError("Unable to load OpenGL library", *err.args) try: GLU = ctypesloader.loadLibrary( ctypes.cdll, 'GLU', mode=ctypes.RTLD_GLOBAL ) except OSError, err: GLU = None # glut shouldn't need to be global, but just in case a dependent library makes # the same assumption GLUT does... try: GLUT = ctypesloader.loadLibrary( ctypes.cdll, 'glut', mode=ctypes.RTLD_GLOBAL ) except OSError, err: GLUT = None # GLX doesn't seem to have its own loadable module? GLX = GL glXGetProcAddressARB = GL.glXGetProcAddressARB glXGetProcAddressARB.restype = ctypes.c_void_p getExtensionProcedure = staticmethod( glXGetProcAddressARB ) try: GLE = ctypesloader.loadLibrary( ctypes.cdll, 'gle', mode=ctypes.RTLD_GLOBAL ) except OSError, err: GLE = None DEFAULT_FUNCTION_TYPE = staticmethod( ctypes.CFUNCTYPE ) # This loads the GLX functions from the GL .so, not sure if that's # really kosher... GetCurrentContext = CurrentContextIsValid = staticmethod( GL.glXGetCurrentContext ) def getGLUTFontPointer( self, constant ): """Platform specific function to retrieve a GLUT font pointer GLUTAPI void *glutBitmap9By15; #define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15) Key here is that we want the addressof the pointer in the DLL, not the pointer in the DLL. That is, our pointer is to the pointer defined in the DLL, we don't want the *value* stored in that pointer. """ name = [ x.title() for x in constant.split( '_' )[1:] ] internal = 'glut' + "".join( [x.title() for x in name] ) pointer = ctypes.c_void_p.in_dll( self.GLUT, internal ) return ctypes.c_void_p(ctypes.addressof(pointer)) safeGetError = staticmethod( OpenGL.glGetError ) PyOpenGL-3.0.2/OpenGL/platform/entrypoint31.py0000644000175000001440000000656712025001653022026 0ustar mcfletchusers00000000000000"""List of forward-compatible entry points for OpenGL 3.1 Taken from the list at: http://www.devklog.net/2008/08/23/forward-compatible-opengl-3-entry-points/ """ records = """glActiveTexture glAttachShader glBeginConditionalRender glBeginQuery glBeginTransformFeedback glBindAttribLocation glBindBuffer glBindBufferBase glBindBufferRange glBindFragDataLocation glBindFramebuffer glBindRenderbuffer glBindTexture glBindVertexArray glBlendColor glBlendEquation glBlendEquationSeparate glBlendFunc glBlendFuncSeparate glBlitFramebuffer glBufferData glBufferSubData glCheckFramebufferStatus glClampColor glClear glClearBuffer* glClearColor glClearDepth glClearStencil glClipPlane glColorMask* glCompileShader glCompressedTexImage* glCompressedTexSubImage* glCopyPixels glCopyTexImage* glCopyTexSubImage* glCreateProgram glCreateShader glCullFace glDeleteBuffers glDeleteFramebuffers glDeleteProgram glDeleteQueries glDeleteRenderbuffers glDeleteShader glDeleteTextures glDeleteVertexArrays glDepthFunc glDepthMask glDepthRange glDetachShader glDisable glDisableVertexAttribArray glDrawArrays glDrawBuffer glDrawBuffers glDrawElements glDrawRangeElements glEnable glEnableVertexAttribArray glEndConditionalRender glEndQuery glEndTransformFeedback glFinish glFlush glFlushMappedBufferRange glFramebufferRenderbuffer glFramebufferTexture* glFramebufferTextureLayer glFrontFace glGenBuffers glGenerateMipmap glGenFramebuffers glGenQueries glGenRenderbuffers glGenTextures glGenVertexArrays glGetActiveAttrib glGetActiveUniform glGetAttachedShaders glGetAttribLocation glGetBooleanv glGetBufferParameter* glGetBufferPointer* glGetBufferSubData glGetClipPlane glGetCompressedTexImage glGetDoublev glGetError glGetFloatv glGetFragDataLocation glGetFramebufferAttachmentParameter* glGetIntegerv glGetProgram* glGetProgramInfoLog glGetQuery* glGetQueryObject* glGetRenderbufferParameter* glGetShader* glGetShaderInfoLog glGetShaderSource glGetString glGetTexEnv* glGetTexImage glGetTexLevelParameter* glGetTexParameter* glGetTransformFeedbackVaryings glGetUniform* glGetUniformLocation glGetVertexAttrib* glGetVertexAttribIPointer* glGetVertexAttribPointer* glHint glIsBuffer glIsEnabled glIsFramebuffer glIsProgram glIsQuery glIsRenderbuffer glIsShader glIsTexture glIsVertexArray glLineWidth glLinkProgram glLogicOp glMapBuffer glMapBufferRange glMultiDrawArrays glMultiDrawElements glPixelStore* glPointParameter* glPointSize glPolygonMode glReadBuffer glReadPixels glRenderbufferStorage glRenderbufferStorageMultisample glSampleCoverage glScissor glShadeModel glShaderSource glStencilFunc glStencilFuncSeparate glStencilMask glStencilMaskSeparate glStencilOp glStencilOpSeparate glTexEnv glTexImage* glTexParameter* glTexSubImage* glTransformFeedbackVaryings glUniform1* glUniform2* glUniform3* glUniform4* glUniformMatrix2* glUniformMatrix2x3* glUniformMatrix2x4* glUniformMatrix3* glUniformMatrix3x2* glUniformMatrix3x4* glUniformMatrix4* glUniformMatrix4x2* glUniformMatrix4x3* glUnmapBuffer glUseProgram glValidateProgram glVertexAttrib1* glVertexAttrib2* glVertexAttrib3* glVertexAttrib4* glVertexAttrib4N* glVertexAttribI* glVertexAttribI4 glVertexAttribIPointer glVertexAttribPointer glViewport""".splitlines() def deprecated( name ): for allowed in records: if name == allowed: return False elif allowed.endswith( '*' ) and allowed.startswith(name[:len(allowed)-1]): return False return True PyOpenGL-3.0.2/OpenGL/platform/win32.py0000644000175000001440000000715712025001653020405 0ustar mcfletchusers00000000000000"""Windows-specific platform features""" import ctypes import platform from OpenGL.platform import ctypesloader, baseplatform import sys if sys.hexversion < 0x2070000: vc = 'vc7' # TODO: add Python 3.x compiler compatibility... else: vc = 'vc9' def _size(): return platform.architecture()[0].strip( 'bits' ) size = _size() class Win32Platform( baseplatform.BasePlatform ): """Win32-specific platform implementation""" GLUT_GUARD_CALLBACKS = True try: GL = OpenGL = ctypesloader.loadLibrary( ctypes.windll, 'opengl32', mode = ctypes.RTLD_GLOBAL ) except OSError, err: raise ImportError("Unable to load OpenGL library", *err.args) try: GLU = ctypesloader.loadLibrary( ctypes.windll, 'glu32', mode = ctypes.RTLD_GLOBAL ) except OSError, err: GLU = None GLUT = None for possible in ('freeglut%s'%(size,),'freeglut', 'glut%s'%(size,)): # Prefer FreeGLUT if the user has installed it, fallback to the included # GLUT if it is installed try: GLUT = ctypesloader.loadLibrary( ctypes.windll, possible, mode = ctypes.RTLD_GLOBAL ) except WindowsError, err: GLUT = None else: break try: del possible except NameError, err: pass GLE = None for libName in ('opengle%s.%s'%(size,vc,),'gle%s'%(size,)): try: GLE = ctypesloader.loadLibrary( ctypes.cdll, libName ) GLE.FunctionType = ctypes.CFUNCTYPE except WindowsError, err: pass else: break DEFAULT_FUNCTION_TYPE = staticmethod( ctypes.WINFUNCTYPE ) # Win32 GLUT uses different types for callbacks and functions... GLUT_CALLBACK_TYPE = staticmethod( ctypes.CFUNCTYPE ) WGL = ctypes.windll.gdi32 getExtensionProcedure = staticmethod( OpenGL.wglGetProcAddress ) GLUT_FONT_CONSTANTS = { 'GLUT_STROKE_ROMAN': ctypes.c_void_p( 0), 'GLUT_STROKE_MONO_ROMAN': ctypes.c_void_p( 1), 'GLUT_BITMAP_9_BY_15': ctypes.c_void_p( 2), 'GLUT_BITMAP_8_BY_13': ctypes.c_void_p( 3), 'GLUT_BITMAP_TIMES_ROMAN_10': ctypes.c_void_p( 4), 'GLUT_BITMAP_TIMES_ROMAN_24': ctypes.c_void_p( 5), 'GLUT_BITMAP_HELVETICA_10': ctypes.c_void_p( 6), 'GLUT_BITMAP_HELVETICA_12': ctypes.c_void_p( 7), 'GLUT_BITMAP_HELVETICA_18': ctypes.c_void_p( 8), } def getGLUTFontPointer( self,constant ): """Platform specific function to retrieve a GLUT font pointer GLUTAPI void *glutBitmap9By15; #define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15) Key here is that we want the addressof the pointer in the DLL, not the pointer in the DLL. That is, our pointer is to the pointer defined in the DLL, we don't want the *value* stored in that pointer. """ return self.GLUT_FONT_CONSTANTS[ constant ] GetCurrentContext = CurrentContextIsValid = staticmethod( GL.wglGetCurrentContext ) def safeGetError( self ): """Provide context-not-present-safe error-checking Under OS-X an attempt to retrieve error without checking context will bus-error. Likely Windows will see the same. This function checks for a valid context before running glGetError Note: This is a likely candidate for rewriting in C, as it is called for every almost function in the system! """ if self.CurrentContextIsValid(): return glGetError() return None glGetError = Win32Platform.OpenGL.glGetError PyOpenGL-3.0.2/OpenGL/version.py0000644000175000001440000000013412031734364017301 0ustar mcfletchusers00000000000000"""Declares the current version for use in setuptools and the like""" __version__ = '3.0.2' PyOpenGL-3.0.2/OpenGL/_configflags.py0000644000175000001440000000065412025001653020233 0ustar mcfletchusers00000000000000"""Holds the import-time constants for various configuration flags""" from OpenGL import ( ERROR_CHECKING, ERROR_LOGGING, ERROR_ON_COPY, ARRAY_SIZE_CHECKING, STORE_POINTERS, WARN_ON_FORMAT_UNAVAILABLE, FORWARD_COMPATIBLE_ONLY, SIZE_1_ARRAY_UNPACK, USE_ACCELERATE, CONTEXT_CHECKING, FULL_LOGGING, ALLOW_NUMPY_SCALARS, UNSIGNED_BYTE_IMAGES_AS_STRING, MODULE_ANNOTATIONS, ) PyOpenGL-3.0.2/OpenGL/AGL/0000755000175000001440000000000012032640120015632 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/AGL/__init__.py0000644000175000001440000000000012025001653017735 0ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/constant.py0000644000175000001440000000560212025001653017441 0ustar mcfletchusers00000000000000"""Implementation of OpenGL constant objects""" import sys from OpenGL import _configflags class Constant( object ): """OpenGL constant that displays itself as a name rather than a value The purpose of this class is to make debugging OpenGL code easier, as you recieve messages that say what value you passed in in a human-readable form, rather than as a bald number that requires lookup and disambiguation in the header file. """ def __new__( cls, name, value ): """Initialise the constant with the given name and value""" if isinstance( value, float ) and cls is not FloatConstant: return FloatConstant( name, value ) elif isinstance( value, (int,long) ) and cls is not IntConstant: return IntConstant( name, value ) elif isinstance( value, (str,unicode) ) and cls is not StringConstant: return StringConstant( name, str(value) ) if isinstance( value, long ): if value > sys.maxint: value = - (value & sys.maxint) base = super(Constant,cls).__new__( cls, value ) base.name = name if _configflags.MODULE_ANNOTATIONS: frame = sys._getframe().f_back if frame and frame.f_back and '__name__' in frame.f_back.f_globals: base.__module__ = frame.f_back.f_globals['__name__'] return base def __repr__( self ): """Return the name, rather than the bald value""" return self.name class NumericConstant( Constant ): """Base class for numeric-value constants""" def __str__( self ): """Return the value as a human-friendly string""" return '%s (%s)'%(self.name,super(Constant,self).__str__()) def __getstate__(self): """Retrieve state for pickle and the like""" return self.name def __setstate__( self, state ): self.name = state class IntConstant( NumericConstant, int ): """Integer constant""" def __str__( self ): """Return the value as a human-friendly string""" return '%s (0x%X)'%(self.name,self) class FloatConstant( NumericConstant, float ): """Float constant""" class StringConstant( Constant, str ): """String constants""" def __repr__( self ): """Return the value as a human-friendly string""" return '%s (%s)'%(self.name,super(Constant,self).__str__()) def __getnewargs__( self ): """Produce the new arguments for recreating the instance""" return (self.name,) + super( Constant, self ).__getnewargs__() if __name__ == "__main__": x = IntConstant( 'testint', 3 ) y = FloatConstant( 'testfloat', 3.0 ) z = StringConstant( 'teststr', 'some testing string' ) import pickle for val in x,y,z: restored = pickle.loads( pickle.dumps( val )) assert restored == val, (str(restored),str(val)) assert restored.name == val.name, (restored.name,val.name) PyOpenGL-3.0.2/OpenGL/GLX/0000755000175000001440000000000012032640120015661 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GLX/__init__.py0000644000175000001440000000015012025001653017772 0ustar mcfletchusers00000000000000"""Platform-specific functions/support for the xorg/X11 windowing system""" from OpenGL.raw.GLX import *PyOpenGL-3.0.2/OpenGL/plugins.py0000644000175000001440000000367712025001653017303 0ustar mcfletchusers00000000000000"""Simple plug-in mechanism to provide replacement for setuptools plugins""" class Plugin( object ): """Base class for plugins to be loaded""" loaded = False def __init__( self, name, import_path, check = None ): """Register the plug-in""" self.name = name self.import_path = import_path self.check = check self.registry.append( self ) def load( self ): """Attempt to load and return our entry point""" return importByName( self.import_path ) @classmethod def match( cls, *args ): """Match to return the plugin which is appropriate to load""" @classmethod def all( cls ): """Iterate over all registered plugins""" return cls.registry[:] def importByName( fullName ): """Import a class by name""" name = fullName.split(".") moduleName = name[:-1] className = name[-1] module = __import__( ".".join(moduleName), {}, {}, moduleName) return getattr( module, className ) class PlatformPlugin( Plugin ): """Platform-level plugin registration""" registry = [] @classmethod def match( cls, key ): """Determine what platform module to load key -- (sys.platform,os.name) key to load """ for possible in key: # prefer sys.platform, *then* os.name for plugin in cls.registry: if plugin.name == possible: return plugin raise KeyError( """No platform plugin registered for %s"""%(key,)) class FormatHandler( Plugin ): """Data-type storage-format handler""" registry = [] @classmethod def match( cls, value ): """Lookup appropriate handler based on value (a type)""" key = '%s.%s'%( value.__module__, value.__name__ ) for plugin in cls.registry: set = getattr( plugin, 'check', ()) if set and key in set: return plugin return NonePyOpenGL-3.0.2/OpenGL/Tk/0000755000175000001440000000000012032640120015605 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/Tk/__init__.py0000644000175000001440000004062712025001653017733 0ustar mcfletchusers00000000000000"""Traditional PyOpenGL interface to Togl This module provides access to the Tkinter Togl widget with a relatively "thick" wrapper API that creates a set of default "examination" operations. Note that many (most) Linux distributions have now split out the Tkinter bindings into a separate package, and that Togl must be separately downloaded (a script is provided in the source distribution which downloads and installs Togl 2.0 binaries for you). Because of the complexity and fragility of the installation, it is recommended that you use Pygame, wxPython, PyGtk, or PyQt for real-world projects, and GLUT or Pygame for simple demo/testing interfaces. The Togl project is located here: http://togl.sourceforge.net/ """ # A class that creates an opengl widget. # Mike Hartshorn # Department of Chemistry # University of York, UK import os,sys, logging log = logging.getLogger( 'OpenGL.Tk' ) from OpenGL.GL import * from OpenGL.GLU import * try: from Tkinter import _default_root from Tkinter import * except ImportError, err: log.error( """Unable to import Tkinter, likely need to install a separate package (python-tk) to have Tkinter support. You likely also want to run the src/togl.py script in the PyOpenGL source distribution to install the Togl widget""" ) raise import math def glTranslateScene(s, x, y, mousex, mousey): glMatrixMode(GL_MODELVIEW) mat = glGetDoublev(GL_MODELVIEW_MATRIX) glLoadIdentity() glTranslatef(s * (x - mousex), s * (mousey - y), 0.0) glMultMatrixd(mat) def glRotateScene(s, xcenter, ycenter, zcenter, x, y, mousex, mousey): glMatrixMode(GL_MODELVIEW) mat = glGetDoublev(GL_MODELVIEW_MATRIX) glLoadIdentity() glTranslatef(xcenter, ycenter, zcenter) glRotatef(s * (y - mousey), 1., 0., 0.) glRotatef(s * (x - mousex), 0., 1., 0.) glTranslatef(-xcenter, -ycenter, -zcenter) glMultMatrixd(mat) def sub(x, y): return map(lambda a, b: a-b, x, y) def dot(x, y): t = 0 for i in range(len(x)): t = t + x[i]*y[i] return t def glDistFromLine(x, p1, p2): f = map(lambda x, y: x-y, p2, p1) g = map(lambda x, y: x-y, x, p1) return dot(g, g) - dot(f, g)**2/dot(f, f) # Keith Junius provided many changes to Togl TOGL_NORMAL = 1 TOGL_OVERLAY = 2 def v3distsq(a,b): d = ( a[0] - b[0], a[1] - b[1], a[2] - b[2] ) return d[0]*d[0] + d[1]*d[1] + d[2]*d[2] # new version from Daniel Faken (Daniel_Faken@brown.edu) for static # loading comptability if _default_root is None: _default_root = Tk() # Add this file's directory to Tcl's search path # This code is intended to work with the src/togl.py script # which will populate the directory with the appropriate # Binary Togl distribution. Note that Togl 2.0 and above # uses "stubs", so we don't care what Tk version we are using, # but that a different build is required for 64-bit Python. # Thus the directory structure is *not* the same as the # original PyOpenGL versions. import sys if sys.maxint > 2L**32: suffix = '-64' else: suffix = '' try: TOGL_DLL_PATH = os.path.join( os.path.dirname(__file__), 'togl-'+ sys.platform + suffix, ) except NameError, err: # no __file__, likely running as an egg TOGL_DLL_PATH = "" if not os.path.isdir( TOGL_DLL_PATH ): log.warn( 'Expected Tk Togl installation in %s', TOGL_DLL_PATH ) log.info( 'Loading Togl from: %s', TOGL_DLL_PATH ) _default_root.tk.call('lappend', 'auto_path', TOGL_DLL_PATH) _default_root.tk.call('package', 'require', 'Togl') try: _default_root.tk.eval('load {} Togl') except TclError, err: log.error( """Failure loading Togl package: %s""", err ) raise # This code is needed to avoid faults on sys.exit() # [DAA, Jan 1998], updated by mcfletch 2009 import atexit def cleanup(): from Tkinter import _default_root, TclError import Tkinter try: if _default_root: _default_root.destroy() except TclError: pass Tkinter._default_root = None atexit.register( cleanup ) class Togl(Widget): """ Togl Widget Keith Junius Department of Biophysical Chemistry University of Groningen, The Netherlands Very basic widget which provides access to Togl functions. """ def __init__(self, master=None, cnf={}, **kw): Widget.__init__(self, master, 'togl', cnf, kw) def render(self): return def swapbuffers(self): self.tk.call(self._w, 'swapbuffers') def makecurrent(self): self.tk.call(self._w, 'makecurrent') def alloccolor(self, red, green, blue): return self.tk.getint(self.tk.call(self._w, 'alloccolor', red, green, blue)) def freecolor(self, index): self.tk.call(self._w, 'freecolor', index) def setcolor(self, index, red, green, blue): self.tk.call(self._w, 'setcolor', index, red, green, blue) def loadbitmapfont(self, fontname): return self.tk.getint(self.tk.call(self._w, 'loadbitmapfont', fontname)) def unloadbitmapfont(self, fontbase): self.tk.call(self._w, 'unloadbitmapfont', fontbase) def uselayer(self, layer): self.tk.call(self._w, 'uselayer', layer) def showoverlay(self): self.tk.call(self._w, 'showoverlay') def hideoverlay(self): self.tk.call(self._w, 'hideoverlay') def existsoverlay(self): return self.tk.getboolean(self.tk.call(self._w, 'existsoverlay')) def getoverlaytransparentvalue(self): return self.tk.getint(self.tk.call(self._w, 'getoverlaytransparentvalue')) def ismappedoverlay(self): return self.tk.getboolean(self.tk.call(self._w, 'ismappedoverlay')) def alloccoloroverlay(self, red, green, blue): return self.tk.getint(self.tk.call(self._w, 'alloccoloroverlay', red, green, blue)) def freecoloroverlay(self, index): self.tk.call(self._w, 'freecoloroverlay', index) class RawOpengl(Widget, Misc): """Widget without any sophisticated bindings\ by Tom Schwaller""" def __init__(self, master=None, cnf={}, **kw): Widget.__init__(self, master, 'togl', cnf, kw) self.bind('', self.tkMap) self.bind('', self.tkExpose) self.bind('', self.tkExpose) def tkRedraw(self, *dummy): # This must be outside of a pushmatrix, since a resize event # will call redraw recursively. self.update_idletasks() self.tk.call(self._w, 'makecurrent') _mode = glGetDoublev(GL_MATRIX_MODE) try: glMatrixMode(GL_PROJECTION) glPushMatrix() try: self.redraw() glFlush() finally: glPopMatrix() finally: glMatrixMode(_mode) self.tk.call(self._w, 'swapbuffers') def tkMap(self, *dummy): self.tkExpose() def tkExpose(self, *dummy): self.tkRedraw() class Opengl(RawOpengl): """\ Tkinter bindings for an Opengl widget. Mike Hartshorn Department of Chemistry University of York, UK http://www.yorvic.york.ac.uk/~mjh/ """ def __init__(self, master=None, cnf={}, **kw): """\ Create an opengl widget. Arrange for redraws when the window is exposed or when it changes size.""" #Widget.__init__(self, master, 'togl', cnf, kw) apply(RawOpengl.__init__, (self, master, cnf), kw) self.initialised = 0 # Current coordinates of the mouse. self.xmouse = 0 self.ymouse = 0 # Where we are centering. self.xcenter = 0.0 self.ycenter = 0.0 self.zcenter = 0.0 # The _back color self.r_back = 1. self.g_back = 0. self.b_back = 1. # Where the eye is self.distance = 10.0 # Field of view in y direction self.fovy = 30.0 # Position of clipping planes. self.near = 0.1 self.far = 1000.0 # Is the widget allowed to autospin? self.autospin_allowed = 0 # Is the widget currently autospinning? self.autospin = 0 # Basic bindings for the virtual trackball self.bind('', self.tkMap) self.bind('', self.tkExpose) self.bind('', self.tkExpose) self.bind('', self.tkHandlePick) #self.bind('', self.tkHandlePick) self.bind('', self.tkRecordMouse) self.bind('', self.tkTranslate) self.bind('', self.StartRotate) self.bind('', self.tkRotate) self.bind('', self.tkAutoSpin) self.bind('', self.tkRecordMouse) self.bind('', self.tkScale) def help(self): """Help for the widget.""" import Dialog d = Dialog.Dialog(None, {'title': 'Viewer help', 'text': 'Button-1: Translate\n' 'Button-2: Rotate\n' 'Button-3: Zoom\n' 'Reset: Resets transformation to identity\n', 'bitmap': 'questhead', 'default': 0, 'strings': ('Done', 'Ok')}) def activate(self): """Cause this Opengl widget to be the current destination for drawing.""" self.tk.call(self._w, 'makecurrent') # This should almost certainly be part of some derived class. # But I have put it here for convenience. def basic_lighting(self): """\ Set up some basic lighting (single infinite light source). Also switch on the depth buffer.""" self.activate() light_position = (1, 1, 1, 0) glLightfv(GL_LIGHT0, GL_POSITION, light_position) glEnable(GL_LIGHTING) glEnable(GL_LIGHT0) glDepthFunc(GL_LESS) glEnable(GL_DEPTH_TEST) glMatrixMode(GL_MODELVIEW) glLoadIdentity() def report_opengl_errors(message = "OpenGL error:"): """Report any opengl errors that occured while drawing.""" print 'report_opengl_errors is now useless. glGetError replaced by GLexception' # while 1: # err_value = glGetError() # if not err_value: break # print message, gluErrorString(err_value) def set_background(self, r, g, b): """Change the background colour of the widget.""" self.r_back = r self.g_back = g self.b_back = b self.tkRedraw() def set_centerpoint(self, x, y, z): """Set the new center point for the model. This is where we are looking.""" self.xcenter = x self.ycenter = y self.zcenter = z self.tkRedraw() def set_eyepoint(self, distance): """Set how far the eye is from the position we are looking.""" self.distance = distance self.tkRedraw() def reset(self): """Reset rotation matrix for this widget.""" glMatrixMode(GL_MODELVIEW) glLoadIdentity() self.tkRedraw() def tkHandlePick(self, event): """Handle a pick on the scene.""" if hasattr(self, 'pick'): # here we need to use glu.UnProject # Tk and X have their origin top left, # while Opengl has its origin bottom left. # So we need to subtract y from the window height to get # the proper pick position for Opengl realy = self.winfo_height() - event.y p1 = gluUnProject(event.x, realy, 0.) p2 = gluUnProject(event.x, realy, 1.) if self.pick(self, p1, p2): """If the pick method returns true we redraw the scene.""" self.tkRedraw() def tkRecordMouse(self, event): """Record the current mouse position.""" self.xmouse = event.x self.ymouse = event.y def StartRotate(self, event): # Switch off any autospinning if it was happening self.autospin = 0 self.tkRecordMouse(event) def tkScale(self, event): """Scale the scene. Achieved by moving the eye position. Dragging up zooms in, while dragging down zooms out """ scale = 1 - 0.01 * (event.y - self.ymouse) # do some sanity checks, scale no more than # 1:1000 on any given click+drag if scale < 0.001: scale = 0.001 elif scale > 1000: scale = 1000 self.distance = self.distance * scale self.tkRedraw() self.tkRecordMouse(event) def do_AutoSpin(self): s = 0.5 self.activate() glRotateScene(0.5, self.xcenter, self.ycenter, self.zcenter, self.yspin, self.xspin, 0, 0) self.tkRedraw() if self.autospin: self.after(10, self.do_AutoSpin) def tkAutoSpin(self, event): """Perform autospin of scene.""" self.after(4) self.update_idletasks() # This could be done with one call to pointerxy but I'm not sure # it would any quicker as we would have to split up the resulting # string and then conv x = self.tk.getint(self.tk.call('winfo', 'pointerx', self._w)) y = self.tk.getint(self.tk.call('winfo', 'pointery', self._w)) if self.autospin_allowed: if x != event.x_root and y != event.y_root: self.autospin = 1 self.yspin = x - event.x_root self.xspin = y - event.y_root self.after(10, self.do_AutoSpin) def tkRotate(self, event): """Perform rotation of scene.""" self.activate() glRotateScene(0.5, self.xcenter, self.ycenter, self.zcenter, event.x, event.y, self.xmouse, self.ymouse) self.tkRedraw() self.tkRecordMouse(event) def tkTranslate(self, event): """Perform translation of scene.""" self.activate() # Scale mouse translations to object viewplane so object tracks with mouse win_height = max( 1,self.winfo_height() ) obj_c = ( self.xcenter, self.ycenter, self.zcenter ) win = gluProject( obj_c[0], obj_c[1], obj_c[2]) obj = gluUnProject( win[0], win[1] + 0.5 * win_height, win[2]) dist = math.sqrt( v3distsq( obj, obj_c ) ) scale = abs( dist / ( 0.5 * win_height ) ) glTranslateScene(scale, event.x, event.y, self.xmouse, self.ymouse) self.tkRedraw() self.tkRecordMouse(event) def tkRedraw(self, *dummy): """Cause the opengl widget to redraw itself.""" if not self.initialised: return self.activate() glPushMatrix() # Protect our matrix self.update_idletasks() self.activate() w = self.winfo_width() h = self.winfo_height() glViewport(0, 0, w, h) # Clear the background and depth buffer. glClearColor(self.r_back, self.g_back, self.b_back, 0.) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(self.fovy, float(w)/float(h), self.near, self.far) if 0: # Now translate the scene origin away from the world origin glMatrixMode(GL_MODELVIEW) mat = glGetDoublev(GL_MODELVIEW_MATRIX) glLoadIdentity() glTranslatef(-self.xcenter, -self.ycenter, -(self.zcenter+self.distance)) glMultMatrixd(mat) else: gluLookAt(self.xcenter, self.ycenter, self.zcenter + self.distance, self.xcenter, self.ycenter, self.zcenter, 0., 1., 0.) glMatrixMode(GL_MODELVIEW) # Call objects redraw method. self.redraw(self) glFlush() # Tidy up glPopMatrix() # Restore the matrix self.tk.call(self._w, 'swapbuffers') def redraw( self, *args, **named ): """Prevent access errors if user doesn't set redraw fast enough""" def tkMap(self, *dummy): """Cause the opengl widget to redraw itself.""" self.tkExpose() def tkExpose(self, *dummy): """Redraw the widget. Make it active, update tk events, call redraw procedure and swap the buffers. Note: swapbuffers is clever enough to only swap double buffered visuals.""" self.activate() if not self.initialised: self.basic_lighting() self.initialised = 1 self.tkRedraw() def tkPrint(self, file): """Turn the current scene into PostScript via the feedback buffer.""" self.activate() PyOpenGL-3.0.2/OpenGL/__init__.py0000644000175000001440000002151712025001653017352 0ustar mcfletchusers00000000000000"""ctypes-based OpenGL wrapper for Python This is the PyOpenGL 3.x tree, it attempts to provide a largely compatible API for code written with the PyOpenGL 2.x series using the ctypes foreign function interface system. Configuration Variables: There are a few configuration variables in this top-level module. Applications should be the only code that tweaks these variables, mid-level libraries should not take it upon themselves to disable/enable features at this level. The implication there is that your library code should be able to work with any of the valid configurations available with these sets of flags. Further, once any entry point has been loaded, the variables can no longer be updated. The OpenGL._confligflags module imports the variables from this location, and once that import occurs the flags should no longer be changed. ERROR_CHECKING -- if set to a False value before importing any OpenGL.* libraries will completely disable error-checking. This can dramatically improve performance, but makes debugging far harder. This is intended to be turned off *only* in a production environment where you *know* that your code is entirely free of situations where you use exception-handling to handle error conditions, i.e. where you are explicitly checking for errors everywhere they can occur in your code. Default: True ERROR_LOGGING -- If True, then wrap array-handler functions with error-logging operations so that all exceptions will be reported to log objects in OpenGL.logs, note that this means you will get lots of error logging whenever you have code that tests by trying something and catching an error, this is intended to be turned on only during development so that you can see why something is failing. Errors are normally logged to the OpenGL.errors logger. Only triggers if ERROR_CHECKING is True Default: False ERROR_ON_COPY -- if set to a True value before importing the numpy/lists support modules, will cause array operations to raise OpenGL.error.CopyError if the operation would cause a data-copy in order to make the passed data-type match the target data-type. This effectively disables all list/tuple array support, as they are inherently copy-based. This feature allows for optimisation of your application. It should only be enabled during testing stages to prevent raising errors on recoverable conditions at run-time. Note: this feature does not currently work with numarray or Numeric arrays. Default: False CONTEXT_CHECKING -- if set to True, PyOpenGL will wrap *every* GL and GLU call with a check to see if there is a valid context. If there is no valid context then will throw OpenGL.errors.NoContext. This is an *extremely* slow check and is not enabled by default, intended to be enabled in order to track down (wrong) code that uses GL/GLU entry points before the context has been initialized (something later Linux GLs are very picky about). Default: False STORE_POINTERS -- if set to True, PyOpenGL array operations will attempt to store references to pointers which are being passed in order to prevent memory-access failures if the pointed-to-object goes out of scope. This behaviour is primarily intended to allow temporary arrays to be created without causing memory errors, thus it is trading off performance for safety. To use this flag effectively, you will want to first set ERROR_ON_COPY to True and eliminate all cases where you are copying arrays. Copied arrays *will* segfault your application deep within the GL if you disable this feature! Once you have eliminated all copying of arrays in your application, you will further need to be sure that all arrays which are passed to the GL are stored for at least the time period for which they are active in the GL. That is, you must be sure that your array objects live at least until they are no longer bound in the GL. This is something you need to confirm by thinking about your application's structure. When you are sure your arrays won't cause seg-faults, you can set STORE_POINTERS=False in your application and enjoy a (slight) speed up. Note: this flag is *only* observed when ERROR_ON_COPY == True, as a safety measure to prevent pointless segfaults Default: True WARN_ON_FORMAT_UNAVAILABLE -- If True, generates logging-module warn-level events when a FormatHandler plugin is not loadable (with traceback). Default: False FULL_LOGGING -- If True, then wrap functions with logging operations which reports each call along with its arguments to the OpenGL.calltrace logger at the INFO level. This is *extremely* slow. You should *not* enable this in production code! You will need to have a logging configuration (e.g. logging.basicConfig() ) call in your top-level script to see the results of the logging. Default: False ALLOW_NUMPY_SCALARS -- if True, we will wrap all GLint/GLfloat calls conversions with wrappers that allow for passing numpy scalar values. Note that this is experimental, *not* reliable, and very slow! Note that byte/char types are not wrapped. Default: False UNSIGNED_BYTE_IMAGES_AS_STRING -- if True, we will return GL_UNSIGNED_BYTE image-data as strings, instead of arrays for glReadPixels and glGetTexImage Default: True FORWARD_COMPATIBLE_ONLY -- only include OpenGL 3.1 compatible entry points. Note that this will generally break most PyOpenGL code that hasn't been explicitly made "legacy free" via a significant rewrite. Default: False SIZE_1_ARRAY_UNPACK -- if True, unpack size-1 arrays to be scalar values, as done in PyOpenGL 1.5 -> 3.0.0, that is, if a glGenList( 1 ) is done, return a uint rather than an array of uints. Default: True USE_ACCELERATE -- if True, attempt to use the OpenGL_accelerate package to provide Cython-coded accelerators for core wrapping operations. Default: True MODULE_ANNOTATIONS -- if True, attempt to annotate alternates() and constants to track in which module they are defined (only useful for the documentation-generation passes, really). Default: False """ from OpenGL.version import __version__ ERROR_CHECKING = True ERROR_LOGGING = False ERROR_ON_COPY = False ARRAY_SIZE_CHECKING = True STORE_POINTERS = True WARN_ON_FORMAT_UNAVAILABLE = False FORWARD_COMPATIBLE_ONLY = False SIZE_1_ARRAY_UNPACK = True USE_ACCELERATE = True CONTEXT_CHECKING = False FULL_LOGGING = False ALLOW_NUMPY_SCALARS = False UNSIGNED_BYTE_IMAGES_AS_STRING = True MODULE_ANNOTATIONS = False # Declarations of plugins provided by PyOpenGL itself from OpenGL.plugins import PlatformPlugin, FormatHandler PlatformPlugin( 'nt', 'OpenGL.platform.win32.Win32Platform' ) PlatformPlugin( 'linux2', 'OpenGL.platform.glx.GLXPlatform' ) PlatformPlugin( 'darwin', 'OpenGL.platform.darwin.DarwinPlatform' ) PlatformPlugin( 'posix', 'OpenGL.platform.glx.GLXPlatform' ) PlatformPlugin( 'osmesa', 'OpenGL.platform.osmesa.OSMesaPlatform') FormatHandler( 'none', 'OpenGL.arrays.nones.NoneHandler' ) import sys if sys.version_info[0] < 3: FormatHandler( 'str', 'OpenGL.arrays.strings.StringHandler' ) FormatHandler( 'unicode', 'OpenGL.arrays.strings.UnicodeHandler' ) else: FormatHandler( 'bytes', 'OpenGL.arrays.strings.StringHandler' ) FormatHandler( 'str', 'OpenGL.arrays.strings.UnicodeHandler' ) FormatHandler( 'list', 'OpenGL.arrays.lists.ListHandler', ['__builtin__.list','__builtin__.tuple'] ) FormatHandler( 'numbers', 'OpenGL.arrays.numbers.NumberHandler' ) FormatHandler( 'ctypesarray', 'OpenGL.arrays.ctypesarrays.CtypesArrayHandler', [ '_ctypes.ArrayType','_ctypes.PyCArrayType', ], ) FormatHandler( 'ctypesparameter', 'OpenGL.arrays.ctypesparameters.CtypesParameterHandler', ) FormatHandler( 'ctypespointer', 'OpenGL.arrays.ctypespointers.CtypesPointerHandler' ) FormatHandler( 'numpy', 'OpenGL.arrays.numpymodule.NumpyHandler', ['numpy.ndarray'] ) FormatHandler( 'numeric', 'OpenGL.arrays.numeric.NumericHandler', ) FormatHandler( 'vbo', 'OpenGL.arrays.vbo.VBOHandler', ['OpenGL.arrays.vbo.VBO','OpenGL_accelerate.vbo.VBO'] ) FormatHandler( 'vbooffset', 'OpenGL.arrays.vbo.VBOOffsetHandler', ['OpenGL.arrays.vbo.VBOOffset','OpenGL_accelerate.vbo.VBOOffset'] ) PyOpenGL-3.0.2/OpenGL/extensions.py0000644000175000001440000001612712025001744020014 0ustar mcfletchusers00000000000000"""Extension module support methods This module provides the tools required to check whether an extension is available """ from OpenGL.latebind import LateBind from OpenGL._bytes import bytes,as_8_bit import OpenGL as root import sys import logging log = logging.getLogger( 'OpenGL.extensions' ) VERSION_PREFIX = as_8_bit('GL_VERSION_GL_') CURRENT_GL_VERSION = None AVAILABLE_GL_EXTENSIONS = [] AVAILABLE_GLU_EXTENSIONS = [] # version tuple -> list of implicitly included extensions... VERSION_EXTENSIONS = [ ((3,0), [ 'GL_ARB_vertex_array_object', 'GL_ARB_texture_buffer_object', 'GL_ARB_framebuffer_object', 'GL_ARB_map_buffer_range', ]), ((3,1), [ 'GL_ARB_copy_buffer', 'GL_ARB_uniform_buffer_object', ]), ((3,2), [ 'GL_ARB_draw_elements_base_vertex', 'GL_ARB_provoking_vertex', 'GL_ARB_sync', 'GL_ARB_texture_multisample', ]), ((3,3), [ 'GL_ARB_texture_multisample', 'GL_ARB_blend_func_extended', 'GL_ARB_sampler_objects', 'GL_ARB_explicit_attrib_location', 'GL_ARB_occlusion_query2', 'GL_ARB_shader_bit_encoding', 'GL_ARB_texture_rgb10_a2ui', 'GL_ARB_texture_swizzle', 'GL_ARB_timer_query', 'GL_ARB_vertex_type_2_10_10_10_rev', ]), ((4,0), [ 'GL_ARB_texture_query_lod', 'GL_ARB_draw_indirect', 'GL_ARB_gpu_shader5', 'GL_ARB_gpu_shader_fp64', 'GL_ARB_shader_subroutine', 'GL_ARB_tessellation_shader', 'GL_ARB_texture_buffer_object_rgb32', 'GL_ARB_texture_cube_map_array', 'GL_ARB_texture_gather', 'GL_ARB_transform_feedback2', 'GL_ARB_transform_feedback3', ]), ((4,1), [ 'GL_ARB_ES2_compatibility', 'GL_ARB_get_program_binary', 'GL_ARB_separate_shader_objects', 'GL_ARB_shader_precision', 'GL_ARB_vertex_attrib_64bit', 'GL_ARB_viewport_array', ]), ((4,2), [ 'GL_ARB_base_instance', 'GL_ARB_shading_language_420pack', 'GL_ARB_transform_feedback_instanced', 'GL_ARB_compressed_texture_pixel_storage', 'GL_ARB_conservative_depth', 'GL_ARB_internalformat_query', 'GL_ARB_map_buffer_alignment', 'GL_ARB_shader_atomic_counters', 'GL_ARB_shader_image_load_store', 'GL_ARB_shading_language_packing', 'GL_ARB_texture_storage', ]), ] def getGLVersion( ): """Retrieve 2-int declaration of major/minor GL version returns [int(major),int(minor)] or False if not loaded """ global CURRENT_GL_VERSION if not CURRENT_GL_VERSION: from OpenGL.GL import glGetString, GL_VERSION new = glGetString( GL_VERSION ) log.info( 'OpenGL Version: %s', new ) if new: CURRENT_GL_VERSION = [ int(x) for x in new.split(as_8_bit(' '),1)[0].split( as_8_bit('.') ) ] else: return False # not yet loaded/supported return CURRENT_GL_VERSION def hasGLExtension( specifier ): """Given a string specifier, check for extension being available""" global AVAILABLE_GL_EXTENSIONS specifier = as_8_bit(specifier).replace(as_8_bit('.'),as_8_bit('_')) if specifier.startswith( VERSION_PREFIX ): specifier = [ int(x) for x in specifier[ len(VERSION_PREFIX):].split(as_8_bit('_')) ] version = getGLVersion() if not version: return version return specifier <= version else: from OpenGL.GL import glGetString, GL_EXTENSIONS from OpenGL import error if not AVAILABLE_GL_EXTENSIONS: try: AVAILABLE_GL_EXTENSIONS[:] = glGetString( GL_EXTENSIONS ).split() except (AttributeError, error.GLError), err: # OpenGL 3.0 deprecates glGetString( GL_EXTENSIONS ) from OpenGL.GL.VERSION.GL_3_0 import GL_NUM_EXTENSIONS, glGetStringi from OpenGL.GL import glGetIntegerv count = glGetIntegerv( GL_NUM_EXTENSIONS ) for i in range( count ): extension = glGetStringi( GL_EXTENSIONS, i ) AVAILABLE_GL_EXTENSIONS.append( extension ) # Add included-by-reference extensions... version = getGLVersion() if not version: # should not be possible? return version check = tuple( version[:2] ) for (v,v_exts) in VERSION_EXTENSIONS: if v <= check: for v_ext in v_exts: if v_ext not in AVAILABLE_GL_EXTENSIONS: AVAILABLE_GL_EXTENSIONS.append( v_ext ) else: break result = specifier in AVAILABLE_GL_EXTENSIONS log.info( 'GL Extension %s %s', specifier, ['unavailable','available'][bool(result)] ) return result def hasGLUExtension( specifier ): """Given a string specifier, check for extension being available""" from OpenGL.GLU import gluGetString, GLU_EXTENSIONS if not AVAILABLE_GLU_EXTENSIONS: AVAILABLE_GLU_EXTENSIONS[:] = gluGetString( GLU_EXTENSIONS ) return specifier.replace(as_8_bit('.'),as_8_bit('_')) in AVAILABLE_GLU_EXTENSIONS class _Alternate( LateBind ): def __init__( self, name, *alternates ): """Initialize set of alternative implementations of the same function""" self.__name__ = name self._alternatives = alternates if root.MODULE_ANNOTATIONS: frame = sys._getframe().f_back if frame and frame.f_back and '__name__' in frame.f_back.f_globals: self.__module__ = frame.f_back.f_globals['__name__'] def __bool__( self ): from OpenGL import error try: return bool( self.getFinalCall()) except error.NullFunctionError, err: return False __nonzero__ = __bool__ # Python 2.6 compatibility def finalise( self ): """Call, doing a late lookup and bind to find an implementation""" for alternate in self._alternatives: if alternate: log.info( """Chose alternate: %s from %s""", alternate.__name__, ", ".join([x.__name__ for x in self._alternatives]) ) return alternate from OpenGL import error raise error.NullFunctionError( """Attempt to call an undefined alternate function (%s), check for bool(%s) before calling"""%( ', '.join([x.__name__ for x in self._alternatives]), self.__name__, ) ) def alternate( name, *functions ): """Construct a callable that functions as the first implementation found of given set of alternatives if name is a function then its name will be used.... """ if not isinstance( name, (str,unicode)): functions = (name,)+functions name = name.__name__ return type( name, (_Alternate,), {} )( name, *functions ) PyOpenGL-3.0.2/OpenGL/WGL/0000755000175000001440000000000012032640120015660 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/WGL/__init__.py0000644000175000001440000000010512025001653017771 0ustar mcfletchusers00000000000000from OpenGL.raw.WGL import * wglUseFontBitmaps = wglUseFontBitmapsW PyOpenGL-3.0.2/OpenGL/raw/0000755000175000001440000000000012032640120016020 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/_GLX_NV.py0000644000175000001440000013530612025001653017602 0ustar mcfletchusers00000000000000# BEGIN GENERATED CONTENT (do not edit below this line) # This content is generated by ./gengl.py. # Wrapper for http://developer.download.nvidia.com/opengl/includes/glxext.h from OpenGL import platform, constant from ctypes import * c_void = None # H (/usr/include/GL/glx.h:26) # ARB_get_proc_address (/usr/include/GL/glx.h:327) # GLXEXT_LEGACY (/usr/include/GL/glx.h:344) GLX_GLXEXT_VERSION = constant.Constant( 'GLX_GLXEXT_VERSION', 10 ) # ARB_get_proc_address (GL/glxext.h:59) # ARB_multisample (GL/glxext.h:62) GLX_SAMPLE_BUFFERS_ARB = constant.Constant( 'GLX_SAMPLE_BUFFERS_ARB', 100000 ) GLX_SAMPLES_ARB = constant.Constant( 'GLX_SAMPLES_ARB', 100001 ) # ARB_fbconfig_float (GL/glxext.h:67) GLX_RGBA_FLOAT_TYPE_ARB = constant.Constant( 'GLX_RGBA_FLOAT_TYPE_ARB', 8377 ) GLX_RGBA_FLOAT_BIT_ARB = constant.Constant( 'GLX_RGBA_FLOAT_BIT_ARB', 4 ) # SGIS_multisample (GL/glxext.h:72) GLX_SAMPLE_BUFFERS_SGIS = constant.Constant( 'GLX_SAMPLE_BUFFERS_SGIS', 100000 ) GLX_SAMPLES_SGIS = constant.Constant( 'GLX_SAMPLES_SGIS', 100001 ) # EXT_visual_info (GL/glxext.h:77) GLX_X_VISUAL_TYPE_EXT = constant.Constant( 'GLX_X_VISUAL_TYPE_EXT', 34 ) GLX_TRANSPARENT_TYPE_EXT = constant.Constant( 'GLX_TRANSPARENT_TYPE_EXT', 35 ) GLX_TRANSPARENT_INDEX_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_INDEX_VALUE_EXT', 36 ) GLX_TRANSPARENT_RED_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_RED_VALUE_EXT', 37 ) GLX_TRANSPARENT_GREEN_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_GREEN_VALUE_EXT', 38 ) GLX_TRANSPARENT_BLUE_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_BLUE_VALUE_EXT', 39 ) GLX_TRANSPARENT_ALPHA_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_ALPHA_VALUE_EXT', 40 ) GLX_NONE_EXT = constant.Constant( 'GLX_NONE_EXT', 32768 ) GLX_TRUE_COLOR_EXT = constant.Constant( 'GLX_TRUE_COLOR_EXT', 32770 ) GLX_DIRECT_COLOR_EXT = constant.Constant( 'GLX_DIRECT_COLOR_EXT', 32771 ) GLX_PSEUDO_COLOR_EXT = constant.Constant( 'GLX_PSEUDO_COLOR_EXT', 32772 ) GLX_STATIC_COLOR_EXT = constant.Constant( 'GLX_STATIC_COLOR_EXT', 32773 ) GLX_GRAY_SCALE_EXT = constant.Constant( 'GLX_GRAY_SCALE_EXT', 32774 ) GLX_STATIC_GRAY_EXT = constant.Constant( 'GLX_STATIC_GRAY_EXT', 32775 ) GLX_TRANSPARENT_RGB_EXT = constant.Constant( 'GLX_TRANSPARENT_RGB_EXT', 32776 ) GLX_TRANSPARENT_INDEX_EXT = constant.Constant( 'GLX_TRANSPARENT_INDEX_EXT', 32777 ) # SGI_swap_control (GL/glxext.h:96) # SGI_video_sync (GL/glxext.h:99) # SGI_make_current_read (GL/glxext.h:102) # SGIX_video_source (GL/glxext.h:105) # EXT_visual_rating (GL/glxext.h:108) GLX_VISUAL_CAVEAT_EXT = constant.Constant( 'GLX_VISUAL_CAVEAT_EXT', 32 ) GLX_SLOW_VISUAL_EXT = constant.Constant( 'GLX_SLOW_VISUAL_EXT', 32769 ) GLX_NON_CONFORMANT_VISUAL_EXT = constant.Constant( 'GLX_NON_CONFORMANT_VISUAL_EXT', 32781 ) # EXT_import_context (GL/glxext.h:115) GLX_SHARE_CONTEXT_EXT = constant.Constant( 'GLX_SHARE_CONTEXT_EXT', 32778 ) GLX_VISUAL_ID_EXT = constant.Constant( 'GLX_VISUAL_ID_EXT', 32779 ) GLX_SCREEN_EXT = constant.Constant( 'GLX_SCREEN_EXT', 32780 ) # SGIX_fbconfig (GL/glxext.h:121) GLX_WINDOW_BIT_SGIX = constant.Constant( 'GLX_WINDOW_BIT_SGIX', 1 ) GLX_PIXMAP_BIT_SGIX = constant.Constant( 'GLX_PIXMAP_BIT_SGIX', 2 ) GLX_RGBA_BIT_SGIX = constant.Constant( 'GLX_RGBA_BIT_SGIX', 1 ) GLX_COLOR_INDEX_BIT_SGIX = constant.Constant( 'GLX_COLOR_INDEX_BIT_SGIX', 2 ) GLX_DRAWABLE_TYPE_SGIX = constant.Constant( 'GLX_DRAWABLE_TYPE_SGIX', 32784 ) GLX_RENDER_TYPE_SGIX = constant.Constant( 'GLX_RENDER_TYPE_SGIX', 32785 ) GLX_X_RENDERABLE_SGIX = constant.Constant( 'GLX_X_RENDERABLE_SGIX', 32786 ) GLX_FBCONFIG_ID_SGIX = constant.Constant( 'GLX_FBCONFIG_ID_SGIX', 32787 ) GLX_RGBA_TYPE_SGIX = constant.Constant( 'GLX_RGBA_TYPE_SGIX', 32788 ) GLX_COLOR_INDEX_TYPE_SGIX = constant.Constant( 'GLX_COLOR_INDEX_TYPE_SGIX', 32789 ) # SGIX_pbuffer (GL/glxext.h:135) GLX_PBUFFER_BIT_SGIX = constant.Constant( 'GLX_PBUFFER_BIT_SGIX', 4 ) GLX_BUFFER_CLOBBER_MASK_SGIX = constant.Constant( 'GLX_BUFFER_CLOBBER_MASK_SGIX', 134217728 ) GLX_FRONT_LEFT_BUFFER_BIT_SGIX = constant.Constant( 'GLX_FRONT_LEFT_BUFFER_BIT_SGIX', 1 ) GLX_FRONT_RIGHT_BUFFER_BIT_SGIX = constant.Constant( 'GLX_FRONT_RIGHT_BUFFER_BIT_SGIX', 2 ) GLX_BACK_LEFT_BUFFER_BIT_SGIX = constant.Constant( 'GLX_BACK_LEFT_BUFFER_BIT_SGIX', 4 ) GLX_BACK_RIGHT_BUFFER_BIT_SGIX = constant.Constant( 'GLX_BACK_RIGHT_BUFFER_BIT_SGIX', 8 ) GLX_AUX_BUFFERS_BIT_SGIX = constant.Constant( 'GLX_AUX_BUFFERS_BIT_SGIX', 16 ) GLX_DEPTH_BUFFER_BIT_SGIX = constant.Constant( 'GLX_DEPTH_BUFFER_BIT_SGIX', 32 ) GLX_STENCIL_BUFFER_BIT_SGIX = constant.Constant( 'GLX_STENCIL_BUFFER_BIT_SGIX', 64 ) GLX_ACCUM_BUFFER_BIT_SGIX = constant.Constant( 'GLX_ACCUM_BUFFER_BIT_SGIX', 128 ) GLX_SAMPLE_BUFFERS_BIT_SGIX = constant.Constant( 'GLX_SAMPLE_BUFFERS_BIT_SGIX', 256 ) GLX_MAX_PBUFFER_WIDTH_SGIX = constant.Constant( 'GLX_MAX_PBUFFER_WIDTH_SGIX', 32790 ) GLX_MAX_PBUFFER_HEIGHT_SGIX = constant.Constant( 'GLX_MAX_PBUFFER_HEIGHT_SGIX', 32791 ) GLX_MAX_PBUFFER_PIXELS_SGIX = constant.Constant( 'GLX_MAX_PBUFFER_PIXELS_SGIX', 32792 ) GLX_OPTIMAL_PBUFFER_WIDTH_SGIX = constant.Constant( 'GLX_OPTIMAL_PBUFFER_WIDTH_SGIX', 32793 ) GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX = constant.Constant( 'GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX', 32794 ) GLX_PRESERVED_CONTENTS_SGIX = constant.Constant( 'GLX_PRESERVED_CONTENTS_SGIX', 32795 ) GLX_LARGEST_PBUFFER_SGIX = constant.Constant( 'GLX_LARGEST_PBUFFER_SGIX', 32796 ) GLX_WIDTH_SGIX = constant.Constant( 'GLX_WIDTH_SGIX', 32797 ) GLX_HEIGHT_SGIX = constant.Constant( 'GLX_HEIGHT_SGIX', 32798 ) GLX_EVENT_MASK_SGIX = constant.Constant( 'GLX_EVENT_MASK_SGIX', 32799 ) GLX_DAMAGED_SGIX = constant.Constant( 'GLX_DAMAGED_SGIX', 32800 ) GLX_SAVED_SGIX = constant.Constant( 'GLX_SAVED_SGIX', 32801 ) GLX_WINDOW_SGIX = constant.Constant( 'GLX_WINDOW_SGIX', 32802 ) GLX_PBUFFER_SGIX = constant.Constant( 'GLX_PBUFFER_SGIX', 32803 ) # SGI_cushion (GL/glxext.h:163) # SGIX_video_resize (GL/glxext.h:166) GLX_SYNC_FRAME_SGIX = constant.Constant( 'GLX_SYNC_FRAME_SGIX', 0 ) GLX_SYNC_SWAP_SGIX = constant.Constant( 'GLX_SYNC_SWAP_SGIX', 1 ) # SGIX_dmbuffer (GL/glxext.h:171) GLX_DIGITAL_MEDIA_PBUFFER_SGIX = constant.Constant( 'GLX_DIGITAL_MEDIA_PBUFFER_SGIX', 32804 ) # SGIX_swap_group (GL/glxext.h:175) # SGIX_swap_barrier (GL/glxext.h:178) # SGIS_blended_overlay (GL/glxext.h:181) GLX_BLENDED_RGBA_SGIS = constant.Constant( 'GLX_BLENDED_RGBA_SGIS', 32805 ) # SGIS_shared_multisample (GL/glxext.h:185) GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS = constant.Constant( 'GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS', 32806 ) GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS = constant.Constant( 'GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS', 32807 ) # SUN_get_transparent_index (GL/glxext.h:190) # 3DFX_multisample (GL/glxext.h:193) GLX_SAMPLE_BUFFERS_3DFX = constant.Constant( 'GLX_SAMPLE_BUFFERS_3DFX', 32848 ) GLX_SAMPLES_3DFX = constant.Constant( 'GLX_SAMPLES_3DFX', 32849 ) # MESA_copy_sub_buffer (GL/glxext.h:198) # MESA_pixmap_colormap (GL/glxext.h:201) # MESA_release_buffers (GL/glxext.h:204) # MESA_set_3dfx_mode (GL/glxext.h:207) GLX_3DFX_WINDOW_MODE_MESA = constant.Constant( 'GLX_3DFX_WINDOW_MODE_MESA', 1 ) GLX_3DFX_FULLSCREEN_MODE_MESA = constant.Constant( 'GLX_3DFX_FULLSCREEN_MODE_MESA', 2 ) # SGIX_visual_select_group (GL/glxext.h:212) GLX_VISUAL_SELECT_GROUP_SGIX = constant.Constant( 'GLX_VISUAL_SELECT_GROUP_SGIX', 32808 ) # OML_swap_method (GL/glxext.h:216) GLX_SWAP_METHOD_OML = constant.Constant( 'GLX_SWAP_METHOD_OML', 32864 ) GLX_SWAP_EXCHANGE_OML = constant.Constant( 'GLX_SWAP_EXCHANGE_OML', 32865 ) GLX_SWAP_COPY_OML = constant.Constant( 'GLX_SWAP_COPY_OML', 32866 ) GLX_SWAP_UNDEFINED_OML = constant.Constant( 'GLX_SWAP_UNDEFINED_OML', 32867 ) # OML_sync_control (GL/glxext.h:223) # NV_float_buffer (GL/glxext.h:226) GLX_FLOAT_COMPONENTS_NV = constant.Constant( 'GLX_FLOAT_COMPONENTS_NV', 8368 ) # SGIX_hyperpipe (GL/glxext.h:230) GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX = constant.Constant( 'GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX', 80 ) GLX_BAD_HYPERPIPE_CONFIG_SGIX = constant.Constant( 'GLX_BAD_HYPERPIPE_CONFIG_SGIX', 91 ) GLX_BAD_HYPERPIPE_SGIX = constant.Constant( 'GLX_BAD_HYPERPIPE_SGIX', 92 ) GLX_HYPERPIPE_DISPLAY_PIPE_SGIX = constant.Constant( 'GLX_HYPERPIPE_DISPLAY_PIPE_SGIX', 1 ) GLX_HYPERPIPE_RENDER_PIPE_SGIX = constant.Constant( 'GLX_HYPERPIPE_RENDER_PIPE_SGIX', 2 ) GLX_PIPE_RECT_SGIX = constant.Constant( 'GLX_PIPE_RECT_SGIX', 1 ) GLX_PIPE_RECT_LIMITS_SGIX = constant.Constant( 'GLX_PIPE_RECT_LIMITS_SGIX', 2 ) GLX_HYPERPIPE_STEREO_SGIX = constant.Constant( 'GLX_HYPERPIPE_STEREO_SGIX', 3 ) GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX = constant.Constant( 'GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX', 4 ) GLX_HYPERPIPE_ID_SGIX = constant.Constant( 'GLX_HYPERPIPE_ID_SGIX', 32816 ) # MESA_agp_offset (GL/glxext.h:243) # ARB_get_proc_address (GL/glxext.h:249) # SGIX_video_source (GL/glxext.h:256) # SGIX_fbconfig (GL/glxext.h:260) # SGIX_pbuffer (GL/glxext.h:265) # NV_swap_group (GL/glxext.h:282) # NV_video_out (GL/glxext.h:285) GLX_VIDEO_OUT_COLOR_NV = constant.Constant( 'GLX_VIDEO_OUT_COLOR_NV', 8387 ) GLX_VIDEO_OUT_ALPHA_NV = constant.Constant( 'GLX_VIDEO_OUT_ALPHA_NV', 8388 ) GLX_VIDEO_OUT_DEPTH_NV = constant.Constant( 'GLX_VIDEO_OUT_DEPTH_NV', 8389 ) GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV = constant.Constant( 'GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV', 8390 ) GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV = constant.Constant( 'GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV', 8391 ) GLX_VIDEO_OUT_FRAME_NV = constant.Constant( 'GLX_VIDEO_OUT_FRAME_NV', 8392 ) GLX_VIDEO_OUT_FIELD_1_NV = constant.Constant( 'GLX_VIDEO_OUT_FIELD_1_NV', 8393 ) GLX_VIDEO_OUT_FIELD_2_NV = constant.Constant( 'GLX_VIDEO_OUT_FIELD_2_NV', 8394 ) # EXT_texture_from_pixmap (GL/glxext.h:305) GLX_BIND_TO_TEXTURE_RGB_EXT = constant.Constant( 'GLX_BIND_TO_TEXTURE_RGB_EXT', 8400 ) GLX_BIND_TO_TEXTURE_RGBA_EXT = constant.Constant( 'GLX_BIND_TO_TEXTURE_RGBA_EXT', 8401 ) GLX_BIND_TO_MIPMAP_TEXTURE_EXT = constant.Constant( 'GLX_BIND_TO_MIPMAP_TEXTURE_EXT', 8402 ) GLX_BIND_TO_TEXTURE_TARGETS_EXT = constant.Constant( 'GLX_BIND_TO_TEXTURE_TARGETS_EXT', 8403 ) GLX_Y_INVERTED_EXT = constant.Constant( 'GLX_Y_INVERTED_EXT', 8404 ) GLX_TEXTURE_FORMAT_EXT = constant.Constant( 'GLX_TEXTURE_FORMAT_EXT', 8405 ) GLX_TEXTURE_TARGET_EXT = constant.Constant( 'GLX_TEXTURE_TARGET_EXT', 8406 ) GLX_MIPMAP_TEXTURE_EXT = constant.Constant( 'GLX_MIPMAP_TEXTURE_EXT', 8407 ) GLX_TEXTURE_FORMAT_NONE_EXT = constant.Constant( 'GLX_TEXTURE_FORMAT_NONE_EXT', 8408 ) GLX_TEXTURE_FORMAT_RGB_EXT = constant.Constant( 'GLX_TEXTURE_FORMAT_RGB_EXT', 8409 ) GLX_TEXTURE_FORMAT_RGBA_EXT = constant.Constant( 'GLX_TEXTURE_FORMAT_RGBA_EXT', 8410 ) GLX_TEXTURE_1D_BIT_EXT = constant.Constant( 'GLX_TEXTURE_1D_BIT_EXT', 1 ) GLX_TEXTURE_2D_BIT_EXT = constant.Constant( 'GLX_TEXTURE_2D_BIT_EXT', 2 ) GLX_TEXTURE_RECTANGLE_BIT_EXT = constant.Constant( 'GLX_TEXTURE_RECTANGLE_BIT_EXT', 4 ) GLX_TEXTURE_1D_EXT = constant.Constant( 'GLX_TEXTURE_1D_EXT', 8411 ) GLX_TEXTURE_2D_EXT = constant.Constant( 'GLX_TEXTURE_2D_EXT', 8412 ) GLX_TEXTURE_RECTANGLE_EXT = constant.Constant( 'GLX_TEXTURE_RECTANGLE_EXT', 8413 ) GLX_FRONT_LEFT_EXT = constant.Constant( 'GLX_FRONT_LEFT_EXT', 8414 ) GLX_FRONT_RIGHT_EXT = constant.Constant( 'GLX_FRONT_RIGHT_EXT', 8415 ) GLX_BACK_LEFT_EXT = constant.Constant( 'GLX_BACK_LEFT_EXT', 8416 ) GLX_BACK_RIGHT_EXT = constant.Constant( 'GLX_BACK_RIGHT_EXT', 8417 ) GLX_FRONT_EXT = constant.Constant( 'GLX_FRONT_EXT', 8414 ) GLX_BACK_EXT = constant.Constant( 'GLX_BACK_EXT', 8416 ) GLX_AUX0_EXT = constant.Constant( 'GLX_AUX0_EXT', 8418 ) GLX_AUX1_EXT = constant.Constant( 'GLX_AUX1_EXT', 8419 ) GLX_AUX2_EXT = constant.Constant( 'GLX_AUX2_EXT', 8420 ) GLX_AUX3_EXT = constant.Constant( 'GLX_AUX3_EXT', 8421 ) GLX_AUX4_EXT = constant.Constant( 'GLX_AUX4_EXT', 8422 ) GLX_AUX5_EXT = constant.Constant( 'GLX_AUX5_EXT', 8423 ) GLX_AUX6_EXT = constant.Constant( 'GLX_AUX6_EXT', 8424 ) GLX_AUX7_EXT = constant.Constant( 'GLX_AUX7_EXT', 8425 ) GLX_AUX8_EXT = constant.Constant( 'GLX_AUX8_EXT', 8426 ) GLX_AUX9_EXT = constant.Constant( 'GLX_AUX9_EXT', 8427 ) # ARB_get_proc_address (GL/glxext.h:373) # ARB_multisample (GL/glxext.h:377) GLX_ARB_multisample = constant.Constant( 'GLX_ARB_multisample', 1 ) # ARB_fbconfig_float (GL/glxext.h:381) GLX_ARB_fbconfig_float = constant.Constant( 'GLX_ARB_fbconfig_float', 1 ) # SGIS_multisample (GL/glxext.h:385) GLX_SGIS_multisample = constant.Constant( 'GLX_SGIS_multisample', 1 ) # EXT_visual_info (GL/glxext.h:389) GLX_EXT_visual_info = constant.Constant( 'GLX_EXT_visual_info', 1 ) # SGI_swap_control (GL/glxext.h:393) GLX_SGI_swap_control = constant.Constant( 'GLX_SGI_swap_control', 1 ) glXSwapIntervalSGI = platform.createBaseFunction( 'glXSwapIntervalSGI', dll=platform.GL, resultType=c_int, argTypes=[c_int], doc='glXSwapIntervalSGI( c_int(None) ) -> c_int', argNames=['None'], ) # SGI_video_sync (GL/glxext.h:401) GLX_SGI_video_sync = constant.Constant( 'GLX_SGI_video_sync', 1 ) glXGetVideoSyncSGI = platform.createBaseFunction( 'glXGetVideoSyncSGI', dll=platform.GL, resultType=c_int, argTypes=[POINTER(c_uint)], doc='glXGetVideoSyncSGI( POINTER(c_uint)() ) -> c_int', argNames=[''], ) glXWaitVideoSyncSGI = platform.createBaseFunction( 'glXWaitVideoSyncSGI', dll=platform.GL, resultType=c_int, argTypes=[c_int, c_int, POINTER(c_uint)], doc='glXWaitVideoSyncSGI( c_int(None), c_int(None), POINTER(c_uint)() ) -> c_int', argNames=['None', 'None', ''], ) glXGetRefreshRateSGI = platform.createBaseFunction( 'glXGetRefreshRateSGI', dll=platform.GL, resultType=c_int, argTypes=[POINTER(c_uint)], doc='glXGetRefreshRateSGI( POINTER(c_uint)() ) -> c_int', argNames=[''], ) # SGI_make_current_read (GL/glxext.h:413) GLX_SGI_make_current_read = constant.Constant( 'GLX_SGI_make_current_read', 1 ) class struct__XDisplay(Structure): __slots__ = [ ] struct__XDisplay._fields_ = [ ('_opaque_struct', c_int) ] class struct__XDisplay(Structure): __slots__ = [ ] struct__XDisplay._fields_ = [ ('_opaque_struct', c_int) ] Display = struct__XDisplay # /usr/include/X11/Xlib.h:495 XID = c_ulong # /usr/include/X11/X.h:66 GLXDrawable = XID # /usr/include/GL/glx.h:180 class struct___GLXcontextRec(Structure): __slots__ = [ ] struct___GLXcontextRec._fields_ = [ ('_opaque_struct', c_int) ] class struct___GLXcontextRec(Structure): __slots__ = [ ] struct___GLXcontextRec._fields_ = [ ('_opaque_struct', c_int) ] GLXContext = POINTER(struct___GLXcontextRec) # /usr/include/GL/glx.h:178 glXMakeCurrentReadSGI = platform.createBaseFunction( 'glXMakeCurrentReadSGI', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, GLXDrawable, GLXContext], doc='glXMakeCurrentReadSGI( POINTER(Display)(), GLXDrawable(None), GLXDrawable(None), GLXContext(None) ) -> c_int', argNames=['', 'None', 'None', 'None'], ) glXGetCurrentReadDrawableSGI = platform.createBaseFunction( 'glXGetCurrentReadDrawableSGI', dll=platform.GL, resultType=GLXDrawable, argTypes=[], doc='glXGetCurrentReadDrawableSGI( ) -> GLXDrawable', argNames=[], ) # SGIX_video_source (GL/glxext.h:423) GLX_SGIX_video_source = constant.Constant( 'GLX_SGIX_video_source', 1 ) # EXT_visual_rating (GL/glxext.h:435) GLX_EXT_visual_rating = constant.Constant( 'GLX_EXT_visual_rating', 1 ) # EXT_import_context (GL/glxext.h:439) GLX_EXT_import_context = constant.Constant( 'GLX_EXT_import_context', 1 ) glXGetCurrentDisplayEXT = platform.createBaseFunction( 'glXGetCurrentDisplayEXT', dll=platform.GL, resultType=POINTER(Display), argTypes=[], doc='glXGetCurrentDisplayEXT( ) -> POINTER(Display)', argNames=[], ) glXQueryContextInfoEXT = platform.createBaseFunction( 'glXQueryContextInfoEXT', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXContext, c_int, POINTER(c_int)], doc='glXQueryContextInfoEXT( POINTER(Display)(), GLXContext(None), c_int(None), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', ''], ) GLXContextID = XID # /usr/include/GL/glx.h:184 glXGetContextIDEXT = platform.createBaseFunction( 'glXGetContextIDEXT', dll=platform.GL, resultType=GLXContextID, argTypes=[GLXContext], doc='glXGetContextIDEXT( GLXContext(None) ) -> GLXContextID', argNames=['None'], ) glXImportContextEXT = platform.createBaseFunction( 'glXImportContextEXT', dll=platform.GL, resultType=GLXContext, argTypes=[POINTER(Display), GLXContextID], doc='glXImportContextEXT( POINTER(Display)(), GLXContextID(None) ) -> GLXContext', argNames=['', 'None'], ) glXFreeContextEXT = platform.createBaseFunction( 'glXFreeContextEXT', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXContext], doc='glXFreeContextEXT( POINTER(Display)(), GLXContext(None) ) -> None', argNames=['', 'None'], ) # SGIX_fbconfig (GL/glxext.h:455) GLX_SGIX_fbconfig = constant.Constant( 'GLX_SGIX_fbconfig', 1 ) class struct___GLXFBConfigRec(Structure): __slots__ = [ ] struct___GLXFBConfigRec._fields_ = [ ('_opaque_struct', c_int) ] class struct___GLXFBConfigRec(Structure): __slots__ = [ ] struct___GLXFBConfigRec._fields_ = [ ('_opaque_struct', c_int) ] GLXFBConfigSGIX = POINTER(struct___GLXFBConfigRec) # GL/glxext.h:262 glXGetFBConfigAttribSGIX = platform.createBaseFunction( 'glXGetFBConfigAttribSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXFBConfigSGIX, c_int, POINTER(c_int)], doc='glXGetFBConfigAttribSGIX( POINTER(Display)(), GLXFBConfigSGIX(None), c_int(None), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', ''], ) glXChooseFBConfigSGIX = platform.createBaseFunction( 'glXChooseFBConfigSGIX', dll=platform.GL, resultType=POINTER(GLXFBConfigSGIX), argTypes=[POINTER(Display), c_int, POINTER(c_int), POINTER(c_int)], doc='glXChooseFBConfigSGIX( POINTER(Display)(), c_int(None), POINTER(c_int)(), POINTER(c_int)() ) -> POINTER(GLXFBConfigSGIX)', argNames=['', 'None', '', ''], ) GLXPixmap = XID # /usr/include/GL/glx.h:179 Pixmap = XID # /usr/include/X11/X.h:102 glXCreateGLXPixmapWithConfigSGIX = platform.createBaseFunction( 'glXCreateGLXPixmapWithConfigSGIX', dll=platform.GL, resultType=GLXPixmap, argTypes=[POINTER(Display), GLXFBConfigSGIX, Pixmap], doc='glXCreateGLXPixmapWithConfigSGIX( POINTER(Display)(), GLXFBConfigSGIX(None), Pixmap(None) ) -> GLXPixmap', argNames=['', 'None', 'None'], ) glXCreateContextWithConfigSGIX = platform.createBaseFunction( 'glXCreateContextWithConfigSGIX', dll=platform.GL, resultType=GLXContext, argTypes=[POINTER(Display), GLXFBConfigSGIX, c_int, GLXContext, c_int], doc='glXCreateContextWithConfigSGIX( POINTER(Display)(), GLXFBConfigSGIX(None), c_int(None), GLXContext(None), c_int(None) ) -> GLXContext', argNames=['', 'None', 'None', 'None', 'None'], ) class struct_anon_103(Structure): __slots__ = [ 'visual', 'visualid', 'screen', 'depth', 'class', 'red_mask', 'green_mask', 'blue_mask', 'colormap_size', 'bits_per_rgb', ] class struct_anon_18(Structure): __slots__ = [ 'ext_data', 'visualid', 'class', 'red_mask', 'green_mask', 'blue_mask', 'bits_per_rgb', 'map_entries', ] class struct__XExtData(Structure): __slots__ = [ 'number', 'next', 'free_private', 'private_data', ] XPointer = c_char_p # /usr/include/X11/Xlib.h:84 struct__XExtData._fields_ = [ ('number', c_int), ('next', POINTER(struct__XExtData)), ('free_private', POINTER(CFUNCTYPE(c_int, POINTER(struct__XExtData)))), ('private_data', XPointer), ] XExtData = struct__XExtData # /usr/include/X11/Xlib.h:163 VisualID = c_ulong # /usr/include/X11/X.h:76 struct_anon_18._fields_ = [ ('ext_data', POINTER(XExtData)), ('visualid', VisualID), ('class', c_int), ('red_mask', c_ulong), ('green_mask', c_ulong), ('blue_mask', c_ulong), ('bits_per_rgb', c_int), ('map_entries', c_int), ] Visual = struct_anon_18 # /usr/include/X11/Xlib.h:246 struct_anon_103._fields_ = [ ('visual', POINTER(Visual)), ('visualid', VisualID), ('screen', c_int), ('depth', c_int), ('class', c_int), ('red_mask', c_ulong), ('green_mask', c_ulong), ('blue_mask', c_ulong), ('colormap_size', c_int), ('bits_per_rgb', c_int), ] XVisualInfo = struct_anon_103 # /usr/include/X11/Xutil.h:294 glXGetVisualFromFBConfigSGIX = platform.createBaseFunction( 'glXGetVisualFromFBConfigSGIX', dll=platform.GL, resultType=POINTER(XVisualInfo), argTypes=[POINTER(Display), GLXFBConfigSGIX], doc='glXGetVisualFromFBConfigSGIX( POINTER(Display)(), GLXFBConfigSGIX(None) ) -> POINTER(XVisualInfo)', argNames=['', 'None'], ) glXGetFBConfigFromVisualSGIX = platform.createBaseFunction( 'glXGetFBConfigFromVisualSGIX', dll=platform.GL, resultType=GLXFBConfigSGIX, argTypes=[POINTER(Display), POINTER(XVisualInfo)], doc='glXGetFBConfigFromVisualSGIX( POINTER(Display)(), POINTER(XVisualInfo)() ) -> GLXFBConfigSGIX', argNames=['', ''], ) # SGIX_pbuffer (GL/glxext.h:473) GLX_SGIX_pbuffer = constant.Constant( 'GLX_SGIX_pbuffer', 1 ) GLXPbufferSGIX = XID # GL/glxext.h:266 glXCreateGLXPbufferSGIX = platform.createBaseFunction( 'glXCreateGLXPbufferSGIX', dll=platform.GL, resultType=GLXPbufferSGIX, argTypes=[POINTER(Display), GLXFBConfigSGIX, c_uint, c_uint, POINTER(c_int)], doc='glXCreateGLXPbufferSGIX( POINTER(Display)(), GLXFBConfigSGIX(None), c_uint(None), c_uint(None), POINTER(c_int)() ) -> GLXPbufferSGIX', argNames=['', 'None', 'None', 'None', ''], ) glXDestroyGLXPbufferSGIX = platform.createBaseFunction( 'glXDestroyGLXPbufferSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXPbufferSGIX], doc='glXDestroyGLXPbufferSGIX( POINTER(Display)(), GLXPbufferSGIX(None) ) -> None', argNames=['', 'None'], ) glXQueryGLXPbufferSGIX = platform.createBaseFunction( 'glXQueryGLXPbufferSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXPbufferSGIX, c_int, POINTER(c_uint)], doc='glXQueryGLXPbufferSGIX( POINTER(Display)(), GLXPbufferSGIX(None), c_int(None), POINTER(c_uint)() ) -> c_int', argNames=['', 'None', 'None', ''], ) glXSelectEventSGIX = platform.createBaseFunction( 'glXSelectEventSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_ulong], doc='glXSelectEventSGIX( POINTER(Display)(), GLXDrawable(None), c_ulong(None) ) -> None', argNames=['', 'None', 'None'], ) glXGetSelectedEventSGIX = platform.createBaseFunction( 'glXGetSelectedEventSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_ulong)], doc='glXGetSelectedEventSGIX( POINTER(Display)(), GLXDrawable(None), POINTER(c_ulong)() ) -> None', argNames=['', 'None', ''], ) # SGI_cushion (GL/glxext.h:489) GLX_SGI_cushion = constant.Constant( 'GLX_SGI_cushion', 1 ) Window = XID # /usr/include/X11/X.h:96 glXCushionSGI = platform.createBaseFunction( 'glXCushionSGI', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), Window, c_float], doc='glXCushionSGI( POINTER(Display)(), Window(None), c_float(None) ) -> None', argNames=['', 'None', 'None'], ) # SGIX_video_resize (GL/glxext.h:497) GLX_SGIX_video_resize = constant.Constant( 'GLX_SGIX_video_resize', 1 ) glXBindChannelToWindowSGIX = platform.createBaseFunction( 'glXBindChannelToWindowSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, Window], doc='glXBindChannelToWindowSGIX( POINTER(Display)(), c_int(None), c_int(None), Window(None) ) -> c_int', argNames=['', 'None', 'None', 'None'], ) glXChannelRectSGIX = platform.createBaseFunction( 'glXChannelRectSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, c_int, c_int, c_int, c_int], doc='glXChannelRectSGIX( POINTER(Display)(), c_int(None), c_int(None), c_int(None), c_int(None), c_int(None), c_int(None) ) -> c_int', argNames=['', 'None', 'None', 'None', 'None', 'None', 'None'], ) glXQueryChannelRectSGIX = platform.createBaseFunction( 'glXQueryChannelRectSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, POINTER(c_int), POINTER(c_int), POINTER(c_int), POINTER(c_int)], doc='glXQueryChannelRectSGIX( POINTER(Display)(), c_int(None), c_int(None), POINTER(c_int)(), POINTER(c_int)(), POINTER(c_int)(), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', '', '', '', ''], ) glXQueryChannelDeltasSGIX = platform.createBaseFunction( 'glXQueryChannelDeltasSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, POINTER(c_int), POINTER(c_int), POINTER(c_int), POINTER(c_int)], doc='glXQueryChannelDeltasSGIX( POINTER(Display)(), c_int(None), c_int(None), POINTER(c_int)(), POINTER(c_int)(), POINTER(c_int)(), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', '', '', '', ''], ) GLenum = c_uint # /usr/include/GL/gl.h:155 glXChannelRectSyncSGIX = platform.createBaseFunction( 'glXChannelRectSyncSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, GLenum], doc='glXChannelRectSyncSGIX( POINTER(Display)(), c_int(None), c_int(None), GLenum(None) ) -> c_int', argNames=['', 'None', 'None', 'None'], ) # SGIX_dmbuffer (GL/glxext.h:513) GLX_SGIX_dmbuffer = constant.Constant( 'GLX_SGIX_dmbuffer', 1 ) # SGIX_swap_group (GL/glxext.h:523) GLX_SGIX_swap_group = constant.Constant( 'GLX_SGIX_swap_group', 1 ) glXJoinSwapGroupSGIX = platform.createBaseFunction( 'glXJoinSwapGroupSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, GLXDrawable], doc='glXJoinSwapGroupSGIX( POINTER(Display)(), GLXDrawable(None), GLXDrawable(None) ) -> None', argNames=['', 'None', 'None'], ) # SGIX_swap_barrier (GL/glxext.h:531) GLX_SGIX_swap_barrier = constant.Constant( 'GLX_SGIX_swap_barrier', 1 ) glXBindSwapBarrierSGIX = platform.createBaseFunction( 'glXBindSwapBarrierSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_int], doc='glXBindSwapBarrierSGIX( POINTER(Display)(), GLXDrawable(None), c_int(None) ) -> None', argNames=['', 'None', 'None'], ) glXQueryMaxSwapBarriersSGIX = platform.createBaseFunction( 'glXQueryMaxSwapBarriersSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, POINTER(c_int)], doc='glXQueryMaxSwapBarriersSGIX( POINTER(Display)(), c_int(None), POINTER(c_int)() ) -> c_int', argNames=['', 'None', ''], ) # SUN_get_transparent_index (GL/glxext.h:541) GLX_SUN_get_transparent_index = constant.Constant( 'GLX_SUN_get_transparent_index', 1 ) glXGetTransparentIndexSUN = platform.createBaseFunction( 'glXGetTransparentIndexSUN', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), Window, Window, POINTER(c_long)], doc='glXGetTransparentIndexSUN( POINTER(Display)(), Window(None), Window(None), POINTER(c_long)() ) -> c_int', argNames=['', 'None', 'None', ''], ) # MESA_copy_sub_buffer (GL/glxext.h:549) GLX_MESA_copy_sub_buffer = constant.Constant( 'GLX_MESA_copy_sub_buffer', 1 ) glXCopySubBufferMESA = platform.createBaseFunction( 'glXCopySubBufferMESA', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_int, c_int, c_int, c_int], doc='glXCopySubBufferMESA( POINTER(Display)(), GLXDrawable(None), c_int(None), c_int(None), c_int(None), c_int(None) ) -> None', argNames=['', 'None', 'None', 'None', 'None', 'None'], ) # MESA_pixmap_colormap (GL/glxext.h:557) GLX_MESA_pixmap_colormap = constant.Constant( 'GLX_MESA_pixmap_colormap', 1 ) Colormap = XID # /usr/include/X11/X.h:104 glXCreateGLXPixmapMESA = platform.createBaseFunction( 'glXCreateGLXPixmapMESA', dll=platform.GL, resultType=GLXPixmap, argTypes=[POINTER(Display), POINTER(XVisualInfo), Pixmap, Colormap], doc='glXCreateGLXPixmapMESA( POINTER(Display)(), POINTER(XVisualInfo)(), Pixmap(None), Colormap(None) ) -> GLXPixmap', argNames=['', '', 'None', 'None'], ) # MESA_release_buffers (GL/glxext.h:565) GLX_MESA_release_buffers = constant.Constant( 'GLX_MESA_release_buffers', 1 ) glXReleaseBuffersMESA = platform.createBaseFunction( 'glXReleaseBuffersMESA', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable], doc='glXReleaseBuffersMESA( POINTER(Display)(), GLXDrawable(None) ) -> c_int', argNames=['', 'None'], ) # MESA_set_3dfx_mode (GL/glxext.h:573) GLX_MESA_set_3dfx_mode = constant.Constant( 'GLX_MESA_set_3dfx_mode', 1 ) glXSet3DfxModeMESA = platform.createBaseFunction( 'glXSet3DfxModeMESA', dll=platform.GL, resultType=c_int, argTypes=[c_int], doc='glXSet3DfxModeMESA( c_int(None) ) -> c_int', argNames=['None'], ) # SGIX_visual_select_group (GL/glxext.h:581) GLX_SGIX_visual_select_group = constant.Constant( 'GLX_SGIX_visual_select_group', 1 ) # OML_swap_method (GL/glxext.h:585) GLX_OML_swap_method = constant.Constant( 'GLX_OML_swap_method', 1 ) # OML_sync_control (GL/glxext.h:589) GLX_OML_sync_control = constant.Constant( 'GLX_OML_sync_control', 1 ) glXGetSyncValuesOML = platform.createBaseFunction( 'glXGetSyncValuesOML', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_int64), POINTER(c_int64), POINTER(c_int64)], doc='glXGetSyncValuesOML( POINTER(Display)(), GLXDrawable(None), POINTER(c_int64)(), POINTER(c_int64)(), POINTER(c_int64)() ) -> c_int', argNames=['', 'None', '', '', ''], ) glXGetMscRateOML = platform.createBaseFunction( 'glXGetMscRateOML', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_int32), POINTER(c_int32)], doc='glXGetMscRateOML( POINTER(Display)(), GLXDrawable(None), POINTER(c_int32)(), POINTER(c_int32)() ) -> c_int', argNames=['', 'None', '', ''], ) glXSwapBuffersMscOML = platform.createBaseFunction( 'glXSwapBuffersMscOML', dll=platform.GL, resultType=c_int64, argTypes=[POINTER(Display), GLXDrawable, c_int64, c_int64, c_int64], doc='glXSwapBuffersMscOML( POINTER(Display)(), GLXDrawable(None), c_int64(None), c_int64(None), c_int64(None) ) -> c_int64', argNames=['', 'None', 'None', 'None', 'None'], ) glXWaitForMscOML = platform.createBaseFunction( 'glXWaitForMscOML', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, c_int64, c_int64, c_int64, POINTER(c_int64), POINTER(c_int64), POINTER(c_int64)], doc='glXWaitForMscOML( POINTER(Display)(), GLXDrawable(None), c_int64(None), c_int64(None), c_int64(None), POINTER(c_int64)(), POINTER(c_int64)(), POINTER(c_int64)() ) -> c_int', argNames=['', 'None', 'None', 'None', 'None', '', '', ''], ) glXWaitForSbcOML = platform.createBaseFunction( 'glXWaitForSbcOML', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, c_int64, POINTER(c_int64), POINTER(c_int64), POINTER(c_int64)], doc='glXWaitForSbcOML( POINTER(Display)(), GLXDrawable(None), c_int64(None), POINTER(c_int64)(), POINTER(c_int64)(), POINTER(c_int64)() ) -> c_int', argNames=['', 'None', 'None', '', '', ''], ) # NV_float_buffer (GL/glxext.h:605) GLX_NV_float_buffer = constant.Constant( 'GLX_NV_float_buffer', 1 ) # SGIX_hyperpipe (GL/glxext.h:609) GLX_SGIX_hyperpipe = constant.Constant( 'GLX_SGIX_hyperpipe', 1 ) class struct_anon_107(Structure): __slots__ = [ 'pipeName', 'networkId', ] struct_anon_107._fields_ = [ ('pipeName', c_char * 80), ('networkId', c_int), ] GLXHyperpipeNetworkSGIX = struct_anon_107 # GL/glxext.h:615 glXQueryHyperpipeNetworkSGIX = platform.createBaseFunction( 'glXQueryHyperpipeNetworkSGIX', dll=platform.GL, resultType=POINTER(GLXHyperpipeNetworkSGIX), argTypes=[POINTER(Display), POINTER(c_int)], doc='glXQueryHyperpipeNetworkSGIX( POINTER(Display)(), POINTER(c_int)() ) -> POINTER(GLXHyperpipeNetworkSGIX)', argNames=['', ''], ) class struct_anon_108(Structure): __slots__ = [ 'pipeName', 'channel', 'participationType', 'timeSlice', ] struct_anon_108._fields_ = [ ('pipeName', c_char * 80), ('channel', c_int), ('participationType', c_uint), ('timeSlice', c_int), ] GLXHyperpipeConfigSGIX = struct_anon_108 # GL/glxext.h:623 glXHyperpipeConfigSGIX = platform.createBaseFunction( 'glXHyperpipeConfigSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, POINTER(GLXHyperpipeConfigSGIX), POINTER(c_int)], doc='glXHyperpipeConfigSGIX( POINTER(Display)(), c_int(None), c_int(None), POINTER(GLXHyperpipeConfigSGIX)(), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', '', ''], ) glXQueryHyperpipeConfigSGIX = platform.createBaseFunction( 'glXQueryHyperpipeConfigSGIX', dll=platform.GL, resultType=POINTER(GLXHyperpipeConfigSGIX), argTypes=[POINTER(Display), c_int, POINTER(c_int)], doc='glXQueryHyperpipeConfigSGIX( POINTER(Display)(), c_int(None), POINTER(c_int)() ) -> POINTER(GLXHyperpipeConfigSGIX)', argNames=['', 'None', ''], ) glXDestroyHyperpipeConfigSGIX = platform.createBaseFunction( 'glXDestroyHyperpipeConfigSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int], doc='glXDestroyHyperpipeConfigSGIX( POINTER(Display)(), c_int(None) ) -> c_int', argNames=['', 'None'], ) glXBindHyperpipeSGIX = platform.createBaseFunction( 'glXBindHyperpipeSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int], doc='glXBindHyperpipeSGIX( POINTER(Display)(), c_int(None) ) -> c_int', argNames=['', 'None'], ) glXQueryHyperpipeBestAttribSGIX = platform.createBaseFunction( 'glXQueryHyperpipeBestAttribSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, c_int, POINTER(None), POINTER(None)], doc='glXQueryHyperpipeBestAttribSGIX( POINTER(Display)(), c_int(None), c_int(None), c_int(None), POINTER(None)(), POINTER(None)() ) -> c_int', argNames=['', 'None', 'None', 'None', '', ''], ) glXHyperpipeAttribSGIX = platform.createBaseFunction( 'glXHyperpipeAttribSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, c_int, POINTER(None)], doc='glXHyperpipeAttribSGIX( POINTER(Display)(), c_int(None), c_int(None), c_int(None), POINTER(None)() ) -> c_int', argNames=['', 'None', 'None', 'None', ''], ) glXQueryHyperpipeAttribSGIX = platform.createBaseFunction( 'glXQueryHyperpipeAttribSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, c_int, POINTER(None)], doc='glXQueryHyperpipeAttribSGIX( POINTER(Display)(), c_int(None), c_int(None), c_int(None), POINTER(None)() ) -> c_int', argNames=['', 'None', 'None', 'None', ''], ) # MESA_agp_offset (GL/glxext.h:656) GLX_MESA_agp_offset = constant.Constant( 'GLX_MESA_agp_offset', 1 ) glXGetAGPOffsetMESA = platform.createBaseFunction( 'glXGetAGPOffsetMESA', dll=platform.GL, resultType=c_uint, argTypes=[POINTER(None)], doc='glXGetAGPOffsetMESA( POINTER(None)() ) -> c_uint', argNames=[''], ) # NV_vertex_array_range (GL/glxext.h:667) GLX_NV_vertex_array_range = constant.Constant( 'GLX_NV_vertex_array_range', 1 ) GLsizei = c_int # /usr/include/GL/gl.h:165 GLfloat = c_float # /usr/include/GL/gl.h:166 glXAllocateMemoryNV = platform.createBaseFunction( 'glXAllocateMemoryNV', dll=platform.GL, resultType=POINTER(c_void), argTypes=[GLsizei, GLfloat, GLfloat, GLfloat], doc='glXAllocateMemoryNV( GLsizei(size), GLfloat(readfreq), GLfloat(writefreq), GLfloat(priority) ) -> POINTER(c_void)', argNames=['size', 'readfreq', 'writefreq', 'priority'], ) GLvoid = None # /usr/include/GL/gl.h:158 glXFreeMemoryNV = platform.createBaseFunction( 'glXFreeMemoryNV', dll=platform.GL, resultType=None, argTypes=[POINTER(GLvoid)], doc='glXFreeMemoryNV( POINTER(GLvoid)(pointer) ) -> None', argNames=['pointer'], ) # NV_swap_group (GL/glxext.h:683) GLX_NV_swap_group = constant.Constant( 'GLX_NV_swap_group', 1 ) GLuint = c_uint # /usr/include/GL/gl.h:164 glXJoinSwapGroupNV = platform.createBaseFunction( 'glXJoinSwapGroupNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, GLuint], doc='glXJoinSwapGroupNV( POINTER(Display)(dpy), GLXDrawable(drawable), GLuint(group) ) -> c_int', argNames=['dpy', 'drawable', 'group'], ) glXBindSwapBarrierNV = platform.createBaseFunction( 'glXBindSwapBarrierNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLuint, GLuint], doc='glXBindSwapBarrierNV( POINTER(Display)(dpy), GLuint(group), GLuint(barrier) ) -> c_int', argNames=['dpy', 'group', 'barrier'], ) glXQuerySwapGroupNV = platform.createBaseFunction( 'glXQuerySwapGroupNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, POINTER(GLuint), POINTER(GLuint)], doc='glXQuerySwapGroupNV( POINTER(Display)(dpy), GLXDrawable(drawable), POINTER(GLuint)(group), POINTER(GLuint)(barrier) ) -> c_int', argNames=['dpy', 'drawable', 'group', 'barrier'], ) glXQueryMaxSwapGroupsNV = platform.createBaseFunction( 'glXQueryMaxSwapGroupsNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, POINTER(GLuint), POINTER(GLuint)], doc='glXQueryMaxSwapGroupsNV( POINTER(Display)(dpy), c_int(screen), POINTER(GLuint)(maxGroups), POINTER(GLuint)(maxBarriers) ) -> c_int', argNames=['dpy', 'screen', 'maxGroups', 'maxBarriers'], ) glXQueryFrameCountNV = platform.createBaseFunction( 'glXQueryFrameCountNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, POINTER(GLuint)], doc='glXQueryFrameCountNV( POINTER(Display)(dpy), c_int(screen), POINTER(GLuint)(count) ) -> c_int', argNames=['dpy', 'screen', 'count'], ) glXResetFrameCountNV = platform.createBaseFunction( 'glXResetFrameCountNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int], doc='glXResetFrameCountNV( POINTER(Display)(dpy), c_int(screen) ) -> c_int', argNames=['dpy', 'screen'], ) # NV_video_out (GL/glxext.h:726) GLX_NV_video_out = constant.Constant( 'GLX_NV_video_out', 1 ) GLXVideoDeviceNV = c_uint # GL/glxext.h:290 glXGetVideoDeviceNV = platform.createBaseFunction( 'glXGetVideoDeviceNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, POINTER(GLXVideoDeviceNV)], doc='glXGetVideoDeviceNV( POINTER(Display)(dpy), c_int(screen), c_int(numVideoDevices), POINTER(GLXVideoDeviceNV)(pVideoDevice) ) -> c_int', argNames=['dpy', 'screen', 'numVideoDevices', 'pVideoDevice'], ) glXReleaseVideoDeviceNV = platform.createBaseFunction( 'glXReleaseVideoDeviceNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, GLXVideoDeviceNV], doc='glXReleaseVideoDeviceNV( POINTER(Display)(dpy), c_int(screen), GLXVideoDeviceNV(VideoDevice) ) -> c_int', argNames=['dpy', 'screen', 'VideoDevice'], ) GLXPbuffer = XID # /usr/include/GL/glx.h:186 glXBindVideoImageNV = platform.createBaseFunction( 'glXBindVideoImageNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXVideoDeviceNV, GLXPbuffer, c_int], doc='glXBindVideoImageNV( POINTER(Display)(dpy), GLXVideoDeviceNV(VideoDevice), GLXPbuffer(pbuf), c_int(iVideoBuffer) ) -> c_int', argNames=['dpy', 'VideoDevice', 'pbuf', 'iVideoBuffer'], ) glXReleaseVideoImageNV = platform.createBaseFunction( 'glXReleaseVideoImageNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXPbuffer], doc='glXReleaseVideoImageNV( POINTER(Display)(dpy), GLXPbuffer(pbuf) ) -> c_int', argNames=['dpy', 'pbuf'], ) GLboolean = c_ubyte # /usr/include/GL/gl.h:156 glXSendPbufferToVideoNV = platform.createBaseFunction( 'glXSendPbufferToVideoNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXPbuffer, c_int, POINTER(c_ulong), GLboolean], doc='glXSendPbufferToVideoNV( POINTER(Display)(dpy), GLXPbuffer(pbuf), c_int(iBufferType), POINTER(c_ulong)(pulCounterPbuffer), GLboolean(bBlock) ) -> c_int', argNames=['dpy', 'pbuf', 'iBufferType', 'pulCounterPbuffer', 'bBlock'], ) glXGetVideoInfoNV = platform.createBaseFunction( 'glXGetVideoInfoNV', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, GLXVideoDeviceNV, POINTER(c_ulong), POINTER(c_ulong)], doc='glXGetVideoInfoNV( POINTER(Display)(dpy), c_int(screen), GLXVideoDeviceNV(VideoDevice), POINTER(c_ulong)(pulCounterOutputVideo), POINTER(c_ulong)(pulCounterOutputPbuffer) ) -> c_int', argNames=['dpy', 'screen', 'VideoDevice', 'pulCounterOutputVideo', 'pulCounterOutputPbuffer'], ) # EXT_texture_from_pixmap (GL/glxext.h:779) glXBindTexImageEXT = platform.createBaseFunction( 'glXBindTexImageEXT', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_int, POINTER(c_int)], doc='glXBindTexImageEXT( POINTER(Display)(dpy), GLXDrawable(drawable), c_int(buffer), POINTER(c_int)(attrib_list) ) -> None', argNames=['dpy', 'drawable', 'buffer', 'attrib_list'], ) glXReleaseTextImageEXT = platform.createBaseFunction( 'glXReleaseTextImageEXT', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_int], doc='glXReleaseTextImageEXT( POINTER(Display)(dpy), GLXDrawable(drawable), c_int(buffer) ) -> None', argNames=['dpy', 'drawable', 'buffer'], ) # NV_vertex_array_range (/usr/include/GL/glx.h:359) # ARB_render_texture (/usr/include/GL/glx.h:374) # NV_float_buffer (/usr/include/GL/glx.h:387) # MESA_swap_frame_usage (/usr/include/GL/glx.h:399) # MESA_swap_control (/usr/include/GL/glx.h:419) # EXT_texture_from_pixmap (/usr/include/GL/glx.h:436) __all__ = ['GLX_GLXEXT_VERSION', 'GLX_SAMPLE_BUFFERS_ARB', 'GLX_SAMPLES_ARB', 'GLX_RGBA_FLOAT_TYPE_ARB', 'GLX_RGBA_FLOAT_BIT_ARB', 'GLX_SAMPLE_BUFFERS_SGIS', 'GLX_SAMPLES_SGIS', 'GLX_X_VISUAL_TYPE_EXT', 'GLX_TRANSPARENT_TYPE_EXT', 'GLX_TRANSPARENT_INDEX_VALUE_EXT', 'GLX_TRANSPARENT_RED_VALUE_EXT', 'GLX_TRANSPARENT_GREEN_VALUE_EXT', 'GLX_TRANSPARENT_BLUE_VALUE_EXT', 'GLX_TRANSPARENT_ALPHA_VALUE_EXT', 'GLX_NONE_EXT', 'GLX_TRUE_COLOR_EXT', 'GLX_DIRECT_COLOR_EXT', 'GLX_PSEUDO_COLOR_EXT', 'GLX_STATIC_COLOR_EXT', 'GLX_GRAY_SCALE_EXT', 'GLX_STATIC_GRAY_EXT', 'GLX_TRANSPARENT_RGB_EXT', 'GLX_TRANSPARENT_INDEX_EXT', 'GLX_VISUAL_CAVEAT_EXT', 'GLX_SLOW_VISUAL_EXT', 'GLX_NON_CONFORMANT_VISUAL_EXT', 'GLX_SHARE_CONTEXT_EXT', 'GLX_VISUAL_ID_EXT', 'GLX_SCREEN_EXT', 'GLX_WINDOW_BIT_SGIX', 'GLX_PIXMAP_BIT_SGIX', 'GLX_RGBA_BIT_SGIX', 'GLX_COLOR_INDEX_BIT_SGIX', 'GLX_DRAWABLE_TYPE_SGIX', 'GLX_RENDER_TYPE_SGIX', 'GLX_X_RENDERABLE_SGIX', 'GLX_FBCONFIG_ID_SGIX', 'GLX_RGBA_TYPE_SGIX', 'GLX_COLOR_INDEX_TYPE_SGIX', 'GLX_PBUFFER_BIT_SGIX', 'GLX_BUFFER_CLOBBER_MASK_SGIX', 'GLX_FRONT_LEFT_BUFFER_BIT_SGIX', 'GLX_FRONT_RIGHT_BUFFER_BIT_SGIX', 'GLX_BACK_LEFT_BUFFER_BIT_SGIX', 'GLX_BACK_RIGHT_BUFFER_BIT_SGIX', 'GLX_AUX_BUFFERS_BIT_SGIX', 'GLX_DEPTH_BUFFER_BIT_SGIX', 'GLX_STENCIL_BUFFER_BIT_SGIX', 'GLX_ACCUM_BUFFER_BIT_SGIX', 'GLX_SAMPLE_BUFFERS_BIT_SGIX', 'GLX_MAX_PBUFFER_WIDTH_SGIX', 'GLX_MAX_PBUFFER_HEIGHT_SGIX', 'GLX_MAX_PBUFFER_PIXELS_SGIX', 'GLX_OPTIMAL_PBUFFER_WIDTH_SGIX', 'GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX', 'GLX_PRESERVED_CONTENTS_SGIX', 'GLX_LARGEST_PBUFFER_SGIX', 'GLX_WIDTH_SGIX', 'GLX_HEIGHT_SGIX', 'GLX_EVENT_MASK_SGIX', 'GLX_DAMAGED_SGIX', 'GLX_SAVED_SGIX', 'GLX_WINDOW_SGIX', 'GLX_PBUFFER_SGIX', 'GLX_SYNC_FRAME_SGIX', 'GLX_SYNC_SWAP_SGIX', 'GLX_DIGITAL_MEDIA_PBUFFER_SGIX', 'GLX_BLENDED_RGBA_SGIS', 'GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS', 'GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS', 'GLX_SAMPLE_BUFFERS_3DFX', 'GLX_SAMPLES_3DFX', 'GLX_3DFX_WINDOW_MODE_MESA', 'GLX_3DFX_FULLSCREEN_MODE_MESA', 'GLX_VISUAL_SELECT_GROUP_SGIX', 'GLX_SWAP_METHOD_OML', 'GLX_SWAP_EXCHANGE_OML', 'GLX_SWAP_COPY_OML', 'GLX_SWAP_UNDEFINED_OML', 'GLX_FLOAT_COMPONENTS_NV', 'GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX', 'GLX_BAD_HYPERPIPE_CONFIG_SGIX', 'GLX_BAD_HYPERPIPE_SGIX', 'GLX_HYPERPIPE_DISPLAY_PIPE_SGIX', 'GLX_HYPERPIPE_RENDER_PIPE_SGIX', 'GLX_PIPE_RECT_SGIX', 'GLX_PIPE_RECT_LIMITS_SGIX', 'GLX_HYPERPIPE_STEREO_SGIX', 'GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX', 'GLX_HYPERPIPE_ID_SGIX', 'GLX_VIDEO_OUT_COLOR_NV', 'GLX_VIDEO_OUT_ALPHA_NV', 'GLX_VIDEO_OUT_DEPTH_NV', 'GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV', 'GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV', 'GLX_VIDEO_OUT_FRAME_NV', 'GLX_VIDEO_OUT_FIELD_1_NV', 'GLX_VIDEO_OUT_FIELD_2_NV', 'GLX_BIND_TO_TEXTURE_RGB_EXT', 'GLX_BIND_TO_TEXTURE_RGBA_EXT', 'GLX_BIND_TO_MIPMAP_TEXTURE_EXT', 'GLX_BIND_TO_TEXTURE_TARGETS_EXT', 'GLX_Y_INVERTED_EXT', 'GLX_TEXTURE_FORMAT_EXT', 'GLX_TEXTURE_TARGET_EXT', 'GLX_MIPMAP_TEXTURE_EXT', 'GLX_TEXTURE_FORMAT_NONE_EXT', 'GLX_TEXTURE_FORMAT_RGB_EXT', 'GLX_TEXTURE_FORMAT_RGBA_EXT', 'GLX_TEXTURE_1D_BIT_EXT', 'GLX_TEXTURE_2D_BIT_EXT', 'GLX_TEXTURE_RECTANGLE_BIT_EXT', 'GLX_TEXTURE_1D_EXT', 'GLX_TEXTURE_2D_EXT', 'GLX_TEXTURE_RECTANGLE_EXT', 'GLX_FRONT_LEFT_EXT', 'GLX_FRONT_RIGHT_EXT', 'GLX_BACK_LEFT_EXT', 'GLX_BACK_RIGHT_EXT', 'GLX_FRONT_EXT', 'GLX_BACK_EXT', 'GLX_AUX0_EXT', 'GLX_AUX1_EXT', 'GLX_AUX2_EXT', 'GLX_AUX3_EXT', 'GLX_AUX4_EXT', 'GLX_AUX5_EXT', 'GLX_AUX6_EXT', 'GLX_AUX7_EXT', 'GLX_AUX8_EXT', 'GLX_AUX9_EXT', 'GLX_ARB_multisample', 'GLX_ARB_fbconfig_float', 'GLX_SGIS_multisample', 'GLX_EXT_visual_info', 'GLX_SGI_swap_control', 'glXSwapIntervalSGI', 'GLX_SGI_video_sync', 'glXGetVideoSyncSGI', 'glXWaitVideoSyncSGI', 'glXGetRefreshRateSGI', 'GLX_SGI_make_current_read', 'glXMakeCurrentReadSGI', 'glXGetCurrentReadDrawableSGI', 'GLX_SGIX_video_source', 'GLX_EXT_visual_rating', 'GLX_EXT_import_context', 'glXGetCurrentDisplayEXT', 'glXQueryContextInfoEXT', 'glXGetContextIDEXT', 'glXImportContextEXT', 'glXFreeContextEXT', 'GLX_SGIX_fbconfig', 'glXGetFBConfigAttribSGIX', 'glXChooseFBConfigSGIX', 'glXCreateGLXPixmapWithConfigSGIX', 'glXCreateContextWithConfigSGIX', 'glXGetVisualFromFBConfigSGIX', 'glXGetFBConfigFromVisualSGIX', 'GLX_SGIX_pbuffer', 'glXCreateGLXPbufferSGIX', 'glXDestroyGLXPbufferSGIX', 'glXQueryGLXPbufferSGIX', 'glXSelectEventSGIX', 'glXGetSelectedEventSGIX', 'GLX_SGI_cushion', 'glXCushionSGI', 'GLX_SGIX_video_resize', 'glXBindChannelToWindowSGIX', 'glXChannelRectSGIX', 'glXQueryChannelRectSGIX', 'glXQueryChannelDeltasSGIX', 'glXChannelRectSyncSGIX', 'GLX_SGIX_dmbuffer', 'GLX_SGIX_swap_group', 'glXJoinSwapGroupSGIX', 'GLX_SGIX_swap_barrier', 'glXBindSwapBarrierSGIX', 'glXQueryMaxSwapBarriersSGIX', 'GLX_SUN_get_transparent_index', 'glXGetTransparentIndexSUN', 'GLX_MESA_copy_sub_buffer', 'glXCopySubBufferMESA', 'GLX_MESA_pixmap_colormap', 'glXCreateGLXPixmapMESA', 'GLX_MESA_release_buffers', 'glXReleaseBuffersMESA', 'GLX_MESA_set_3dfx_mode', 'glXSet3DfxModeMESA', 'GLX_SGIX_visual_select_group', 'GLX_OML_swap_method', 'GLX_OML_sync_control', 'glXGetSyncValuesOML', 'glXGetMscRateOML', 'glXSwapBuffersMscOML', 'glXWaitForMscOML', 'glXWaitForSbcOML', 'GLX_NV_float_buffer', 'GLX_SGIX_hyperpipe', 'glXQueryHyperpipeNetworkSGIX', 'glXHyperpipeConfigSGIX', 'glXQueryHyperpipeConfigSGIX', 'glXDestroyHyperpipeConfigSGIX', 'glXBindHyperpipeSGIX', 'glXQueryHyperpipeBestAttribSGIX', 'glXHyperpipeAttribSGIX', 'glXQueryHyperpipeAttribSGIX', 'GLX_MESA_agp_offset', 'glXGetAGPOffsetMESA', 'GLX_NV_vertex_array_range', 'glXAllocateMemoryNV', 'glXFreeMemoryNV', 'GLX_NV_swap_group', 'glXJoinSwapGroupNV', 'glXBindSwapBarrierNV', 'glXQuerySwapGroupNV', 'glXQueryMaxSwapGroupsNV', 'glXQueryFrameCountNV', 'glXResetFrameCountNV', 'GLX_NV_video_out', 'glXGetVideoDeviceNV', 'glXReleaseVideoDeviceNV', 'glXBindVideoImageNV', 'glXReleaseVideoImageNV', 'glXSendPbufferToVideoNV', 'glXGetVideoInfoNV', 'glXBindTexImageEXT', 'glXReleaseTextImageEXT'] # END GENERATED CONTENT (do not edit above this line) PyOpenGL-3.0.2/OpenGL/raw/_GLX.py0000644000175000001440000010610312025001653017170 0ustar mcfletchusers00000000000000# BEGIN GENERATED CONTENT (do not edit below this line) # This content is generated by ./gengl.py. # Wrapper for /usr/include/GL/glx.h from OpenGL import platform, constant from ctypes import * c_void = None # H (/usr/include/GL/glx.h:26) GLX_VERSION_1_1 = constant.Constant( 'GLX_VERSION_1_1', 1 ) GLX_VERSION_1_2 = constant.Constant( 'GLX_VERSION_1_2', 1 ) GLX_VERSION_1_3 = constant.Constant( 'GLX_VERSION_1_3', 1 ) GLX_VERSION_1_4 = constant.Constant( 'GLX_VERSION_1_4', 1 ) GLX_USE_GL = constant.Constant( 'GLX_USE_GL', 1 ) GLX_BUFFER_SIZE = constant.Constant( 'GLX_BUFFER_SIZE', 2 ) GLX_LEVEL = constant.Constant( 'GLX_LEVEL', 3 ) GLX_RGBA = constant.Constant( 'GLX_RGBA', 4 ) GLX_DOUBLEBUFFER = constant.Constant( 'GLX_DOUBLEBUFFER', 5 ) GLX_STEREO = constant.Constant( 'GLX_STEREO', 6 ) GLX_AUX_BUFFERS = constant.Constant( 'GLX_AUX_BUFFERS', 7 ) GLX_RED_SIZE = constant.Constant( 'GLX_RED_SIZE', 8 ) GLX_GREEN_SIZE = constant.Constant( 'GLX_GREEN_SIZE', 9 ) GLX_BLUE_SIZE = constant.Constant( 'GLX_BLUE_SIZE', 10 ) GLX_ALPHA_SIZE = constant.Constant( 'GLX_ALPHA_SIZE', 11 ) GLX_DEPTH_SIZE = constant.Constant( 'GLX_DEPTH_SIZE', 12 ) GLX_STENCIL_SIZE = constant.Constant( 'GLX_STENCIL_SIZE', 13 ) GLX_ACCUM_RED_SIZE = constant.Constant( 'GLX_ACCUM_RED_SIZE', 14 ) GLX_ACCUM_GREEN_SIZE = constant.Constant( 'GLX_ACCUM_GREEN_SIZE', 15 ) GLX_ACCUM_BLUE_SIZE = constant.Constant( 'GLX_ACCUM_BLUE_SIZE', 16 ) GLX_ACCUM_ALPHA_SIZE = constant.Constant( 'GLX_ACCUM_ALPHA_SIZE', 17 ) GLX_BAD_SCREEN = constant.Constant( 'GLX_BAD_SCREEN', 1 ) GLX_BAD_ATTRIBUTE = constant.Constant( 'GLX_BAD_ATTRIBUTE', 2 ) GLX_NO_EXTENSION = constant.Constant( 'GLX_NO_EXTENSION', 3 ) GLX_BAD_VISUAL = constant.Constant( 'GLX_BAD_VISUAL', 4 ) GLX_BAD_CONTEXT = constant.Constant( 'GLX_BAD_CONTEXT', 5 ) GLX_BAD_VALUE = constant.Constant( 'GLX_BAD_VALUE', 6 ) GLX_BAD_ENUM = constant.Constant( 'GLX_BAD_ENUM', 7 ) GLX_VENDOR = constant.Constant( 'GLX_VENDOR', 1 ) GLX_VERSION = constant.Constant( 'GLX_VERSION', 2 ) GLX_EXTENSIONS = constant.Constant( 'GLX_EXTENSIONS', 3 ) GLX_CONFIG_CAVEAT = constant.Constant( 'GLX_CONFIG_CAVEAT', 32 ) GLX_DONT_CARE = constant.Constant( 'GLX_DONT_CARE', 4294967295 ) GLX_X_VISUAL_TYPE = constant.Constant( 'GLX_X_VISUAL_TYPE', 34 ) GLX_TRANSPARENT_TYPE = constant.Constant( 'GLX_TRANSPARENT_TYPE', 35 ) GLX_TRANSPARENT_INDEX_VALUE = constant.Constant( 'GLX_TRANSPARENT_INDEX_VALUE', 36 ) GLX_TRANSPARENT_RED_VALUE = constant.Constant( 'GLX_TRANSPARENT_RED_VALUE', 37 ) GLX_TRANSPARENT_GREEN_VALUE = constant.Constant( 'GLX_TRANSPARENT_GREEN_VALUE', 38 ) GLX_TRANSPARENT_BLUE_VALUE = constant.Constant( 'GLX_TRANSPARENT_BLUE_VALUE', 39 ) GLX_TRANSPARENT_ALPHA_VALUE = constant.Constant( 'GLX_TRANSPARENT_ALPHA_VALUE', 40 ) GLX_WINDOW_BIT = constant.Constant( 'GLX_WINDOW_BIT', 1 ) GLX_PIXMAP_BIT = constant.Constant( 'GLX_PIXMAP_BIT', 2 ) GLX_PBUFFER_BIT = constant.Constant( 'GLX_PBUFFER_BIT', 4 ) GLX_AUX_BUFFERS_BIT = constant.Constant( 'GLX_AUX_BUFFERS_BIT', 16 ) GLX_FRONT_LEFT_BUFFER_BIT = constant.Constant( 'GLX_FRONT_LEFT_BUFFER_BIT', 1 ) GLX_FRONT_RIGHT_BUFFER_BIT = constant.Constant( 'GLX_FRONT_RIGHT_BUFFER_BIT', 2 ) GLX_BACK_LEFT_BUFFER_BIT = constant.Constant( 'GLX_BACK_LEFT_BUFFER_BIT', 4 ) GLX_BACK_RIGHT_BUFFER_BIT = constant.Constant( 'GLX_BACK_RIGHT_BUFFER_BIT', 8 ) GLX_DEPTH_BUFFER_BIT = constant.Constant( 'GLX_DEPTH_BUFFER_BIT', 32 ) GLX_STENCIL_BUFFER_BIT = constant.Constant( 'GLX_STENCIL_BUFFER_BIT', 64 ) GLX_ACCUM_BUFFER_BIT = constant.Constant( 'GLX_ACCUM_BUFFER_BIT', 128 ) GLX_NONE = constant.Constant( 'GLX_NONE', 32768 ) GLX_SLOW_CONFIG = constant.Constant( 'GLX_SLOW_CONFIG', 32769 ) GLX_TRUE_COLOR = constant.Constant( 'GLX_TRUE_COLOR', 32770 ) GLX_DIRECT_COLOR = constant.Constant( 'GLX_DIRECT_COLOR', 32771 ) GLX_PSEUDO_COLOR = constant.Constant( 'GLX_PSEUDO_COLOR', 32772 ) GLX_STATIC_COLOR = constant.Constant( 'GLX_STATIC_COLOR', 32773 ) GLX_GRAY_SCALE = constant.Constant( 'GLX_GRAY_SCALE', 32774 ) GLX_STATIC_GRAY = constant.Constant( 'GLX_STATIC_GRAY', 32775 ) GLX_TRANSPARENT_RGB = constant.Constant( 'GLX_TRANSPARENT_RGB', 32776 ) GLX_TRANSPARENT_INDEX = constant.Constant( 'GLX_TRANSPARENT_INDEX', 32777 ) GLX_VISUAL_ID = constant.Constant( 'GLX_VISUAL_ID', 32779 ) GLX_SCREEN = constant.Constant( 'GLX_SCREEN', 32780 ) GLX_NON_CONFORMANT_CONFIG = constant.Constant( 'GLX_NON_CONFORMANT_CONFIG', 32781 ) GLX_DRAWABLE_TYPE = constant.Constant( 'GLX_DRAWABLE_TYPE', 32784 ) GLX_RENDER_TYPE = constant.Constant( 'GLX_RENDER_TYPE', 32785 ) GLX_X_RENDERABLE = constant.Constant( 'GLX_X_RENDERABLE', 32786 ) GLX_FBCONFIG_ID = constant.Constant( 'GLX_FBCONFIG_ID', 32787 ) GLX_RGBA_TYPE = constant.Constant( 'GLX_RGBA_TYPE', 32788 ) GLX_COLOR_INDEX_TYPE = constant.Constant( 'GLX_COLOR_INDEX_TYPE', 32789 ) GLX_MAX_PBUFFER_WIDTH = constant.Constant( 'GLX_MAX_PBUFFER_WIDTH', 32790 ) GLX_MAX_PBUFFER_HEIGHT = constant.Constant( 'GLX_MAX_PBUFFER_HEIGHT', 32791 ) GLX_MAX_PBUFFER_PIXELS = constant.Constant( 'GLX_MAX_PBUFFER_PIXELS', 32792 ) GLX_PRESERVED_CONTENTS = constant.Constant( 'GLX_PRESERVED_CONTENTS', 32795 ) GLX_LARGEST_PBUFFER = constant.Constant( 'GLX_LARGEST_PBUFFER', 32796 ) GLX_WIDTH = constant.Constant( 'GLX_WIDTH', 32797 ) GLX_HEIGHT = constant.Constant( 'GLX_HEIGHT', 32798 ) GLX_EVENT_MASK = constant.Constant( 'GLX_EVENT_MASK', 32799 ) GLX_DAMAGED = constant.Constant( 'GLX_DAMAGED', 32800 ) GLX_SAVED = constant.Constant( 'GLX_SAVED', 32801 ) GLX_WINDOW = constant.Constant( 'GLX_WINDOW', 32802 ) GLX_PBUFFER = constant.Constant( 'GLX_PBUFFER', 32803 ) GLX_PBUFFER_HEIGHT = constant.Constant( 'GLX_PBUFFER_HEIGHT', 32832 ) GLX_PBUFFER_WIDTH = constant.Constant( 'GLX_PBUFFER_WIDTH', 32833 ) GLX_RGBA_BIT = constant.Constant( 'GLX_RGBA_BIT', 1 ) GLX_COLOR_INDEX_BIT = constant.Constant( 'GLX_COLOR_INDEX_BIT', 2 ) GLX_PBUFFER_CLOBBER_MASK = constant.Constant( 'GLX_PBUFFER_CLOBBER_MASK', 134217728 ) GLX_SAMPLE_BUFFERS = constant.Constant( 'GLX_SAMPLE_BUFFERS', 100000 ) GLX_SAMPLES = constant.Constant( 'GLX_SAMPLES', 100001 ) class struct___GLXcontextRec(Structure): __slots__ = [ ] struct___GLXcontextRec._fields_ = [ ('_opaque_struct', c_int) ] class struct___GLXcontextRec(Structure): __slots__ = [ ] struct___GLXcontextRec._fields_ = [ ('_opaque_struct', c_int) ] GLXContext = POINTER(struct___GLXcontextRec) # /usr/include/GL/glx.h:178 XID = c_ulong # /usr/include/X11/X.h:66 GLXPixmap = XID # /usr/include/GL/glx.h:179 GLXDrawable = XID # /usr/include/GL/glx.h:180 class struct___GLXFBConfigRec(Structure): __slots__ = [ ] struct___GLXFBConfigRec._fields_ = [ ('_opaque_struct', c_int) ] class struct___GLXFBConfigRec(Structure): __slots__ = [ ] struct___GLXFBConfigRec._fields_ = [ ('_opaque_struct', c_int) ] GLXFBConfig = POINTER(struct___GLXFBConfigRec) # /usr/include/GL/glx.h:182 GLXFBConfigID = XID # /usr/include/GL/glx.h:183 GLXContextID = XID # /usr/include/GL/glx.h:184 GLXWindow = XID # /usr/include/GL/glx.h:185 GLXPbuffer = XID # /usr/include/GL/glx.h:186 GLX_PbufferClobber = constant.Constant( 'GLX_PbufferClobber', 0 ) GLX_BufferSwapComplete = constant.Constant( 'GLX_BufferSwapComplete', 1 ) class struct_anon_103(Structure): __slots__ = [ 'visual', 'visualid', 'screen', 'depth', 'class', 'red_mask', 'green_mask', 'blue_mask', 'colormap_size', 'bits_per_rgb', ] class struct_anon_18(Structure): __slots__ = [ 'ext_data', 'visualid', 'class', 'red_mask', 'green_mask', 'blue_mask', 'bits_per_rgb', 'map_entries', ] class struct__XExtData(Structure): __slots__ = [ 'number', 'next', 'free_private', 'private_data', ] XPointer = c_char_p # /usr/include/X11/Xlib.h:84 struct__XExtData._fields_ = [ ('number', c_int), ('next', POINTER(struct__XExtData)), ('free_private', POINTER(CFUNCTYPE(c_int, POINTER(struct__XExtData)))), ('private_data', XPointer), ] XExtData = struct__XExtData # /usr/include/X11/Xlib.h:163 VisualID = c_ulong # /usr/include/X11/X.h:76 struct_anon_18._fields_ = [ ('ext_data', POINTER(XExtData)), ('visualid', VisualID), ('class', c_int), ('red_mask', c_ulong), ('green_mask', c_ulong), ('blue_mask', c_ulong), ('bits_per_rgb', c_int), ('map_entries', c_int), ] Visual = struct_anon_18 # /usr/include/X11/Xlib.h:246 struct_anon_103._fields_ = [ ('visual', POINTER(Visual)), ('visualid', VisualID), ('screen', c_int), ('depth', c_int), ('class', c_int), ('red_mask', c_ulong), ('green_mask', c_ulong), ('blue_mask', c_ulong), ('colormap_size', c_int), ('bits_per_rgb', c_int), ] XVisualInfo = struct_anon_103 # /usr/include/X11/Xutil.h:294 class struct__XDisplay(Structure): __slots__ = [ ] struct__XDisplay._fields_ = [ ('_opaque_struct', c_int) ] class struct__XDisplay(Structure): __slots__ = [ ] struct__XDisplay._fields_ = [ ('_opaque_struct', c_int) ] Display = struct__XDisplay # /usr/include/X11/Xlib.h:495 glXChooseVisual = platform.createBaseFunction( 'glXChooseVisual', dll=platform.GL, resultType=POINTER(XVisualInfo), argTypes=[POINTER(Display), c_int, POINTER(c_int)], doc='glXChooseVisual( POINTER(Display)(dpy), c_int(screen), POINTER(c_int)(attribList) ) -> POINTER(XVisualInfo)', argNames=['dpy', 'screen', 'attribList'], ) glXCreateContext = platform.createBaseFunction( 'glXCreateContext', dll=platform.GL, resultType=GLXContext, argTypes=[POINTER(Display), POINTER(XVisualInfo), GLXContext, c_int], doc='glXCreateContext( POINTER(Display)(dpy), POINTER(XVisualInfo)(vis), GLXContext(shareList), c_int(direct) ) -> GLXContext', argNames=['dpy', 'vis', 'shareList', 'direct'], ) glXDestroyContext = platform.createBaseFunction( 'glXDestroyContext', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXContext], doc='glXDestroyContext( POINTER(Display)(dpy), GLXContext(ctx) ) -> None', argNames=['dpy', 'ctx'], ) glXMakeCurrent = platform.createBaseFunction( 'glXMakeCurrent', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, GLXContext], doc='glXMakeCurrent( POINTER(Display)(dpy), GLXDrawable(drawable), GLXContext(ctx) ) -> c_int', argNames=['dpy', 'drawable', 'ctx'], ) glXCopyContext = platform.createBaseFunction( 'glXCopyContext', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXContext, GLXContext, c_ulong], doc='glXCopyContext( POINTER(Display)(dpy), GLXContext(src), GLXContext(dst), c_ulong(mask) ) -> None', argNames=['dpy', 'src', 'dst', 'mask'], ) glXSwapBuffers = platform.createBaseFunction( 'glXSwapBuffers', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable], doc='glXSwapBuffers( POINTER(Display)(dpy), GLXDrawable(drawable) ) -> None', argNames=['dpy', 'drawable'], ) Pixmap = XID # /usr/include/X11/X.h:102 glXCreateGLXPixmap = platform.createBaseFunction( 'glXCreateGLXPixmap', dll=platform.GL, resultType=GLXPixmap, argTypes=[POINTER(Display), POINTER(XVisualInfo), Pixmap], doc='glXCreateGLXPixmap( POINTER(Display)(dpy), POINTER(XVisualInfo)(visual), Pixmap(pixmap) ) -> GLXPixmap', argNames=['dpy', 'visual', 'pixmap'], ) glXDestroyGLXPixmap = platform.createBaseFunction( 'glXDestroyGLXPixmap', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXPixmap], doc='glXDestroyGLXPixmap( POINTER(Display)(dpy), GLXPixmap(pixmap) ) -> None', argNames=['dpy', 'pixmap'], ) glXQueryExtension = platform.createBaseFunction( 'glXQueryExtension', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), POINTER(c_int), POINTER(c_int)], doc='glXQueryExtension( POINTER(Display)(dpy), POINTER(c_int)(errorb), POINTER(c_int)(event) ) -> c_int', argNames=['dpy', 'errorb', 'event'], ) glXQueryVersion = platform.createBaseFunction( 'glXQueryVersion', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), POINTER(c_int), POINTER(c_int)], doc='glXQueryVersion( POINTER(Display)(dpy), POINTER(c_int)(maj), POINTER(c_int)(min) ) -> c_int', argNames=['dpy', 'maj', 'min'], ) glXIsDirect = platform.createBaseFunction( 'glXIsDirect', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXContext], doc='glXIsDirect( POINTER(Display)(dpy), GLXContext(ctx) ) -> c_int', argNames=['dpy', 'ctx'], ) glXGetConfig = platform.createBaseFunction( 'glXGetConfig', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), POINTER(XVisualInfo), c_int, POINTER(c_int)], doc='glXGetConfig( POINTER(Display)(dpy), POINTER(XVisualInfo)(visual), c_int(attrib), POINTER(c_int)(value) ) -> c_int', argNames=['dpy', 'visual', 'attrib', 'value'], ) glXGetCurrentContext = platform.createBaseFunction( 'glXGetCurrentContext', dll=platform.GL, resultType=GLXContext, argTypes=[], doc='glXGetCurrentContext( ) -> GLXContext', argNames=[], ) glXGetCurrentDrawable = platform.createBaseFunction( 'glXGetCurrentDrawable', dll=platform.GL, resultType=GLXDrawable, argTypes=[], doc='glXGetCurrentDrawable( ) -> GLXDrawable', argNames=[], ) glXWaitGL = platform.createBaseFunction( 'glXWaitGL', dll=platform.GL, resultType=None, argTypes=[], doc='glXWaitGL( ) -> None', argNames=[], ) glXWaitX = platform.createBaseFunction( 'glXWaitX', dll=platform.GL, resultType=None, argTypes=[], doc='glXWaitX( ) -> None', argNames=[], ) Font = XID # /usr/include/X11/X.h:100 glXUseXFont = platform.createBaseFunction( 'glXUseXFont', dll=platform.GL, resultType=None, argTypes=[Font, c_int, c_int, c_int], doc='glXUseXFont( Font(font), c_int(first), c_int(count), c_int(list) ) -> None', argNames=['font', 'first', 'count', 'list'], ) glXQueryExtensionsString = platform.createBaseFunction( 'glXQueryExtensionsString', dll=platform.GL, resultType=c_char_p, argTypes=[POINTER(Display), c_int], doc='glXQueryExtensionsString( POINTER(Display)(dpy), c_int(screen) ) -> c_char_p', argNames=['dpy', 'screen'], ) glXQueryServerString = platform.createBaseFunction( 'glXQueryServerString', dll=platform.GL, resultType=c_char_p, argTypes=[POINTER(Display), c_int, c_int], doc='glXQueryServerString( POINTER(Display)(dpy), c_int(screen), c_int(name) ) -> c_char_p', argNames=['dpy', 'screen', 'name'], ) glXGetClientString = platform.createBaseFunction( 'glXGetClientString', dll=platform.GL, resultType=c_char_p, argTypes=[POINTER(Display), c_int], doc='glXGetClientString( POINTER(Display)(dpy), c_int(name) ) -> c_char_p', argNames=['dpy', 'name'], ) glXGetCurrentDisplay = platform.createBaseFunction( 'glXGetCurrentDisplay', dll=platform.GL, resultType=POINTER(Display), argTypes=[], doc='glXGetCurrentDisplay( ) -> POINTER(Display)', argNames=[], ) glXChooseFBConfig = platform.createBaseFunction( 'glXChooseFBConfig', dll=platform.GL, resultType=POINTER(GLXFBConfig), argTypes=[POINTER(Display), c_int, POINTER(c_int), POINTER(c_int)], doc='glXChooseFBConfig( POINTER(Display)(dpy), c_int(screen), POINTER(c_int)(attribList), POINTER(c_int)(nitems) ) -> POINTER(GLXFBConfig)', argNames=['dpy', 'screen', 'attribList', 'nitems'], ) glXGetFBConfigAttrib = platform.createBaseFunction( 'glXGetFBConfigAttrib', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXFBConfig, c_int, POINTER(c_int)], doc='glXGetFBConfigAttrib( POINTER(Display)(dpy), GLXFBConfig(config), c_int(attribute), POINTER(c_int)(value) ) -> c_int', argNames=['dpy', 'config', 'attribute', 'value'], ) glXGetFBConfigs = platform.createBaseFunction( 'glXGetFBConfigs', dll=platform.GL, resultType=POINTER(GLXFBConfig), argTypes=[POINTER(Display), c_int, POINTER(c_int)], doc='glXGetFBConfigs( POINTER(Display)(dpy), c_int(screen), POINTER(c_int)(nelements) ) -> POINTER(GLXFBConfig)', argNames=['dpy', 'screen', 'nelements'], ) glXGetVisualFromFBConfig = platform.createBaseFunction( 'glXGetVisualFromFBConfig', dll=platform.GL, resultType=POINTER(XVisualInfo), argTypes=[POINTER(Display), GLXFBConfig], doc='glXGetVisualFromFBConfig( POINTER(Display)(dpy), GLXFBConfig(config) ) -> POINTER(XVisualInfo)', argNames=['dpy', 'config'], ) Window = XID # /usr/include/X11/X.h:96 glXCreateWindow = platform.createBaseFunction( 'glXCreateWindow', dll=platform.GL, resultType=GLXWindow, argTypes=[POINTER(Display), GLXFBConfig, Window, POINTER(c_int)], doc='glXCreateWindow( POINTER(Display)(dpy), GLXFBConfig(config), Window(win), POINTER(c_int)(attribList) ) -> GLXWindow', argNames=['dpy', 'config', 'win', 'attribList'], ) glXDestroyWindow = platform.createBaseFunction( 'glXDestroyWindow', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXWindow], doc='glXDestroyWindow( POINTER(Display)(dpy), GLXWindow(window) ) -> None', argNames=['dpy', 'window'], ) glXCreatePixmap = platform.createBaseFunction( 'glXCreatePixmap', dll=platform.GL, resultType=GLXPixmap, argTypes=[POINTER(Display), GLXFBConfig, Pixmap, POINTER(c_int)], doc='glXCreatePixmap( POINTER(Display)(dpy), GLXFBConfig(config), Pixmap(pixmap), POINTER(c_int)(attribList) ) -> GLXPixmap', argNames=['dpy', 'config', 'pixmap', 'attribList'], ) glXDestroyPixmap = platform.createBaseFunction( 'glXDestroyPixmap', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXPixmap], doc='glXDestroyPixmap( POINTER(Display)(dpy), GLXPixmap(pixmap) ) -> None', argNames=['dpy', 'pixmap'], ) glXCreatePbuffer = platform.createBaseFunction( 'glXCreatePbuffer', dll=platform.GL, resultType=GLXPbuffer, argTypes=[POINTER(Display), GLXFBConfig, POINTER(c_int)], doc='glXCreatePbuffer( POINTER(Display)(dpy), GLXFBConfig(config), POINTER(c_int)(attribList) ) -> GLXPbuffer', argNames=['dpy', 'config', 'attribList'], ) glXDestroyPbuffer = platform.createBaseFunction( 'glXDestroyPbuffer', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXPbuffer], doc='glXDestroyPbuffer( POINTER(Display)(dpy), GLXPbuffer(pbuf) ) -> None', argNames=['dpy', 'pbuf'], ) glXQueryDrawable = platform.createBaseFunction( 'glXQueryDrawable', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_int, POINTER(c_uint)], doc='glXQueryDrawable( POINTER(Display)(dpy), GLXDrawable(draw), c_int(attribute), POINTER(c_uint)(value) ) -> None', argNames=['dpy', 'draw', 'attribute', 'value'], ) glXCreateNewContext = platform.createBaseFunction( 'glXCreateNewContext', dll=platform.GL, resultType=GLXContext, argTypes=[POINTER(Display), GLXFBConfig, c_int, GLXContext, c_int], doc='glXCreateNewContext( POINTER(Display)(dpy), GLXFBConfig(config), c_int(renderType), GLXContext(shareList), c_int(direct) ) -> GLXContext', argNames=['dpy', 'config', 'renderType', 'shareList', 'direct'], ) glXMakeContextCurrent = platform.createBaseFunction( 'glXMakeContextCurrent', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, GLXDrawable, GLXContext], doc='glXMakeContextCurrent( POINTER(Display)(dpy), GLXDrawable(draw), GLXDrawable(read), GLXContext(ctx) ) -> c_int', argNames=['dpy', 'draw', 'read', 'ctx'], ) glXGetCurrentReadDrawable = platform.createBaseFunction( 'glXGetCurrentReadDrawable', dll=platform.GL, resultType=GLXDrawable, argTypes=[], doc='glXGetCurrentReadDrawable( ) -> GLXDrawable', argNames=[], ) glXQueryContext = platform.createBaseFunction( 'glXQueryContext', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXContext, c_int, POINTER(c_int)], doc='glXQueryContext( POINTER(Display)(dpy), GLXContext(ctx), c_int(attribute), POINTER(c_int)(value) ) -> c_int', argNames=['dpy', 'ctx', 'attribute', 'value'], ) glXSelectEvent = platform.createBaseFunction( 'glXSelectEvent', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_ulong], doc='glXSelectEvent( POINTER(Display)(dpy), GLXDrawable(drawable), c_ulong(mask) ) -> None', argNames=['dpy', 'drawable', 'mask'], ) glXGetSelectedEvent = platform.createBaseFunction( 'glXGetSelectedEvent', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_ulong)], doc='glXGetSelectedEvent( POINTER(Display)(dpy), GLXDrawable(drawable), POINTER(c_ulong)(mask) ) -> None', argNames=['dpy', 'drawable', 'mask'], ) # ARB_get_proc_address (/usr/include/GL/glx.h:327) GLX_ARB_get_proc_address = constant.Constant( 'GLX_ARB_get_proc_address', 1 ) __GLXextFuncPtr = CFUNCTYPE(None) # /usr/include/GL/glx.h:330 GLubyte = c_ubyte # /usr/include/GL/gl.h:162 glXGetProcAddressARB = platform.createBaseFunction( 'glXGetProcAddressARB', dll=platform.GL, resultType=__GLXextFuncPtr, argTypes=[POINTER(GLubyte)], doc='glXGetProcAddressARB( POINTER(GLubyte)() ) -> __GLXextFuncPtr', argNames=[''], ) glXGetProcAddress = platform.createBaseFunction( 'glXGetProcAddress', dll=platform.GL, resultType=POINTER(CFUNCTYPE(None)), argTypes=[POINTER(GLubyte)], doc='glXGetProcAddress( POINTER(GLubyte)(procname) ) -> POINTER(CFUNCTYPE(None))', argNames=['procname'], ) # GLXEXT_LEGACY (/usr/include/GL/glx.h:344) # VERSION_1_3 (/usr/include/GL/glxext.h:55) # VERSION_1_4 (/usr/include/GL/glxext.h:114) # ARB_get_proc_address (/usr/include/GL/glxext.h:119) # ARB_multisample (/usr/include/GL/glxext.h:122) # ARB_vertex_buffer_object (/usr/include/GL/glxext.h:127) # ARB_fbconfig_float (/usr/include/GL/glxext.h:131) # ARB_framebuffer_sRGB (/usr/include/GL/glxext.h:136) # ARB_create_context (/usr/include/GL/glxext.h:140) # ARB_create_context_profile (/usr/include/GL/glxext.h:148) # ARB_create_context_robustness (/usr/include/GL/glxext.h:154) # SGIS_multisample (/usr/include/GL/glxext.h:161) # EXT_visual_info (/usr/include/GL/glxext.h:166) # SGI_swap_control (/usr/include/GL/glxext.h:185) # SGI_video_sync (/usr/include/GL/glxext.h:188) # SGI_make_current_read (/usr/include/GL/glxext.h:191) # SGIX_video_source (/usr/include/GL/glxext.h:194) # EXT_visual_rating (/usr/include/GL/glxext.h:197) # EXT_import_context (/usr/include/GL/glxext.h:204) # SGIX_fbconfig (/usr/include/GL/glxext.h:210) # SGIX_pbuffer (/usr/include/GL/glxext.h:224) # SGI_cushion (/usr/include/GL/glxext.h:252) # SGIX_video_resize (/usr/include/GL/glxext.h:255) # SGIX_dmbuffer (/usr/include/GL/glxext.h:260) # SGIX_swap_group (/usr/include/GL/glxext.h:264) # SGIX_swap_barrier (/usr/include/GL/glxext.h:267) # SGIS_blended_overlay (/usr/include/GL/glxext.h:270) # SGIS_shared_multisample (/usr/include/GL/glxext.h:274) # SUN_get_transparent_index (/usr/include/GL/glxext.h:279) # 3DFX_multisample (/usr/include/GL/glxext.h:282) # MESA_copy_sub_buffer (/usr/include/GL/glxext.h:287) # MESA_pixmap_colormap (/usr/include/GL/glxext.h:290) # MESA_release_buffers (/usr/include/GL/glxext.h:293) # MESA_set_3dfx_mode (/usr/include/GL/glxext.h:296) # SGIX_visual_select_group (/usr/include/GL/glxext.h:301) # OML_swap_method (/usr/include/GL/glxext.h:305) # OML_sync_control (/usr/include/GL/glxext.h:312) # NV_float_buffer (/usr/include/GL/glxext.h:315) # SGIX_hyperpipe (/usr/include/GL/glxext.h:319) # MESA_agp_offset (/usr/include/GL/glxext.h:332) # EXT_fbconfig_packed_float (/usr/include/GL/glxext.h:335) # EXT_framebuffer_sRGB (/usr/include/GL/glxext.h:340) # EXT_texture_from_pixmap (/usr/include/GL/glxext.h:344) # NV_present_video (/usr/include/GL/glxext.h:380) # NV_video_out (/usr/include/GL/glxext.h:384) # NV_swap_group (/usr/include/GL/glxext.h:397) # NV_video_capture (/usr/include/GL/glxext.h:400) # EXT_swap_control (/usr/include/GL/glxext.h:406) # NV_copy_image (/usr/include/GL/glxext.h:411) # INTEL_swap_event (/usr/include/GL/glxext.h:414) # NV_multisample_coverage (/usr/include/GL/glxext.h:421) # AMD_gpu_association (/usr/include/GL/glxext.h:426) # EXT_create_context_es2_profile (/usr/include/GL/glxext.h:439) # ARB_get_proc_address (/usr/include/GL/glxext.h:446) # SGIX_video_source (/usr/include/GL/glxext.h:450) # SGIX_fbconfig (/usr/include/GL/glxext.h:454) # SGIX_pbuffer (/usr/include/GL/glxext.h:459) # NV_video_output (/usr/include/GL/glxext.h:476) # NV_video_capture (/usr/include/GL/glxext.h:480) # VERSION_1_3 (/usr/include/GL/glxext.h:521) # VERSION_1_4 (/usr/include/GL/glxext.h:563) # ARB_get_proc_address (/usr/include/GL/glxext.h:571) # ARB_multisample (/usr/include/GL/glxext.h:579) # ARB_fbconfig_float (/usr/include/GL/glxext.h:583) # ARB_framebuffer_sRGB (/usr/include/GL/glxext.h:587) # ARB_create_context (/usr/include/GL/glxext.h:591) # ARB_create_context_profile (/usr/include/GL/glxext.h:599) # ARB_create_context_robustness (/usr/include/GL/glxext.h:603) # SGIS_multisample (/usr/include/GL/glxext.h:607) # EXT_visual_info (/usr/include/GL/glxext.h:611) # SGI_swap_control (/usr/include/GL/glxext.h:615) # SGI_video_sync (/usr/include/GL/glxext.h:623) # SGI_make_current_read (/usr/include/GL/glxext.h:633) # SGIX_video_source (/usr/include/GL/glxext.h:643) # EXT_visual_rating (/usr/include/GL/glxext.h:655) # EXT_import_context (/usr/include/GL/glxext.h:659) # SGIX_fbconfig (/usr/include/GL/glxext.h:675) # SGIX_pbuffer (/usr/include/GL/glxext.h:693) # SGI_cushion (/usr/include/GL/glxext.h:709) # SGIX_video_resize (/usr/include/GL/glxext.h:717) # SGIX_dmbuffer (/usr/include/GL/glxext.h:733) # SGIX_swap_group (/usr/include/GL/glxext.h:743) # SGIX_swap_barrier (/usr/include/GL/glxext.h:751) # SUN_get_transparent_index (/usr/include/GL/glxext.h:761) # MESA_copy_sub_buffer (/usr/include/GL/glxext.h:769) # MESA_pixmap_colormap (/usr/include/GL/glxext.h:777) # MESA_release_buffers (/usr/include/GL/glxext.h:785) # MESA_set_3dfx_mode (/usr/include/GL/glxext.h:793) # SGIX_visual_select_group (/usr/include/GL/glxext.h:801) # OML_swap_method (/usr/include/GL/glxext.h:805) # OML_sync_control (/usr/include/GL/glxext.h:809) # NV_float_buffer (/usr/include/GL/glxext.h:825) # SGIX_hyperpipe (/usr/include/GL/glxext.h:829) # MESA_agp_offset (/usr/include/GL/glxext.h:876) # EXT_fbconfig_packed_float (/usr/include/GL/glxext.h:884) # EXT_framebuffer_sRGB (/usr/include/GL/glxext.h:888) # EXT_texture_from_pixmap (/usr/include/GL/glxext.h:892) # NV_present_video (/usr/include/GL/glxext.h:902) # NV_video_output (/usr/include/GL/glxext.h:912) # NV_swap_group (/usr/include/GL/glxext.h:930) # NV_video_capture (/usr/include/GL/glxext.h:948) # EXT_swap_control (/usr/include/GL/glxext.h:964) # NV_copy_image (/usr/include/GL/glxext.h:972) # INTEL_swap_event (/usr/include/GL/glxext.h:980) # NV_multisample_coverage (/usr/include/GL/glxext.h:984) # NV_vertex_array_range (/usr/include/GL/glx.h:359) GLsizei = c_int # /usr/include/GL/gl.h:165 GLfloat = c_float # /usr/include/GL/gl.h:166 glXAllocateMemoryNV = platform.createBaseFunction( 'glXAllocateMemoryNV', dll=platform.GL, resultType=POINTER(c_void), argTypes=[GLsizei, GLfloat, GLfloat, GLfloat], doc='glXAllocateMemoryNV( GLsizei(size), GLfloat(readfreq), GLfloat(writefreq), GLfloat(priority) ) -> POINTER(c_void)', argNames=['size', 'readfreq', 'writefreq', 'priority'], ) GLvoid = None # /usr/include/GL/gl.h:158 glXFreeMemoryNV = platform.createBaseFunction( 'glXFreeMemoryNV', dll=platform.GL, resultType=None, argTypes=[POINTER(GLvoid)], doc='glXFreeMemoryNV( POINTER(GLvoid)(pointer) ) -> None', argNames=['pointer'], ) # ARB_render_texture (/usr/include/GL/glx.h:374) GLX_ARB_render_texture = constant.Constant( 'GLX_ARB_render_texture', 1 ) glXBindTexImageARB = platform.createBaseFunction( 'glXBindTexImageARB', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXPbuffer, c_int], doc='glXBindTexImageARB( POINTER(Display)(dpy), GLXPbuffer(pbuffer), c_int(buffer) ) -> c_int', argNames=['dpy', 'pbuffer', 'buffer'], ) glXReleaseTexImageARB = platform.createBaseFunction( 'glXReleaseTexImageARB', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXPbuffer, c_int], doc='glXReleaseTexImageARB( POINTER(Display)(dpy), GLXPbuffer(pbuffer), c_int(buffer) ) -> c_int', argNames=['dpy', 'pbuffer', 'buffer'], ) glXDrawableAttribARB = platform.createBaseFunction( 'glXDrawableAttribARB', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_int)], doc='glXDrawableAttribARB( POINTER(Display)(dpy), GLXDrawable(draw), POINTER(c_int)(attribList) ) -> c_int', argNames=['dpy', 'draw', 'attribList'], ) # NV_float_buffer (/usr/include/GL/glx.h:387) # MESA_swap_frame_usage (/usr/include/GL/glx.h:399) GLX_MESA_swap_frame_usage = constant.Constant( 'GLX_MESA_swap_frame_usage', 1 ) glXGetFrameUsageMESA = platform.createBaseFunction( 'glXGetFrameUsageMESA', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_float)], doc='glXGetFrameUsageMESA( POINTER(Display)(dpy), GLXDrawable(drawable), POINTER(c_float)(usage) ) -> c_int', argNames=['dpy', 'drawable', 'usage'], ) glXBeginFrameTrackingMESA = platform.createBaseFunction( 'glXBeginFrameTrackingMESA', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable], doc='glXBeginFrameTrackingMESA( POINTER(Display)(dpy), GLXDrawable(drawable) ) -> c_int', argNames=['dpy', 'drawable'], ) glXEndFrameTrackingMESA = platform.createBaseFunction( 'glXEndFrameTrackingMESA', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable], doc='glXEndFrameTrackingMESA( POINTER(Display)(dpy), GLXDrawable(drawable) ) -> c_int', argNames=['dpy', 'drawable'], ) glXQueryFrameTrackingMESA = platform.createBaseFunction( 'glXQueryFrameTrackingMESA', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_int64), POINTER(c_int64), POINTER(c_float)], doc='glXQueryFrameTrackingMESA( POINTER(Display)(dpy), GLXDrawable(drawable), POINTER(c_int64)(swapCount), POINTER(c_int64)(missedFrames), POINTER(c_float)(lastMissedUsage) ) -> c_int', argNames=['dpy', 'drawable', 'swapCount', 'missedFrames', 'lastMissedUsage'], ) # MESA_swap_control (/usr/include/GL/glx.h:419) GLX_MESA_swap_control = constant.Constant( 'GLX_MESA_swap_control', 1 ) glXSwapIntervalMESA = platform.createBaseFunction( 'glXSwapIntervalMESA', dll=platform.GL, resultType=c_int, argTypes=[c_uint], doc='glXSwapIntervalMESA( c_uint(interval) ) -> c_int', argNames=['interval'], ) glXGetSwapIntervalMESA = platform.createBaseFunction( 'glXGetSwapIntervalMESA', dll=platform.GL, resultType=c_int, argTypes=[], doc='glXGetSwapIntervalMESA( ) -> c_int', argNames=[], ) # EXT_texture_from_pixmap (/usr/include/GL/glx.h:436) class struct_anon_111(Structure): __slots__ = [ 'event_type', 'draw_type', 'serial', 'send_event', 'display', 'drawable', 'buffer_mask', 'aux_buffer', 'x', 'y', 'width', 'height', 'count', ] struct_anon_111._fields_ = [ ('event_type', c_int), ('draw_type', c_int), ('serial', c_ulong), ('send_event', c_int), ('display', POINTER(Display)), ('drawable', GLXDrawable), ('buffer_mask', c_uint), ('aux_buffer', c_uint), ('x', c_int), ('y', c_int), ('width', c_int), ('height', c_int), ('count', c_int), ] GLXPbufferClobberEvent = struct_anon_111 # /usr/include/GL/glx.h:502 class struct_anon_112(Structure): __slots__ = [ 'type', 'serial', 'send_event', 'display', 'drawable', 'event_type', 'ust', 'msc', 'sbc', ] struct_anon_112._fields_ = [ ('type', c_int), ('serial', c_ulong), ('send_event', c_int), ('display', POINTER(Display)), ('drawable', GLXDrawable), ('event_type', c_int), ('ust', c_int64), ('msc', c_int64), ('sbc', c_int64), ] GLXBufferSwapComplete = struct_anon_112 # /usr/include/GL/glx.h:514 class struct___GLXEvent(Union): __slots__ = [ 'glxpbufferclobber', 'glxbufferswapcomplete', 'pad', ] struct___GLXEvent._fields_ = [ ('glxpbufferclobber', GLXPbufferClobberEvent), ('glxbufferswapcomplete', GLXBufferSwapComplete), ('pad', c_long * 24), ] GLXEvent = struct___GLXEvent # /usr/include/GL/glx.h:520 __all__ = ['GLX_VERSION_1_1', 'GLX_VERSION_1_2', 'GLX_VERSION_1_3', 'GLX_VERSION_1_4', 'GLX_USE_GL', 'GLX_BUFFER_SIZE', 'GLX_LEVEL', 'GLX_RGBA', 'GLX_DOUBLEBUFFER', 'GLX_STEREO', 'GLX_AUX_BUFFERS', 'GLX_RED_SIZE', 'GLX_GREEN_SIZE', 'GLX_BLUE_SIZE', 'GLX_ALPHA_SIZE', 'GLX_DEPTH_SIZE', 'GLX_STENCIL_SIZE', 'GLX_ACCUM_RED_SIZE', 'GLX_ACCUM_GREEN_SIZE', 'GLX_ACCUM_BLUE_SIZE', 'GLX_ACCUM_ALPHA_SIZE', 'GLX_BAD_SCREEN', 'GLX_BAD_ATTRIBUTE', 'GLX_NO_EXTENSION', 'GLX_BAD_VISUAL', 'GLX_BAD_CONTEXT', 'GLX_BAD_VALUE', 'GLX_BAD_ENUM', 'GLX_VENDOR', 'GLX_VERSION', 'GLX_EXTENSIONS', 'GLX_CONFIG_CAVEAT', 'GLX_DONT_CARE', 'GLX_X_VISUAL_TYPE', 'GLX_TRANSPARENT_TYPE', 'GLX_TRANSPARENT_INDEX_VALUE', 'GLX_TRANSPARENT_RED_VALUE', 'GLX_TRANSPARENT_GREEN_VALUE', 'GLX_TRANSPARENT_BLUE_VALUE', 'GLX_TRANSPARENT_ALPHA_VALUE', 'GLX_WINDOW_BIT', 'GLX_PIXMAP_BIT', 'GLX_PBUFFER_BIT', 'GLX_AUX_BUFFERS_BIT', 'GLX_FRONT_LEFT_BUFFER_BIT', 'GLX_FRONT_RIGHT_BUFFER_BIT', 'GLX_BACK_LEFT_BUFFER_BIT', 'GLX_BACK_RIGHT_BUFFER_BIT', 'GLX_DEPTH_BUFFER_BIT', 'GLX_STENCIL_BUFFER_BIT', 'GLX_ACCUM_BUFFER_BIT', 'GLX_NONE', 'GLX_SLOW_CONFIG', 'GLX_TRUE_COLOR', 'GLX_DIRECT_COLOR', 'GLX_PSEUDO_COLOR', 'GLX_STATIC_COLOR', 'GLX_GRAY_SCALE', 'GLX_STATIC_GRAY', 'GLX_TRANSPARENT_RGB', 'GLX_TRANSPARENT_INDEX', 'GLX_VISUAL_ID', 'GLX_SCREEN', 'GLX_NON_CONFORMANT_CONFIG', 'GLX_DRAWABLE_TYPE', 'GLX_RENDER_TYPE', 'GLX_X_RENDERABLE', 'GLX_FBCONFIG_ID', 'GLX_RGBA_TYPE', 'GLX_COLOR_INDEX_TYPE', 'GLX_MAX_PBUFFER_WIDTH', 'GLX_MAX_PBUFFER_HEIGHT', 'GLX_MAX_PBUFFER_PIXELS', 'GLX_PRESERVED_CONTENTS', 'GLX_LARGEST_PBUFFER', 'GLX_WIDTH', 'GLX_HEIGHT', 'GLX_EVENT_MASK', 'GLX_DAMAGED', 'GLX_SAVED', 'GLX_WINDOW', 'GLX_PBUFFER', 'GLX_PBUFFER_HEIGHT', 'GLX_PBUFFER_WIDTH', 'GLX_RGBA_BIT', 'GLX_COLOR_INDEX_BIT', 'GLX_PBUFFER_CLOBBER_MASK', 'GLX_SAMPLE_BUFFERS', 'GLX_SAMPLES', 'GLXContext', 'GLXPixmap', 'GLXDrawable', 'GLXFBConfig', 'GLXFBConfigID', 'GLXContextID', 'GLXWindow', 'GLXPbuffer', 'GLX_PbufferClobber', 'GLX_BufferSwapComplete', 'glXChooseVisual', 'glXCreateContext', 'glXDestroyContext', 'glXMakeCurrent', 'glXCopyContext', 'glXSwapBuffers', 'glXCreateGLXPixmap', 'glXDestroyGLXPixmap', 'glXQueryExtension', 'glXQueryVersion', 'glXIsDirect', 'glXGetConfig', 'glXGetCurrentContext', 'glXGetCurrentDrawable', 'glXWaitGL', 'glXWaitX', 'glXUseXFont', 'glXQueryExtensionsString', 'glXQueryServerString', 'glXGetClientString', 'glXGetCurrentDisplay', 'glXChooseFBConfig', 'glXGetFBConfigAttrib', 'glXGetFBConfigs', 'glXGetVisualFromFBConfig', 'glXCreateWindow', 'glXDestroyWindow', 'glXCreatePixmap', 'glXDestroyPixmap', 'glXCreatePbuffer', 'glXDestroyPbuffer', 'glXQueryDrawable', 'glXCreateNewContext', 'glXMakeContextCurrent', 'glXGetCurrentReadDrawable', 'glXQueryContext', 'glXSelectEvent', 'glXGetSelectedEvent', 'GLX_ARB_get_proc_address', 'glXGetProcAddressARB', 'glXGetProcAddress', 'glXAllocateMemoryNV', 'glXFreeMemoryNV', 'GLX_ARB_render_texture', 'glXBindTexImageARB', 'glXReleaseTexImageARB', 'glXDrawableAttribARB', 'GLX_MESA_swap_frame_usage', 'glXGetFrameUsageMESA', 'glXBeginFrameTrackingMESA', 'glXEndFrameTrackingMESA', 'glXQueryFrameTrackingMESA', 'GLX_MESA_swap_control', 'glXSwapIntervalMESA', 'glXGetSwapIntervalMESA', 'GLXPbufferClobberEvent', 'GLXBufferSwapComplete', 'GLXEvent'] # END GENERATED CONTENT (do not edit above this line) PyOpenGL-3.0.2/OpenGL/raw/__init__.py0000644000175000001440000000033612025001653020137 0ustar mcfletchusers00000000000000"""C-style "raw" API for low-level ctypes-specific access to OpenGL This sub-package is autogenerated using a customised version of the ctypes codegenerator package (see src/openglgenerator.py and src/generateraw.py). """PyOpenGL-3.0.2/OpenGL/raw/_WGL.py0000644000175000001440000004503212025001653017172 0ustar mcfletchusers00000000000000# BEGIN GENERATED CONTENT (do not edit below this line) # This content is generated by gengl.py. # Wrapper for /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h from OpenGL import platform, constant from ctypes import * c_void = None CONST = constant.Constant( 'CONST', 0 ) GLenum = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:19 GLboolean = c_ubyte # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:20 GLbitfield = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:21 GLbyte = c_char # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:22 GLshort = c_short # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:23 GLint = c_int # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:24 GLsizei = c_int # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:25 GLubyte = c_ubyte # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:26 GLushort = c_ushort # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:27 GLuint = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:28 GLfloat = c_float # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:29 GLclampf = c_float # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:30 GLdouble = c_double # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:31 GLclampd = c_double # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:32 GLvoid = None # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:33 INT8 = c_char # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:35 PINT8 = c_char_p # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:35 INT16 = c_short # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:36 PINT16 = POINTER(c_short) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:36 INT32 = c_int # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:37 PINT32 = POINTER(c_int) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:37 UINT8 = c_ubyte # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:38 PUINT8 = POINTER(c_ubyte) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:38 UINT16 = c_ushort # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:39 PUINT16 = POINTER(c_ushort) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:39 UINT32 = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:40 PUINT32 = POINTER(c_uint) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:40 LONG32 = c_int # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:41 PLONG32 = POINTER(c_int) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:41 ULONG32 = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:42 PULONG32 = POINTER(c_uint) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:42 DWORD32 = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:43 PDWORD32 = POINTER(c_uint) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:43 INT64 = c_longlong # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:44 PINT64 = POINTER(c_longlong) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:44 UINT64 = c_ulonglong # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:45 PUINT64 = POINTER(c_ulonglong) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:45 VOID = None # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:47 LPVOID = POINTER(None) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:47 LPCSTR = c_char_p # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:48 CHAR = c_char # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:49 BYTE = c_ubyte # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:50 WORD = c_ushort # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:51 USHORT = c_ushort # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:51 UINT = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:52 INT = c_int # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:53 INT_PTR = POINTER(c_int) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:53 BOOL = c_long # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:54 LONG = c_long # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:55 DWORD = c_ulong # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:56 FLOAT = c_float # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:57 COLORREF = DWORD # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:58 LPCOLORREF = POINTER(DWORD) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:58 HANDLE = POINTER(None) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:60 # TODO: figure out how to make the handle not appear as a void_p within the code... HANDLE.final = True HGLRC = HANDLE # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:62 HDC = HANDLE # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:63 PROC = CFUNCTYPE(INT_PTR) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:65 wglCopyContext = platform.createBaseFunction( 'wglCopyContext', dll=platform.GL, resultType=BOOL, argTypes=[HGLRC, HGLRC, UINT], doc='wglCopyContext( HGLRC(None), HGLRC(None), UINT(None) ) -> BOOL', argNames=['None', 'None', 'None'], ) wglCreateContext = platform.createBaseFunction( 'wglCreateContext', dll=platform.GL, resultType=HGLRC, argTypes=[HDC], doc='wglCreateContext( HDC(None) ) -> HGLRC', argNames=['None'], ) wglCreateLayerContext = platform.createBaseFunction( 'wglCreateLayerContext', dll=platform.GL, resultType=HGLRC, argTypes=[HDC, c_int], doc='wglCreateLayerContext( HDC(None), c_int(None) ) -> HGLRC', argNames=['None', 'None'], ) wglDeleteContext = platform.createBaseFunction( 'wglDeleteContext', dll=platform.GL, resultType=BOOL, argTypes=[HGLRC], doc='wglDeleteContext( HGLRC(None) ) -> BOOL', argNames=['None'], ) wglGetCurrentContext = platform.createBaseFunction( 'wglGetCurrentContext', dll=platform.GL, resultType=HGLRC, argTypes=[], doc='wglGetCurrentContext( ) -> HGLRC', argNames=[], ) wglGetCurrentDC = platform.createBaseFunction( 'wglGetCurrentDC', dll=platform.GL, resultType=HDC, argTypes=[], doc='wglGetCurrentDC( ) -> HDC', argNames=[], ) wglGetProcAddress = platform.createBaseFunction( 'wglGetProcAddress', dll=platform.GL, resultType=PROC, argTypes=[LPCSTR], doc='wglGetProcAddress( LPCSTR(None) ) -> PROC', argNames=['None'], ) wglMakeCurrent = platform.createBaseFunction( 'wglMakeCurrent', dll=platform.GL, resultType=BOOL, argTypes=[HDC, HGLRC], doc='wglMakeCurrent( HDC(None), HGLRC(None) ) -> BOOL', argNames=['None', 'None'], ) wglShareLists = platform.createBaseFunction( 'wglShareLists', dll=platform.GL, resultType=BOOL, argTypes=[HGLRC, HGLRC], doc='wglShareLists( HGLRC(None), HGLRC(None) ) -> BOOL', argNames=['None', 'None'], ) wglUseFontBitmapsA = platform.createBaseFunction( 'wglUseFontBitmapsA', dll=platform.GL, resultType=BOOL, argTypes=[HDC, DWORD, DWORD, DWORD], doc='wglUseFontBitmapsA( HDC(None), DWORD(None), DWORD(None), DWORD(None) ) -> BOOL', argNames=['None', 'None', 'None', 'None'], ) wglUseFontBitmapsW = platform.createBaseFunction( 'wglUseFontBitmapsW', dll=platform.GL, resultType=BOOL, argTypes=[HDC, DWORD, DWORD, DWORD], doc='wglUseFontBitmapsW( HDC(None), DWORD(None), DWORD(None), DWORD(None) ) -> BOOL', argNames=['None', 'None', 'None', 'None'], ) SwapBuffers = platform.createBaseFunction( 'SwapBuffers', dll=platform.GL, resultType=BOOL, argTypes=[HDC], doc='SwapBuffers( HDC(None) ) -> BOOL', argNames=['None'], ) class struct__POINTFLOAT(Structure): __slots__ = [ 'x', 'y', ] struct__POINTFLOAT._fields_ = [ ('x', FLOAT), ('y', FLOAT), ] POINTFLOAT = struct__POINTFLOAT # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:83 PPOINTFLOAT = POINTER(struct__POINTFLOAT) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:83 class struct__GLYPHMETRICSFLOAT(Structure): __slots__ = [ 'gmfBlackBoxX', 'gmfBlackBoxY', 'gmfptGlyphOrigin', 'gmfCellIncX', 'gmfCellIncY', ] struct__GLYPHMETRICSFLOAT._fields_ = [ ('gmfBlackBoxX', FLOAT), ('gmfBlackBoxY', FLOAT), ('gmfptGlyphOrigin', POINTFLOAT), ('gmfCellIncX', FLOAT), ('gmfCellIncY', FLOAT), ] GLYPHMETRICSFLOAT = struct__GLYPHMETRICSFLOAT # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:91 PGLYPHMETRICSFLOAT = POINTER(struct__GLYPHMETRICSFLOAT) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:91 LPGLYPHMETRICSFLOAT = POINTER(struct__GLYPHMETRICSFLOAT) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:91 WGL_FONT_LINES = constant.Constant( 'WGL_FONT_LINES', 0 ) WGL_FONT_POLYGONS = constant.Constant( 'WGL_FONT_POLYGONS', 1 ) wglUseFontOutlinesA = platform.createBaseFunction( 'wglUseFontOutlinesA', dll=platform.GL, resultType=BOOL, argTypes=[HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, c_int, LPGLYPHMETRICSFLOAT], doc='wglUseFontOutlinesA( HDC(None), DWORD(None), DWORD(None), DWORD(None), FLOAT(None), FLOAT(None), c_int(None), LPGLYPHMETRICSFLOAT(None) ) -> BOOL', argNames=['None', 'None', 'None', 'None', 'None', 'None', 'None', 'None'], ) wglUseFontOutlinesW = platform.createBaseFunction( 'wglUseFontOutlinesW', dll=platform.GL, resultType=BOOL, argTypes=[HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, c_int, LPGLYPHMETRICSFLOAT], doc='wglUseFontOutlinesW( HDC(None), DWORD(None), DWORD(None), DWORD(None), FLOAT(None), FLOAT(None), c_int(None), LPGLYPHMETRICSFLOAT(None) ) -> BOOL', argNames=['None', 'None', 'None', 'None', 'None', 'None', 'None', 'None'], ) class struct_tagLAYERPLANEDESCRIPTOR(Structure): __slots__ = [ 'nSize', 'nVersion', 'dwFlags', 'iPixelType', 'cColorBits', 'cRedBits', 'cRedShift', 'cGreenBits', 'cGreenShift', 'cBlueBits', 'cBlueShift', 'cAlphaBits', 'cAlphaShift', 'cAccumBits', 'cAccumRedBits', 'cAccumGreenBits', 'cAccumBlueBits', 'cAccumAlphaBits', 'cDepthBits', 'cStencilBits', 'cAuxBuffers', 'iLayerPlane', 'bReserved', 'crTransparent', ] struct_tagLAYERPLANEDESCRIPTOR._fields_ = [ ('nSize', WORD), ('nVersion', WORD), ('dwFlags', DWORD), ('iPixelType', BYTE), ('cColorBits', BYTE), ('cRedBits', BYTE), ('cRedShift', BYTE), ('cGreenBits', BYTE), ('cGreenShift', BYTE), ('cBlueBits', BYTE), ('cBlueShift', BYTE), ('cAlphaBits', BYTE), ('cAlphaShift', BYTE), ('cAccumBits', BYTE), ('cAccumRedBits', BYTE), ('cAccumGreenBits', BYTE), ('cAccumBlueBits', BYTE), ('cAccumAlphaBits', BYTE), ('cDepthBits', BYTE), ('cStencilBits', BYTE), ('cAuxBuffers', BYTE), ('iLayerPlane', BYTE), ('bReserved', BYTE), ('crTransparent', COLORREF), ] LAYERPLANEDESCRIPTOR = struct_tagLAYERPLANEDESCRIPTOR # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:127 PLAYERPLANEDESCRIPTOR = POINTER(struct_tagLAYERPLANEDESCRIPTOR) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:127 LPLAYERPLANEDESCRIPTOR = POINTER(struct_tagLAYERPLANEDESCRIPTOR) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:127 LPD_DOUBLEBUFFER = constant.Constant( 'LPD_DOUBLEBUFFER', 1 ) LPD_STEREO = constant.Constant( 'LPD_STEREO', 2 ) LPD_SUPPORT_GDI = constant.Constant( 'LPD_SUPPORT_GDI', 16 ) LPD_SUPPORT_OPENGL = constant.Constant( 'LPD_SUPPORT_OPENGL', 32 ) LPD_SHARE_DEPTH = constant.Constant( 'LPD_SHARE_DEPTH', 64 ) LPD_SHARE_STENCIL = constant.Constant( 'LPD_SHARE_STENCIL', 128 ) LPD_SHARE_ACCUM = constant.Constant( 'LPD_SHARE_ACCUM', 256 ) LPD_SWAP_EXCHANGE = constant.Constant( 'LPD_SWAP_EXCHANGE', 512 ) LPD_SWAP_COPY = constant.Constant( 'LPD_SWAP_COPY', 1024 ) LPD_TRANSPARENT = constant.Constant( 'LPD_TRANSPARENT', 4096 ) LPD_TYPE_RGBA = constant.Constant( 'LPD_TYPE_RGBA', 0 ) LPD_TYPE_COLORINDEX = constant.Constant( 'LPD_TYPE_COLORINDEX', 1 ) WGL_SWAP_MAIN_PLANE = constant.Constant( 'WGL_SWAP_MAIN_PLANE', 1 ) WGL_SWAP_OVERLAY1 = constant.Constant( 'WGL_SWAP_OVERLAY1', 2 ) WGL_SWAP_OVERLAY2 = constant.Constant( 'WGL_SWAP_OVERLAY2', 4 ) WGL_SWAP_OVERLAY3 = constant.Constant( 'WGL_SWAP_OVERLAY3', 8 ) WGL_SWAP_OVERLAY4 = constant.Constant( 'WGL_SWAP_OVERLAY4', 16 ) WGL_SWAP_OVERLAY5 = constant.Constant( 'WGL_SWAP_OVERLAY5', 32 ) WGL_SWAP_OVERLAY6 = constant.Constant( 'WGL_SWAP_OVERLAY6', 64 ) WGL_SWAP_OVERLAY7 = constant.Constant( 'WGL_SWAP_OVERLAY7', 128 ) WGL_SWAP_OVERLAY8 = constant.Constant( 'WGL_SWAP_OVERLAY8', 256 ) WGL_SWAP_OVERLAY9 = constant.Constant( 'WGL_SWAP_OVERLAY9', 512 ) WGL_SWAP_OVERLAY10 = constant.Constant( 'WGL_SWAP_OVERLAY10', 1024 ) WGL_SWAP_OVERLAY11 = constant.Constant( 'WGL_SWAP_OVERLAY11', 2048 ) WGL_SWAP_OVERLAY12 = constant.Constant( 'WGL_SWAP_OVERLAY12', 4096 ) WGL_SWAP_OVERLAY13 = constant.Constant( 'WGL_SWAP_OVERLAY13', 8192 ) WGL_SWAP_OVERLAY14 = constant.Constant( 'WGL_SWAP_OVERLAY14', 16384 ) WGL_SWAP_OVERLAY15 = constant.Constant( 'WGL_SWAP_OVERLAY15', 32768 ) WGL_SWAP_UNDERLAY1 = constant.Constant( 'WGL_SWAP_UNDERLAY1', 65536 ) WGL_SWAP_UNDERLAY2 = constant.Constant( 'WGL_SWAP_UNDERLAY2', 131072 ) WGL_SWAP_UNDERLAY3 = constant.Constant( 'WGL_SWAP_UNDERLAY3', 262144 ) WGL_SWAP_UNDERLAY4 = constant.Constant( 'WGL_SWAP_UNDERLAY4', 524288 ) WGL_SWAP_UNDERLAY5 = constant.Constant( 'WGL_SWAP_UNDERLAY5', 1048576 ) WGL_SWAP_UNDERLAY6 = constant.Constant( 'WGL_SWAP_UNDERLAY6', 2097152 ) WGL_SWAP_UNDERLAY7 = constant.Constant( 'WGL_SWAP_UNDERLAY7', 4194304 ) WGL_SWAP_UNDERLAY8 = constant.Constant( 'WGL_SWAP_UNDERLAY8', 8388608 ) WGL_SWAP_UNDERLAY9 = constant.Constant( 'WGL_SWAP_UNDERLAY9', 16777216 ) WGL_SWAP_UNDERLAY10 = constant.Constant( 'WGL_SWAP_UNDERLAY10', 33554432 ) WGL_SWAP_UNDERLAY11 = constant.Constant( 'WGL_SWAP_UNDERLAY11', 67108864 ) WGL_SWAP_UNDERLAY12 = constant.Constant( 'WGL_SWAP_UNDERLAY12', 134217728 ) WGL_SWAP_UNDERLAY13 = constant.Constant( 'WGL_SWAP_UNDERLAY13', 268435456 ) WGL_SWAP_UNDERLAY14 = constant.Constant( 'WGL_SWAP_UNDERLAY14', 536870912 ) WGL_SWAP_UNDERLAY15 = constant.Constant( 'WGL_SWAP_UNDERLAY15', 1073741824 ) wglDescribeLayerPlane = platform.createBaseFunction( 'wglDescribeLayerPlane', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, c_int, UINT, LPLAYERPLANEDESCRIPTOR], doc='wglDescribeLayerPlane( HDC(None), c_int(None), c_int(None), UINT(None), LPLAYERPLANEDESCRIPTOR(None) ) -> BOOL', argNames=['None', 'None', 'None', 'None', 'None'], ) wglSetLayerPaletteEntries = platform.createBaseFunction( 'wglSetLayerPaletteEntries', dll=platform.GL, resultType=c_int, argTypes=[HDC, c_int, c_int, c_int, POINTER(COLORREF)], doc='wglSetLayerPaletteEntries( HDC(None), c_int(None), c_int(None), c_int(None), POINTER(COLORREF)() ) -> c_int', argNames=['None', 'None', 'None', 'None', ''], ) wglGetLayerPaletteEntries = platform.createBaseFunction( 'wglGetLayerPaletteEntries', dll=platform.GL, resultType=c_int, argTypes=[HDC, c_int, c_int, c_int, POINTER(COLORREF)], doc='wglGetLayerPaletteEntries( HDC(None), c_int(None), c_int(None), c_int(None), POINTER(COLORREF)() ) -> c_int', argNames=['None', 'None', 'None', 'None', ''], ) wglRealizeLayerPalette = platform.createBaseFunction( 'wglRealizeLayerPalette', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, BOOL], doc='wglRealizeLayerPalette( HDC(None), c_int(None), BOOL(None) ) -> BOOL', argNames=['None', 'None', 'None'], ) wglSwapLayerBuffers = platform.createBaseFunction( 'wglSwapLayerBuffers', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT], doc='wglSwapLayerBuffers( HDC(None), UINT(None) ) -> BOOL', argNames=['None', 'None'], ) class struct__WGLSWAP(Structure): __slots__ = [ 'hdc', 'uiFlags', ] struct__WGLSWAP._fields_ = [ ('hdc', HDC), ('uiFlags', UINT), ] WGLSWAP = struct__WGLSWAP # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:190 PWGLSWAP = POINTER(struct__WGLSWAP) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:190 LPWGLSWAP = POINTER(struct__WGLSWAP) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:190 WGL_SWAPMULTIPLE_MAX = constant.Constant( 'WGL_SWAPMULTIPLE_MAX', 16 ) wglSwapMultipleBuffers = platform.createBaseFunction( 'wglSwapMultipleBuffers', dll=platform.GL, resultType=DWORD, argTypes=[UINT, POINTER(WGLSWAP)], doc='wglSwapMultipleBuffers( UINT(None), POINTER(WGLSWAP)() ) -> DWORD', argNames=['None', ''], ) class struct_tagRECT(Structure): __slots__ = [ 'left', 'top', 'right', 'bottom', ] struct_tagRECT._fields_ = [ ('left', LONG), ('top', LONG), ('right', LONG), ('bottom', LONG), ] RECT = struct_tagRECT # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:202 PRECT = POINTER(struct_tagRECT) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:202 NPRECT = POINTER(struct_tagRECT) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:202 LPRECT = POINTER(struct_tagRECT) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:202 __all__ = ['CONST', 'GLenum', 'GLboolean', 'GLbitfield', 'GLbyte', 'GLshort', 'GLint', 'GLsizei', 'GLubyte', 'GLushort', 'GLuint', 'GLfloat', 'GLclampf', 'GLdouble', 'GLclampd', 'GLvoid', 'INT8', 'PINT8', 'INT16', 'PINT16', 'INT32', 'PINT32', 'UINT8', 'PUINT8', 'UINT16', 'PUINT16', 'UINT32', 'PUINT32', 'LONG32', 'PLONG32', 'ULONG32', 'PULONG32', 'DWORD32', 'PDWORD32', 'INT64', 'PINT64', 'UINT64', 'PUINT64', 'VOID', 'LPVOID', 'LPCSTR', 'CHAR', 'BYTE', 'WORD', 'USHORT', 'UINT', 'INT', 'INT_PTR', 'BOOL', 'LONG', 'DWORD', 'FLOAT', 'COLORREF', 'LPCOLORREF', 'HANDLE', 'HGLRC', 'HDC', 'PROC', 'wglCopyContext', 'wglCreateContext', 'wglCreateLayerContext', 'wglDeleteContext', 'wglGetCurrentContext', 'wglGetCurrentDC', 'wglGetProcAddress', 'wglMakeCurrent', 'wglShareLists', 'wglUseFontBitmapsA', 'wglUseFontBitmapsW', 'SwapBuffers', 'POINTFLOAT', 'PPOINTFLOAT', 'GLYPHMETRICSFLOAT', 'PGLYPHMETRICSFLOAT', 'LPGLYPHMETRICSFLOAT', 'WGL_FONT_LINES', 'WGL_FONT_POLYGONS', 'wglUseFontOutlinesA', 'wglUseFontOutlinesW', 'LAYERPLANEDESCRIPTOR', 'PLAYERPLANEDESCRIPTOR', 'LPLAYERPLANEDESCRIPTOR', 'LPD_DOUBLEBUFFER', 'LPD_STEREO', 'LPD_SUPPORT_GDI', 'LPD_SUPPORT_OPENGL', 'LPD_SHARE_DEPTH', 'LPD_SHARE_STENCIL', 'LPD_SHARE_ACCUM', 'LPD_SWAP_EXCHANGE', 'LPD_SWAP_COPY', 'LPD_TRANSPARENT', 'LPD_TYPE_RGBA', 'LPD_TYPE_COLORINDEX', 'WGL_SWAP_MAIN_PLANE', 'WGL_SWAP_OVERLAY1', 'WGL_SWAP_OVERLAY2', 'WGL_SWAP_OVERLAY3', 'WGL_SWAP_OVERLAY4', 'WGL_SWAP_OVERLAY5', 'WGL_SWAP_OVERLAY6', 'WGL_SWAP_OVERLAY7', 'WGL_SWAP_OVERLAY8', 'WGL_SWAP_OVERLAY9', 'WGL_SWAP_OVERLAY10', 'WGL_SWAP_OVERLAY11', 'WGL_SWAP_OVERLAY12', 'WGL_SWAP_OVERLAY13', 'WGL_SWAP_OVERLAY14', 'WGL_SWAP_OVERLAY15', 'WGL_SWAP_UNDERLAY1', 'WGL_SWAP_UNDERLAY2', 'WGL_SWAP_UNDERLAY3', 'WGL_SWAP_UNDERLAY4', 'WGL_SWAP_UNDERLAY5', 'WGL_SWAP_UNDERLAY6', 'WGL_SWAP_UNDERLAY7', 'WGL_SWAP_UNDERLAY8', 'WGL_SWAP_UNDERLAY9', 'WGL_SWAP_UNDERLAY10', 'WGL_SWAP_UNDERLAY11', 'WGL_SWAP_UNDERLAY12', 'WGL_SWAP_UNDERLAY13', 'WGL_SWAP_UNDERLAY14', 'WGL_SWAP_UNDERLAY15', 'wglDescribeLayerPlane', 'wglSetLayerPaletteEntries', 'wglGetLayerPaletteEntries', 'wglRealizeLayerPalette', 'wglSwapLayerBuffers', 'WGLSWAP', 'PWGLSWAP', 'LPWGLSWAP', 'WGL_SWAPMULTIPLE_MAX', 'wglSwapMultipleBuffers', 'RECT', 'PRECT', 'NPRECT', 'LPRECT'] # END GENERATED CONTENT (do not edit above this line) PyOpenGL-3.0.2/OpenGL/raw/_WGL_NV.py0000644000175000001440000021576112025001653017605 0ustar mcfletchusers00000000000000# BEGIN GENERATED CONTENT (do not edit below this line) # This content is generated by gengl.py. # Wrapper for http://developer.download.nvidia.com/opengl/includes/wglext.h from OpenGL import platform, constant from ctypes import * c_void = None # H (/home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:9) # H (/home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:9) GLAPI = constant.Constant( 'GLAPI', 0 ) WGL_WGLEXT_VERSION = constant.Constant( 'WGL_WGLEXT_VERSION', 6 ) # ARB_buffer_region (http://developer.download.nvidia.com/opengl/includes/wglext.h:62) WGL_FRONT_COLOR_BUFFER_BIT_ARB = constant.Constant( 'WGL_FRONT_COLOR_BUFFER_BIT_ARB', 1 ) WGL_BACK_COLOR_BUFFER_BIT_ARB = constant.Constant( 'WGL_BACK_COLOR_BUFFER_BIT_ARB', 2 ) WGL_DEPTH_BUFFER_BIT_ARB = constant.Constant( 'WGL_DEPTH_BUFFER_BIT_ARB', 4 ) WGL_STENCIL_BUFFER_BIT_ARB = constant.Constant( 'WGL_STENCIL_BUFFER_BIT_ARB', 8 ) # ARB_multisample (http://developer.download.nvidia.com/opengl/includes/wglext.h:69) WGL_SAMPLE_BUFFERS_ARB = constant.Constant( 'WGL_SAMPLE_BUFFERS_ARB', 8257 ) WGL_SAMPLES_ARB = constant.Constant( 'WGL_SAMPLES_ARB', 8258 ) # ARB_extensions_string (http://developer.download.nvidia.com/opengl/includes/wglext.h:74) # ARB_pixel_format (http://developer.download.nvidia.com/opengl/includes/wglext.h:77) WGL_NUMBER_PIXEL_FORMATS_ARB = constant.Constant( 'WGL_NUMBER_PIXEL_FORMATS_ARB', 8192 ) WGL_DRAW_TO_WINDOW_ARB = constant.Constant( 'WGL_DRAW_TO_WINDOW_ARB', 8193 ) WGL_DRAW_TO_BITMAP_ARB = constant.Constant( 'WGL_DRAW_TO_BITMAP_ARB', 8194 ) WGL_ACCELERATION_ARB = constant.Constant( 'WGL_ACCELERATION_ARB', 8195 ) WGL_NEED_PALETTE_ARB = constant.Constant( 'WGL_NEED_PALETTE_ARB', 8196 ) WGL_NEED_SYSTEM_PALETTE_ARB = constant.Constant( 'WGL_NEED_SYSTEM_PALETTE_ARB', 8197 ) WGL_SWAP_LAYER_BUFFERS_ARB = constant.Constant( 'WGL_SWAP_LAYER_BUFFERS_ARB', 8198 ) WGL_SWAP_METHOD_ARB = constant.Constant( 'WGL_SWAP_METHOD_ARB', 8199 ) WGL_NUMBER_OVERLAYS_ARB = constant.Constant( 'WGL_NUMBER_OVERLAYS_ARB', 8200 ) WGL_NUMBER_UNDERLAYS_ARB = constant.Constant( 'WGL_NUMBER_UNDERLAYS_ARB', 8201 ) WGL_TRANSPARENT_ARB = constant.Constant( 'WGL_TRANSPARENT_ARB', 8202 ) WGL_TRANSPARENT_RED_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_RED_VALUE_ARB', 8247 ) WGL_TRANSPARENT_GREEN_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_GREEN_VALUE_ARB', 8248 ) WGL_TRANSPARENT_BLUE_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_BLUE_VALUE_ARB', 8249 ) WGL_TRANSPARENT_ALPHA_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_ALPHA_VALUE_ARB', 8250 ) WGL_TRANSPARENT_INDEX_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_INDEX_VALUE_ARB', 8251 ) WGL_SHARE_DEPTH_ARB = constant.Constant( 'WGL_SHARE_DEPTH_ARB', 8204 ) WGL_SHARE_STENCIL_ARB = constant.Constant( 'WGL_SHARE_STENCIL_ARB', 8205 ) WGL_SHARE_ACCUM_ARB = constant.Constant( 'WGL_SHARE_ACCUM_ARB', 8206 ) WGL_SUPPORT_GDI_ARB = constant.Constant( 'WGL_SUPPORT_GDI_ARB', 8207 ) WGL_SUPPORT_OPENGL_ARB = constant.Constant( 'WGL_SUPPORT_OPENGL_ARB', 8208 ) WGL_DOUBLE_BUFFER_ARB = constant.Constant( 'WGL_DOUBLE_BUFFER_ARB', 8209 ) WGL_STEREO_ARB = constant.Constant( 'WGL_STEREO_ARB', 8210 ) WGL_PIXEL_TYPE_ARB = constant.Constant( 'WGL_PIXEL_TYPE_ARB', 8211 ) WGL_COLOR_BITS_ARB = constant.Constant( 'WGL_COLOR_BITS_ARB', 8212 ) WGL_RED_BITS_ARB = constant.Constant( 'WGL_RED_BITS_ARB', 8213 ) WGL_RED_SHIFT_ARB = constant.Constant( 'WGL_RED_SHIFT_ARB', 8214 ) WGL_GREEN_BITS_ARB = constant.Constant( 'WGL_GREEN_BITS_ARB', 8215 ) WGL_GREEN_SHIFT_ARB = constant.Constant( 'WGL_GREEN_SHIFT_ARB', 8216 ) WGL_BLUE_BITS_ARB = constant.Constant( 'WGL_BLUE_BITS_ARB', 8217 ) WGL_BLUE_SHIFT_ARB = constant.Constant( 'WGL_BLUE_SHIFT_ARB', 8218 ) WGL_ALPHA_BITS_ARB = constant.Constant( 'WGL_ALPHA_BITS_ARB', 8219 ) WGL_ALPHA_SHIFT_ARB = constant.Constant( 'WGL_ALPHA_SHIFT_ARB', 8220 ) WGL_ACCUM_BITS_ARB = constant.Constant( 'WGL_ACCUM_BITS_ARB', 8221 ) WGL_ACCUM_RED_BITS_ARB = constant.Constant( 'WGL_ACCUM_RED_BITS_ARB', 8222 ) WGL_ACCUM_GREEN_BITS_ARB = constant.Constant( 'WGL_ACCUM_GREEN_BITS_ARB', 8223 ) WGL_ACCUM_BLUE_BITS_ARB = constant.Constant( 'WGL_ACCUM_BLUE_BITS_ARB', 8224 ) WGL_ACCUM_ALPHA_BITS_ARB = constant.Constant( 'WGL_ACCUM_ALPHA_BITS_ARB', 8225 ) WGL_DEPTH_BITS_ARB = constant.Constant( 'WGL_DEPTH_BITS_ARB', 8226 ) WGL_STENCIL_BITS_ARB = constant.Constant( 'WGL_STENCIL_BITS_ARB', 8227 ) WGL_AUX_BUFFERS_ARB = constant.Constant( 'WGL_AUX_BUFFERS_ARB', 8228 ) WGL_NO_ACCELERATION_ARB = constant.Constant( 'WGL_NO_ACCELERATION_ARB', 8229 ) WGL_GENERIC_ACCELERATION_ARB = constant.Constant( 'WGL_GENERIC_ACCELERATION_ARB', 8230 ) WGL_FULL_ACCELERATION_ARB = constant.Constant( 'WGL_FULL_ACCELERATION_ARB', 8231 ) WGL_SWAP_EXCHANGE_ARB = constant.Constant( 'WGL_SWAP_EXCHANGE_ARB', 8232 ) WGL_SWAP_COPY_ARB = constant.Constant( 'WGL_SWAP_COPY_ARB', 8233 ) WGL_SWAP_UNDEFINED_ARB = constant.Constant( 'WGL_SWAP_UNDEFINED_ARB', 8234 ) WGL_TYPE_RGBA_ARB = constant.Constant( 'WGL_TYPE_RGBA_ARB', 8235 ) WGL_TYPE_COLORINDEX_ARB = constant.Constant( 'WGL_TYPE_COLORINDEX_ARB', 8236 ) # ARB_make_current_read (http://developer.download.nvidia.com/opengl/includes/wglext.h:129) ERROR_INVALID_PIXEL_TYPE_ARB = constant.Constant( 'ERROR_INVALID_PIXEL_TYPE_ARB', 8259 ) ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB = constant.Constant( 'ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB', 8276 ) # ARB_pbuffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:134) WGL_DRAW_TO_PBUFFER_ARB = constant.Constant( 'WGL_DRAW_TO_PBUFFER_ARB', 8237 ) WGL_MAX_PBUFFER_PIXELS_ARB = constant.Constant( 'WGL_MAX_PBUFFER_PIXELS_ARB', 8238 ) WGL_MAX_PBUFFER_WIDTH_ARB = constant.Constant( 'WGL_MAX_PBUFFER_WIDTH_ARB', 8239 ) WGL_MAX_PBUFFER_HEIGHT_ARB = constant.Constant( 'WGL_MAX_PBUFFER_HEIGHT_ARB', 8240 ) WGL_PBUFFER_LARGEST_ARB = constant.Constant( 'WGL_PBUFFER_LARGEST_ARB', 8243 ) WGL_PBUFFER_WIDTH_ARB = constant.Constant( 'WGL_PBUFFER_WIDTH_ARB', 8244 ) WGL_PBUFFER_HEIGHT_ARB = constant.Constant( 'WGL_PBUFFER_HEIGHT_ARB', 8245 ) WGL_PBUFFER_LOST_ARB = constant.Constant( 'WGL_PBUFFER_LOST_ARB', 8246 ) # ARB_render_texture (http://developer.download.nvidia.com/opengl/includes/wglext.h:145) WGL_BIND_TO_TEXTURE_RGB_ARB = constant.Constant( 'WGL_BIND_TO_TEXTURE_RGB_ARB', 8304 ) WGL_BIND_TO_TEXTURE_RGBA_ARB = constant.Constant( 'WGL_BIND_TO_TEXTURE_RGBA_ARB', 8305 ) WGL_TEXTURE_FORMAT_ARB = constant.Constant( 'WGL_TEXTURE_FORMAT_ARB', 8306 ) WGL_TEXTURE_TARGET_ARB = constant.Constant( 'WGL_TEXTURE_TARGET_ARB', 8307 ) WGL_MIPMAP_TEXTURE_ARB = constant.Constant( 'WGL_MIPMAP_TEXTURE_ARB', 8308 ) WGL_TEXTURE_RGB_ARB = constant.Constant( 'WGL_TEXTURE_RGB_ARB', 8309 ) WGL_TEXTURE_RGBA_ARB = constant.Constant( 'WGL_TEXTURE_RGBA_ARB', 8310 ) WGL_NO_TEXTURE_ARB = constant.Constant( 'WGL_NO_TEXTURE_ARB', 8311 ) WGL_TEXTURE_CUBE_MAP_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_ARB', 8312 ) WGL_TEXTURE_1D_ARB = constant.Constant( 'WGL_TEXTURE_1D_ARB', 8313 ) WGL_TEXTURE_2D_ARB = constant.Constant( 'WGL_TEXTURE_2D_ARB', 8314 ) WGL_MIPMAP_LEVEL_ARB = constant.Constant( 'WGL_MIPMAP_LEVEL_ARB', 8315 ) WGL_CUBE_MAP_FACE_ARB = constant.Constant( 'WGL_CUBE_MAP_FACE_ARB', 8316 ) WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB', 8317 ) WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB', 8318 ) WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB', 8319 ) WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB', 8320 ) WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB', 8321 ) WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB', 8322 ) WGL_FRONT_LEFT_ARB = constant.Constant( 'WGL_FRONT_LEFT_ARB', 8323 ) WGL_FRONT_RIGHT_ARB = constant.Constant( 'WGL_FRONT_RIGHT_ARB', 8324 ) WGL_BACK_LEFT_ARB = constant.Constant( 'WGL_BACK_LEFT_ARB', 8325 ) WGL_BACK_RIGHT_ARB = constant.Constant( 'WGL_BACK_RIGHT_ARB', 8326 ) WGL_AUX0_ARB = constant.Constant( 'WGL_AUX0_ARB', 8327 ) WGL_AUX1_ARB = constant.Constant( 'WGL_AUX1_ARB', 8328 ) WGL_AUX2_ARB = constant.Constant( 'WGL_AUX2_ARB', 8329 ) WGL_AUX3_ARB = constant.Constant( 'WGL_AUX3_ARB', 8330 ) WGL_AUX4_ARB = constant.Constant( 'WGL_AUX4_ARB', 8331 ) WGL_AUX5_ARB = constant.Constant( 'WGL_AUX5_ARB', 8332 ) WGL_AUX6_ARB = constant.Constant( 'WGL_AUX6_ARB', 8333 ) WGL_AUX7_ARB = constant.Constant( 'WGL_AUX7_ARB', 8334 ) WGL_AUX8_ARB = constant.Constant( 'WGL_AUX8_ARB', 8335 ) WGL_AUX9_ARB = constant.Constant( 'WGL_AUX9_ARB', 8336 ) # ARB_pixel_format_float (http://developer.download.nvidia.com/opengl/includes/wglext.h:181) WGL_TYPE_RGBA_FLOAT_ARB = constant.Constant( 'WGL_TYPE_RGBA_FLOAT_ARB', 8608 ) # EXT_make_current_read (http://developer.download.nvidia.com/opengl/includes/wglext.h:185) ERROR_INVALID_PIXEL_TYPE_EXT = constant.Constant( 'ERROR_INVALID_PIXEL_TYPE_EXT', 8259 ) # EXT_pixel_format (http://developer.download.nvidia.com/opengl/includes/wglext.h:189) WGL_NUMBER_PIXEL_FORMATS_EXT = constant.Constant( 'WGL_NUMBER_PIXEL_FORMATS_EXT', 8192 ) WGL_DRAW_TO_WINDOW_EXT = constant.Constant( 'WGL_DRAW_TO_WINDOW_EXT', 8193 ) WGL_DRAW_TO_BITMAP_EXT = constant.Constant( 'WGL_DRAW_TO_BITMAP_EXT', 8194 ) WGL_ACCELERATION_EXT = constant.Constant( 'WGL_ACCELERATION_EXT', 8195 ) WGL_NEED_PALETTE_EXT = constant.Constant( 'WGL_NEED_PALETTE_EXT', 8196 ) WGL_NEED_SYSTEM_PALETTE_EXT = constant.Constant( 'WGL_NEED_SYSTEM_PALETTE_EXT', 8197 ) WGL_SWAP_LAYER_BUFFERS_EXT = constant.Constant( 'WGL_SWAP_LAYER_BUFFERS_EXT', 8198 ) WGL_SWAP_METHOD_EXT = constant.Constant( 'WGL_SWAP_METHOD_EXT', 8199 ) WGL_NUMBER_OVERLAYS_EXT = constant.Constant( 'WGL_NUMBER_OVERLAYS_EXT', 8200 ) WGL_NUMBER_UNDERLAYS_EXT = constant.Constant( 'WGL_NUMBER_UNDERLAYS_EXT', 8201 ) WGL_TRANSPARENT_EXT = constant.Constant( 'WGL_TRANSPARENT_EXT', 8202 ) WGL_TRANSPARENT_VALUE_EXT = constant.Constant( 'WGL_TRANSPARENT_VALUE_EXT', 8203 ) WGL_SHARE_DEPTH_EXT = constant.Constant( 'WGL_SHARE_DEPTH_EXT', 8204 ) WGL_SHARE_STENCIL_EXT = constant.Constant( 'WGL_SHARE_STENCIL_EXT', 8205 ) WGL_SHARE_ACCUM_EXT = constant.Constant( 'WGL_SHARE_ACCUM_EXT', 8206 ) WGL_SUPPORT_GDI_EXT = constant.Constant( 'WGL_SUPPORT_GDI_EXT', 8207 ) WGL_SUPPORT_OPENGL_EXT = constant.Constant( 'WGL_SUPPORT_OPENGL_EXT', 8208 ) WGL_DOUBLE_BUFFER_EXT = constant.Constant( 'WGL_DOUBLE_BUFFER_EXT', 8209 ) WGL_STEREO_EXT = constant.Constant( 'WGL_STEREO_EXT', 8210 ) WGL_PIXEL_TYPE_EXT = constant.Constant( 'WGL_PIXEL_TYPE_EXT', 8211 ) WGL_COLOR_BITS_EXT = constant.Constant( 'WGL_COLOR_BITS_EXT', 8212 ) WGL_RED_BITS_EXT = constant.Constant( 'WGL_RED_BITS_EXT', 8213 ) WGL_RED_SHIFT_EXT = constant.Constant( 'WGL_RED_SHIFT_EXT', 8214 ) WGL_GREEN_BITS_EXT = constant.Constant( 'WGL_GREEN_BITS_EXT', 8215 ) WGL_GREEN_SHIFT_EXT = constant.Constant( 'WGL_GREEN_SHIFT_EXT', 8216 ) WGL_BLUE_BITS_EXT = constant.Constant( 'WGL_BLUE_BITS_EXT', 8217 ) WGL_BLUE_SHIFT_EXT = constant.Constant( 'WGL_BLUE_SHIFT_EXT', 8218 ) WGL_ALPHA_BITS_EXT = constant.Constant( 'WGL_ALPHA_BITS_EXT', 8219 ) WGL_ALPHA_SHIFT_EXT = constant.Constant( 'WGL_ALPHA_SHIFT_EXT', 8220 ) WGL_ACCUM_BITS_EXT = constant.Constant( 'WGL_ACCUM_BITS_EXT', 8221 ) WGL_ACCUM_RED_BITS_EXT = constant.Constant( 'WGL_ACCUM_RED_BITS_EXT', 8222 ) WGL_ACCUM_GREEN_BITS_EXT = constant.Constant( 'WGL_ACCUM_GREEN_BITS_EXT', 8223 ) WGL_ACCUM_BLUE_BITS_EXT = constant.Constant( 'WGL_ACCUM_BLUE_BITS_EXT', 8224 ) WGL_ACCUM_ALPHA_BITS_EXT = constant.Constant( 'WGL_ACCUM_ALPHA_BITS_EXT', 8225 ) WGL_DEPTH_BITS_EXT = constant.Constant( 'WGL_DEPTH_BITS_EXT', 8226 ) WGL_STENCIL_BITS_EXT = constant.Constant( 'WGL_STENCIL_BITS_EXT', 8227 ) WGL_AUX_BUFFERS_EXT = constant.Constant( 'WGL_AUX_BUFFERS_EXT', 8228 ) WGL_NO_ACCELERATION_EXT = constant.Constant( 'WGL_NO_ACCELERATION_EXT', 8229 ) WGL_GENERIC_ACCELERATION_EXT = constant.Constant( 'WGL_GENERIC_ACCELERATION_EXT', 8230 ) WGL_FULL_ACCELERATION_EXT = constant.Constant( 'WGL_FULL_ACCELERATION_EXT', 8231 ) WGL_SWAP_EXCHANGE_EXT = constant.Constant( 'WGL_SWAP_EXCHANGE_EXT', 8232 ) WGL_SWAP_COPY_EXT = constant.Constant( 'WGL_SWAP_COPY_EXT', 8233 ) WGL_SWAP_UNDEFINED_EXT = constant.Constant( 'WGL_SWAP_UNDEFINED_EXT', 8234 ) WGL_TYPE_RGBA_EXT = constant.Constant( 'WGL_TYPE_RGBA_EXT', 8235 ) WGL_TYPE_COLORINDEX_EXT = constant.Constant( 'WGL_TYPE_COLORINDEX_EXT', 8236 ) # EXT_pbuffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:237) WGL_DRAW_TO_PBUFFER_EXT = constant.Constant( 'WGL_DRAW_TO_PBUFFER_EXT', 8237 ) WGL_MAX_PBUFFER_PIXELS_EXT = constant.Constant( 'WGL_MAX_PBUFFER_PIXELS_EXT', 8238 ) WGL_MAX_PBUFFER_WIDTH_EXT = constant.Constant( 'WGL_MAX_PBUFFER_WIDTH_EXT', 8239 ) WGL_MAX_PBUFFER_HEIGHT_EXT = constant.Constant( 'WGL_MAX_PBUFFER_HEIGHT_EXT', 8240 ) WGL_OPTIMAL_PBUFFER_WIDTH_EXT = constant.Constant( 'WGL_OPTIMAL_PBUFFER_WIDTH_EXT', 8241 ) WGL_OPTIMAL_PBUFFER_HEIGHT_EXT = constant.Constant( 'WGL_OPTIMAL_PBUFFER_HEIGHT_EXT', 8242 ) WGL_PBUFFER_LARGEST_EXT = constant.Constant( 'WGL_PBUFFER_LARGEST_EXT', 8243 ) WGL_PBUFFER_WIDTH_EXT = constant.Constant( 'WGL_PBUFFER_WIDTH_EXT', 8244 ) WGL_PBUFFER_HEIGHT_EXT = constant.Constant( 'WGL_PBUFFER_HEIGHT_EXT', 8245 ) # EXT_depth_float (http://developer.download.nvidia.com/opengl/includes/wglext.h:249) WGL_DEPTH_FLOAT_EXT = constant.Constant( 'WGL_DEPTH_FLOAT_EXT', 8256 ) # 3DFX_multisample (http://developer.download.nvidia.com/opengl/includes/wglext.h:253) WGL_SAMPLE_BUFFERS_3DFX = constant.Constant( 'WGL_SAMPLE_BUFFERS_3DFX', 8288 ) WGL_SAMPLES_3DFX = constant.Constant( 'WGL_SAMPLES_3DFX', 8289 ) # EXT_multisample (http://developer.download.nvidia.com/opengl/includes/wglext.h:258) WGL_SAMPLE_BUFFERS_EXT = constant.Constant( 'WGL_SAMPLE_BUFFERS_EXT', 8257 ) WGL_SAMPLES_EXT = constant.Constant( 'WGL_SAMPLES_EXT', 8258 ) # I3D_digital_video_control (http://developer.download.nvidia.com/opengl/includes/wglext.h:263) WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D = constant.Constant( 'WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D', 8272 ) WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D = constant.Constant( 'WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D', 8273 ) WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D = constant.Constant( 'WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D', 8274 ) WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D = constant.Constant( 'WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D', 8275 ) # I3D_gamma (http://developer.download.nvidia.com/opengl/includes/wglext.h:270) WGL_GAMMA_TABLE_SIZE_I3D = constant.Constant( 'WGL_GAMMA_TABLE_SIZE_I3D', 8270 ) WGL_GAMMA_EXCLUDE_DESKTOP_I3D = constant.Constant( 'WGL_GAMMA_EXCLUDE_DESKTOP_I3D', 8271 ) # I3D_genlock (http://developer.download.nvidia.com/opengl/includes/wglext.h:275) WGL_GENLOCK_SOURCE_MULTIVIEW_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_MULTIVIEW_I3D', 8260 ) WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D', 8261 ) WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D', 8262 ) WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D', 8263 ) WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D', 8264 ) WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D', 8265 ) WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D', 8266 ) WGL_GENLOCK_SOURCE_EDGE_RISING_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EDGE_RISING_I3D', 8267 ) WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D', 8268 ) # I3D_image_buffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:287) WGL_IMAGE_BUFFER_MIN_ACCESS_I3D = constant.Constant( 'WGL_IMAGE_BUFFER_MIN_ACCESS_I3D', 1 ) WGL_IMAGE_BUFFER_LOCK_I3D = constant.Constant( 'WGL_IMAGE_BUFFER_LOCK_I3D', 2 ) # I3D_swap_frame_lock (http://developer.download.nvidia.com/opengl/includes/wglext.h:292) # NV_render_depth_texture (http://developer.download.nvidia.com/opengl/includes/wglext.h:295) WGL_BIND_TO_TEXTURE_DEPTH_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_DEPTH_NV', 8355 ) WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV', 8356 ) WGL_DEPTH_TEXTURE_FORMAT_NV = constant.Constant( 'WGL_DEPTH_TEXTURE_FORMAT_NV', 8357 ) WGL_TEXTURE_DEPTH_COMPONENT_NV = constant.Constant( 'WGL_TEXTURE_DEPTH_COMPONENT_NV', 8358 ) WGL_DEPTH_COMPONENT_NV = constant.Constant( 'WGL_DEPTH_COMPONENT_NV', 8359 ) # NV_render_texture_rectangle (http://developer.download.nvidia.com/opengl/includes/wglext.h:303) WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV', 8352 ) WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV', 8353 ) WGL_TEXTURE_RECTANGLE_NV = constant.Constant( 'WGL_TEXTURE_RECTANGLE_NV', 8354 ) # ATI_pixel_format_float (http://developer.download.nvidia.com/opengl/includes/wglext.h:309) WGL_TYPE_RGBA_FLOAT_ATI = constant.Constant( 'WGL_TYPE_RGBA_FLOAT_ATI', 8608 ) WGL_RGBA_FLOAT_MODE_ATI = constant.Constant( 'WGL_RGBA_FLOAT_MODE_ATI', 34848 ) WGL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI = constant.Constant( 'WGL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI', 34869 ) # NV_float_buffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:315) WGL_FLOAT_COMPONENTS_NV = constant.Constant( 'WGL_FLOAT_COMPONENTS_NV', 8368 ) WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV', 8369 ) WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV', 8370 ) WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV', 8371 ) WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV', 8372 ) WGL_TEXTURE_FLOAT_R_NV = constant.Constant( 'WGL_TEXTURE_FLOAT_R_NV', 8373 ) WGL_TEXTURE_FLOAT_RG_NV = constant.Constant( 'WGL_TEXTURE_FLOAT_RG_NV', 8374 ) WGL_TEXTURE_FLOAT_RGB_NV = constant.Constant( 'WGL_TEXTURE_FLOAT_RGB_NV', 8375 ) WGL_TEXTURE_FLOAT_RGBA_NV = constant.Constant( 'WGL_TEXTURE_FLOAT_RGBA_NV', 8376 ) # NV_swap_group (http://developer.download.nvidia.com/opengl/includes/wglext.h:327) # NV_gpu_affinity (http://developer.download.nvidia.com/opengl/includes/wglext.h:330) WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV = constant.Constant( 'WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV', 8400 ) WGL_ERROR_MISSING_AFFINITY_MASK_NV = constant.Constant( 'WGL_ERROR_MISSING_AFFINITY_MASK_NV', 8401 ) # ARB_pbuffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:338) HANDLE = POINTER(None) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:60 HPBUFFERARB = HANDLE # http://developer.download.nvidia.com/opengl/includes/wglext.h:339 # EXT_pbuffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:341) HPBUFFEREXT = HANDLE # http://developer.download.nvidia.com/opengl/includes/wglext.h:342 # NV_gpu_affinity (http://developer.download.nvidia.com/opengl/includes/wglext.h:345) HGPUNV = HANDLE # http://developer.download.nvidia.com/opengl/includes/wglext.h:346 class struct__GPU_DEVICE(Structure): __slots__ = [ 'cb', 'DeviceName', 'DeviceString', 'Flags', 'rcVirtualScreen', ] DWORD = c_ulong # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:56 CHAR = c_char # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:49 class struct_tagRECT(Structure): __slots__ = [ 'left', 'top', 'right', 'bottom', ] LONG = c_long # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:55 struct_tagRECT._fields_ = [ ('left', LONG), ('top', LONG), ('right', LONG), ('bottom', LONG), ] RECT = struct_tagRECT # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:202 struct__GPU_DEVICE._fields_ = [ ('cb', DWORD), ('DeviceName', CHAR * 32), ('DeviceString', CHAR * 128), ('Flags', DWORD), ('rcVirtualScreen', RECT), ] GPU_DEVICE = struct__GPU_DEVICE # http://developer.download.nvidia.com/opengl/includes/wglext.h:353 PGPU_DEVICE = POINTER(struct__GPU_DEVICE) # http://developer.download.nvidia.com/opengl/includes/wglext.h:353 # ARB_buffer_region (http://developer.download.nvidia.com/opengl/includes/wglext.h:356) WGL_ARB_buffer_region = constant.Constant( 'WGL_ARB_buffer_region', 1 ) HDC = HANDLE # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:63 UINT = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:52 wglCreateBufferRegionARB = platform.createBaseFunction( 'wglCreateBufferRegionARB', dll=platform.GL, resultType=HANDLE, argTypes=[HDC, c_int, UINT], doc='wglCreateBufferRegionARB( HDC(None), c_int(None), UINT(None) ) -> HANDLE', argNames=['None', 'None', 'None'], ) VOID = None # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:47 wglDeleteBufferRegionARB = platform.createBaseFunction( 'wglDeleteBufferRegionARB', dll=platform.GL, resultType=VOID, argTypes=[HANDLE], doc='wglDeleteBufferRegionARB( HANDLE(None) ) -> VOID', argNames=['None'], ) BOOL = c_long # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:54 wglSaveBufferRegionARB = platform.createBaseFunction( 'wglSaveBufferRegionARB', dll=platform.GL, resultType=BOOL, argTypes=[HANDLE, c_int, c_int, c_int, c_int], doc='wglSaveBufferRegionARB( HANDLE(None), c_int(None), c_int(None), c_int(None), c_int(None) ) -> BOOL', argNames=['None', 'None', 'None', 'None', 'None'], ) wglRestoreBufferRegionARB = platform.createBaseFunction( 'wglRestoreBufferRegionARB', dll=platform.GL, resultType=BOOL, argTypes=[HANDLE, c_int, c_int, c_int, c_int, c_int, c_int], doc='wglRestoreBufferRegionARB( HANDLE(None), c_int(None), c_int(None), c_int(None), c_int(None), c_int(None), c_int(None) ) -> BOOL', argNames=['None', 'None', 'None', 'None', 'None', 'None', 'None'], ) PFNWGLCREATEBUFFERREGIONARBPROC = CFUNCTYPE(HANDLE, HDC, c_int, UINT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:364 PFNWGLDELETEBUFFERREGIONARBPROC = CFUNCTYPE(VOID, HANDLE) # http://developer.download.nvidia.com/opengl/includes/wglext.h:365 PFNWGLSAVEBUFFERREGIONARBPROC = CFUNCTYPE(BOOL, HANDLE, c_int, c_int, c_int, c_int) # http://developer.download.nvidia.com/opengl/includes/wglext.h:366 PFNWGLRESTOREBUFFERREGIONARBPROC = CFUNCTYPE(BOOL, HANDLE, c_int, c_int, c_int, c_int, c_int, c_int) # http://developer.download.nvidia.com/opengl/includes/wglext.h:367 # ARB_multisample (http://developer.download.nvidia.com/opengl/includes/wglext.h:370) WGL_ARB_multisample = constant.Constant( 'WGL_ARB_multisample', 1 ) # ARB_extensions_string (http://developer.download.nvidia.com/opengl/includes/wglext.h:374) WGL_ARB_extensions_string = constant.Constant( 'WGL_ARB_extensions_string', 1 ) wglGetExtensionsStringARB = platform.createBaseFunction( 'wglGetExtensionsStringARB', dll=platform.GL, resultType=c_char_p, argTypes=[HDC], doc='wglGetExtensionsStringARB( HDC(None) ) -> c_char_p', argNames=['None'], ) PFNWGLGETEXTENSIONSSTRINGARBPROC = CFUNCTYPE(c_char_p, HDC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:379 # ARB_pixel_format (http://developer.download.nvidia.com/opengl/includes/wglext.h:382) WGL_ARB_pixel_format = constant.Constant( 'WGL_ARB_pixel_format', 1 ) wglGetPixelFormatAttribivARB = platform.createBaseFunction( 'wglGetPixelFormatAttribivARB', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(c_int)], doc='wglGetPixelFormatAttribivARB( HDC(None), c_int(None), c_int(None), UINT(None), POINTER(c_int)(), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', ''], ) FLOAT = c_float # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:57 wglGetPixelFormatAttribfvARB = platform.createBaseFunction( 'wglGetPixelFormatAttribfvARB', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(FLOAT)], doc='wglGetPixelFormatAttribfvARB( HDC(None), c_int(None), c_int(None), UINT(None), POINTER(c_int)(), POINTER(FLOAT)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', ''], ) wglChoosePixelFormatARB = platform.createBaseFunction( 'wglChoosePixelFormatARB', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(c_int), POINTER(FLOAT), UINT, POINTER(c_int), POINTER(UINT)], doc='wglChoosePixelFormatARB( HDC(None), POINTER(c_int)(), POINTER(FLOAT)(), UINT(None), POINTER(c_int)(), POINTER(UINT)() ) -> BOOL', argNames=['None', '', '', 'None', '', ''], ) PFNWGLGETPIXELFORMATATTRIBIVARBPROC = CFUNCTYPE(BOOL, HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:389 PFNWGLGETPIXELFORMATATTRIBFVARBPROC = CFUNCTYPE(BOOL, HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(FLOAT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:390 PFNWGLCHOOSEPIXELFORMATARBPROC = CFUNCTYPE(BOOL, HDC, POINTER(c_int), POINTER(FLOAT), UINT, POINTER(c_int), POINTER(UINT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:391 # ARB_make_current_read (http://developer.download.nvidia.com/opengl/includes/wglext.h:394) WGL_ARB_make_current_read = constant.Constant( 'WGL_ARB_make_current_read', 1 ) HGLRC = HANDLE # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:62 wglMakeContextCurrentARB = platform.createBaseFunction( 'wglMakeContextCurrentARB', dll=platform.GL, resultType=BOOL, argTypes=[HDC, HDC, HGLRC], doc='wglMakeContextCurrentARB( HDC(None), HDC(None), HGLRC(None) ) -> BOOL', argNames=['None', 'None', 'None'], ) wglGetCurrentReadDCARB = platform.createBaseFunction( 'wglGetCurrentReadDCARB', dll=platform.GL, resultType=HDC, argTypes=[], doc='wglGetCurrentReadDCARB( ) -> HDC', argNames=[], ) PFNWGLMAKECONTEXTCURRENTARBPROC = CFUNCTYPE(BOOL, HDC, HDC, HGLRC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:400 PFNWGLGETCURRENTREADDCARBPROC = CFUNCTYPE(HDC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:401 # ARB_pbuffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:404) WGL_ARB_pbuffer = constant.Constant( 'WGL_ARB_pbuffer', 1 ) wglCreatePbufferARB = platform.createBaseFunction( 'wglCreatePbufferARB', dll=platform.GL, resultType=HPBUFFERARB, argTypes=[HDC, c_int, c_int, c_int, POINTER(c_int)], doc='wglCreatePbufferARB( HDC(None), c_int(None), c_int(None), c_int(None), POINTER(c_int)() ) -> HPBUFFERARB', argNames=['None', 'None', 'None', 'None', ''], ) wglGetPbufferDCARB = platform.createBaseFunction( 'wglGetPbufferDCARB', dll=platform.GL, resultType=HDC, argTypes=[HPBUFFERARB], doc='wglGetPbufferDCARB( HPBUFFERARB(None) ) -> HDC', argNames=['None'], ) wglReleasePbufferDCARB = platform.createBaseFunction( 'wglReleasePbufferDCARB', dll=platform.GL, resultType=c_int, argTypes=[HPBUFFERARB, HDC], doc='wglReleasePbufferDCARB( HPBUFFERARB(None), HDC(None) ) -> c_int', argNames=['None', 'None'], ) wglDestroyPbufferARB = platform.createBaseFunction( 'wglDestroyPbufferARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB], doc='wglDestroyPbufferARB( HPBUFFERARB(None) ) -> BOOL', argNames=['None'], ) wglQueryPbufferARB = platform.createBaseFunction( 'wglQueryPbufferARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB, c_int, POINTER(c_int)], doc='wglQueryPbufferARB( HPBUFFERARB(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) PFNWGLCREATEPBUFFERARBPROC = CFUNCTYPE(HPBUFFERARB, HDC, c_int, c_int, c_int, POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:413 PFNWGLGETPBUFFERDCARBPROC = CFUNCTYPE(HDC, HPBUFFERARB) # http://developer.download.nvidia.com/opengl/includes/wglext.h:414 PFNWGLRELEASEPBUFFERDCARBPROC = CFUNCTYPE(c_int, HPBUFFERARB, HDC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:415 PFNWGLDESTROYPBUFFERARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB) # http://developer.download.nvidia.com/opengl/includes/wglext.h:416 PFNWGLQUERYPBUFFERARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB, c_int, POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:417 # ARB_render_texture (http://developer.download.nvidia.com/opengl/includes/wglext.h:420) WGL_ARB_render_texture = constant.Constant( 'WGL_ARB_render_texture', 1 ) wglBindTexImageARB = platform.createBaseFunction( 'wglBindTexImageARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB, c_int], doc='wglBindTexImageARB( HPBUFFERARB(None), c_int(None) ) -> BOOL', argNames=['None', 'None'], ) wglReleaseTexImageARB = platform.createBaseFunction( 'wglReleaseTexImageARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB, c_int], doc='wglReleaseTexImageARB( HPBUFFERARB(None), c_int(None) ) -> BOOL', argNames=['None', 'None'], ) wglSetPbufferAttribARB = platform.createBaseFunction( 'wglSetPbufferAttribARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB, POINTER(c_int)], doc='wglSetPbufferAttribARB( HPBUFFERARB(None), POINTER(c_int)() ) -> BOOL', argNames=['None', ''], ) PFNWGLBINDTEXIMAGEARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB, c_int) # http://developer.download.nvidia.com/opengl/includes/wglext.h:427 PFNWGLRELEASETEXIMAGEARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB, c_int) # http://developer.download.nvidia.com/opengl/includes/wglext.h:428 PFNWGLSETPBUFFERATTRIBARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB, POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:429 # ARB_pixel_format_float (http://developer.download.nvidia.com/opengl/includes/wglext.h:432) WGL_ARB_pixel_format_float = constant.Constant( 'WGL_ARB_pixel_format_float', 1 ) # EXT_display_color_table (http://developer.download.nvidia.com/opengl/includes/wglext.h:436) WGL_EXT_display_color_table = constant.Constant( 'WGL_EXT_display_color_table', 1 ) GLboolean = c_ubyte # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:20 GLushort = c_ushort # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:27 wglCreateDisplayColorTableEXT = platform.createBaseFunction( 'wglCreateDisplayColorTableEXT', dll=platform.GL, resultType=GLboolean, argTypes=[GLushort], doc='wglCreateDisplayColorTableEXT( GLushort(None) ) -> GLboolean', argNames=['None'], ) GLuint = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:28 wglLoadDisplayColorTableEXT = platform.createBaseFunction( 'wglLoadDisplayColorTableEXT', dll=platform.GL, resultType=GLboolean, argTypes=[POINTER(GLushort), GLuint], doc='wglLoadDisplayColorTableEXT( POINTER(GLushort)(), GLuint(None) ) -> GLboolean', argNames=['', 'None'], ) wglBindDisplayColorTableEXT = platform.createBaseFunction( 'wglBindDisplayColorTableEXT', dll=platform.GL, resultType=GLboolean, argTypes=[GLushort], doc='wglBindDisplayColorTableEXT( GLushort(None) ) -> GLboolean', argNames=['None'], ) wglDestroyDisplayColorTableEXT = platform.createBaseFunction( 'wglDestroyDisplayColorTableEXT', dll=platform.GL, resultType=VOID, argTypes=[GLushort], doc='wglDestroyDisplayColorTableEXT( GLushort(None) ) -> VOID', argNames=['None'], ) PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC = CFUNCTYPE(GLboolean, GLushort) # http://developer.download.nvidia.com/opengl/includes/wglext.h:444 PFNWGLLOADDISPLAYCOLORTABLEEXTPROC = CFUNCTYPE(GLboolean, POINTER(GLushort), GLuint) # http://developer.download.nvidia.com/opengl/includes/wglext.h:445 PFNWGLBINDDISPLAYCOLORTABLEEXTPROC = CFUNCTYPE(GLboolean, GLushort) # http://developer.download.nvidia.com/opengl/includes/wglext.h:446 PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC = CFUNCTYPE(VOID, GLushort) # http://developer.download.nvidia.com/opengl/includes/wglext.h:447 # EXT_extensions_string (http://developer.download.nvidia.com/opengl/includes/wglext.h:450) WGL_EXT_extensions_string = constant.Constant( 'WGL_EXT_extensions_string', 1 ) wglGetExtensionsStringEXT = platform.createBaseFunction( 'wglGetExtensionsStringEXT', dll=platform.GL, resultType=c_char_p, argTypes=[], doc='wglGetExtensionsStringEXT( ) -> c_char_p', argNames=[], ) PFNWGLGETEXTENSIONSSTRINGEXTPROC = CFUNCTYPE(c_char_p) # http://developer.download.nvidia.com/opengl/includes/wglext.h:455 # EXT_make_current_read (http://developer.download.nvidia.com/opengl/includes/wglext.h:458) WGL_EXT_make_current_read = constant.Constant( 'WGL_EXT_make_current_read', 1 ) wglMakeContextCurrentEXT = platform.createBaseFunction( 'wglMakeContextCurrentEXT', dll=platform.GL, resultType=BOOL, argTypes=[HDC, HDC, HGLRC], doc='wglMakeContextCurrentEXT( HDC(None), HDC(None), HGLRC(None) ) -> BOOL', argNames=['None', 'None', 'None'], ) wglGetCurrentReadDCEXT = platform.createBaseFunction( 'wglGetCurrentReadDCEXT', dll=platform.GL, resultType=HDC, argTypes=[], doc='wglGetCurrentReadDCEXT( ) -> HDC', argNames=[], ) PFNWGLMAKECONTEXTCURRENTEXTPROC = CFUNCTYPE(BOOL, HDC, HDC, HGLRC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:464 PFNWGLGETCURRENTREADDCEXTPROC = CFUNCTYPE(HDC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:465 # EXT_pbuffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:468) WGL_EXT_pbuffer = constant.Constant( 'WGL_EXT_pbuffer', 1 ) wglCreatePbufferEXT = platform.createBaseFunction( 'wglCreatePbufferEXT', dll=platform.GL, resultType=HPBUFFEREXT, argTypes=[HDC, c_int, c_int, c_int, POINTER(c_int)], doc='wglCreatePbufferEXT( HDC(None), c_int(None), c_int(None), c_int(None), POINTER(c_int)() ) -> HPBUFFEREXT', argNames=['None', 'None', 'None', 'None', ''], ) wglGetPbufferDCEXT = platform.createBaseFunction( 'wglGetPbufferDCEXT', dll=platform.GL, resultType=HDC, argTypes=[HPBUFFEREXT], doc='wglGetPbufferDCEXT( HPBUFFEREXT(None) ) -> HDC', argNames=['None'], ) wglReleasePbufferDCEXT = platform.createBaseFunction( 'wglReleasePbufferDCEXT', dll=platform.GL, resultType=c_int, argTypes=[HPBUFFEREXT, HDC], doc='wglReleasePbufferDCEXT( HPBUFFEREXT(None), HDC(None) ) -> c_int', argNames=['None', 'None'], ) wglDestroyPbufferEXT = platform.createBaseFunction( 'wglDestroyPbufferEXT', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFEREXT], doc='wglDestroyPbufferEXT( HPBUFFEREXT(None) ) -> BOOL', argNames=['None'], ) wglQueryPbufferEXT = platform.createBaseFunction( 'wglQueryPbufferEXT', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFEREXT, c_int, POINTER(c_int)], doc='wglQueryPbufferEXT( HPBUFFEREXT(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) PFNWGLCREATEPBUFFEREXTPROC = CFUNCTYPE(HPBUFFEREXT, HDC, c_int, c_int, c_int, POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:477 PFNWGLGETPBUFFERDCEXTPROC = CFUNCTYPE(HDC, HPBUFFEREXT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:478 PFNWGLRELEASEPBUFFERDCEXTPROC = CFUNCTYPE(c_int, HPBUFFEREXT, HDC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:479 PFNWGLDESTROYPBUFFEREXTPROC = CFUNCTYPE(BOOL, HPBUFFEREXT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:480 PFNWGLQUERYPBUFFEREXTPROC = CFUNCTYPE(BOOL, HPBUFFEREXT, c_int, POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:481 # EXT_pixel_format (http://developer.download.nvidia.com/opengl/includes/wglext.h:484) WGL_EXT_pixel_format = constant.Constant( 'WGL_EXT_pixel_format', 1 ) wglGetPixelFormatAttribivEXT = platform.createBaseFunction( 'wglGetPixelFormatAttribivEXT', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(c_int)], doc='wglGetPixelFormatAttribivEXT( HDC(None), c_int(None), c_int(None), UINT(None), POINTER(c_int)(), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', ''], ) wglGetPixelFormatAttribfvEXT = platform.createBaseFunction( 'wglGetPixelFormatAttribfvEXT', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(FLOAT)], doc='wglGetPixelFormatAttribfvEXT( HDC(None), c_int(None), c_int(None), UINT(None), POINTER(c_int)(), POINTER(FLOAT)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', ''], ) wglChoosePixelFormatEXT = platform.createBaseFunction( 'wglChoosePixelFormatEXT', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(c_int), POINTER(FLOAT), UINT, POINTER(c_int), POINTER(UINT)], doc='wglChoosePixelFormatEXT( HDC(None), POINTER(c_int)(), POINTER(FLOAT)(), UINT(None), POINTER(c_int)(), POINTER(UINT)() ) -> BOOL', argNames=['None', '', '', 'None', '', ''], ) PFNWGLGETPIXELFORMATATTRIBIVEXTPROC = CFUNCTYPE(BOOL, HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:491 PFNWGLGETPIXELFORMATATTRIBFVEXTPROC = CFUNCTYPE(BOOL, HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(FLOAT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:492 PFNWGLCHOOSEPIXELFORMATEXTPROC = CFUNCTYPE(BOOL, HDC, POINTER(c_int), POINTER(FLOAT), UINT, POINTER(c_int), POINTER(UINT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:493 # EXT_swap_control (http://developer.download.nvidia.com/opengl/includes/wglext.h:496) WGL_EXT_swap_control = constant.Constant( 'WGL_EXT_swap_control', 1 ) wglSwapIntervalEXT = platform.createBaseFunction( 'wglSwapIntervalEXT', dll=platform.GL, resultType=BOOL, argTypes=[c_int], doc='wglSwapIntervalEXT( c_int(None) ) -> BOOL', argNames=['None'], ) wglGetSwapIntervalEXT = platform.createBaseFunction( 'wglGetSwapIntervalEXT', dll=platform.GL, resultType=c_int, argTypes=[], doc='wglGetSwapIntervalEXT( ) -> c_int', argNames=[], ) PFNWGLSWAPINTERVALEXTPROC = CFUNCTYPE(BOOL, c_int) # http://developer.download.nvidia.com/opengl/includes/wglext.h:502 PFNWGLGETSWAPINTERVALEXTPROC = CFUNCTYPE(c_int) # http://developer.download.nvidia.com/opengl/includes/wglext.h:503 # EXT_depth_float (http://developer.download.nvidia.com/opengl/includes/wglext.h:506) WGL_EXT_depth_float = constant.Constant( 'WGL_EXT_depth_float', 1 ) # NV_vertex_array_range (http://developer.download.nvidia.com/opengl/includes/wglext.h:510) WGL_NV_vertex_array_range = constant.Constant( 'WGL_NV_vertex_array_range', 1 ) GLsizei = c_int # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:25 GLfloat = c_float # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:29 wglAllocateMemoryNV = platform.createBaseFunction( 'wglAllocateMemoryNV', dll=platform.GL, resultType=POINTER(c_void), argTypes=[GLsizei, GLfloat, GLfloat, GLfloat], doc='wglAllocateMemoryNV( GLsizei(None), GLfloat(None), GLfloat(None), GLfloat(None) ) -> POINTER(c_void)', argNames=['None', 'None', 'None', 'None'], ) wglFreeMemoryNV = platform.createBaseFunction( 'wglFreeMemoryNV', dll=platform.GL, resultType=None, argTypes=[POINTER(None)], doc='wglFreeMemoryNV( POINTER(None)() ) -> None', argNames=[''], ) PFNWGLALLOCATEMEMORYNVPROC = CFUNCTYPE(POINTER(c_void), GLsizei, GLfloat, GLfloat, GLfloat) # http://developer.download.nvidia.com/opengl/includes/wglext.h:516 PFNWGLFREEMEMORYNVPROC = CFUNCTYPE(None, POINTER(None)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:517 # 3DFX_multisample (http://developer.download.nvidia.com/opengl/includes/wglext.h:520) WGL_3DFX_multisample = constant.Constant( 'WGL_3DFX_multisample', 1 ) # EXT_multisample (http://developer.download.nvidia.com/opengl/includes/wglext.h:524) WGL_EXT_multisample = constant.Constant( 'WGL_EXT_multisample', 1 ) # OML_sync_control (http://developer.download.nvidia.com/opengl/includes/wglext.h:528) WGL_OML_sync_control = constant.Constant( 'WGL_OML_sync_control', 1 ) INT64 = c_longlong # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:44 wglGetSyncValuesOML = platform.createBaseFunction( 'wglGetSyncValuesOML', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(INT64), POINTER(INT64), POINTER(INT64)], doc='wglGetSyncValuesOML( HDC(None), POINTER(INT64)(), POINTER(INT64)(), POINTER(INT64)() ) -> BOOL', argNames=['None', '', '', ''], ) INT32 = c_int # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:37 wglGetMscRateOML = platform.createBaseFunction( 'wglGetMscRateOML', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(INT32), POINTER(INT32)], doc='wglGetMscRateOML( HDC(None), POINTER(INT32)(), POINTER(INT32)() ) -> BOOL', argNames=['None', '', ''], ) wglSwapBuffersMscOML = platform.createBaseFunction( 'wglSwapBuffersMscOML', dll=platform.GL, resultType=INT64, argTypes=[HDC, INT64, INT64, INT64], doc='wglSwapBuffersMscOML( HDC(None), INT64(None), INT64(None), INT64(None) ) -> INT64', argNames=['None', 'None', 'None', 'None'], ) wglSwapLayerBuffersMscOML = platform.createBaseFunction( 'wglSwapLayerBuffersMscOML', dll=platform.GL, resultType=INT64, argTypes=[HDC, c_int, INT64, INT64, INT64], doc='wglSwapLayerBuffersMscOML( HDC(None), c_int(None), INT64(None), INT64(None), INT64(None) ) -> INT64', argNames=['None', 'None', 'None', 'None', 'None'], ) wglWaitForMscOML = platform.createBaseFunction( 'wglWaitForMscOML', dll=platform.GL, resultType=BOOL, argTypes=[HDC, INT64, INT64, INT64, POINTER(INT64), POINTER(INT64), POINTER(INT64)], doc='wglWaitForMscOML( HDC(None), INT64(None), INT64(None), INT64(None), POINTER(INT64)(), POINTER(INT64)(), POINTER(INT64)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', '', ''], ) wglWaitForSbcOML = platform.createBaseFunction( 'wglWaitForSbcOML', dll=platform.GL, resultType=BOOL, argTypes=[HDC, INT64, POINTER(INT64), POINTER(INT64), POINTER(INT64)], doc='wglWaitForSbcOML( HDC(None), INT64(None), POINTER(INT64)(), POINTER(INT64)(), POINTER(INT64)() ) -> BOOL', argNames=['None', 'None', '', '', ''], ) PFNWGLGETSYNCVALUESOMLPROC = CFUNCTYPE(BOOL, HDC, POINTER(INT64), POINTER(INT64), POINTER(INT64)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:538 PFNWGLGETMSCRATEOMLPROC = CFUNCTYPE(BOOL, HDC, POINTER(INT32), POINTER(INT32)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:539 PFNWGLSWAPBUFFERSMSCOMLPROC = CFUNCTYPE(INT64, HDC, INT64, INT64, INT64) # http://developer.download.nvidia.com/opengl/includes/wglext.h:540 PFNWGLSWAPLAYERBUFFERSMSCOMLPROC = CFUNCTYPE(INT64, HDC, c_int, INT64, INT64, INT64) # http://developer.download.nvidia.com/opengl/includes/wglext.h:541 PFNWGLWAITFORMSCOMLPROC = CFUNCTYPE(BOOL, HDC, INT64, INT64, INT64, POINTER(INT64), POINTER(INT64), POINTER(INT64)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:542 PFNWGLWAITFORSBCOMLPROC = CFUNCTYPE(BOOL, HDC, INT64, POINTER(INT64), POINTER(INT64), POINTER(INT64)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:543 # I3D_digital_video_control (http://developer.download.nvidia.com/opengl/includes/wglext.h:546) WGL_I3D_digital_video_control = constant.Constant( 'WGL_I3D_digital_video_control', 1 ) wglGetDigitalVideoParametersI3D = platform.createBaseFunction( 'wglGetDigitalVideoParametersI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(c_int)], doc='wglGetDigitalVideoParametersI3D( HDC(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) wglSetDigitalVideoParametersI3D = platform.createBaseFunction( 'wglSetDigitalVideoParametersI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(c_int)], doc='wglSetDigitalVideoParametersI3D( HDC(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:552 PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:553 # I3D_gamma (http://developer.download.nvidia.com/opengl/includes/wglext.h:556) WGL_I3D_gamma = constant.Constant( 'WGL_I3D_gamma', 1 ) wglGetGammaTableParametersI3D = platform.createBaseFunction( 'wglGetGammaTableParametersI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(c_int)], doc='wglGetGammaTableParametersI3D( HDC(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) wglSetGammaTableParametersI3D = platform.createBaseFunction( 'wglSetGammaTableParametersI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(c_int)], doc='wglSetGammaTableParametersI3D( HDC(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) USHORT = c_ushort # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:51 wglGetGammaTableI3D = platform.createBaseFunction( 'wglGetGammaTableI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(USHORT), POINTER(USHORT), POINTER(USHORT)], doc='wglGetGammaTableI3D( HDC(None), c_int(None), POINTER(USHORT)(), POINTER(USHORT)(), POINTER(USHORT)() ) -> BOOL', argNames=['None', 'None', '', '', ''], ) wglSetGammaTableI3D = platform.createBaseFunction( 'wglSetGammaTableI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(USHORT), POINTER(USHORT), POINTER(USHORT)], doc='wglSetGammaTableI3D( HDC(None), c_int(None), POINTER(USHORT)(), POINTER(USHORT)(), POINTER(USHORT)() ) -> BOOL', argNames=['None', 'None', '', '', ''], ) PFNWGLGETGAMMATABLEPARAMETERSI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:564 PFNWGLSETGAMMATABLEPARAMETERSI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(c_int)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:565 PFNWGLGETGAMMATABLEI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(USHORT), POINTER(USHORT), POINTER(USHORT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:566 PFNWGLSETGAMMATABLEI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(USHORT), POINTER(USHORT), POINTER(USHORT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:567 # I3D_genlock (http://developer.download.nvidia.com/opengl/includes/wglext.h:570) WGL_I3D_genlock = constant.Constant( 'WGL_I3D_genlock', 1 ) wglEnableGenlockI3D = platform.createBaseFunction( 'wglEnableGenlockI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC], doc='wglEnableGenlockI3D( HDC(None) ) -> BOOL', argNames=['None'], ) wglDisableGenlockI3D = platform.createBaseFunction( 'wglDisableGenlockI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC], doc='wglDisableGenlockI3D( HDC(None) ) -> BOOL', argNames=['None'], ) wglIsEnabledGenlockI3D = platform.createBaseFunction( 'wglIsEnabledGenlockI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(BOOL)], doc='wglIsEnabledGenlockI3D( HDC(None), POINTER(BOOL)() ) -> BOOL', argNames=['None', ''], ) wglGenlockSourceI3D = platform.createBaseFunction( 'wglGenlockSourceI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT], doc='wglGenlockSourceI3D( HDC(None), UINT(None) ) -> BOOL', argNames=['None', 'None'], ) wglGetGenlockSourceI3D = platform.createBaseFunction( 'wglGetGenlockSourceI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT)], doc='wglGetGenlockSourceI3D( HDC(None), POINTER(UINT)() ) -> BOOL', argNames=['None', ''], ) wglGenlockSourceEdgeI3D = platform.createBaseFunction( 'wglGenlockSourceEdgeI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT], doc='wglGenlockSourceEdgeI3D( HDC(None), UINT(None) ) -> BOOL', argNames=['None', 'None'], ) wglGetGenlockSourceEdgeI3D = platform.createBaseFunction( 'wglGetGenlockSourceEdgeI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT)], doc='wglGetGenlockSourceEdgeI3D( HDC(None), POINTER(UINT)() ) -> BOOL', argNames=['None', ''], ) wglGenlockSampleRateI3D = platform.createBaseFunction( 'wglGenlockSampleRateI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT], doc='wglGenlockSampleRateI3D( HDC(None), UINT(None) ) -> BOOL', argNames=['None', 'None'], ) wglGetGenlockSampleRateI3D = platform.createBaseFunction( 'wglGetGenlockSampleRateI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT)], doc='wglGetGenlockSampleRateI3D( HDC(None), POINTER(UINT)() ) -> BOOL', argNames=['None', ''], ) wglGenlockSourceDelayI3D = platform.createBaseFunction( 'wglGenlockSourceDelayI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT], doc='wglGenlockSourceDelayI3D( HDC(None), UINT(None) ) -> BOOL', argNames=['None', 'None'], ) wglGetGenlockSourceDelayI3D = platform.createBaseFunction( 'wglGetGenlockSourceDelayI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT)], doc='wglGetGenlockSourceDelayI3D( HDC(None), POINTER(UINT)() ) -> BOOL', argNames=['None', ''], ) wglQueryGenlockMaxSourceDelayI3D = platform.createBaseFunction( 'wglQueryGenlockMaxSourceDelayI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT), POINTER(UINT)], doc='wglQueryGenlockMaxSourceDelayI3D( HDC(None), POINTER(UINT)(), POINTER(UINT)() ) -> BOOL', argNames=['None', '', ''], ) PFNWGLENABLEGENLOCKI3DPROC = CFUNCTYPE(BOOL, HDC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:586 PFNWGLDISABLEGENLOCKI3DPROC = CFUNCTYPE(BOOL, HDC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:587 PFNWGLISENABLEDGENLOCKI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(BOOL)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:588 PFNWGLGENLOCKSOURCEI3DPROC = CFUNCTYPE(BOOL, HDC, UINT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:589 PFNWGLGETGENLOCKSOURCEI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:590 PFNWGLGENLOCKSOURCEEDGEI3DPROC = CFUNCTYPE(BOOL, HDC, UINT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:591 PFNWGLGETGENLOCKSOURCEEDGEI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:592 PFNWGLGENLOCKSAMPLERATEI3DPROC = CFUNCTYPE(BOOL, HDC, UINT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:593 PFNWGLGETGENLOCKSAMPLERATEI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:594 PFNWGLGENLOCKSOURCEDELAYI3DPROC = CFUNCTYPE(BOOL, HDC, UINT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:595 PFNWGLGETGENLOCKSOURCEDELAYI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:596 PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT), POINTER(UINT)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:597 # I3D_image_buffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:600) WGL_I3D_image_buffer = constant.Constant( 'WGL_I3D_image_buffer', 1 ) LPVOID = POINTER(None) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:47 wglCreateImageBufferI3D = platform.createBaseFunction( 'wglCreateImageBufferI3D', dll=platform.GL, resultType=LPVOID, argTypes=[HDC, DWORD, UINT], doc='wglCreateImageBufferI3D( HDC(None), DWORD(None), UINT(None) ) -> LPVOID', argNames=['None', 'None', 'None'], ) wglDestroyImageBufferI3D = platform.createBaseFunction( 'wglDestroyImageBufferI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, LPVOID], doc='wglDestroyImageBufferI3D( HDC(None), LPVOID(None) ) -> BOOL', argNames=['None', 'None'], ) wglAssociateImageBufferEventsI3D = platform.createBaseFunction( 'wglAssociateImageBufferEventsI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(HANDLE), POINTER(LPVOID), POINTER(DWORD), UINT], doc='wglAssociateImageBufferEventsI3D( HDC(None), POINTER(HANDLE)(), POINTER(LPVOID)(), POINTER(DWORD)(), UINT(None) ) -> BOOL', argNames=['None', '', '', '', 'None'], ) wglReleaseImageBufferEventsI3D = platform.createBaseFunction( 'wglReleaseImageBufferEventsI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(LPVOID), UINT], doc='wglReleaseImageBufferEventsI3D( HDC(None), POINTER(LPVOID)(), UINT(None) ) -> BOOL', argNames=['None', '', 'None'], ) PFNWGLCREATEIMAGEBUFFERI3DPROC = CFUNCTYPE(LPVOID, HDC, DWORD, UINT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:608 PFNWGLDESTROYIMAGEBUFFERI3DPROC = CFUNCTYPE(BOOL, HDC, LPVOID) # http://developer.download.nvidia.com/opengl/includes/wglext.h:609 PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(HANDLE), POINTER(LPVOID), POINTER(DWORD), UINT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:610 PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(LPVOID), UINT) # http://developer.download.nvidia.com/opengl/includes/wglext.h:611 # I3D_swap_frame_lock (http://developer.download.nvidia.com/opengl/includes/wglext.h:614) WGL_I3D_swap_frame_lock = constant.Constant( 'WGL_I3D_swap_frame_lock', 1 ) wglEnableFrameLockI3D = platform.createBaseFunction( 'wglEnableFrameLockI3D', dll=platform.GL, resultType=BOOL, argTypes=[], doc='wglEnableFrameLockI3D( ) -> BOOL', argNames=[], ) wglDisableFrameLockI3D = platform.createBaseFunction( 'wglDisableFrameLockI3D', dll=platform.GL, resultType=BOOL, argTypes=[], doc='wglDisableFrameLockI3D( ) -> BOOL', argNames=[], ) wglIsEnabledFrameLockI3D = platform.createBaseFunction( 'wglIsEnabledFrameLockI3D', dll=platform.GL, resultType=BOOL, argTypes=[POINTER(BOOL)], doc='wglIsEnabledFrameLockI3D( POINTER(BOOL)() ) -> BOOL', argNames=[''], ) wglQueryFrameLockMasterI3D = platform.createBaseFunction( 'wglQueryFrameLockMasterI3D', dll=platform.GL, resultType=BOOL, argTypes=[POINTER(BOOL)], doc='wglQueryFrameLockMasterI3D( POINTER(BOOL)() ) -> BOOL', argNames=[''], ) PFNWGLENABLEFRAMELOCKI3DPROC = CFUNCTYPE(BOOL) # http://developer.download.nvidia.com/opengl/includes/wglext.h:622 PFNWGLDISABLEFRAMELOCKI3DPROC = CFUNCTYPE(BOOL) # http://developer.download.nvidia.com/opengl/includes/wglext.h:623 PFNWGLISENABLEDFRAMELOCKI3DPROC = CFUNCTYPE(BOOL, POINTER(BOOL)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:624 PFNWGLQUERYFRAMELOCKMASTERI3DPROC = CFUNCTYPE(BOOL, POINTER(BOOL)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:625 # I3D_swap_frame_usage (http://developer.download.nvidia.com/opengl/includes/wglext.h:628) WGL_I3D_swap_frame_usage = constant.Constant( 'WGL_I3D_swap_frame_usage', 1 ) wglGetFrameUsageI3D = platform.createBaseFunction( 'wglGetFrameUsageI3D', dll=platform.GL, resultType=BOOL, argTypes=[POINTER(c_float)], doc='wglGetFrameUsageI3D( POINTER(c_float)() ) -> BOOL', argNames=[''], ) wglBeginFrameTrackingI3D = platform.createBaseFunction( 'wglBeginFrameTrackingI3D', dll=platform.GL, resultType=BOOL, argTypes=[], doc='wglBeginFrameTrackingI3D( ) -> BOOL', argNames=[], ) wglEndFrameTrackingI3D = platform.createBaseFunction( 'wglEndFrameTrackingI3D', dll=platform.GL, resultType=BOOL, argTypes=[], doc='wglEndFrameTrackingI3D( ) -> BOOL', argNames=[], ) wglQueryFrameTrackingI3D = platform.createBaseFunction( 'wglQueryFrameTrackingI3D', dll=platform.GL, resultType=BOOL, argTypes=[POINTER(DWORD), POINTER(DWORD), POINTER(c_float)], doc='wglQueryFrameTrackingI3D( POINTER(DWORD)(), POINTER(DWORD)(), POINTER(c_float)() ) -> BOOL', argNames=['', '', ''], ) PFNWGLGETFRAMEUSAGEI3DPROC = CFUNCTYPE(BOOL, POINTER(c_float)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:636 PFNWGLBEGINFRAMETRACKINGI3DPROC = CFUNCTYPE(BOOL) # http://developer.download.nvidia.com/opengl/includes/wglext.h:637 PFNWGLENDFRAMETRACKINGI3DPROC = CFUNCTYPE(BOOL) # http://developer.download.nvidia.com/opengl/includes/wglext.h:638 PFNWGLQUERYFRAMETRACKINGI3DPROC = CFUNCTYPE(BOOL, POINTER(DWORD), POINTER(DWORD), POINTER(c_float)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:639 # ATI_pixel_format_float (http://developer.download.nvidia.com/opengl/includes/wglext.h:642) WGL_ATI_pixel_format_float = constant.Constant( 'WGL_ATI_pixel_format_float', 1 ) # NV_render_depth_texture (http://developer.download.nvidia.com/opengl/includes/wglext.h:646) WGL_NV_render_depth_texture = constant.Constant( 'WGL_NV_render_depth_texture', 1 ) # NV_render_texture_rectangle (http://developer.download.nvidia.com/opengl/includes/wglext.h:650) WGL_NV_render_texture_rectangle = constant.Constant( 'WGL_NV_render_texture_rectangle', 1 ) # NV_float_buffer (http://developer.download.nvidia.com/opengl/includes/wglext.h:654) WGL_NV_float_buffer = constant.Constant( 'WGL_NV_float_buffer', 1 ) # NV_swap_group (http://developer.download.nvidia.com/opengl/includes/wglext.h:658) WGL_NV_swap_group = constant.Constant( 'WGL_NV_swap_group', 1 ) wglJoinSwapGroupNV = platform.createBaseFunction( 'wglJoinSwapGroupNV', dll=platform.GL, resultType=BOOL, argTypes=[HDC, GLuint], doc='wglJoinSwapGroupNV( HDC(hDC), GLuint(group) ) -> BOOL', argNames=['hDC', 'group'], ) wglBindSwapBarrierNV = platform.createBaseFunction( 'wglBindSwapBarrierNV', dll=platform.GL, resultType=BOOL, argTypes=[GLuint, GLuint], doc='wglBindSwapBarrierNV( GLuint(group), GLuint(barrier) ) -> BOOL', argNames=['group', 'barrier'], ) wglQuerySwapGroupNV = platform.createBaseFunction( 'wglQuerySwapGroupNV', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(GLuint), POINTER(GLuint)], doc='wglQuerySwapGroupNV( HDC(hDC), POINTER(GLuint)(group), POINTER(GLuint)(barrier) ) -> BOOL', argNames=['hDC', 'group', 'barrier'], ) wglQueryMaxSwapGroupsNV = platform.createBaseFunction( 'wglQueryMaxSwapGroupsNV', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(GLuint), POINTER(GLuint)], doc='wglQueryMaxSwapGroupsNV( HDC(hDC), POINTER(GLuint)(maxGroups), POINTER(GLuint)(maxBarriers) ) -> BOOL', argNames=['hDC', 'maxGroups', 'maxBarriers'], ) wglQueryFrameCountNV = platform.createBaseFunction( 'wglQueryFrameCountNV', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(GLuint)], doc='wglQueryFrameCountNV( HDC(hDC), POINTER(GLuint)(count) ) -> BOOL', argNames=['hDC', 'count'], ) wglResetFrameCountNV = platform.createBaseFunction( 'wglResetFrameCountNV', dll=platform.GL, resultType=BOOL, argTypes=[HDC], doc='wglResetFrameCountNV( HDC(hDC) ) -> BOOL', argNames=['hDC'], ) PFNWGLJOINSWAPGROUPNVPROC = CFUNCTYPE(BOOL, HDC, GLuint) # http://developer.download.nvidia.com/opengl/includes/wglext.h:668 PFNWGLBINDSWAPBARRIERNVPROC = CFUNCTYPE(BOOL, GLuint, GLuint) # http://developer.download.nvidia.com/opengl/includes/wglext.h:669 PFNWGLQUERYSWAPGROUPNVPROC = CFUNCTYPE(BOOL, HDC, POINTER(GLuint), POINTER(GLuint)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:670 PFNWGLQUERYMAXSWAPGROUPSNVPROC = CFUNCTYPE(BOOL, HDC, POINTER(GLuint), POINTER(GLuint)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:671 PFNWGLQUERYFRAMECOUNTNVPROC = CFUNCTYPE(BOOL, HDC, POINTER(GLuint)) # http://developer.download.nvidia.com/opengl/includes/wglext.h:672 PFNWGLRESETFRAMECOUNTNVPROC = CFUNCTYPE(BOOL, HDC) # http://developer.download.nvidia.com/opengl/includes/wglext.h:673 # NV_gpu_affinity (http://developer.download.nvidia.com/opengl/includes/wglext.h:676) WGL_NV_gpu_affinity = constant.Constant( 'WGL_NV_gpu_affinity', 1 ) wglEnumGpusNV = platform.createBaseFunction( 'wglEnumGpusNV', dll=platform.GL, resultType=BOOL, argTypes=[UINT, POINTER(HGPUNV)], doc='wglEnumGpusNV( UINT(iIndex), POINTER(HGPUNV)(hGpu) ) -> BOOL', argNames=['iIndex', 'hGpu'], ) wglEnumGpuDevicesNV = platform.createBaseFunction( 'wglEnumGpuDevicesNV', dll=platform.GL, resultType=BOOL, argTypes=[HGPUNV, UINT, PGPU_DEVICE], doc='wglEnumGpuDevicesNV( HGPUNV(hGpu), UINT(iIndex), PGPU_DEVICE(pGpuDevice) ) -> BOOL', argNames=['hGpu', 'iIndex', 'pGpuDevice'], ) wglCreateAffinityDCNV = platform.createBaseFunction( 'wglCreateAffinityDCNV', dll=platform.GL, resultType=HDC, argTypes=[POINTER(HGPUNV)], doc='wglCreateAffinityDCNV( POINTER(HGPUNV)(pGpuList) ) -> HDC', argNames=['pGpuList'], ) wglEnumGpusFromAffinityDCNV = platform.createBaseFunction( 'wglEnumGpusFromAffinityDCNV', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT, POINTER(HGPUNV)], doc='wglEnumGpusFromAffinityDCNV( HDC(hAffinityDC), UINT(iIndex), POINTER(HGPUNV)(hGpu) ) -> BOOL', argNames=['hAffinityDC', 'iIndex', 'hGpu'], ) wglDeleteDCNV = platform.createBaseFunction( 'wglDeleteDCNV', dll=platform.GL, resultType=BOOL, argTypes=[HDC], doc='wglDeleteDCNV( HDC(hAffinityDC) ) -> BOOL', argNames=['hAffinityDC'], ) __all__ = ['GLAPI', 'WGL_WGLEXT_VERSION', 'WGL_FRONT_COLOR_BUFFER_BIT_ARB', 'WGL_BACK_COLOR_BUFFER_BIT_ARB', 'WGL_DEPTH_BUFFER_BIT_ARB', 'WGL_STENCIL_BUFFER_BIT_ARB', 'WGL_SAMPLE_BUFFERS_ARB', 'WGL_SAMPLES_ARB', 'WGL_NUMBER_PIXEL_FORMATS_ARB', 'WGL_DRAW_TO_WINDOW_ARB', 'WGL_DRAW_TO_BITMAP_ARB', 'WGL_ACCELERATION_ARB', 'WGL_NEED_PALETTE_ARB', 'WGL_NEED_SYSTEM_PALETTE_ARB', 'WGL_SWAP_LAYER_BUFFERS_ARB', 'WGL_SWAP_METHOD_ARB', 'WGL_NUMBER_OVERLAYS_ARB', 'WGL_NUMBER_UNDERLAYS_ARB', 'WGL_TRANSPARENT_ARB', 'WGL_TRANSPARENT_RED_VALUE_ARB', 'WGL_TRANSPARENT_GREEN_VALUE_ARB', 'WGL_TRANSPARENT_BLUE_VALUE_ARB', 'WGL_TRANSPARENT_ALPHA_VALUE_ARB', 'WGL_TRANSPARENT_INDEX_VALUE_ARB', 'WGL_SHARE_DEPTH_ARB', 'WGL_SHARE_STENCIL_ARB', 'WGL_SHARE_ACCUM_ARB', 'WGL_SUPPORT_GDI_ARB', 'WGL_SUPPORT_OPENGL_ARB', 'WGL_DOUBLE_BUFFER_ARB', 'WGL_STEREO_ARB', 'WGL_PIXEL_TYPE_ARB', 'WGL_COLOR_BITS_ARB', 'WGL_RED_BITS_ARB', 'WGL_RED_SHIFT_ARB', 'WGL_GREEN_BITS_ARB', 'WGL_GREEN_SHIFT_ARB', 'WGL_BLUE_BITS_ARB', 'WGL_BLUE_SHIFT_ARB', 'WGL_ALPHA_BITS_ARB', 'WGL_ALPHA_SHIFT_ARB', 'WGL_ACCUM_BITS_ARB', 'WGL_ACCUM_RED_BITS_ARB', 'WGL_ACCUM_GREEN_BITS_ARB', 'WGL_ACCUM_BLUE_BITS_ARB', 'WGL_ACCUM_ALPHA_BITS_ARB', 'WGL_DEPTH_BITS_ARB', 'WGL_STENCIL_BITS_ARB', 'WGL_AUX_BUFFERS_ARB', 'WGL_NO_ACCELERATION_ARB', 'WGL_GENERIC_ACCELERATION_ARB', 'WGL_FULL_ACCELERATION_ARB', 'WGL_SWAP_EXCHANGE_ARB', 'WGL_SWAP_COPY_ARB', 'WGL_SWAP_UNDEFINED_ARB', 'WGL_TYPE_RGBA_ARB', 'WGL_TYPE_COLORINDEX_ARB', 'ERROR_INVALID_PIXEL_TYPE_ARB', 'ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB', 'WGL_DRAW_TO_PBUFFER_ARB', 'WGL_MAX_PBUFFER_PIXELS_ARB', 'WGL_MAX_PBUFFER_WIDTH_ARB', 'WGL_MAX_PBUFFER_HEIGHT_ARB', 'WGL_PBUFFER_LARGEST_ARB', 'WGL_PBUFFER_WIDTH_ARB', 'WGL_PBUFFER_HEIGHT_ARB', 'WGL_PBUFFER_LOST_ARB', 'WGL_BIND_TO_TEXTURE_RGB_ARB', 'WGL_BIND_TO_TEXTURE_RGBA_ARB', 'WGL_TEXTURE_FORMAT_ARB', 'WGL_TEXTURE_TARGET_ARB', 'WGL_MIPMAP_TEXTURE_ARB', 'WGL_TEXTURE_RGB_ARB', 'WGL_TEXTURE_RGBA_ARB', 'WGL_NO_TEXTURE_ARB', 'WGL_TEXTURE_CUBE_MAP_ARB', 'WGL_TEXTURE_1D_ARB', 'WGL_TEXTURE_2D_ARB', 'WGL_MIPMAP_LEVEL_ARB', 'WGL_CUBE_MAP_FACE_ARB', 'WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB', 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB', 'WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB', 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB', 'WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB', 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB', 'WGL_FRONT_LEFT_ARB', 'WGL_FRONT_RIGHT_ARB', 'WGL_BACK_LEFT_ARB', 'WGL_BACK_RIGHT_ARB', 'WGL_AUX0_ARB', 'WGL_AUX1_ARB', 'WGL_AUX2_ARB', 'WGL_AUX3_ARB', 'WGL_AUX4_ARB', 'WGL_AUX5_ARB', 'WGL_AUX6_ARB', 'WGL_AUX7_ARB', 'WGL_AUX8_ARB', 'WGL_AUX9_ARB', 'WGL_TYPE_RGBA_FLOAT_ARB', 'ERROR_INVALID_PIXEL_TYPE_EXT', 'WGL_NUMBER_PIXEL_FORMATS_EXT', 'WGL_DRAW_TO_WINDOW_EXT', 'WGL_DRAW_TO_BITMAP_EXT', 'WGL_ACCELERATION_EXT', 'WGL_NEED_PALETTE_EXT', 'WGL_NEED_SYSTEM_PALETTE_EXT', 'WGL_SWAP_LAYER_BUFFERS_EXT', 'WGL_SWAP_METHOD_EXT', 'WGL_NUMBER_OVERLAYS_EXT', 'WGL_NUMBER_UNDERLAYS_EXT', 'WGL_TRANSPARENT_EXT', 'WGL_TRANSPARENT_VALUE_EXT', 'WGL_SHARE_DEPTH_EXT', 'WGL_SHARE_STENCIL_EXT', 'WGL_SHARE_ACCUM_EXT', 'WGL_SUPPORT_GDI_EXT', 'WGL_SUPPORT_OPENGL_EXT', 'WGL_DOUBLE_BUFFER_EXT', 'WGL_STEREO_EXT', 'WGL_PIXEL_TYPE_EXT', 'WGL_COLOR_BITS_EXT', 'WGL_RED_BITS_EXT', 'WGL_RED_SHIFT_EXT', 'WGL_GREEN_BITS_EXT', 'WGL_GREEN_SHIFT_EXT', 'WGL_BLUE_BITS_EXT', 'WGL_BLUE_SHIFT_EXT', 'WGL_ALPHA_BITS_EXT', 'WGL_ALPHA_SHIFT_EXT', 'WGL_ACCUM_BITS_EXT', 'WGL_ACCUM_RED_BITS_EXT', 'WGL_ACCUM_GREEN_BITS_EXT', 'WGL_ACCUM_BLUE_BITS_EXT', 'WGL_ACCUM_ALPHA_BITS_EXT', 'WGL_DEPTH_BITS_EXT', 'WGL_STENCIL_BITS_EXT', 'WGL_AUX_BUFFERS_EXT', 'WGL_NO_ACCELERATION_EXT', 'WGL_GENERIC_ACCELERATION_EXT', 'WGL_FULL_ACCELERATION_EXT', 'WGL_SWAP_EXCHANGE_EXT', 'WGL_SWAP_COPY_EXT', 'WGL_SWAP_UNDEFINED_EXT', 'WGL_TYPE_RGBA_EXT', 'WGL_TYPE_COLORINDEX_EXT', 'WGL_DRAW_TO_PBUFFER_EXT', 'WGL_MAX_PBUFFER_PIXELS_EXT', 'WGL_MAX_PBUFFER_WIDTH_EXT', 'WGL_MAX_PBUFFER_HEIGHT_EXT', 'WGL_OPTIMAL_PBUFFER_WIDTH_EXT', 'WGL_OPTIMAL_PBUFFER_HEIGHT_EXT', 'WGL_PBUFFER_LARGEST_EXT', 'WGL_PBUFFER_WIDTH_EXT', 'WGL_PBUFFER_HEIGHT_EXT', 'WGL_DEPTH_FLOAT_EXT', 'WGL_SAMPLE_BUFFERS_3DFX', 'WGL_SAMPLES_3DFX', 'WGL_SAMPLE_BUFFERS_EXT', 'WGL_SAMPLES_EXT', 'WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D', 'WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D', 'WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D', 'WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D', 'WGL_GAMMA_TABLE_SIZE_I3D', 'WGL_GAMMA_EXCLUDE_DESKTOP_I3D', 'WGL_GENLOCK_SOURCE_MULTIVIEW_I3D', 'WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D', 'WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D', 'WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D', 'WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D', 'WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D', 'WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D', 'WGL_GENLOCK_SOURCE_EDGE_RISING_I3D', 'WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D', 'WGL_IMAGE_BUFFER_MIN_ACCESS_I3D', 'WGL_IMAGE_BUFFER_LOCK_I3D', 'WGL_BIND_TO_TEXTURE_DEPTH_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV', 'WGL_DEPTH_TEXTURE_FORMAT_NV', 'WGL_TEXTURE_DEPTH_COMPONENT_NV', 'WGL_DEPTH_COMPONENT_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV', 'WGL_TEXTURE_RECTANGLE_NV', 'WGL_TYPE_RGBA_FLOAT_ATI', 'WGL_RGBA_FLOAT_MODE_ATI', 'WGL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI', 'WGL_FLOAT_COMPONENTS_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV', 'WGL_TEXTURE_FLOAT_R_NV', 'WGL_TEXTURE_FLOAT_RG_NV', 'WGL_TEXTURE_FLOAT_RGB_NV', 'WGL_TEXTURE_FLOAT_RGBA_NV', 'WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV', 'WGL_ERROR_MISSING_AFFINITY_MASK_NV', 'HPBUFFERARB', 'HPBUFFEREXT', 'HGPUNV', 'GPU_DEVICE', 'PGPU_DEVICE', 'WGL_ARB_buffer_region', 'wglCreateBufferRegionARB', 'wglDeleteBufferRegionARB', 'wglSaveBufferRegionARB', 'wglRestoreBufferRegionARB', 'PFNWGLCREATEBUFFERREGIONARBPROC', 'PFNWGLDELETEBUFFERREGIONARBPROC', 'PFNWGLSAVEBUFFERREGIONARBPROC', 'PFNWGLRESTOREBUFFERREGIONARBPROC', 'WGL_ARB_multisample', 'WGL_ARB_extensions_string', 'wglGetExtensionsStringARB', 'PFNWGLGETEXTENSIONSSTRINGARBPROC', 'WGL_ARB_pixel_format', 'wglGetPixelFormatAttribivARB', 'wglGetPixelFormatAttribfvARB', 'wglChoosePixelFormatARB', 'PFNWGLGETPIXELFORMATATTRIBIVARBPROC', 'PFNWGLGETPIXELFORMATATTRIBFVARBPROC', 'PFNWGLCHOOSEPIXELFORMATARBPROC', 'WGL_ARB_make_current_read', 'wglMakeContextCurrentARB', 'wglGetCurrentReadDCARB', 'PFNWGLMAKECONTEXTCURRENTARBPROC', 'PFNWGLGETCURRENTREADDCARBPROC', 'WGL_ARB_pbuffer', 'wglCreatePbufferARB', 'wglGetPbufferDCARB', 'wglReleasePbufferDCARB', 'wglDestroyPbufferARB', 'wglQueryPbufferARB', 'PFNWGLCREATEPBUFFERARBPROC', 'PFNWGLGETPBUFFERDCARBPROC', 'PFNWGLRELEASEPBUFFERDCARBPROC', 'PFNWGLDESTROYPBUFFERARBPROC', 'PFNWGLQUERYPBUFFERARBPROC', 'WGL_ARB_render_texture', 'wglBindTexImageARB', 'wglReleaseTexImageARB', 'wglSetPbufferAttribARB', 'PFNWGLBINDTEXIMAGEARBPROC', 'PFNWGLRELEASETEXIMAGEARBPROC', 'PFNWGLSETPBUFFERATTRIBARBPROC', 'WGL_ARB_pixel_format_float', 'WGL_EXT_display_color_table', 'wglCreateDisplayColorTableEXT', 'wglLoadDisplayColorTableEXT', 'wglBindDisplayColorTableEXT', 'wglDestroyDisplayColorTableEXT', 'PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC', 'PFNWGLLOADDISPLAYCOLORTABLEEXTPROC', 'PFNWGLBINDDISPLAYCOLORTABLEEXTPROC', 'PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC', 'WGL_EXT_extensions_string', 'wglGetExtensionsStringEXT', 'PFNWGLGETEXTENSIONSSTRINGEXTPROC', 'WGL_EXT_make_current_read', 'wglMakeContextCurrentEXT', 'wglGetCurrentReadDCEXT', 'PFNWGLMAKECONTEXTCURRENTEXTPROC', 'PFNWGLGETCURRENTREADDCEXTPROC', 'WGL_EXT_pbuffer', 'wglCreatePbufferEXT', 'wglGetPbufferDCEXT', 'wglReleasePbufferDCEXT', 'wglDestroyPbufferEXT', 'wglQueryPbufferEXT', 'PFNWGLCREATEPBUFFEREXTPROC', 'PFNWGLGETPBUFFERDCEXTPROC', 'PFNWGLRELEASEPBUFFERDCEXTPROC', 'PFNWGLDESTROYPBUFFEREXTPROC', 'PFNWGLQUERYPBUFFEREXTPROC', 'WGL_EXT_pixel_format', 'wglGetPixelFormatAttribivEXT', 'wglGetPixelFormatAttribfvEXT', 'wglChoosePixelFormatEXT', 'PFNWGLGETPIXELFORMATATTRIBIVEXTPROC', 'PFNWGLGETPIXELFORMATATTRIBFVEXTPROC', 'PFNWGLCHOOSEPIXELFORMATEXTPROC', 'WGL_EXT_swap_control', 'wglSwapIntervalEXT', 'wglGetSwapIntervalEXT', 'PFNWGLSWAPINTERVALEXTPROC', 'PFNWGLGETSWAPINTERVALEXTPROC', 'WGL_EXT_depth_float', 'WGL_NV_vertex_array_range', 'wglAllocateMemoryNV', 'wglFreeMemoryNV', 'PFNWGLALLOCATEMEMORYNVPROC', 'PFNWGLFREEMEMORYNVPROC', 'WGL_3DFX_multisample', 'WGL_EXT_multisample', 'WGL_OML_sync_control', 'wglGetSyncValuesOML', 'wglGetMscRateOML', 'wglSwapBuffersMscOML', 'wglSwapLayerBuffersMscOML', 'wglWaitForMscOML', 'wglWaitForSbcOML', 'PFNWGLGETSYNCVALUESOMLPROC', 'PFNWGLGETMSCRATEOMLPROC', 'PFNWGLSWAPBUFFERSMSCOMLPROC', 'PFNWGLSWAPLAYERBUFFERSMSCOMLPROC', 'PFNWGLWAITFORMSCOMLPROC', 'PFNWGLWAITFORSBCOMLPROC', 'WGL_I3D_digital_video_control', 'wglGetDigitalVideoParametersI3D', 'wglSetDigitalVideoParametersI3D', 'PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC', 'PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC', 'WGL_I3D_gamma', 'wglGetGammaTableParametersI3D', 'wglSetGammaTableParametersI3D', 'wglGetGammaTableI3D', 'wglSetGammaTableI3D', 'PFNWGLGETGAMMATABLEPARAMETERSI3DPROC', 'PFNWGLSETGAMMATABLEPARAMETERSI3DPROC', 'PFNWGLGETGAMMATABLEI3DPROC', 'PFNWGLSETGAMMATABLEI3DPROC', 'WGL_I3D_genlock', 'wglEnableGenlockI3D', 'wglDisableGenlockI3D', 'wglIsEnabledGenlockI3D', 'wglGenlockSourceI3D', 'wglGetGenlockSourceI3D', 'wglGenlockSourceEdgeI3D', 'wglGetGenlockSourceEdgeI3D', 'wglGenlockSampleRateI3D', 'wglGetGenlockSampleRateI3D', 'wglGenlockSourceDelayI3D', 'wglGetGenlockSourceDelayI3D', 'wglQueryGenlockMaxSourceDelayI3D', 'PFNWGLENABLEGENLOCKI3DPROC', 'PFNWGLDISABLEGENLOCKI3DPROC', 'PFNWGLISENABLEDGENLOCKI3DPROC', 'PFNWGLGENLOCKSOURCEI3DPROC', 'PFNWGLGETGENLOCKSOURCEI3DPROC', 'PFNWGLGENLOCKSOURCEEDGEI3DPROC', 'PFNWGLGETGENLOCKSOURCEEDGEI3DPROC', 'PFNWGLGENLOCKSAMPLERATEI3DPROC', 'PFNWGLGETGENLOCKSAMPLERATEI3DPROC', 'PFNWGLGENLOCKSOURCEDELAYI3DPROC', 'PFNWGLGETGENLOCKSOURCEDELAYI3DPROC', 'PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC', 'WGL_I3D_image_buffer', 'wglCreateImageBufferI3D', 'wglDestroyImageBufferI3D', 'wglAssociateImageBufferEventsI3D', 'wglReleaseImageBufferEventsI3D', 'PFNWGLCREATEIMAGEBUFFERI3DPROC', 'PFNWGLDESTROYIMAGEBUFFERI3DPROC', 'PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC', 'PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC', 'WGL_I3D_swap_frame_lock', 'wglEnableFrameLockI3D', 'wglDisableFrameLockI3D', 'wglIsEnabledFrameLockI3D', 'wglQueryFrameLockMasterI3D', 'PFNWGLENABLEFRAMELOCKI3DPROC', 'PFNWGLDISABLEFRAMELOCKI3DPROC', 'PFNWGLISENABLEDFRAMELOCKI3DPROC', 'PFNWGLQUERYFRAMELOCKMASTERI3DPROC', 'WGL_I3D_swap_frame_usage', 'wglGetFrameUsageI3D', 'wglBeginFrameTrackingI3D', 'wglEndFrameTrackingI3D', 'wglQueryFrameTrackingI3D', 'PFNWGLGETFRAMEUSAGEI3DPROC', 'PFNWGLBEGINFRAMETRACKINGI3DPROC', 'PFNWGLENDFRAMETRACKINGI3DPROC', 'PFNWGLQUERYFRAMETRACKINGI3DPROC', 'WGL_ATI_pixel_format_float', 'WGL_NV_render_depth_texture', 'WGL_NV_render_texture_rectangle', 'WGL_NV_float_buffer', 'WGL_NV_swap_group', 'wglJoinSwapGroupNV', 'wglBindSwapBarrierNV', 'wglQuerySwapGroupNV', 'wglQueryMaxSwapGroupsNV', 'wglQueryFrameCountNV', 'wglResetFrameCountNV', 'PFNWGLJOINSWAPGROUPNVPROC', 'PFNWGLBINDSWAPBARRIERNVPROC', 'PFNWGLQUERYSWAPGROUPNVPROC', 'PFNWGLQUERYMAXSWAPGROUPSNVPROC', 'PFNWGLQUERYFRAMECOUNTNVPROC', 'PFNWGLRESETFRAMECOUNTNVPROC', 'WGL_NV_gpu_affinity', 'wglEnumGpusNV', 'wglEnumGpuDevicesNV', 'wglCreateAffinityDCNV', 'wglEnumGpusFromAffinityDCNV', 'wglDeleteDCNV'] # END GENERATED CONTENT (do not edit above this line) PyOpenGL-3.0.2/OpenGL/raw/GLUT/0000755000175000001440000000000012032640120016573 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GLUT/annotations.py0000644000175000001440000000054612025001653021513 0ustar mcfletchusers00000000000000"""Array-size annotations for OpenGL.raw.GLUT Automatically generated by the generateraw script, do not edit! """ from OpenGL.raw import GLUT as raw from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid STRING = c_char_p __all__ = [ ] PyOpenGL-3.0.2/OpenGL/raw/GLUT/__init__.py0000644000175000001440000011533412025001653020717 0ustar mcfletchusers00000000000000# -*- coding: iso-8859-1 -*- """Raw (C-style) API for OpenGL.GLUT Automatically generated by the generateraw script, do not edit! """ from OpenGL.raw.GLUT.constants import * from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid if hasattr( platform.PLATFORM, 'GLUT_CALLBACK_TYPE' ): # it's *always* CFUNCTYPE, AFAICT CALLBACK_FUNCTION_TYPE = platform.PLATFORM.GLUT_CALLBACK_TYPE else: CALLBACK_FUNCTION_TYPE = platform.PLATFORM.functionTypeFor( platform.GLUT ) STRING = c_char_p from OpenGL.constants import GLenum from OpenGL.constants import GLfloat from OpenGL.constants import GLdouble from OpenGL.constants import GLint # /usr/include/GL/freeglut_std.h 445 glutAddMenuEntry = platform.createBaseFunction( 'glutAddMenuEntry', dll=platform.GLUT, resultType=None, argTypes=[STRING,c_int], doc='glutAddMenuEntry( STRING(label), c_int(value) ) -> None', argNames=('label', 'value'), ) # /usr/include/GL/freeglut_std.h 446 glutAddSubMenu = platform.createBaseFunction( 'glutAddSubMenu', dll=platform.GLUT, resultType=None, argTypes=[STRING,c_int], doc='glutAddSubMenu( STRING(label), c_int(subMenu) ) -> None', argNames=('label', 'subMenu'), ) # /usr/include/GL/freeglut_std.h 450 glutAttachMenu = platform.createBaseFunction( 'glutAttachMenu', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutAttachMenu( c_int(button) ) -> None', argNames=('button',), ) # /usr/include/GL/freeglut_std.h 499 glutBitmapCharacter = platform.createBaseFunction( 'glutBitmapCharacter', dll=platform.GLUT, resultType=None, argTypes=[c_void_p,c_int], doc='glutBitmapCharacter( c_void_p(font), c_int(character) ) -> None', argNames=('font', 'character'), ) # /usr/include/GL/freeglut_std.h 503 glutBitmapLength = platform.createBaseFunction( 'glutBitmapLength', dll=platform.GLUT, resultType=c_int, argTypes=[c_void_p,POINTER(c_ubyte)], doc='glutBitmapLength( c_void_p(font), POINTER(c_ubyte)(string) ) -> c_int', argNames=('font', 'string'), ) # /usr/include/GL/freeglut_std.h 500 glutBitmapWidth = platform.createBaseFunction( 'glutBitmapWidth', dll=platform.GLUT, resultType=c_int, argTypes=[c_void_p,c_int], doc='glutBitmapWidth( c_void_p(font), c_int(character) ) -> c_int', argNames=('font', 'character'), ) # /usr/include/GL/freeglut_std.h 483 glutButtonBoxFunc = platform.createBaseFunction( 'glutButtonBoxFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int)], doc='glutButtonBoxFunc( FUNCTION_TYPE(None, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 447 glutChangeToMenuEntry = platform.createBaseFunction( 'glutChangeToMenuEntry', dll=platform.GLUT, resultType=None, argTypes=[c_int,STRING,c_int], doc='glutChangeToMenuEntry( c_int(item), STRING(label), c_int(value) ) -> None', argNames=('item', 'label', 'value'), ) # /usr/include/GL/freeglut_std.h 448 glutChangeToSubMenu = platform.createBaseFunction( 'glutChangeToSubMenu', dll=platform.GLUT, resultType=None, argTypes=[c_int,STRING,c_int], doc='glutChangeToSubMenu( c_int(item), STRING(label), c_int(value) ) -> None', argNames=('item', 'label', 'value'), ) # /usr/include/GL/freeglut_std.h 555 glutCopyColormap = platform.createBaseFunction( 'glutCopyColormap', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutCopyColormap( c_int(window) ) -> None', argNames=('window',), ) # /usr/include/GL/freeglut_std.h 441 glutCreateMenu = platform.createBaseFunction( 'glutCreateMenu', dll=platform.GLUT, resultType=c_int, argTypes=[CALLBACK_FUNCTION_TYPE(c_int, c_int)], doc='glutCreateMenu( FUNCTION_TYPE(c_int, c_int)(callback) ) -> c_int', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 399 glutCreateSubWindow = platform.createBaseFunction( 'glutCreateSubWindow', dll=platform.GLUT, resultType=c_int, argTypes=[c_int,c_int,c_int,c_int,c_int], doc='glutCreateSubWindow( c_int(window), c_int(x), c_int(y), c_int(width), c_int(height) ) -> c_int', argNames=('window', 'x', 'y', 'width', 'height'), ) # /usr/include/GL/freeglut_std.h 398 glutCreateWindow = platform.createBaseFunction( 'glutCreateWindow', dll=platform.GLUT, resultType=c_int, argTypes=[STRING], doc='glutCreateWindow( STRING(title) ) -> c_int', argNames=('title',), ) # /usr/include/GL/freeglut_std.h 442 glutDestroyMenu = platform.createBaseFunction( 'glutDestroyMenu', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutDestroyMenu( c_int(menu) ) -> None', argNames=('menu',), ) # /usr/include/GL/freeglut_std.h 400 glutDestroyWindow = platform.createBaseFunction( 'glutDestroyWindow', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutDestroyWindow( c_int(window) ) -> None', argNames=('window',), ) # /usr/include/GL/freeglut_std.h 451 glutDetachMenu = platform.createBaseFunction( 'glutDetachMenu', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutDetachMenu( c_int(button) ) -> None', argNames=('button',), ) # /usr/include/GL/freeglut_std.h 492 glutDeviceGet = platform.createBaseFunction( 'glutDeviceGet', dll=platform.GLUT, resultType=c_int, argTypes=[GLenum], doc='glutDeviceGet( GLenum(query) ) -> c_int', argNames=('query',), ) # /usr/include/GL/freeglut_std.h 484 glutDialsFunc = platform.createBaseFunction( 'glutDialsFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int)], doc='glutDialsFunc( FUNCTION_TYPE(None, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 466 glutDisplayFunc = platform.createBaseFunction( 'glutDisplayFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None)], doc='glutDisplayFunc( FUNCTION_TYPE(None)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 537 glutEnterGameMode = platform.createBaseFunction( 'glutEnterGameMode', dll=platform.GLUT, resultType=c_int, argTypes=[], doc='glutEnterGameMode( ) -> c_int', argNames=(), ) # /usr/include/GL/freeglut_std.h 470 glutEntryFunc = platform.createBaseFunction( 'glutEntryFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int)], doc='glutEntryFunc( FUNCTION_TYPE(None, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 430 glutEstablishOverlay = platform.createBaseFunction( 'glutEstablishOverlay', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutEstablishOverlay( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 567 glutExtensionSupported = platform.createBaseFunction( 'glutExtensionSupported', dll=platform.GLUT, resultType=c_int, argTypes=[STRING], doc='glutExtensionSupported( STRING(extension) ) -> c_int', argNames=('extension',), ) # /usr/include/GL/freeglut_std.h 562 glutForceJoystickFunc = platform.createBaseFunction( 'glutForceJoystickFunc', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutForceJoystickFunc( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 412 glutFullScreen = platform.createBaseFunction( 'glutFullScreen', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutFullScreen( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 539 glutGameModeGet = platform.createBaseFunction( 'glutGameModeGet', dll=platform.GLUT, resultType=c_int, argTypes=[GLenum], doc='glutGameModeGet( GLenum(query) ) -> c_int', argNames=('query',), ) # /usr/include/GL/freeglut_std.h 536 glutGameModeString = platform.createBaseFunction( 'glutGameModeString', dll=platform.GLUT, resultType=None, argTypes=[STRING], doc='glutGameModeString( STRING(string) ) -> None', argNames=('string',), ) # /usr/include/GL/freeglut_std.h 491 glutGet = platform.createBaseFunction( 'glutGet', dll=platform.GLUT, resultType=c_int, argTypes=[GLenum], doc='glutGet( GLenum(query) ) -> c_int', argNames=('query',), ) # /usr/include/GL/freeglut_std.h 554 glutGetColor = platform.createBaseFunction( 'glutGetColor', dll=platform.GLUT, resultType=GLfloat, argTypes=[c_int,c_int], doc='glutGetColor( c_int(color), c_int(component) ) -> GLfloat', argNames=('color', 'component'), ) # /usr/include/GL/freeglut_std.h 443 glutGetMenu = platform.createBaseFunction( 'glutGetMenu', dll=platform.GLUT, resultType=c_int, argTypes=[], doc='glutGetMenu( ) -> c_int', argNames=(), ) # /usr/include/GL/freeglut_std.h 493 glutGetModifiers = platform.createBaseFunction( 'glutGetModifiers', dll=platform.GLUT, resultType=c_int, argTypes=[], doc='glutGetModifiers( ) -> c_int', argNames=(), ) # /usr/include/GL/freeglut_std.h 402 glutGetWindow = platform.createBaseFunction( 'glutGetWindow', dll=platform.GLUT, resultType=c_int, argTypes=[], doc='glutGetWindow( ) -> c_int', argNames=(), ) # /usr/include/GL/freeglut_std.h 436 glutHideOverlay = platform.createBaseFunction( 'glutHideOverlay', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutHideOverlay( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 408 glutHideWindow = platform.createBaseFunction( 'glutHideWindow', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutHideWindow( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 409 glutIconifyWindow = platform.createBaseFunction( 'glutIconifyWindow', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutIconifyWindow( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 457 glutIdleFunc = platform.createBaseFunction( 'glutIdleFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None)], doc='glutIdleFunc( FUNCTION_TYPE(None)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 560 glutIgnoreKeyRepeat = platform.createBaseFunction( 'glutIgnoreKeyRepeat', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutIgnoreKeyRepeat( c_int(ignore) ) -> None', argNames=('ignore',), ) # /usr/include/GL/freeglut_std.h 384 glutInit = platform.createBaseFunction( 'glutInit', dll=platform.GLUT, resultType=None, argTypes=[POINTER(c_int),POINTER(STRING)], doc='glutInit( POINTER(c_int)(pargc), POINTER(STRING)(argv) ) -> None', argNames=('pargc', 'argv'), ) # /usr/include/GL/freeglut_std.h 387 glutInitDisplayMode = platform.createBaseFunction( 'glutInitDisplayMode', dll=platform.GLUT, resultType=None, argTypes=[c_uint], doc='glutInitDisplayMode( c_uint(displayMode) ) -> None', argNames=('displayMode',), ) # /usr/include/GL/freeglut_std.h 388 glutInitDisplayString = platform.createBaseFunction( 'glutInitDisplayString', dll=platform.GLUT, resultType=None, argTypes=[STRING], doc='glutInitDisplayString( STRING(displayMode) ) -> None', argNames=('displayMode',), ) # /usr/include/GL/freeglut_std.h 385 glutInitWindowPosition = platform.createBaseFunction( 'glutInitWindowPosition', dll=platform.GLUT, resultType=None, argTypes=[c_int,c_int], doc='glutInitWindowPosition( c_int(x), c_int(y) ) -> None', argNames=('x', 'y'), ) # /usr/include/GL/freeglut_std.h 386 glutInitWindowSize = platform.createBaseFunction( 'glutInitWindowSize', dll=platform.GLUT, resultType=None, argTypes=[c_int,c_int], doc='glutInitWindowSize( c_int(width), c_int(height) ) -> None', argNames=('width', 'height'), ) # /usr/include/GL/freeglut_std.h 474 glutJoystickFunc = platform.createBaseFunction( 'glutJoystickFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_uint, c_int, c_int, c_int),c_int], doc='glutJoystickFunc( FUNCTION_TYPE(None, c_uint, c_int, c_int, c_int)(callback), c_int(pollInterval) ) -> None', argNames=('callback', 'pollInterval'), ) # /usr/include/GL/freeglut_std.h 462 glutKeyboardFunc = platform.createBaseFunction( 'glutKeyboardFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_ubyte, c_int, c_int)], doc='glutKeyboardFunc( FUNCTION_TYPE(None, c_ubyte, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 472 glutKeyboardUpFunc = platform.createBaseFunction( 'glutKeyboardUpFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_ubyte, c_int, c_int)], doc='glutKeyboardUpFunc( FUNCTION_TYPE(None, c_ubyte, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 494 glutLayerGet = platform.createBaseFunction( 'glutLayerGet', dll=platform.GLUT, resultType=c_int, argTypes=[GLenum], doc='glutLayerGet( GLenum(query) ) -> c_int', argNames=('query',), ) # /usr/include/GL/freeglut_std.h 538 glutLeaveGameMode = platform.createBaseFunction( 'glutLeaveGameMode', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutLeaveGameMode( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 393 glutMainLoop = platform.createBaseFunction( 'glutMainLoop', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutMainLoop( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 475 glutMenuStateFunc = platform.createBaseFunction( 'glutMenuStateFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int)], doc='glutMenuStateFunc( FUNCTION_TYPE(None, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 476 glutMenuStatusFunc = platform.createBaseFunction( 'glutMenuStatusFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int, c_int)], doc='glutMenuStatusFunc( FUNCTION_TYPE(None, c_int, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 468 glutMotionFunc = platform.createBaseFunction( 'glutMotionFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int)], doc='glutMotionFunc( FUNCTION_TYPE(None, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 467 glutMouseFunc = platform.createBaseFunction( 'glutMouseFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int, c_int, c_int)], doc='glutMouseFunc( FUNCTION_TYPE(None, c_int, c_int, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 477 glutOverlayDisplayFunc = platform.createBaseFunction( 'glutOverlayDisplayFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None)], doc='glutOverlayDisplayFunc( FUNCTION_TYPE(None)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 469 glutPassiveMotionFunc = platform.createBaseFunction( 'glutPassiveMotionFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int)], doc='glutPassiveMotionFunc( FUNCTION_TYPE(None, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 411 glutPopWindow = platform.createBaseFunction( 'glutPopWindow', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutPopWindow( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 406 glutPositionWindow = platform.createBaseFunction( 'glutPositionWindow', dll=platform.GLUT, resultType=None, argTypes=[c_int,c_int], doc='glutPositionWindow( c_int(x), c_int(y) ) -> None', argNames=('x', 'y'), ) # /usr/include/GL/freeglut_std.h 433 glutPostOverlayRedisplay = platform.createBaseFunction( 'glutPostOverlayRedisplay', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutPostOverlayRedisplay( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 418 glutPostRedisplay = platform.createBaseFunction( 'glutPostRedisplay', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutPostRedisplay( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 434 glutPostWindowOverlayRedisplay = platform.createBaseFunction( 'glutPostWindowOverlayRedisplay', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutPostWindowOverlayRedisplay( c_int(window) ) -> None', argNames=('window',), ) # /usr/include/GL/freeglut_std.h 417 glutPostWindowRedisplay = platform.createBaseFunction( 'glutPostWindowRedisplay', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutPostWindowRedisplay( c_int(window) ) -> None', argNames=('window',), ) # /usr/include/GL/freeglut_std.h 410 glutPushWindow = platform.createBaseFunction( 'glutPushWindow', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutPushWindow( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 449 glutRemoveMenuItem = platform.createBaseFunction( 'glutRemoveMenuItem', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutRemoveMenuItem( c_int(item) ) -> None', argNames=('item',), ) # /usr/include/GL/freeglut_std.h 431 glutRemoveOverlay = platform.createBaseFunction( 'glutRemoveOverlay', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutRemoveOverlay( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 568 glutReportErrors = platform.createBaseFunction( 'glutReportErrors', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutReportErrors( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 464 glutReshapeFunc = platform.createBaseFunction( 'glutReshapeFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int)], doc='glutReshapeFunc( FUNCTION_TYPE(None, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 405 glutReshapeWindow = platform.createBaseFunction( 'glutReshapeWindow', dll=platform.GLUT, resultType=None, argTypes=[c_int,c_int], doc='glutReshapeWindow( c_int(width), c_int(height) ) -> None', argNames=('width', 'height'), ) # /usr/include/GL/freeglut_std.h 553 glutSetColor = platform.createBaseFunction( 'glutSetColor', dll=platform.GLUT, resultType=None, argTypes=[c_int,GLfloat,GLfloat,GLfloat], doc='glutSetColor( c_int(color), GLfloat(red), GLfloat(green), GLfloat(blue) ) -> None', argNames=('color', 'red', 'green', 'blue'), ) # /usr/include/GL/freeglut_std.h 425 glutSetCursor = platform.createBaseFunction( 'glutSetCursor', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutSetCursor( c_int(cursor) ) -> None', argNames=('cursor',), ) # /usr/include/GL/freeglut_std.h 404 glutSetIconTitle = platform.createBaseFunction( 'glutSetIconTitle', dll=platform.GLUT, resultType=None, argTypes=[STRING], doc='glutSetIconTitle( STRING(title) ) -> None', argNames=('title',), ) # /usr/include/GL/freeglut_std.h 561 glutSetKeyRepeat = platform.createBaseFunction( 'glutSetKeyRepeat', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutSetKeyRepeat( c_int(repeatMode) ) -> None', argNames=('repeatMode',), ) # /usr/include/GL/freeglut_std.h 444 glutSetMenu = platform.createBaseFunction( 'glutSetMenu', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutSetMenu( c_int(menu) ) -> None', argNames=('menu',), ) # /usr/include/GL/freeglut_std.h 401 glutSetWindow = platform.createBaseFunction( 'glutSetWindow', dll=platform.GLUT, resultType=None, argTypes=[c_int], doc='glutSetWindow( c_int(window) ) -> None', argNames=('window',), ) # /usr/include/GL/freeglut_std.h 403 glutSetWindowTitle = platform.createBaseFunction( 'glutSetWindowTitle', dll=platform.GLUT, resultType=None, argTypes=[STRING], doc='glutSetWindowTitle( STRING(title) ) -> None', argNames=('title',), ) # /usr/include/GL/freeglut_std.h 545 glutSetupVideoResizing = platform.createBaseFunction( 'glutSetupVideoResizing', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutSetupVideoResizing( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 435 glutShowOverlay = platform.createBaseFunction( 'glutShowOverlay', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutShowOverlay( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 407 glutShowWindow = platform.createBaseFunction( 'glutShowWindow', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutShowWindow( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 514 glutSolidCone = platform.createBaseFunction( 'glutSolidCone', dll=platform.GLUT, resultType=None, argTypes=[GLdouble,GLdouble,GLint,GLint], doc='glutSolidCone( GLdouble(base), GLdouble(height), GLint(slices), GLint(stacks) ) -> None', argNames=('base', 'height', 'slices', 'stacks'), ) # /usr/include/GL/freeglut_std.h 510 glutSolidCube = platform.createBaseFunction( 'glutSolidCube', dll=platform.GLUT, resultType=None, argTypes=[GLdouble], doc='glutSolidCube( GLdouble(size) ) -> None', argNames=('size',), ) # /usr/include/GL/freeglut_std.h 519 glutSolidDodecahedron = platform.createBaseFunction( 'glutSolidDodecahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutSolidDodecahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 525 glutSolidIcosahedron = platform.createBaseFunction( 'glutSolidIcosahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutSolidIcosahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 521 glutSolidOctahedron = platform.createBaseFunction( 'glutSolidOctahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutSolidOctahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 512 glutSolidSphere = platform.createBaseFunction( 'glutSolidSphere', dll=platform.GLUT, resultType=None, argTypes=[GLdouble,GLint,GLint], doc='glutSolidSphere( GLdouble(radius), GLint(slices), GLint(stacks) ) -> None', argNames=('radius', 'slices', 'stacks'), ) # /usr/include/GL/freeglut_std.h 531 glutSolidTeapot = platform.createBaseFunction( 'glutSolidTeapot', dll=platform.GLUT, resultType=None, argTypes=[GLdouble], doc='glutSolidTeapot( GLdouble(size) ) -> None', argNames=('size',), ) # /usr/include/GL/freeglut_std.h 523 glutSolidTetrahedron = platform.createBaseFunction( 'glutSolidTetrahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutSolidTetrahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 517 glutSolidTorus = platform.createBaseFunction( 'glutSolidTorus', dll=platform.GLUT, resultType=None, argTypes=[GLdouble,GLdouble,GLint,GLint], doc='glutSolidTorus( GLdouble(innerRadius), GLdouble(outerRadius), GLint(sides), GLint(rings) ) -> None', argNames=('innerRadius', 'outerRadius', 'sides', 'rings'), ) # /usr/include/GL/freeglut_std.h 482 glutSpaceballButtonFunc = platform.createBaseFunction( 'glutSpaceballButtonFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int)], doc='glutSpaceballButtonFunc( FUNCTION_TYPE(None, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 480 glutSpaceballMotionFunc = platform.createBaseFunction( 'glutSpaceballMotionFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int, c_int)], doc='glutSpaceballMotionFunc( FUNCTION_TYPE(None, c_int, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 481 glutSpaceballRotateFunc = platform.createBaseFunction( 'glutSpaceballRotateFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int, c_int)], doc='glutSpaceballRotateFunc( FUNCTION_TYPE(None, c_int, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 463 glutSpecialFunc = platform.createBaseFunction( 'glutSpecialFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int, c_int)], doc='glutSpecialFunc( FUNCTION_TYPE(None, c_int, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 473 glutSpecialUpFunc = platform.createBaseFunction( 'glutSpecialUpFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int, c_int)], doc='glutSpecialUpFunc( FUNCTION_TYPE(None, c_int, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 546 glutStopVideoResizing = platform.createBaseFunction( 'glutStopVideoResizing', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutStopVideoResizing( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 501 glutStrokeCharacter = platform.createBaseFunction( 'glutStrokeCharacter', dll=platform.GLUT, resultType=None, argTypes=[c_void_p,c_int], doc='glutStrokeCharacter( c_void_p(font), c_int(character) ) -> None', argNames=('font', 'character'), ) # /usr/include/GL/freeglut_std.h 504 glutStrokeLength = platform.createBaseFunction( 'glutStrokeLength', dll=platform.GLUT, resultType=c_int, argTypes=[c_void_p,POINTER(c_ubyte)], doc='glutStrokeLength( c_void_p(font), POINTER(c_ubyte)(string) ) -> c_int', argNames=('font', 'string'), ) # /usr/include/GL/freeglut_std.h 502 glutStrokeWidth = platform.createBaseFunction( 'glutStrokeWidth', dll=platform.GLUT, resultType=c_int, argTypes=[c_void_p,c_int], doc='glutStrokeWidth( c_void_p(font), c_int(character) ) -> c_int', argNames=('font', 'character'), ) # /usr/include/GL/freeglut_std.h 419 glutSwapBuffers = platform.createBaseFunction( 'glutSwapBuffers', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutSwapBuffers( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 486 glutTabletButtonFunc = platform.createBaseFunction( 'glutTabletButtonFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int, c_int, c_int)], doc='glutTabletButtonFunc( FUNCTION_TYPE(None, c_int, c_int, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 485 glutTabletMotionFunc = platform.createBaseFunction( 'glutTabletMotionFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int, c_int)], doc='glutTabletMotionFunc( FUNCTION_TYPE(None, c_int, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 456 glutTimerFunc = platform.createBaseFunction( 'glutTimerFunc', dll=platform.GLUT, resultType=None, argTypes=[c_uint,CALLBACK_FUNCTION_TYPE(None, c_int),c_int], doc='glutTimerFunc( c_uint(time), FUNCTION_TYPE(None, c_int)(callback), c_int(value) ) -> None', argNames=('time', 'callback', 'value'), ) # /usr/include/GL/freeglut_std.h 432 glutUseLayer = platform.createBaseFunction( 'glutUseLayer', dll=platform.GLUT, resultType=None, argTypes=[GLenum], doc='glutUseLayer( GLenum(layer) ) -> None', argNames=('layer',), ) # /usr/include/GL/freeglut_std.h 548 glutVideoPan = platform.createBaseFunction( 'glutVideoPan', dll=platform.GLUT, resultType=None, argTypes=[c_int,c_int,c_int,c_int], doc='glutVideoPan( c_int(x), c_int(y), c_int(width), c_int(height) ) -> None', argNames=('x', 'y', 'width', 'height'), ) # /usr/include/GL/freeglut_std.h 547 glutVideoResize = platform.createBaseFunction( 'glutVideoResize', dll=platform.GLUT, resultType=None, argTypes=[c_int,c_int,c_int,c_int], doc='glutVideoResize( c_int(x), c_int(y), c_int(width), c_int(height) ) -> None', argNames=('x', 'y', 'width', 'height'), ) # /usr/include/GL/freeglut_std.h 544 glutVideoResizeGet = platform.createBaseFunction( 'glutVideoResizeGet', dll=platform.GLUT, resultType=c_int, argTypes=[GLenum], doc='glutVideoResizeGet( GLenum(query) ) -> c_int', argNames=('query',), ) # /usr/include/GL/freeglut_std.h 465 glutVisibilityFunc = platform.createBaseFunction( 'glutVisibilityFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int)], doc='glutVisibilityFunc( FUNCTION_TYPE(None, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 424 glutWarpPointer = platform.createBaseFunction( 'glutWarpPointer', dll=platform.GLUT, resultType=None, argTypes=[c_int,c_int], doc='glutWarpPointer( c_int(x), c_int(y) ) -> None', argNames=('x', 'y'), ) # /usr/include/GL/freeglut_std.h 478 glutWindowStatusFunc = platform.createBaseFunction( 'glutWindowStatusFunc', dll=platform.GLUT, resultType=None, argTypes=[CALLBACK_FUNCTION_TYPE(None, c_int)], doc='glutWindowStatusFunc( FUNCTION_TYPE(None, c_int)(callback) ) -> None', argNames=('callback',), ) # /usr/include/GL/freeglut_std.h 513 glutWireCone = platform.createBaseFunction( 'glutWireCone', dll=platform.GLUT, resultType=None, argTypes=[GLdouble,GLdouble,GLint,GLint], doc='glutWireCone( GLdouble(base), GLdouble(height), GLint(slices), GLint(stacks) ) -> None', argNames=('base', 'height', 'slices', 'stacks'), ) # /usr/include/GL/freeglut_std.h 509 glutWireCube = platform.createBaseFunction( 'glutWireCube', dll=platform.GLUT, resultType=None, argTypes=[GLdouble], doc='glutWireCube( GLdouble(size) ) -> None', argNames=('size',), ) # /usr/include/GL/freeglut_std.h 518 glutWireDodecahedron = platform.createBaseFunction( 'glutWireDodecahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutWireDodecahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 524 glutWireIcosahedron = platform.createBaseFunction( 'glutWireIcosahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutWireIcosahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 520 glutWireOctahedron = platform.createBaseFunction( 'glutWireOctahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutWireOctahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 511 glutWireSphere = platform.createBaseFunction( 'glutWireSphere', dll=platform.GLUT, resultType=None, argTypes=[GLdouble,GLint,GLint], doc='glutWireSphere( GLdouble(radius), GLint(slices), GLint(stacks) ) -> None', argNames=('radius', 'slices', 'stacks'), ) # /usr/include/GL/freeglut_std.h 530 glutWireTeapot = platform.createBaseFunction( 'glutWireTeapot', dll=platform.GLUT, resultType=None, argTypes=[GLdouble], doc='glutWireTeapot( GLdouble(size) ) -> None', argNames=('size',), ) # /usr/include/GL/freeglut_std.h 522 glutWireTetrahedron = platform.createBaseFunction( 'glutWireTetrahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutWireTetrahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_std.h 516 glutWireTorus = platform.createBaseFunction( 'glutWireTorus', dll=platform.GLUT, resultType=None, argTypes=[GLdouble,GLdouble,GLint,GLint], doc='glutWireTorus( GLdouble(innerRadius), GLdouble(outerRadius), GLint(sides), GLint(rings) ) -> None', argNames=('innerRadius', 'outerRadius', 'sides', 'rings'), ) __all__ = [ 'GLUT_ACCUM', 'GLUT_ACTIVE_ALT', 'GLUT_ACTIVE_CTRL', 'GLUT_ACTIVE_SHIFT', 'GLUT_ALPHA', 'GLUT_API_VERSION', 'GLUT_BLUE', 'GLUT_CURSOR_BOTTOM_LEFT_CORNER', 'GLUT_CURSOR_BOTTOM_RIGHT_CORNER', 'GLUT_CURSOR_BOTTOM_SIDE', 'GLUT_CURSOR_CROSSHAIR', 'GLUT_CURSOR_CYCLE', 'GLUT_CURSOR_DESTROY', 'GLUT_CURSOR_FULL_CROSSHAIR', 'GLUT_CURSOR_HELP', 'GLUT_CURSOR_INFO', 'GLUT_CURSOR_INHERIT', 'GLUT_CURSOR_LEFT_ARROW', 'GLUT_CURSOR_LEFT_RIGHT', 'GLUT_CURSOR_LEFT_SIDE', 'GLUT_CURSOR_NONE', 'GLUT_CURSOR_RIGHT_ARROW', 'GLUT_CURSOR_RIGHT_SIDE', 'GLUT_CURSOR_SPRAY', 'GLUT_CURSOR_TEXT', 'GLUT_CURSOR_TOP_LEFT_CORNER', 'GLUT_CURSOR_TOP_RIGHT_CORNER', 'GLUT_CURSOR_TOP_SIDE', 'GLUT_CURSOR_UP_DOWN', 'GLUT_CURSOR_WAIT', 'GLUT_DEPTH', 'GLUT_DEVICE_IGNORE_KEY_REPEAT', 'GLUT_DEVICE_KEY_REPEAT', 'GLUT_DISPLAY_MODE_POSSIBLE', 'GLUT_DOUBLE', 'GLUT_DOWN', 'GLUT_ELAPSED_TIME', 'GLUT_ENTERED', 'GLUT_FULLY_COVERED', 'GLUT_FULLY_RETAINED', 'GLUT_GAME_MODE_ACTIVE', 'GLUT_GAME_MODE_DISPLAY_CHANGED', 'GLUT_GAME_MODE_HEIGHT', 'GLUT_GAME_MODE_PIXEL_DEPTH', 'GLUT_GAME_MODE_POSSIBLE', 'GLUT_GAME_MODE_REFRESH_RATE', 'GLUT_GAME_MODE_WIDTH', 'GLUT_GREEN', 'GLUT_HAS_DIAL_AND_BUTTON_BOX', 'GLUT_HAS_JOYSTICK', 'GLUT_HAS_KEYBOARD', 'GLUT_HAS_MOUSE', 'GLUT_HAS_OVERLAY', 'GLUT_HAS_SPACEBALL', 'GLUT_HAS_TABLET', 'GLUT_HIDDEN', 'GLUT_INDEX', 'GLUT_INIT_DISPLAY_MODE', 'GLUT_INIT_STATE', 'GLUT_INIT_WINDOW_HEIGHT', 'GLUT_INIT_WINDOW_WIDTH', 'GLUT_INIT_WINDOW_X', 'GLUT_INIT_WINDOW_Y', 'GLUT_JOYSTICK_AXES', 'GLUT_JOYSTICK_BUTTONS', 'GLUT_JOYSTICK_BUTTON_A', 'GLUT_JOYSTICK_BUTTON_B', 'GLUT_JOYSTICK_BUTTON_C', 'GLUT_JOYSTICK_BUTTON_D', 'GLUT_JOYSTICK_POLL_RATE', 'GLUT_KEY_DOWN', 'GLUT_KEY_END', 'GLUT_KEY_F1', 'GLUT_KEY_F10', 'GLUT_KEY_F11', 'GLUT_KEY_F12', 'GLUT_KEY_F2', 'GLUT_KEY_F3', 'GLUT_KEY_F4', 'GLUT_KEY_F5', 'GLUT_KEY_F6', 'GLUT_KEY_F7', 'GLUT_KEY_F8', 'GLUT_KEY_F9', 'GLUT_KEY_HOME', 'GLUT_KEY_INSERT', 'GLUT_KEY_LEFT', 'GLUT_KEY_PAGE_DOWN', 'GLUT_KEY_PAGE_UP', 'GLUT_KEY_REPEAT_DEFAULT', 'GLUT_KEY_REPEAT_OFF', 'GLUT_KEY_REPEAT_ON', 'GLUT_KEY_RIGHT', 'GLUT_KEY_UP', 'GLUT_LAYER_IN_USE', 'GLUT_LEFT', 'GLUT_LEFT_BUTTON', 'GLUT_LUMINANCE', 'GLUT_MENU_IN_USE', 'GLUT_MENU_NOT_IN_USE', 'GLUT_MENU_NUM_ITEMS', 'GLUT_MIDDLE_BUTTON', 'GLUT_MULTISAMPLE', 'GLUT_NORMAL', 'GLUT_NORMAL_DAMAGED', 'GLUT_NOT_VISIBLE', 'GLUT_NUM_BUTTON_BOX_BUTTONS', 'GLUT_NUM_DIALS', 'GLUT_NUM_MOUSE_BUTTONS', 'GLUT_NUM_SPACEBALL_BUTTONS', 'GLUT_NUM_TABLET_BUTTONS', 'GLUT_OVERLAY', 'GLUT_OVERLAY_DAMAGED', 'GLUT_OVERLAY_POSSIBLE', 'GLUT_OWNS_JOYSTICK', 'GLUT_PARTIALLY_RETAINED', 'GLUT_RED', 'GLUT_RGB', 'GLUT_RGBA', 'GLUT_RIGHT_BUTTON', 'GLUT_SCREEN_HEIGHT', 'GLUT_SCREEN_HEIGHT_MM', 'GLUT_SCREEN_WIDTH', 'GLUT_SCREEN_WIDTH_MM', 'GLUT_SINGLE', 'GLUT_STENCIL', 'GLUT_STEREO', 'GLUT_TRANSPARENT_INDEX', 'GLUT_UP', 'GLUT_VIDEO_RESIZE_HEIGHT', 'GLUT_VIDEO_RESIZE_HEIGHT_DELTA', 'GLUT_VIDEO_RESIZE_IN_USE', 'GLUT_VIDEO_RESIZE_POSSIBLE', 'GLUT_VIDEO_RESIZE_WIDTH', 'GLUT_VIDEO_RESIZE_WIDTH_DELTA', 'GLUT_VIDEO_RESIZE_X', 'GLUT_VIDEO_RESIZE_X_DELTA', 'GLUT_VIDEO_RESIZE_Y', 'GLUT_VIDEO_RESIZE_Y_DELTA', 'GLUT_VISIBLE', 'GLUT_WINDOW_ACCUM_ALPHA_SIZE', 'GLUT_WINDOW_ACCUM_BLUE_SIZE', 'GLUT_WINDOW_ACCUM_GREEN_SIZE', 'GLUT_WINDOW_ACCUM_RED_SIZE', 'GLUT_WINDOW_ALPHA_SIZE', 'GLUT_WINDOW_BLUE_SIZE', 'GLUT_WINDOW_BUFFER_SIZE', 'GLUT_WINDOW_COLORMAP_SIZE', 'GLUT_WINDOW_CURSOR', 'GLUT_WINDOW_DEPTH_SIZE', 'GLUT_WINDOW_DOUBLEBUFFER', 'GLUT_WINDOW_FORMAT_ID', 'GLUT_WINDOW_GREEN_SIZE', 'GLUT_WINDOW_HEIGHT', 'GLUT_WINDOW_NUM_CHILDREN', 'GLUT_WINDOW_NUM_SAMPLES', 'GLUT_WINDOW_PARENT', 'GLUT_WINDOW_RED_SIZE', 'GLUT_WINDOW_RGBA', 'GLUT_WINDOW_STENCIL_SIZE', 'GLUT_WINDOW_STEREO', 'GLUT_WINDOW_WIDTH', 'GLUT_WINDOW_X', 'GLUT_WINDOW_Y', 'GLUT_XLIB_IMPLEMENTATION', 'GLdouble', 'GLenum', 'GLfloat', 'GLint', 'glutAddMenuEntry', 'glutAddSubMenu', 'glutAttachMenu', 'glutBitmapCharacter', 'glutBitmapLength', 'glutBitmapWidth', 'glutButtonBoxFunc', 'glutChangeToMenuEntry', 'glutChangeToSubMenu', 'glutCopyColormap', 'glutCreateMenu', 'glutCreateSubWindow', 'glutCreateWindow', 'glutDestroyMenu', 'glutDestroyWindow', 'glutDetachMenu', 'glutDeviceGet', 'glutDialsFunc', 'glutDisplayFunc', 'glutEnterGameMode', 'glutEntryFunc', 'glutEstablishOverlay', 'glutExtensionSupported', 'glutForceJoystickFunc', 'glutFullScreen', 'glutGameModeGet', 'glutGameModeString', 'glutGet', 'glutGetColor', 'glutGetMenu', 'glutGetModifiers', 'glutGetWindow', 'glutHideOverlay', 'glutHideWindow', 'glutIconifyWindow', 'glutIdleFunc', 'glutIgnoreKeyRepeat', 'glutInit', 'glutInitDisplayMode', 'glutInitDisplayString', 'glutInitWindowPosition', 'glutInitWindowSize', 'glutJoystickFunc', 'glutKeyboardFunc', 'glutKeyboardUpFunc', 'glutLayerGet', 'glutLeaveGameMode', 'glutMainLoop', 'glutMenuStateFunc', 'glutMenuStatusFunc', 'glutMotionFunc', 'glutMouseFunc', 'glutOverlayDisplayFunc', 'glutPassiveMotionFunc', 'glutPopWindow', 'glutPositionWindow', 'glutPostOverlayRedisplay', 'glutPostRedisplay', 'glutPostWindowOverlayRedisplay', 'glutPostWindowRedisplay', 'glutPushWindow', 'glutRemoveMenuItem', 'glutRemoveOverlay', 'glutReportErrors', 'glutReshapeFunc', 'glutReshapeWindow', 'glutSetColor', 'glutSetCursor', 'glutSetIconTitle', 'glutSetKeyRepeat', 'glutSetMenu', 'glutSetWindow', 'glutSetWindowTitle', 'glutSetupVideoResizing', 'glutShowOverlay', 'glutShowWindow', 'glutSolidCone', 'glutSolidCube', 'glutSolidDodecahedron', 'glutSolidIcosahedron', 'glutSolidOctahedron', 'glutSolidSphere', 'glutSolidTeapot', 'glutSolidTetrahedron', 'glutSolidTorus', 'glutSpaceballButtonFunc', 'glutSpaceballMotionFunc', 'glutSpaceballRotateFunc', 'glutSpecialFunc', 'glutSpecialUpFunc', 'glutStopVideoResizing', 'glutStrokeCharacter', 'glutStrokeLength', 'glutStrokeWidth', 'glutSwapBuffers', 'glutTabletButtonFunc', 'glutTabletMotionFunc', 'glutTimerFunc', 'glutUseLayer', 'glutVideoPan', 'glutVideoResize', 'glutVideoResizeGet', 'glutVisibilityFunc', 'glutWarpPointer', 'glutWindowStatusFunc', 'glutWireCone', 'glutWireCube', 'glutWireDodecahedron', 'glutWireIcosahedron', 'glutWireOctahedron', 'glutWireSphere', 'glutWireTeapot', 'glutWireTetrahedron', 'glutWireTorus' ] PyOpenGL-3.0.2/OpenGL/raw/GLUT/constants.py0000644000175000001440000003355512025001653021200 0ustar mcfletchusers00000000000000"""Constants for OpenGL.GLUT Automatically generated by the generateraw script, do not edit! """ from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid GLUT_ACCUM = Constant( 'GLUT_ACCUM', 4) GLUT_ACTIVE_ALT = Constant( 'GLUT_ACTIVE_ALT', 4) GLUT_ACTIVE_CTRL = Constant( 'GLUT_ACTIVE_CTRL', 2) GLUT_ACTIVE_SHIFT = Constant( 'GLUT_ACTIVE_SHIFT', 1) GLUT_ALPHA = Constant( 'GLUT_ALPHA', 8) GLUT_API_VERSION = Constant( 'GLUT_API_VERSION', 4) GLUT_BLUE = Constant( 'GLUT_BLUE', 2) GLUT_CURSOR_BOTTOM_LEFT_CORNER = Constant( 'GLUT_CURSOR_BOTTOM_LEFT_CORNER', 19) GLUT_CURSOR_BOTTOM_RIGHT_CORNER = Constant( 'GLUT_CURSOR_BOTTOM_RIGHT_CORNER', 18) GLUT_CURSOR_BOTTOM_SIDE = Constant( 'GLUT_CURSOR_BOTTOM_SIDE', 13) GLUT_CURSOR_CROSSHAIR = Constant( 'GLUT_CURSOR_CROSSHAIR', 9) GLUT_CURSOR_CYCLE = Constant( 'GLUT_CURSOR_CYCLE', 5) GLUT_CURSOR_DESTROY = Constant( 'GLUT_CURSOR_DESTROY', 3) GLUT_CURSOR_FULL_CROSSHAIR = Constant( 'GLUT_CURSOR_FULL_CROSSHAIR', 102) GLUT_CURSOR_HELP = Constant( 'GLUT_CURSOR_HELP', 4) GLUT_CURSOR_INFO = Constant( 'GLUT_CURSOR_INFO', 2) GLUT_CURSOR_INHERIT = Constant( 'GLUT_CURSOR_INHERIT', 100) GLUT_CURSOR_LEFT_ARROW = Constant( 'GLUT_CURSOR_LEFT_ARROW', 1) GLUT_CURSOR_LEFT_RIGHT = Constant( 'GLUT_CURSOR_LEFT_RIGHT', 11) GLUT_CURSOR_LEFT_SIDE = Constant( 'GLUT_CURSOR_LEFT_SIDE', 14) GLUT_CURSOR_NONE = Constant( 'GLUT_CURSOR_NONE', 101) GLUT_CURSOR_RIGHT_ARROW = Constant( 'GLUT_CURSOR_RIGHT_ARROW', 0) GLUT_CURSOR_RIGHT_SIDE = Constant( 'GLUT_CURSOR_RIGHT_SIDE', 15) GLUT_CURSOR_SPRAY = Constant( 'GLUT_CURSOR_SPRAY', 6) GLUT_CURSOR_TEXT = Constant( 'GLUT_CURSOR_TEXT', 8) GLUT_CURSOR_TOP_LEFT_CORNER = Constant( 'GLUT_CURSOR_TOP_LEFT_CORNER', 16) GLUT_CURSOR_TOP_RIGHT_CORNER = Constant( 'GLUT_CURSOR_TOP_RIGHT_CORNER', 17) GLUT_CURSOR_TOP_SIDE = Constant( 'GLUT_CURSOR_TOP_SIDE', 12) GLUT_CURSOR_UP_DOWN = Constant( 'GLUT_CURSOR_UP_DOWN', 10) GLUT_CURSOR_WAIT = Constant( 'GLUT_CURSOR_WAIT', 7) GLUT_DEPTH = Constant( 'GLUT_DEPTH', 16) GLUT_DEVICE_IGNORE_KEY_REPEAT = Constant( 'GLUT_DEVICE_IGNORE_KEY_REPEAT', 610) GLUT_DEVICE_KEY_REPEAT = Constant( 'GLUT_DEVICE_KEY_REPEAT', 611) GLUT_DISPLAY_MODE_POSSIBLE = Constant( 'GLUT_DISPLAY_MODE_POSSIBLE', 400) GLUT_DOUBLE = Constant( 'GLUT_DOUBLE', 2) GLUT_DOWN = Constant( 'GLUT_DOWN', 0) GLUT_ELAPSED_TIME = Constant( 'GLUT_ELAPSED_TIME', 700) GLUT_ENTERED = Constant( 'GLUT_ENTERED', 1) GLUT_FULLY_COVERED = Constant( 'GLUT_FULLY_COVERED', 3) GLUT_FULLY_RETAINED = Constant( 'GLUT_FULLY_RETAINED', 1) GLUT_GAME_MODE_ACTIVE = Constant( 'GLUT_GAME_MODE_ACTIVE', 0) GLUT_GAME_MODE_DISPLAY_CHANGED = Constant( 'GLUT_GAME_MODE_DISPLAY_CHANGED', 6) GLUT_GAME_MODE_HEIGHT = Constant( 'GLUT_GAME_MODE_HEIGHT', 3) GLUT_GAME_MODE_PIXEL_DEPTH = Constant( 'GLUT_GAME_MODE_PIXEL_DEPTH', 4) GLUT_GAME_MODE_POSSIBLE = Constant( 'GLUT_GAME_MODE_POSSIBLE', 1) GLUT_GAME_MODE_REFRESH_RATE = Constant( 'GLUT_GAME_MODE_REFRESH_RATE', 5) GLUT_GAME_MODE_WIDTH = Constant( 'GLUT_GAME_MODE_WIDTH', 2) GLUT_GREEN = Constant( 'GLUT_GREEN', 1) GLUT_HAS_DIAL_AND_BUTTON_BOX = Constant( 'GLUT_HAS_DIAL_AND_BUTTON_BOX', 603) GLUT_HAS_JOYSTICK = Constant( 'GLUT_HAS_JOYSTICK', 612) GLUT_HAS_KEYBOARD = Constant( 'GLUT_HAS_KEYBOARD', 600) GLUT_HAS_MOUSE = Constant( 'GLUT_HAS_MOUSE', 601) GLUT_HAS_OVERLAY = Constant( 'GLUT_HAS_OVERLAY', 802) GLUT_HAS_SPACEBALL = Constant( 'GLUT_HAS_SPACEBALL', 602) GLUT_HAS_TABLET = Constant( 'GLUT_HAS_TABLET', 604) GLUT_HIDDEN = Constant( 'GLUT_HIDDEN', 0) GLUT_INDEX = Constant( 'GLUT_INDEX', 1) GLUT_INIT_DISPLAY_MODE = Constant( 'GLUT_INIT_DISPLAY_MODE', 504) GLUT_INIT_STATE = Constant( 'GLUT_INIT_STATE', 124) GLUT_INIT_WINDOW_HEIGHT = Constant( 'GLUT_INIT_WINDOW_HEIGHT', 503) GLUT_INIT_WINDOW_WIDTH = Constant( 'GLUT_INIT_WINDOW_WIDTH', 502) GLUT_INIT_WINDOW_X = Constant( 'GLUT_INIT_WINDOW_X', 500) GLUT_INIT_WINDOW_Y = Constant( 'GLUT_INIT_WINDOW_Y', 501) GLUT_JOYSTICK_AXES = Constant( 'GLUT_JOYSTICK_AXES', 615) GLUT_JOYSTICK_BUTTONS = Constant( 'GLUT_JOYSTICK_BUTTONS', 614) GLUT_JOYSTICK_BUTTON_A = Constant( 'GLUT_JOYSTICK_BUTTON_A', 1) GLUT_JOYSTICK_BUTTON_B = Constant( 'GLUT_JOYSTICK_BUTTON_B', 2) GLUT_JOYSTICK_BUTTON_C = Constant( 'GLUT_JOYSTICK_BUTTON_C', 4) GLUT_JOYSTICK_BUTTON_D = Constant( 'GLUT_JOYSTICK_BUTTON_D', 8) GLUT_JOYSTICK_POLL_RATE = Constant( 'GLUT_JOYSTICK_POLL_RATE', 616) GLUT_KEY_DOWN = Constant( 'GLUT_KEY_DOWN', 103) GLUT_KEY_END = Constant( 'GLUT_KEY_END', 107) GLUT_KEY_F1 = Constant( 'GLUT_KEY_F1', 1) GLUT_KEY_F10 = Constant( 'GLUT_KEY_F10', 10) GLUT_KEY_F11 = Constant( 'GLUT_KEY_F11', 11) GLUT_KEY_F12 = Constant( 'GLUT_KEY_F12', 12) GLUT_KEY_F2 = Constant( 'GLUT_KEY_F2', 2) GLUT_KEY_F3 = Constant( 'GLUT_KEY_F3', 3) GLUT_KEY_F4 = Constant( 'GLUT_KEY_F4', 4) GLUT_KEY_F5 = Constant( 'GLUT_KEY_F5', 5) GLUT_KEY_F6 = Constant( 'GLUT_KEY_F6', 6) GLUT_KEY_F7 = Constant( 'GLUT_KEY_F7', 7) GLUT_KEY_F8 = Constant( 'GLUT_KEY_F8', 8) GLUT_KEY_F9 = Constant( 'GLUT_KEY_F9', 9) GLUT_KEY_HOME = Constant( 'GLUT_KEY_HOME', 106) GLUT_KEY_INSERT = Constant( 'GLUT_KEY_INSERT', 108) GLUT_KEY_LEFT = Constant( 'GLUT_KEY_LEFT', 100) GLUT_KEY_PAGE_DOWN = Constant( 'GLUT_KEY_PAGE_DOWN', 105) GLUT_KEY_PAGE_UP = Constant( 'GLUT_KEY_PAGE_UP', 104) GLUT_KEY_REPEAT_DEFAULT = Constant( 'GLUT_KEY_REPEAT_DEFAULT', 2) GLUT_KEY_REPEAT_OFF = Constant( 'GLUT_KEY_REPEAT_OFF', 0) GLUT_KEY_REPEAT_ON = Constant( 'GLUT_KEY_REPEAT_ON', 1) GLUT_KEY_RIGHT = Constant( 'GLUT_KEY_RIGHT', 102) GLUT_KEY_UP = Constant( 'GLUT_KEY_UP', 101) GLUT_LAYER_IN_USE = Constant( 'GLUT_LAYER_IN_USE', 801) GLUT_LEFT = Constant( 'GLUT_LEFT', 0) GLUT_LEFT_BUTTON = Constant( 'GLUT_LEFT_BUTTON', 0) GLUT_LUMINANCE = Constant( 'GLUT_LUMINANCE', 512) GLUT_MENU_IN_USE = Constant( 'GLUT_MENU_IN_USE', 1) GLUT_MENU_NOT_IN_USE = Constant( 'GLUT_MENU_NOT_IN_USE', 0) GLUT_MENU_NUM_ITEMS = Constant( 'GLUT_MENU_NUM_ITEMS', 300) GLUT_MIDDLE_BUTTON = Constant( 'GLUT_MIDDLE_BUTTON', 1) GLUT_MULTISAMPLE = Constant( 'GLUT_MULTISAMPLE', 128) GLUT_NORMAL = Constant( 'GLUT_NORMAL', 0) GLUT_NORMAL_DAMAGED = Constant( 'GLUT_NORMAL_DAMAGED', 804) GLUT_NOT_VISIBLE = Constant( 'GLUT_NOT_VISIBLE', 0) GLUT_NUM_BUTTON_BOX_BUTTONS = Constant( 'GLUT_NUM_BUTTON_BOX_BUTTONS', 607) GLUT_NUM_DIALS = Constant( 'GLUT_NUM_DIALS', 608) GLUT_NUM_MOUSE_BUTTONS = Constant( 'GLUT_NUM_MOUSE_BUTTONS', 605) GLUT_NUM_SPACEBALL_BUTTONS = Constant( 'GLUT_NUM_SPACEBALL_BUTTONS', 606) GLUT_NUM_TABLET_BUTTONS = Constant( 'GLUT_NUM_TABLET_BUTTONS', 609) GLUT_OVERLAY = Constant( 'GLUT_OVERLAY', 1) GLUT_OVERLAY_DAMAGED = Constant( 'GLUT_OVERLAY_DAMAGED', 805) GLUT_OVERLAY_POSSIBLE = Constant( 'GLUT_OVERLAY_POSSIBLE', 800) GLUT_OWNS_JOYSTICK = Constant( 'GLUT_OWNS_JOYSTICK', 613) GLUT_PARTIALLY_RETAINED = Constant( 'GLUT_PARTIALLY_RETAINED', 2) GLUT_RED = Constant( 'GLUT_RED', 0) GLUT_RGB = Constant( 'GLUT_RGB', 0) GLUT_RGBA = Constant( 'GLUT_RGBA', 0) GLUT_RIGHT_BUTTON = Constant( 'GLUT_RIGHT_BUTTON', 2) GLUT_SCREEN_HEIGHT = Constant( 'GLUT_SCREEN_HEIGHT', 201) GLUT_SCREEN_HEIGHT_MM = Constant( 'GLUT_SCREEN_HEIGHT_MM', 203) GLUT_SCREEN_WIDTH = Constant( 'GLUT_SCREEN_WIDTH', 200) GLUT_SCREEN_WIDTH_MM = Constant( 'GLUT_SCREEN_WIDTH_MM', 202) GLUT_SINGLE = Constant( 'GLUT_SINGLE', 0) GLUT_STENCIL = Constant( 'GLUT_STENCIL', 32) GLUT_STEREO = Constant( 'GLUT_STEREO', 256) GLUT_TRANSPARENT_INDEX = Constant( 'GLUT_TRANSPARENT_INDEX', 803) GLUT_UP = Constant( 'GLUT_UP', 1) GLUT_VIDEO_RESIZE_HEIGHT = Constant( 'GLUT_VIDEO_RESIZE_HEIGHT', 909) GLUT_VIDEO_RESIZE_HEIGHT_DELTA = Constant( 'GLUT_VIDEO_RESIZE_HEIGHT_DELTA', 905) GLUT_VIDEO_RESIZE_IN_USE = Constant( 'GLUT_VIDEO_RESIZE_IN_USE', 901) GLUT_VIDEO_RESIZE_POSSIBLE = Constant( 'GLUT_VIDEO_RESIZE_POSSIBLE', 900) GLUT_VIDEO_RESIZE_WIDTH = Constant( 'GLUT_VIDEO_RESIZE_WIDTH', 908) GLUT_VIDEO_RESIZE_WIDTH_DELTA = Constant( 'GLUT_VIDEO_RESIZE_WIDTH_DELTA', 904) GLUT_VIDEO_RESIZE_X = Constant( 'GLUT_VIDEO_RESIZE_X', 906) GLUT_VIDEO_RESIZE_X_DELTA = Constant( 'GLUT_VIDEO_RESIZE_X_DELTA', 902) GLUT_VIDEO_RESIZE_Y = Constant( 'GLUT_VIDEO_RESIZE_Y', 907) GLUT_VIDEO_RESIZE_Y_DELTA = Constant( 'GLUT_VIDEO_RESIZE_Y_DELTA', 903) GLUT_VISIBLE = Constant( 'GLUT_VISIBLE', 1) GLUT_WINDOW_ACCUM_ALPHA_SIZE = Constant( 'GLUT_WINDOW_ACCUM_ALPHA_SIZE', 114) GLUT_WINDOW_ACCUM_BLUE_SIZE = Constant( 'GLUT_WINDOW_ACCUM_BLUE_SIZE', 113) GLUT_WINDOW_ACCUM_GREEN_SIZE = Constant( 'GLUT_WINDOW_ACCUM_GREEN_SIZE', 112) GLUT_WINDOW_ACCUM_RED_SIZE = Constant( 'GLUT_WINDOW_ACCUM_RED_SIZE', 111) GLUT_WINDOW_ALPHA_SIZE = Constant( 'GLUT_WINDOW_ALPHA_SIZE', 110) GLUT_WINDOW_BLUE_SIZE = Constant( 'GLUT_WINDOW_BLUE_SIZE', 109) GLUT_WINDOW_BUFFER_SIZE = Constant( 'GLUT_WINDOW_BUFFER_SIZE', 104) GLUT_WINDOW_COLORMAP_SIZE = Constant( 'GLUT_WINDOW_COLORMAP_SIZE', 119) GLUT_WINDOW_CURSOR = Constant( 'GLUT_WINDOW_CURSOR', 122) GLUT_WINDOW_DEPTH_SIZE = Constant( 'GLUT_WINDOW_DEPTH_SIZE', 106) GLUT_WINDOW_DOUBLEBUFFER = Constant( 'GLUT_WINDOW_DOUBLEBUFFER', 115) GLUT_WINDOW_FORMAT_ID = Constant( 'GLUT_WINDOW_FORMAT_ID', 123) GLUT_WINDOW_GREEN_SIZE = Constant( 'GLUT_WINDOW_GREEN_SIZE', 108) GLUT_WINDOW_HEIGHT = Constant( 'GLUT_WINDOW_HEIGHT', 103) GLUT_WINDOW_NUM_CHILDREN = Constant( 'GLUT_WINDOW_NUM_CHILDREN', 118) GLUT_WINDOW_NUM_SAMPLES = Constant( 'GLUT_WINDOW_NUM_SAMPLES', 120) GLUT_WINDOW_PARENT = Constant( 'GLUT_WINDOW_PARENT', 117) GLUT_WINDOW_RED_SIZE = Constant( 'GLUT_WINDOW_RED_SIZE', 107) GLUT_WINDOW_RGBA = Constant( 'GLUT_WINDOW_RGBA', 116) GLUT_WINDOW_STENCIL_SIZE = Constant( 'GLUT_WINDOW_STENCIL_SIZE', 105) GLUT_WINDOW_STEREO = Constant( 'GLUT_WINDOW_STEREO', 121) GLUT_WINDOW_WIDTH = Constant( 'GLUT_WINDOW_WIDTH', 102) GLUT_WINDOW_X = Constant( 'GLUT_WINDOW_X', 100) GLUT_WINDOW_Y = Constant( 'GLUT_WINDOW_Y', 101) GLUT_XLIB_IMPLEMENTATION = Constant( 'GLUT_XLIB_IMPLEMENTATION', 13) __all__ = [ 'GLUT_ACCUM', 'GLUT_ACTIVE_ALT', 'GLUT_ACTIVE_CTRL', 'GLUT_ACTIVE_SHIFT', 'GLUT_ALPHA', 'GLUT_API_VERSION', 'GLUT_BLUE', 'GLUT_CURSOR_BOTTOM_LEFT_CORNER', 'GLUT_CURSOR_BOTTOM_RIGHT_CORNER', 'GLUT_CURSOR_BOTTOM_SIDE', 'GLUT_CURSOR_CROSSHAIR', 'GLUT_CURSOR_CYCLE', 'GLUT_CURSOR_DESTROY', 'GLUT_CURSOR_FULL_CROSSHAIR', 'GLUT_CURSOR_HELP', 'GLUT_CURSOR_INFO', 'GLUT_CURSOR_INHERIT', 'GLUT_CURSOR_LEFT_ARROW', 'GLUT_CURSOR_LEFT_RIGHT', 'GLUT_CURSOR_LEFT_SIDE', 'GLUT_CURSOR_NONE', 'GLUT_CURSOR_RIGHT_ARROW', 'GLUT_CURSOR_RIGHT_SIDE', 'GLUT_CURSOR_SPRAY', 'GLUT_CURSOR_TEXT', 'GLUT_CURSOR_TOP_LEFT_CORNER', 'GLUT_CURSOR_TOP_RIGHT_CORNER', 'GLUT_CURSOR_TOP_SIDE', 'GLUT_CURSOR_UP_DOWN', 'GLUT_CURSOR_WAIT', 'GLUT_DEPTH', 'GLUT_DEVICE_IGNORE_KEY_REPEAT', 'GLUT_DEVICE_KEY_REPEAT', 'GLUT_DISPLAY_MODE_POSSIBLE', 'GLUT_DOUBLE', 'GLUT_DOWN', 'GLUT_ELAPSED_TIME', 'GLUT_ENTERED', 'GLUT_FULLY_COVERED', 'GLUT_FULLY_RETAINED', 'GLUT_GAME_MODE_ACTIVE', 'GLUT_GAME_MODE_DISPLAY_CHANGED', 'GLUT_GAME_MODE_HEIGHT', 'GLUT_GAME_MODE_PIXEL_DEPTH', 'GLUT_GAME_MODE_POSSIBLE', 'GLUT_GAME_MODE_REFRESH_RATE', 'GLUT_GAME_MODE_WIDTH', 'GLUT_GREEN', 'GLUT_HAS_DIAL_AND_BUTTON_BOX', 'GLUT_HAS_JOYSTICK', 'GLUT_HAS_KEYBOARD', 'GLUT_HAS_MOUSE', 'GLUT_HAS_OVERLAY', 'GLUT_HAS_SPACEBALL', 'GLUT_HAS_TABLET', 'GLUT_HIDDEN', 'GLUT_INDEX', 'GLUT_INIT_DISPLAY_MODE', 'GLUT_INIT_STATE', 'GLUT_INIT_WINDOW_HEIGHT', 'GLUT_INIT_WINDOW_WIDTH', 'GLUT_INIT_WINDOW_X', 'GLUT_INIT_WINDOW_Y', 'GLUT_JOYSTICK_AXES', 'GLUT_JOYSTICK_BUTTONS', 'GLUT_JOYSTICK_BUTTON_A', 'GLUT_JOYSTICK_BUTTON_B', 'GLUT_JOYSTICK_BUTTON_C', 'GLUT_JOYSTICK_BUTTON_D', 'GLUT_JOYSTICK_POLL_RATE', 'GLUT_KEY_DOWN', 'GLUT_KEY_END', 'GLUT_KEY_F1', 'GLUT_KEY_F10', 'GLUT_KEY_F11', 'GLUT_KEY_F12', 'GLUT_KEY_F2', 'GLUT_KEY_F3', 'GLUT_KEY_F4', 'GLUT_KEY_F5', 'GLUT_KEY_F6', 'GLUT_KEY_F7', 'GLUT_KEY_F8', 'GLUT_KEY_F9', 'GLUT_KEY_HOME', 'GLUT_KEY_INSERT', 'GLUT_KEY_LEFT', 'GLUT_KEY_PAGE_DOWN', 'GLUT_KEY_PAGE_UP', 'GLUT_KEY_REPEAT_DEFAULT', 'GLUT_KEY_REPEAT_OFF', 'GLUT_KEY_REPEAT_ON', 'GLUT_KEY_RIGHT', 'GLUT_KEY_UP', 'GLUT_LAYER_IN_USE', 'GLUT_LEFT', 'GLUT_LEFT_BUTTON', 'GLUT_LUMINANCE', 'GLUT_MENU_IN_USE', 'GLUT_MENU_NOT_IN_USE', 'GLUT_MENU_NUM_ITEMS', 'GLUT_MIDDLE_BUTTON', 'GLUT_MULTISAMPLE', 'GLUT_NORMAL', 'GLUT_NORMAL_DAMAGED', 'GLUT_NOT_VISIBLE', 'GLUT_NUM_BUTTON_BOX_BUTTONS', 'GLUT_NUM_DIALS', 'GLUT_NUM_MOUSE_BUTTONS', 'GLUT_NUM_SPACEBALL_BUTTONS', 'GLUT_NUM_TABLET_BUTTONS', 'GLUT_OVERLAY', 'GLUT_OVERLAY_DAMAGED', 'GLUT_OVERLAY_POSSIBLE', 'GLUT_OWNS_JOYSTICK', 'GLUT_PARTIALLY_RETAINED', 'GLUT_RED', 'GLUT_RGB', 'GLUT_RGBA', 'GLUT_RIGHT_BUTTON', 'GLUT_SCREEN_HEIGHT', 'GLUT_SCREEN_HEIGHT_MM', 'GLUT_SCREEN_WIDTH', 'GLUT_SCREEN_WIDTH_MM', 'GLUT_SINGLE', 'GLUT_STENCIL', 'GLUT_STEREO', 'GLUT_TRANSPARENT_INDEX', 'GLUT_UP', 'GLUT_VIDEO_RESIZE_HEIGHT', 'GLUT_VIDEO_RESIZE_HEIGHT_DELTA', 'GLUT_VIDEO_RESIZE_IN_USE', 'GLUT_VIDEO_RESIZE_POSSIBLE', 'GLUT_VIDEO_RESIZE_WIDTH', 'GLUT_VIDEO_RESIZE_WIDTH_DELTA', 'GLUT_VIDEO_RESIZE_X', 'GLUT_VIDEO_RESIZE_X_DELTA', 'GLUT_VIDEO_RESIZE_Y', 'GLUT_VIDEO_RESIZE_Y_DELTA', 'GLUT_VISIBLE', 'GLUT_WINDOW_ACCUM_ALPHA_SIZE', 'GLUT_WINDOW_ACCUM_BLUE_SIZE', 'GLUT_WINDOW_ACCUM_GREEN_SIZE', 'GLUT_WINDOW_ACCUM_RED_SIZE', 'GLUT_WINDOW_ALPHA_SIZE', 'GLUT_WINDOW_BLUE_SIZE', 'GLUT_WINDOW_BUFFER_SIZE', 'GLUT_WINDOW_COLORMAP_SIZE', 'GLUT_WINDOW_CURSOR', 'GLUT_WINDOW_DEPTH_SIZE', 'GLUT_WINDOW_DOUBLEBUFFER', 'GLUT_WINDOW_FORMAT_ID', 'GLUT_WINDOW_GREEN_SIZE', 'GLUT_WINDOW_HEIGHT', 'GLUT_WINDOW_NUM_CHILDREN', 'GLUT_WINDOW_NUM_SAMPLES', 'GLUT_WINDOW_PARENT', 'GLUT_WINDOW_RED_SIZE', 'GLUT_WINDOW_RGBA', 'GLUT_WINDOW_STENCIL_SIZE', 'GLUT_WINDOW_STEREO', 'GLUT_WINDOW_WIDTH', 'GLUT_WINDOW_X', 'GLUT_WINDOW_Y', 'GLUT_XLIB_IMPLEMENTATION' ] PyOpenGL-3.0.2/OpenGL/raw/GL/0000755000175000001440000000000012032640120016322 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/MESA/0000755000175000001440000000000012032640120017047 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/MESA/ycbcr_texture.py0000644000175000001440000000075212025001653022313 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_MESA_ycbcr_texture' _p.unpack_constants( """GL_UNSIGNED_SHORT_8_8_MESA 0x85BA GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB GL_YCBCR_MESA 0x8757""", globals()) def glInitYcbcrTextureMESA(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/MESA/__init__.py0000644000175000001440000000002712025001653021163 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/MESA/pack_invert.py0000644000175000001440000000073012025001653021732 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_MESA_pack_invert' _p.unpack_constants( """GL_PACK_INVERT_MESA 0x8758""", globals()) glget.addGLGetConstant( GL_PACK_INVERT_MESA, (1,) ) def glInitPackInvertMESA(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/MESA/resize_buffers.py0000644000175000001440000000105012025001653022436 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_MESA_resize_buffers' def _f( function ): return _p.createFunction( function,_p.GL,'GL_MESA_resize_buffers',False) @_f @_p.types(None,) def glResizeBuffersMESA( ):pass def glInitResizeBuffersMESA(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/MESA/window_pos.py0000644000175000001440000000462612025001653021625 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_MESA_window_pos' def _f( function ): return _p.createFunction( function,_p.GL,'GL_MESA_window_pos',False) @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glWindowPos2dMESA( x,y ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glWindowPos2dvMESA( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glWindowPos2fMESA( x,y ):pass @_f @_p.types(None,arrays.GLfloatArray) def glWindowPos2fvMESA( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glWindowPos2iMESA( x,y ):pass @_f @_p.types(None,arrays.GLintArray) def glWindowPos2ivMESA( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort) def glWindowPos2sMESA( x,y ):pass @_f @_p.types(None,arrays.GLshortArray) def glWindowPos2svMESA( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glWindowPos3dMESA( x,y,z ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glWindowPos3dvMESA( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glWindowPos3fMESA( x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray) def glWindowPos3fvMESA( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glWindowPos3iMESA( x,y,z ):pass @_f @_p.types(None,arrays.GLintArray) def glWindowPos3ivMESA( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glWindowPos3sMESA( x,y,z ):pass @_f @_p.types(None,arrays.GLshortArray) def glWindowPos3svMESA( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glWindowPos4dMESA( x,y,z,w ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glWindowPos4dvMESA( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glWindowPos4fMESA( x,y,z,w ):pass @_f @_p.types(None,arrays.GLfloatArray) def glWindowPos4fvMESA( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glWindowPos4iMESA( x,y,z,w ):pass @_f @_p.types(None,arrays.GLintArray) def glWindowPos4ivMESA( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glWindowPos4sMESA( x,y,z,w ):pass @_f @_p.types(None,arrays.GLshortArray) def glWindowPos4svMESA( v ):pass def glInitWindowPosMESA(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/GREMEDY/0000755000175000001440000000000012032640120017416 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/GREMEDY/__init__.py0000644000175000001440000000002712025001653021532 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/GREMEDY/frame_terminator.py0000644000175000001440000000107412025001653023334 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_GREMEDY_frame_terminator' def _f( function ): return _p.createFunction( function,_p.GL,'GL_GREMEDY_frame_terminator',False) @_f @_p.types(None,) def glFrameTerminatorGREMEDY( ):pass def glInitFrameTerminatorGREMEDY(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/GREMEDY/string_marker.py0000644000175000001440000000112512025001653022642 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_GREMEDY_string_marker' def _f( function ): return _p.createFunction( function,_p.GL,'GL_GREMEDY_string_marker',False) @_f @_p.types(None,_cs.GLsizei,ctypes.c_void_p) def glStringMarkerGREMEDY( len,string ):pass def glInitStringMarkerGREMEDY(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/0000755000175000001440000000000012032640120016762 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/point_parameters.py0000644000175000001440000000153212025001653022715 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_point_parameters' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_point_parameters',False) _p.unpack_constants( """GL_POINT_SIZE_MIN_EXT 0x8126 GL_POINT_SIZE_MAX_EXT 0x8127 GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 GL_DISTANCE_ATTENUATION_EXT 0x8129""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glPointParameterfEXT( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glPointParameterfvEXT( pname,params ):pass def glInitPointParametersEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_compression_s3tc.py0000644000175000001440000000107712025001653024422 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_compression_s3tc' _p.unpack_constants( """GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3""", globals()) def glInitTextureCompressionS3TcEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/draw_range_elements.py0000644000175000001440000000141312025001653023344 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_draw_range_elements' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_draw_range_elements',False) _p.unpack_constants( """GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 GL_MAX_ELEMENTS_INDICES_EXT 0x80E9""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p) def glDrawRangeElementsEXT( mode,start,end,count,type,indices ):pass def glInitDrawRangeElementsEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/framebuffer_multisample_blit_scaled.py0000644000175000001440000000077612025001653026577 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_framebuffer_multisample_blit_scaled' _p.unpack_constants( """GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA GL_SCALED_RESOLVE_NICEST_EXT 0x90BB""", globals()) def glInitFramebufferMultisampleBlitScaledEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/blend_subtract.py0000644000175000001440000000071512025001653022336 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_blend_subtract' _p.unpack_constants( """GL_FUNC_SUBTRACT_EXT 0x800A GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B""", globals()) def glInitBlendSubtractEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/x11_sync_object.py0000644000175000001440000000127012025001653022333 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_x11_sync_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_x11_sync_object',False) _p.unpack_constants( """GL_SYNC_X11_FENCE_EXT 0x90E1""", globals()) @_f @_p.types(_cs.GLsync,_cs.GLenum,_cs.GLintptr,_cs.GLbitfield) def glImportSyncEXT( external_sync_type,external_sync,flags ):pass def glInitX11SyncObjectEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/bindable_uniform.py0000644000175000001440000000261512025001653022643 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_bindable_uniform' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_bindable_uniform',False) _p.unpack_constants( """GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED GL_UNIFORM_BUFFER_EXT 0x8DEE GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF""", globals()) glget.addGLGetConstant( GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_BINDABLE_UNIFORM_SIZE_EXT, (1,) ) glget.addGLGetConstant( GL_UNIFORM_BUFFER_BINDING_EXT, (1,) ) @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint) def glUniformBufferEXT( program,location,buffer ):pass @_f @_p.types(_cs.GLint,_cs.GLuint,_cs.GLint) def glGetUniformBufferSizeEXT( program,location ):pass @_f @_p.types(_cs.GLintptr,_cs.GLuint,_cs.GLint) def glGetUniformOffsetEXT( program,location ):pass def glInitBindableUniformEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/pixel_transform.py0000644000175000001440000000326212031734225022564 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_pixel_transform' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_pixel_transform',False) _p.unpack_constants( """GL_PIXEL_TRANSFORM_2D_EXT 0x8330 GL_PIXEL_MAG_FILTER_EXT 0x8331 GL_PIXEL_MIN_FILTER_EXT 0x8332 GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 GL_CUBIC_EXT 0x8334 GL_AVERAGE_EXT 0x8335 GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338""", globals()) glget.addGLGetConstant( GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glPixelTransformParameteriEXT( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glPixelTransformParameterfEXT( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glPixelTransformParameterivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glPixelTransformParameterfvEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetPixelTransformParameterivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetPixelTransformParameterfvEXT( target,pname,params ):pass def glInitPixelTransformEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_sRGB_decode.py0000644000175000001440000000074712025001653023230 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_sRGB_decode' _p.unpack_constants( """GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 GL_DECODE_EXT 0x8A49 GL_SKIP_DECODE_EXT 0x8A4A""", globals()) def glInitTextureSrgbDecodeEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/compiled_vertex_array.py0000644000175000001440000000157512025001653023737 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_compiled_vertex_array' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_compiled_vertex_array',False) _p.unpack_constants( """GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9""", globals()) glget.addGLGetConstant( GL_ARRAY_ELEMENT_LOCK_FIRST_EXT, (1,) ) glget.addGLGetConstant( GL_ARRAY_ELEMENT_LOCK_COUNT_EXT, (1,) ) @_f @_p.types(None,_cs.GLint,_cs.GLsizei) def glLockArraysEXT( first,count ):pass @_f @_p.types(None,) def glUnlockArraysEXT( ):pass def glInitCompiledVertexArrayEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/index_texture.py0000644000175000001440000000054512025001653022233 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_index_texture' def glInitIndexTextureEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_integer.py0000644000175000001440000000464212025001653022563 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_texture_integer' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_texture_integer',False) _p.unpack_constants( """GL_RGBA32UI_EXT 0x8D70 GL_RGB32UI_EXT 0x8D71 GL_ALPHA32UI_EXT 0x8D72 GL_INTENSITY32UI_EXT 0x8D73 GL_LUMINANCE32UI_EXT 0x8D74 GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 GL_RGBA16UI_EXT 0x8D76 GL_RGB16UI_EXT 0x8D77 GL_ALPHA16UI_EXT 0x8D78 GL_INTENSITY16UI_EXT 0x8D79 GL_LUMINANCE16UI_EXT 0x8D7A GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B GL_RGBA8UI_EXT 0x8D7C GL_RGB8UI_EXT 0x8D7D GL_ALPHA8UI_EXT 0x8D7E GL_INTENSITY8UI_EXT 0x8D7F GL_LUMINANCE8UI_EXT 0x8D80 GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 GL_RGBA32I_EXT 0x8D82 GL_RGB32I_EXT 0x8D83 GL_ALPHA32I_EXT 0x8D84 GL_INTENSITY32I_EXT 0x8D85 GL_LUMINANCE32I_EXT 0x8D86 GL_LUMINANCE_ALPHA32I_EXT 0x8D87 GL_RGBA16I_EXT 0x8D88 GL_RGB16I_EXT 0x8D89 GL_ALPHA16I_EXT 0x8D8A GL_INTENSITY16I_EXT 0x8D8B GL_LUMINANCE16I_EXT 0x8D8C GL_LUMINANCE_ALPHA16I_EXT 0x8D8D GL_RGBA8I_EXT 0x8D8E GL_RGB8I_EXT 0x8D8F GL_ALPHA8I_EXT 0x8D90 GL_INTENSITY8I_EXT 0x8D91 GL_LUMINANCE8I_EXT 0x8D92 GL_LUMINANCE_ALPHA8I_EXT 0x8D93 GL_RED_INTEGER_EXT 0x8D94 GL_GREEN_INTEGER_EXT 0x8D95 GL_BLUE_INTEGER_EXT 0x8D96 GL_ALPHA_INTEGER_EXT 0x8D97 GL_RGB_INTEGER_EXT 0x8D98 GL_RGBA_INTEGER_EXT 0x8D99 GL_BGR_INTEGER_EXT 0x8D9A GL_BGRA_INTEGER_EXT 0x8D9B GL_LUMINANCE_INTEGER_EXT 0x8D9C GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D GL_RGBA_INTEGER_MODE_EXT 0x8D9E""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glTexParameterIivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glTexParameterIuivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetTexParameterIivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glGetTexParameterIuivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glClearColorIiEXT( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glClearColorIuiEXT( red,green,blue,alpha ):pass def glInitTextureIntegerEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/fog_coord.py0000644000175000001440000000256312025001653021307 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_fog_coord' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_fog_coord',False) _p.unpack_constants( """GL_FOG_COORDINATE_SOURCE_EXT 0x8450 GL_FOG_COORDINATE_EXT 0x8451 GL_FRAGMENT_DEPTH_EXT 0x8452 GL_CURRENT_FOG_COORDINATE_EXT 0x8453 GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 GL_FOG_COORDINATE_ARRAY_EXT 0x8457""", globals()) glget.addGLGetConstant( GL_CURRENT_FOG_COORDINATE_EXT, (1,) ) glget.addGLGetConstant( GL_FOG_COORDINATE_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_FOG_COORDINATE_ARRAY_STRIDE_EXT, (1,) ) @_f @_p.types(None,_cs.GLfloat) def glFogCoordfEXT( coord ):pass @_f @_p.types(None,arrays.GLfloatArray) def glFogCoordfvEXT( coord ):pass @_f @_p.types(None,_cs.GLdouble) def glFogCoorddEXT( coord ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glFogCoorddvEXT( coord ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glFogCoordPointerEXT( type,stride,pointer ):pass def glInitFogCoordEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/blend_logic_op.py0000644000175000001440000000054612025001653022304 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_blend_logic_op' def glInitBlendLogicOpEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/shader_image_load_store.py0000644000175000001440000000533312025001653024167 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_shader_image_load_store' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_shader_image_load_store',False) _p.unpack_constants( """GL_MAX_IMAGE_UNITS_EXT 0x8F38 GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 GL_IMAGE_BINDING_NAME_EXT 0x8F3A GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C GL_IMAGE_BINDING_LAYER_EXT 0x8F3D GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E GL_IMAGE_1D_EXT 0x904C GL_IMAGE_2D_EXT 0x904D GL_IMAGE_3D_EXT 0x904E GL_IMAGE_2D_RECT_EXT 0x904F GL_IMAGE_CUBE_EXT 0x9050 GL_IMAGE_BUFFER_EXT 0x9051 GL_IMAGE_1D_ARRAY_EXT 0x9052 GL_IMAGE_2D_ARRAY_EXT 0x9053 GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 GL_INT_IMAGE_1D_EXT 0x9057 GL_INT_IMAGE_2D_EXT 0x9058 GL_INT_IMAGE_3D_EXT 0x9059 GL_INT_IMAGE_2D_RECT_EXT 0x905A GL_INT_IMAGE_CUBE_EXT 0x905B GL_INT_IMAGE_BUFFER_EXT 0x905C GL_INT_IMAGE_1D_ARRAY_EXT 0x905D GL_INT_IMAGE_2D_ARRAY_EXT 0x905E GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C GL_MAX_IMAGE_SAMPLES_EXT 0x906D GL_IMAGE_BINDING_FORMAT_EXT 0x906E GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x1 GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x2 GL_UNIFORM_BARRIER_BIT_EXT 0x4 GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x8 GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x20 GL_COMMAND_BARRIER_BIT_EXT 0x40 GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x80 GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x100 GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x200 GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x400 GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x800 GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x1000 GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLint,_cs.GLboolean,_cs.GLint,_cs.GLenum,_cs.GLint) def glBindImageTextureEXT( index,texture,level,layered,layer,access,format ):pass @_f @_p.types(None,_cs.GLbitfield) def glMemoryBarrierEXT( barriers ):pass def glInitShaderImageLoadStoreEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/vertex_shader.py0000644000175000001440000002140412025001653022204 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_vertex_shader' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_vertex_shader',False) _p.unpack_constants( """GL_VERTEX_SHADER_EXT 0x8780 GL_VERTEX_SHADER_BINDING_EXT 0x8781 GL_OP_INDEX_EXT 0x8782 GL_OP_NEGATE_EXT 0x8783 GL_OP_DOT3_EXT 0x8784 GL_OP_DOT4_EXT 0x8785 GL_OP_MUL_EXT 0x8786 GL_OP_ADD_EXT 0x8787 GL_OP_MADD_EXT 0x8788 GL_OP_FRAC_EXT 0x8789 GL_OP_MAX_EXT 0x878A GL_OP_MIN_EXT 0x878B GL_OP_SET_GE_EXT 0x878C GL_OP_SET_LT_EXT 0x878D GL_OP_CLAMP_EXT 0x878E GL_OP_FLOOR_EXT 0x878F GL_OP_ROUND_EXT 0x8790 GL_OP_EXP_BASE_2_EXT 0x8791 GL_OP_LOG_BASE_2_EXT 0x8792 GL_OP_POWER_EXT 0x8793 GL_OP_RECIP_EXT 0x8794 GL_OP_RECIP_SQRT_EXT 0x8795 GL_OP_SUB_EXT 0x8796 GL_OP_CROSS_PRODUCT_EXT 0x8797 GL_OP_MULTIPLY_MATRIX_EXT 0x8798 GL_OP_MOV_EXT 0x8799 GL_OUTPUT_VERTEX_EXT 0x879A GL_OUTPUT_COLOR0_EXT 0x879B GL_OUTPUT_COLOR1_EXT 0x879C GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC GL_OUTPUT_FOG_EXT 0x87BD GL_SCALAR_EXT 0x87BE GL_VECTOR_EXT 0x87BF GL_MATRIX_EXT 0x87C0 GL_VARIANT_EXT 0x87C1 GL_INVARIANT_EXT 0x87C2 GL_LOCAL_CONSTANT_EXT 0x87C3 GL_LOCAL_EXT 0x87C4 GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 GL_X_EXT 0x87D5 GL_Y_EXT 0x87D6 GL_Z_EXT 0x87D7 GL_W_EXT 0x87D8 GL_NEGATIVE_X_EXT 0x87D9 GL_NEGATIVE_Y_EXT 0x87DA GL_NEGATIVE_Z_EXT 0x87DB GL_NEGATIVE_W_EXT 0x87DC GL_ZERO_EXT 0x87DD GL_ONE_EXT 0x87DE GL_NEGATIVE_ONE_EXT 0x87DF GL_NORMALIZED_RANGE_EXT 0x87E0 GL_FULL_RANGE_EXT 0x87E1 GL_CURRENT_VERTEX_EXT 0x87E2 GL_MVP_MATRIX_EXT 0x87E3 GL_VARIANT_VALUE_EXT 0x87E4 GL_VARIANT_DATATYPE_EXT 0x87E5 GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 GL_VARIANT_ARRAY_EXT 0x87E8 GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 GL_INVARIANT_VALUE_EXT 0x87EA GL_INVARIANT_DATATYPE_EXT 0x87EB GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED""", globals()) glget.addGLGetConstant( GL_VERTEX_SHADER_EXT, (1,) ) glget.addGLGetConstant( GL_VERTEX_SHADER_BINDING_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_SHADER_VARIANTS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_SHADER_INVARIANTS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_SHADER_LOCALS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT, (1,) ) glget.addGLGetConstant( GL_VERTEX_SHADER_OPTIMIZED_EXT, (1,) ) @_f @_p.types(None,) def glBeginVertexShaderEXT( ):pass @_f @_p.types(None,) def glEndVertexShaderEXT( ):pass @_f @_p.types(None,_cs.GLuint) def glBindVertexShaderEXT( id ):pass @_f @_p.types(_cs.GLuint,_cs.GLuint) def glGenVertexShadersEXT( range ):pass @_f @_p.types(None,_cs.GLuint) def glDeleteVertexShaderEXT( id ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint) def glShaderOp1EXT( op,res,arg1 ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glShaderOp2EXT( op,res,arg1,arg2 ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glShaderOp3EXT( op,res,arg1,arg2,arg3 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glSwizzleEXT( res,in_,outX,outY,outZ,outW ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glWriteMaskEXT( res,in_,outX,outY,outZ,outW ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glInsertComponentEXT( res,src,num ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glExtractComponentEXT( res,src,num ):pass @_f @_p.types(_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glGenSymbolsEXT( datatype,storagetype,range,components ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,ctypes.c_void_p) def glSetInvariantEXT( id,type,addr ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,ctypes.c_void_p) def glSetLocalConstantEXT( id,type,addr ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLbyteArray) def glVariantbvEXT( id,addr ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVariantsvEXT( id,addr ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVariantivEXT( id,addr ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVariantfvEXT( id,addr ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVariantdvEXT( id,addr ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLubyteArray) def glVariantubvEXT( id,addr ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVariantusvEXT( id,addr ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVariantuivEXT( id,addr ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,ctypes.c_void_p) def glVariantPointerEXT( id,type,stride,addr ):pass @_f @_p.types(None,_cs.GLuint) def glEnableVariantClientStateEXT( id ):pass @_f @_p.types(None,_cs.GLuint) def glDisableVariantClientStateEXT( id ):pass @_f @_p.types(_cs.GLuint,_cs.GLenum,_cs.GLenum) def glBindLightParameterEXT( light,value ):pass @_f @_p.types(_cs.GLuint,_cs.GLenum,_cs.GLenum) def glBindMaterialParameterEXT( face,value ):pass @_f @_p.types(_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glBindTexGenParameterEXT( unit,coord,value ):pass @_f @_p.types(_cs.GLuint,_cs.GLenum,_cs.GLenum) def glBindTextureUnitParameterEXT( unit,value ):pass @_f @_p.types(_cs.GLuint,_cs.GLenum) def glBindParameterEXT( value ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint,_cs.GLenum) def glIsVariantEnabledEXT( id,cap ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLbooleanArray) def glGetVariantBooleanvEXT( id,value,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVariantIntegervEXT( id,value,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetVariantFloatvEXT( id,value,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLvoidpArray) def glGetVariantPointervEXT( id,value,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLbooleanArray) def glGetInvariantBooleanvEXT( id,value,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetInvariantIntegervEXT( id,value,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetInvariantFloatvEXT( id,value,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLbooleanArray) def glGetLocalConstantBooleanvEXT( id,value,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetLocalConstantIntegervEXT( id,value,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetLocalConstantFloatvEXT( id,value,data ):pass def glInitVertexShaderEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_array.py0000644000175000001440000000156312025001653022243 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_array' _p.unpack_constants( """GL_TEXTURE_1D_ARRAY_EXT 0x8C18 GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 GL_TEXTURE_2D_ARRAY_EXT 0x8C1A GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E""", globals()) glget.addGLGetConstant( GL_TEXTURE_BINDING_1D_ARRAY_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BINDING_2D_ARRAY_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_ARRAY_TEXTURE_LAYERS_EXT, (1,) ) def glInitTextureArrayEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/shared_texture_palette.py0000644000175000001440000000070112025001653024102 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_shared_texture_palette' _p.unpack_constants( """GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB""", globals()) def glInitSharedTexturePaletteEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/vertex_array.py0000644000175000001440000001002012025001653022044 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_vertex_array' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_vertex_array',False) _p.unpack_constants( """GL_VERTEX_ARRAY_EXT 0x8074 GL_NORMAL_ARRAY_EXT 0x8075 GL_COLOR_ARRAY_EXT 0x8076 GL_INDEX_ARRAY_EXT 0x8077 GL_TEXTURE_COORD_ARRAY_EXT 0x8078 GL_EDGE_FLAG_ARRAY_EXT 0x8079 GL_VERTEX_ARRAY_SIZE_EXT 0x807A GL_VERTEX_ARRAY_TYPE_EXT 0x807B GL_VERTEX_ARRAY_STRIDE_EXT 0x807C GL_VERTEX_ARRAY_COUNT_EXT 0x807D GL_NORMAL_ARRAY_TYPE_EXT 0x807E GL_NORMAL_ARRAY_STRIDE_EXT 0x807F GL_NORMAL_ARRAY_COUNT_EXT 0x8080 GL_COLOR_ARRAY_SIZE_EXT 0x8081 GL_COLOR_ARRAY_TYPE_EXT 0x8082 GL_COLOR_ARRAY_STRIDE_EXT 0x8083 GL_COLOR_ARRAY_COUNT_EXT 0x8084 GL_INDEX_ARRAY_TYPE_EXT 0x8085 GL_INDEX_ARRAY_STRIDE_EXT 0x8086 GL_INDEX_ARRAY_COUNT_EXT 0x8087 GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D GL_VERTEX_ARRAY_POINTER_EXT 0x808E GL_NORMAL_ARRAY_POINTER_EXT 0x808F GL_COLOR_ARRAY_POINTER_EXT 0x8090 GL_INDEX_ARRAY_POINTER_EXT 0x8091 GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093""", globals()) glget.addGLGetConstant( GL_VERTEX_ARRAY_EXT, (1,) ) glget.addGLGetConstant( GL_NORMAL_ARRAY_EXT, (1,) ) glget.addGLGetConstant( GL_INDEX_ARRAY_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_COORD_ARRAY_EXT, (1,) ) glget.addGLGetConstant( GL_EDGE_FLAG_ARRAY_EXT, (1,) ) glget.addGLGetConstant( GL_VERTEX_ARRAY_SIZE_EXT, (1,) ) glget.addGLGetConstant( GL_VERTEX_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_VERTEX_ARRAY_STRIDE_EXT, (1,) ) glget.addGLGetConstant( GL_VERTEX_ARRAY_COUNT_EXT, (1,) ) glget.addGLGetConstant( GL_NORMAL_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_NORMAL_ARRAY_STRIDE_EXT, (1,) ) glget.addGLGetConstant( GL_NORMAL_ARRAY_COUNT_EXT, (1,) ) glget.addGLGetConstant( GL_COLOR_ARRAY_SIZE_EXT, (1,) ) glget.addGLGetConstant( GL_COLOR_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_COLOR_ARRAY_STRIDE_EXT, (1,) ) glget.addGLGetConstant( GL_COLOR_ARRAY_COUNT_EXT, (1,) ) glget.addGLGetConstant( GL_INDEX_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_INDEX_ARRAY_STRIDE_EXT, (1,) ) glget.addGLGetConstant( GL_INDEX_ARRAY_COUNT_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_COORD_ARRAY_SIZE_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_COORD_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_COORD_ARRAY_STRIDE_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_COORD_ARRAY_COUNT_EXT, (1,) ) glget.addGLGetConstant( GL_EDGE_FLAG_ARRAY_STRIDE_EXT, (1,) ) glget.addGLGetConstant( GL_EDGE_FLAG_ARRAY_COUNT_EXT, (1,) ) @_f @_p.types(None,_cs.GLint) def glArrayElementEXT( i ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,ctypes.c_void_p) def glColorPointerEXT( size,type,stride,count,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLsizei) def glDrawArraysEXT( mode,first,count ):pass @_f @_p.types(None,_cs.GLsizei,_cs.GLsizei,arrays.GLbooleanArray) def glEdgeFlagPointerEXT( stride,count,pointer ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLvoidpArray) def glGetPointervEXT( pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,ctypes.c_void_p) def glIndexPointerEXT( type,stride,count,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,ctypes.c_void_p) def glNormalPointerEXT( type,stride,count,pointer ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,ctypes.c_void_p) def glTexCoordPointerEXT( size,type,stride,count,pointer ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,ctypes.c_void_p) def glVertexPointerEXT( size,type,stride,count,pointer ):pass def glInitVertexArrayEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture.py0000644000175000001440000000273112025001653021043 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture' _p.unpack_constants( """GL_ALPHA4_EXT 0x803B GL_ALPHA8_EXT 0x803C GL_ALPHA12_EXT 0x803D GL_ALPHA16_EXT 0x803E GL_LUMINANCE4_EXT 0x803F GL_LUMINANCE8_EXT 0x8040 GL_LUMINANCE12_EXT 0x8041 GL_LUMINANCE16_EXT 0x8042 GL_LUMINANCE4_ALPHA4_EXT 0x8043 GL_LUMINANCE6_ALPHA2_EXT 0x8044 GL_LUMINANCE8_ALPHA8_EXT 0x8045 GL_LUMINANCE12_ALPHA4_EXT 0x8046 GL_LUMINANCE12_ALPHA12_EXT 0x8047 GL_LUMINANCE16_ALPHA16_EXT 0x8048 GL_INTENSITY_EXT 0x8049 GL_INTENSITY4_EXT 0x804A GL_INTENSITY8_EXT 0x804B GL_INTENSITY12_EXT 0x804C GL_INTENSITY16_EXT 0x804D GL_RGB2_EXT 0x804E GL_RGB4_EXT 0x804F GL_RGB5_EXT 0x8050 GL_RGB8_EXT 0x8051 GL_RGB10_EXT 0x8052 GL_RGB12_EXT 0x8053 GL_RGB16_EXT 0x8054 GL_RGBA2_EXT 0x8055 GL_RGBA4_EXT 0x8056 GL_RGB5_A1_EXT 0x8057 GL_RGBA8_EXT 0x8058 GL_RGB10_A2_EXT 0x8059 GL_RGBA12_EXT 0x805A GL_RGBA16_EXT 0x805B GL_TEXTURE_RED_SIZE_EXT 0x805C GL_TEXTURE_GREEN_SIZE_EXT 0x805D GL_TEXTURE_BLUE_SIZE_EXT 0x805E GL_TEXTURE_ALPHA_SIZE_EXT 0x805F GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 GL_REPLACE_EXT 0x8062 GL_PROXY_TEXTURE_1D_EXT 0x8063 GL_PROXY_TEXTURE_2D_EXT 0x8064 GL_TEXTURE_TOO_LARGE_EXT 0x8065""", globals()) def glInitTextureEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/color_matrix.py0000644000175000001440000000103412025001653022040 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.color_matrix The official definition of this extension is available here: http://oss.sgi.com/projects/ogl-sample/registry/EXT/color_matrix.txt Automatically generated by the get_gl_extensions script, do not edit! ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions from OpenGL.GL import glget import ctypes def glInitColorMatrixEXT(): '''Return boolean indicating whether this extension is available''' return extensions.hasGLExtension( 'GL_EXT_color_matrix' )PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/separate_specular_color.py0000644000175000001440000000111012025001653024231 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_separate_specular_color' _p.unpack_constants( """GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 GL_SINGLE_COLOR_EXT 0x81F9 GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA""", globals()) glget.addGLGetConstant( GL_LIGHT_MODEL_COLOR_CONTROL_EXT, (1,) ) def glInitSeparateSpecularColorEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/draw_buffers2.py0000644000175000001440000000215212025001653022073 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_draw_buffers2' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_draw_buffers2',False) @_f @_p.types(None,_cs.GLuint,_cs.GLboolean,_cs.GLboolean,_cs.GLboolean,_cs.GLboolean) def glColorMaskIndexedEXT( index,r,g,b,a ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLbooleanArray) def glGetBooleanIndexedvEXT( target,index,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLintArray) def glGetIntegerIndexedvEXT( target,index,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glEnableIndexedEXT( target,index ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glDisableIndexedEXT( target,index ):pass @_f @_p.types(_cs.GLboolean,_cs.GLenum,_cs.GLuint) def glIsEnabledIndexedEXT( target,index ):pass def glInitDrawBuffers2EXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/copy_texture.py0000644000175000001440000000255512025001653022101 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_copy_texture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_copy_texture',False) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLint) def glCopyTexImage1DEXT( target,level,internalformat,x,y,width,border ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLint) def glCopyTexImage2DEXT( target,level,internalformat,x,y,width,height,border ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyTexSubImage1DEXT( target,level,xoffset,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyTexSubImage2DEXT( target,level,xoffset,yoffset,x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyTexSubImage3DEXT( target,level,xoffset,yoffset,zoffset,x,y,width,height ):pass def glInitCopyTextureEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_swizzle.py0000644000175000001440000000106212025001653022626 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_swizzle' _p.unpack_constants( """GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46""", globals()) def glInitTextureSwizzleEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/draw_instanced.py0000644000175000001440000000141312025001653022324 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_draw_instanced' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_draw_instanced',False) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glDrawArraysInstancedEXT( mode,start,count,primcount ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLsizei) def glDrawElementsInstancedEXT( mode,count,type,indices,primcount ):pass def glInitDrawInstancedEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/blend_color.py0000644000175000001440000000152612025001653021626 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_blend_color' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_blend_color',False) _p.unpack_constants( """GL_CONSTANT_COLOR_EXT 0x8001 GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 GL_CONSTANT_ALPHA_EXT 0x8003 GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 GL_BLEND_COLOR_EXT 0x8005""", globals()) glget.addGLGetConstant( GL_BLEND_COLOR_EXT, (4,) ) @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glBlendColorEXT( red,green,blue,alpha ):pass def glInitBlendColorEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/vertex_attrib_64bit.py0000644000175000001440000000412612025001653023235 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_vertex_attrib_64bit' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_vertex_attrib_64bit',False) _p.unpack_constants( """GL_DOUBLE_VEC2_EXT 0x8FFC GL_DOUBLE_VEC3_EXT 0x8FFD GL_DOUBLE_VEC4_EXT 0x8FFE GL_DOUBLE_MAT2_EXT 0x8F46 GL_DOUBLE_MAT3_EXT 0x8F47 GL_DOUBLE_MAT4_EXT 0x8F48 GL_DOUBLE_MAT2x3_EXT 0x8F49 GL_DOUBLE_MAT2x4_EXT 0x8F4A GL_DOUBLE_MAT3x2_EXT 0x8F4B GL_DOUBLE_MAT3x4_EXT 0x8F4C GL_DOUBLE_MAT4x2_EXT 0x8F4D GL_DOUBLE_MAT4x3_EXT 0x8F4E""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLdouble) def glVertexAttribL1dEXT( index,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble) def glVertexAttribL2dEXT( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttribL3dEXT( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttribL4dEXT( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttribL1dvEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttribL2dvEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttribL3dvEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttribL4dvEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glVertexAttribLPointerEXT( index,size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLdoubleArray) def glGetVertexAttribLdvEXT( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLintptr) def glVertexArrayVertexAttribLOffsetEXT( vaobj,buffer,index,size,type,stride,offset ):pass def glInitVertexAttrib64BitEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/vertex_weighting.py0000644000175000001440000000301612031734241022725 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_vertex_weighting' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_vertex_weighting',False) _p.unpack_constants( """GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 GL_MODELVIEW1_MATRIX_EXT 0x8506 GL_VERTEX_WEIGHTING_EXT 0x8509 GL_MODELVIEW1_EXT 0x850A GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510""", globals()) glget.addGLGetConstant( GL_MODELVIEW1_STACK_DEPTH_EXT, (1,) ) glget.addGLGetConstant( GL_MODELVIEW1_MATRIX_EXT, (4,4) ) glget.addGLGetConstant( GL_CURRENT_VERTEX_WEIGHT_EXT, (1,) ) glget.addGLGetConstant( GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT, (1,) ) glget.addGLGetConstant( GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT, (1,) ) @_f @_p.types(None,_cs.GLfloat) def glVertexWeightfEXT( weight ):pass @_f @_p.types(None,arrays.GLfloatArray) def glVertexWeightfvEXT( weight ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glVertexWeightPointerEXT( size,type,stride,pointer ):pass def glInitVertexWeightingEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/__init__.py0000644000175000001440000000002712025001653021076 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_shared_exponent.py0000644000175000001440000000077512025001653024317 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_shared_exponent' _p.unpack_constants( """GL_RGB9_E5_EXT 0x8C3D GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F""", globals()) def glInitTextureSharedExponentEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/framebuffer_multisample.py0000644000175000001440000000157212025001653024245 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_framebuffer_multisample' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_framebuffer_multisample',False) _p.unpack_constants( """GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 GL_MAX_SAMPLES_EXT 0x8D57""", globals()) glget.addGLGetConstant( GL_MAX_SAMPLES_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glRenderbufferStorageMultisampleEXT( target,samples,internalformat,width,height ):pass def glInitFramebufferMultisampleEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/vertex_array_bgra.py0000644000175000001440000000055412025001653023052 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_vertex_array_bgra' def glInitVertexArrayBgraEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/stencil_wrap.py0000644000175000001440000000067112025001653022036 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_stencil_wrap' _p.unpack_constants( """GL_INCR_WRAP_EXT 0x8507 GL_DECR_WRAP_EXT 0x8508""", globals()) def glInitStencilWrapEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/index_func.py0000644000175000001440000000125512025001653021465 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_index_func' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_index_func',False) _p.unpack_constants( """GL_INDEX_TEST_EXT 0x81B5 GL_INDEX_TEST_FUNC_EXT 0x81B6 GL_INDEX_TEST_REF_EXT 0x81B7""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLclampf) def glIndexFuncEXT( func,ref ):pass def glInitIndexFuncEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/multi_draw_arrays.py0000644000175000001440000000144712025001653023076 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_multi_draw_arrays' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_multi_draw_arrays',False) @_f @_p.types(None,_cs.GLenum,arrays.GLintArray,arrays.GLsizeiArray,_cs.GLsizei) def glMultiDrawArraysEXT( mode,first,count,primcount ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLsizeiArray,_cs.GLenum,arrays.GLvoidpArray,_cs.GLsizei) def glMultiDrawElementsEXT( mode,count,type,indices,primcount ):pass def glInitMultiDrawArraysEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/pixel_buffer_object.py0000644000175000001440000000125612025001653023344 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_pixel_buffer_object' _p.unpack_constants( """GL_PIXEL_PACK_BUFFER_EXT 0x88EB GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF""", globals()) glget.addGLGetConstant( GL_PIXEL_PACK_BUFFER_BINDING_EXT, (1,) ) glget.addGLGetConstant( GL_PIXEL_UNPACK_BUFFER_BINDING_EXT, (1,) ) def glInitPixelBufferObjectEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/GL_422_pixels.py0000644000175000001440000000075212025001653021621 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_GL_422_pixels' _p.unpack_constants( """GL_422_EXT 0x80CC GL_422_REV_EXT 0x80CD GL_422_AVERAGE_EXT 0x80CE GL_422_REV_AVERAGE_EXT 0x80CF""", globals()) def glInitGl422PixelsEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/misc_attribute.py0000644000175000001440000000054712025001653022364 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_misc_attribute' def glInitMiscAttributeEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/packed_float.py0000644000175000001440000000076612025001653021765 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_packed_float' _p.unpack_constants( """GL_R11F_G11F_B10F_EXT 0x8C3A GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C""", globals()) def glInitPackedFloatEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/packed_pixels.py0000644000175000001440000000110012025001653022143 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_packed_pixels' _p.unpack_constants( """GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036""", globals()) def glInitPackedPixelsEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/blend_func_separate.py0000644000175000001440000000200212025001653023315 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_blend_func_separate' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_blend_func_separate',False) _p.unpack_constants( """GL_BLEND_DST_RGB_EXT 0x80C8 GL_BLEND_SRC_RGB_EXT 0x80C9 GL_BLEND_DST_ALPHA_EXT 0x80CA GL_BLEND_SRC_ALPHA_EXT 0x80CB""", globals()) glget.addGLGetConstant( GL_BLEND_DST_RGB_EXT, (1,) ) glget.addGLGetConstant( GL_BLEND_SRC_RGB_EXT, (1,) ) glget.addGLGetConstant( GL_BLEND_DST_ALPHA_EXT, (1,) ) glget.addGLGetConstant( GL_BLEND_SRC_ALPHA_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glBlendFuncSeparateEXT( sfactorRGB,dfactorRGB,sfactorAlpha,dfactorAlpha ):pass def glInitBlendFuncSeparateEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/transform_feedback.py0000644000175000001440000000413412025001653023161 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_transform_feedback' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_transform_feedback',False) _p.unpack_constants( """GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C GL_SEPARATE_ATTRIBS_EXT 0x8C8D GL_PRIMITIVES_GENERATED_EXT 0x8C87 GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 GL_RASTERIZER_DISCARD_EXT 0x8C89 GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76""", globals()) @_f @_p.types(None,_cs.GLenum) def glBeginTransformFeedbackEXT( primitiveMode ):pass @_f @_p.types(None,) def glEndTransformFeedbackEXT( ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr) def glBindBufferRangeEXT( target,index,buffer,offset,size ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLintptr) def glBindBufferOffsetEXT( target,index,buffer,offset ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint) def glBindBufferBaseEXT( target,index,buffer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,ctypes.POINTER( ctypes.POINTER( _cs.GLchar )),_cs.GLenum) def glTransformFeedbackVaryingsEXT( program,count,varyings,bufferMode ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLsizeiArray,arrays.GLuintArray,arrays.GLcharArray) def glGetTransformFeedbackVaryingEXT( program,index,bufSize,length,size,type,name ):pass def glInitTransformFeedbackEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/gpu_program_parameters.py0000644000175000001440000000144212025001653024106 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_gpu_program_parameters' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_gpu_program_parameters',False) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glProgramEnvParameters4fvEXT( target,index,count,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glProgramLocalParameters4fvEXT( target,index,count,params ):pass def glInitGpuProgramParametersEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/timer_query.py0000644000175000001440000000141512025001653021706 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_timer_query' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_timer_query',False) _p.unpack_constants( """GL_TIME_ELAPSED_EXT 0x88BF""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLint64Array) def glGetQueryObjecti64vEXT( id,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuint64Array) def glGetQueryObjectui64vEXT( id,pname,params ):pass def glInitTimerQueryEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_env_dot3.py0000644000175000001440000000067712025001653022653 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_env_dot3' _p.unpack_constants( """GL_DOT3_RGB_EXT 0x8740 GL_DOT3_RGBA_EXT 0x8741""", globals()) def glInitTextureEnvDot3EXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/multisample.py0000644000175000001440000000251412025001653021676 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_multisample' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_multisample',False) _p.unpack_constants( """GL_MULTISAMPLE_EXT 0x809D GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F GL_SAMPLE_MASK_EXT 0x80A0 GL_1PASS_EXT 0x80A1 GL_2PASS_0_EXT 0x80A2 GL_2PASS_1_EXT 0x80A3 GL_4PASS_0_EXT 0x80A4 GL_4PASS_1_EXT 0x80A5 GL_4PASS_2_EXT 0x80A6 GL_4PASS_3_EXT 0x80A7 GL_SAMPLE_BUFFERS_EXT 0x80A8 GL_SAMPLES_EXT 0x80A9 GL_SAMPLE_MASK_VALUE_EXT 0x80AA GL_SAMPLE_MASK_INVERT_EXT 0x80AB GL_SAMPLE_PATTERN_EXT 0x80AC GL_MULTISAMPLE_BIT_EXT 0x20000000""", globals()) glget.addGLGetConstant( GL_MULTISAMPLE_EXT, (1,) ) glget.addGLGetConstant( GL_SAMPLE_ALPHA_TO_MASK_EXT, (1,) ) glget.addGLGetConstant( GL_SAMPLE_ALPHA_TO_ONE_EXT, (1,) ) glget.addGLGetConstant( GL_SAMPLE_MASK_EXT, (1,) ) @_f @_p.types(None,_cs.GLclampf,_cs.GLboolean) def glSampleMaskEXT( value,invert ):pass @_f @_p.types(None,_cs.GLenum) def glSamplePatternEXT( pattern ):pass def glInitMultisampleEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/pixel_transform_color_table.py0000644000175000001440000000057712025001653025132 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_pixel_transform_color_table' def glInitPixelTransformColorTableEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/framebuffer_object.py0000644000175000001440000001106512025001653023155 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_framebuffer_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_framebuffer_object',False) _p.unpack_constants( """GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x506 GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 GL_RENDERBUFFER_BINDING_EXT 0x8CA7 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF GL_COLOR_ATTACHMENT0_EXT 0x8CE0 GL_COLOR_ATTACHMENT1_EXT 0x8CE1 GL_COLOR_ATTACHMENT2_EXT 0x8CE2 GL_COLOR_ATTACHMENT3_EXT 0x8CE3 GL_COLOR_ATTACHMENT4_EXT 0x8CE4 GL_COLOR_ATTACHMENT5_EXT 0x8CE5 GL_COLOR_ATTACHMENT6_EXT 0x8CE6 GL_COLOR_ATTACHMENT7_EXT 0x8CE7 GL_COLOR_ATTACHMENT8_EXT 0x8CE8 GL_COLOR_ATTACHMENT9_EXT 0x8CE9 GL_COLOR_ATTACHMENT10_EXT 0x8CEA GL_COLOR_ATTACHMENT11_EXT 0x8CEB GL_COLOR_ATTACHMENT12_EXT 0x8CEC GL_COLOR_ATTACHMENT13_EXT 0x8CED GL_COLOR_ATTACHMENT14_EXT 0x8CEE GL_COLOR_ATTACHMENT15_EXT 0x8CEF GL_DEPTH_ATTACHMENT_EXT 0x8D00 GL_STENCIL_ATTACHMENT_EXT 0x8D20 GL_FRAMEBUFFER_EXT 0x8D40 GL_RENDERBUFFER_EXT 0x8D41 GL_RENDERBUFFER_WIDTH_EXT 0x8D42 GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 GL_STENCIL_INDEX1_EXT 0x8D46 GL_STENCIL_INDEX4_EXT 0x8D47 GL_STENCIL_INDEX8_EXT 0x8D48 GL_STENCIL_INDEX16_EXT 0x8D49 GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55""", globals()) glget.addGLGetConstant( GL_MAX_RENDERBUFFER_SIZE_EXT, (1,) ) glget.addGLGetConstant( GL_FRAMEBUFFER_BINDING_EXT, (1,) ) glget.addGLGetConstant( GL_RENDERBUFFER_BINDING_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_COLOR_ATTACHMENTS_EXT, (1,) ) @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsRenderbufferEXT( renderbuffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindRenderbufferEXT( target,renderbuffer ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteRenderbuffersEXT( n,renderbuffers ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenRenderbuffersEXT( n,renderbuffers ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glRenderbufferStorageEXT( target,internalformat,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetRenderbufferParameterivEXT( target,pname,params ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsFramebufferEXT( framebuffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindFramebufferEXT( target,framebuffer ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteFramebuffersEXT( n,framebuffers ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenFramebuffersEXT( n,framebuffers ):pass @_f @_p.types(_cs.GLenum,_cs.GLenum) def glCheckFramebufferStatusEXT( target ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint) def glFramebufferTexture1DEXT( target,attachment,textarget,texture,level ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint) def glFramebufferTexture2DEXT( target,attachment,textarget,texture,level ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint) def glFramebufferTexture3DEXT( target,attachment,textarget,texture,level,zoffset ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glFramebufferRenderbufferEXT( target,attachment,renderbuffertarget,renderbuffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetFramebufferAttachmentParameterivEXT( target,attachment,pname,params ):pass @_f @_p.types(None,_cs.GLenum) def glGenerateMipmapEXT( target ):pass def glInitFramebufferObjectEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/histogram.py0000644000175000001440000000420412025001653021335 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_histogram' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_histogram',False) _p.unpack_constants( """GL_HISTOGRAM_EXT 0x8024 GL_PROXY_HISTOGRAM_EXT 0x8025 GL_HISTOGRAM_WIDTH_EXT 0x8026 GL_HISTOGRAM_FORMAT_EXT 0x8027 GL_HISTOGRAM_RED_SIZE_EXT 0x8028 GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C GL_HISTOGRAM_SINK_EXT 0x802D GL_MINMAX_EXT 0x802E GL_MINMAX_FORMAT_EXT 0x802F GL_MINMAX_SINK_EXT 0x8030 GL_TABLE_TOO_LARGE_EXT 0x8031""", globals()) glget.addGLGetConstant( GL_HISTOGRAM_EXT, (1,) ) glget.addGLGetConstant( GL_MINMAX_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLboolean,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetHistogramEXT( target,reset,format,type,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetHistogramParameterfvEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetHistogramParameterivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLboolean,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetMinmaxEXT( target,reset,format,type,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetMinmaxParameterfvEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMinmaxParameterivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLboolean) def glHistogramEXT( target,width,internalformat,sink ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLboolean) def glMinmaxEXT( target,internalformat,sink ):pass @_f @_p.types(None,_cs.GLenum) def glResetHistogramEXT( target ):pass @_f @_p.types(None,_cs.GLenum) def glResetMinmaxEXT( target ):pass def glInitHistogramEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_object.py0000644000175000001440000000271512025001653022373 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_texture_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_texture_object',False) _p.unpack_constants( """GL_TEXTURE_PRIORITY_EXT 0x8066 GL_TEXTURE_RESIDENT_EXT 0x8067 GL_TEXTURE_1D_BINDING_EXT 0x8068 GL_TEXTURE_2D_BINDING_EXT 0x8069 GL_TEXTURE_3D_BINDING_EXT 0x806A""", globals()) glget.addGLGetConstant( GL_TEXTURE_1D_BINDING_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_2D_BINDING_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_3D_BINDING_EXT, (1,) ) @_f @_p.types(_cs.GLboolean,_cs.GLsizei,arrays.GLuintArray,arrays.GLbooleanArray) def glAreTexturesResidentEXT( n,textures,residences ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindTextureEXT( target,texture ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteTexturesEXT( n,textures ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenTexturesEXT( n,textures ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsTextureEXT( texture ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray,arrays.GLclampfArray) def glPrioritizeTexturesEXT( n,textures,priorities ):pass def glInitTextureObjectEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_lod_bias.py0000644000175000001440000000106312025001653022674 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_lod_bias' _p.unpack_constants( """GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 GL_TEXTURE_LOD_BIAS_EXT 0x8501""", globals()) glget.addGLGetConstant( GL_MAX_TEXTURE_LOD_BIAS_EXT, (1,) ) def glInitTextureLodBiasEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/cull_vertex.py0000644000175000001440000000147212025001653021700 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_cull_vertex' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_cull_vertex',False) _p.unpack_constants( """GL_CULL_VERTEX_EXT 0x81AA GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC""", globals()) @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glCullParameterdvEXT( pname,params ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glCullParameterfvEXT( pname,params ):pass def glInitCullVertexEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/index_array_formats.py0000644000175000001440000000114612025001653023402 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_index_array_formats' _p.unpack_constants( """GL_IUI_V2F_EXT 0x81AD GL_IUI_V3F_EXT 0x81AE GL_IUI_N3F_V2F_EXT 0x81AF GL_IUI_N3F_V3F_EXT 0x81B0 GL_T2F_IUI_V2F_EXT 0x81B1 GL_T2F_IUI_V3F_EXT 0x81B2 GL_T2F_IUI_N3F_V2F_EXT 0x81B3 GL_T2F_IUI_N3F_V3F_EXT 0x81B4""", globals()) def glInitIndexArrayFormatsEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/direct_state_access.py0000644000175000001440000007632512025001653023350 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_direct_state_access' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_direct_state_access',False) _p.unpack_constants( """GL_PROGRAM_MATRIX_EXT 0x8E2D GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F""", globals()) @_f @_p.types(None,_cs.GLbitfield) def glClientAttribDefaultEXT( mask ):pass @_f @_p.types(None,_cs.GLbitfield) def glPushClientAttribDefaultEXT( mask ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMatrixLoadfEXT( mode,m ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMatrixLoaddEXT( mode,m ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMatrixMultfEXT( mode,m ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMatrixMultdEXT( mode,m ):pass @_f @_p.types(None,_cs.GLenum) def glMatrixLoadIdentityEXT( mode ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glMatrixRotatefEXT( mode,angle,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMatrixRotatedEXT( mode,angle,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glMatrixScalefEXT( mode,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMatrixScaledEXT( mode,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glMatrixTranslatefEXT( mode,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMatrixTranslatedEXT( mode,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMatrixFrustumEXT( mode,left,right,bottom,top,zNear,zFar ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMatrixOrthoEXT( mode,left,right,bottom,top,zNear,zFar ):pass @_f @_p.types(None,_cs.GLenum) def glMatrixPopEXT( mode ):pass @_f @_p.types(None,_cs.GLenum) def glMatrixPushEXT( mode ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMatrixLoadTransposefEXT( mode,m ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMatrixLoadTransposedEXT( mode,m ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMatrixMultTransposefEXT( mode,m ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMatrixMultTransposedEXT( mode,m ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glTextureParameterfEXT( texture,target,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glTextureParameterfvEXT( texture,target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLint) def glTextureParameteriEXT( texture,target,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glTextureParameterivEXT( texture,target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTextureImage1DEXT( texture,target,level,internalformat,width,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTextureImage2DEXT( texture,target,level,internalformat,width,height,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTextureSubImage1DEXT( texture,target,level,xoffset,width,format,type,pixels ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTextureSubImage2DEXT( texture,target,level,xoffset,yoffset,width,height,format,type,pixels ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLint) def glCopyTextureImage1DEXT( texture,target,level,internalformat,x,y,width,border ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLint) def glCopyTextureImage2DEXT( texture,target,level,internalformat,x,y,width,height,border ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyTextureSubImage1DEXT( texture,target,level,xoffset,x,y,width ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyTextureSubImage2DEXT( texture,target,level,xoffset,yoffset,x,y,width,height ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetTextureImageEXT( texture,target,level,format,type,pixels ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetTextureParameterfvEXT( texture,target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetTextureParameterivEXT( texture,target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,arrays.GLfloatArray) def glGetTextureLevelParameterfvEXT( texture,target,level,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,arrays.GLintArray) def glGetTextureLevelParameterivEXT( texture,target,level,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTextureImage3DEXT( texture,target,level,internalformat,width,height,depth,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTextureSubImage3DEXT( texture,target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyTextureSubImage3DEXT( texture,target,level,xoffset,yoffset,zoffset,x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glMultiTexParameterfEXT( texunit,target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glMultiTexParameterfvEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLint) def glMultiTexParameteriEXT( texunit,target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glMultiTexParameterivEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glMultiTexImage1DEXT( texunit,target,level,internalformat,width,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glMultiTexImage2DEXT( texunit,target,level,internalformat,width,height,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glMultiTexSubImage1DEXT( texunit,target,level,xoffset,width,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glMultiTexSubImage2DEXT( texunit,target,level,xoffset,yoffset,width,height,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLint) def glCopyMultiTexImage1DEXT( texunit,target,level,internalformat,x,y,width,border ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLint) def glCopyMultiTexImage2DEXT( texunit,target,level,internalformat,x,y,width,height,border ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyMultiTexSubImage1DEXT( texunit,target,level,xoffset,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyMultiTexSubImage2DEXT( texunit,target,level,xoffset,yoffset,x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetMultiTexImageEXT( texunit,target,level,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetMultiTexParameterfvEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMultiTexParameterivEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,arrays.GLfloatArray) def glGetMultiTexLevelParameterfvEXT( texunit,target,level,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,arrays.GLintArray) def glGetMultiTexLevelParameterivEXT( texunit,target,level,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glMultiTexImage3DEXT( texunit,target,level,internalformat,width,height,depth,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glMultiTexSubImage3DEXT( texunit,target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyMultiTexSubImage3DEXT( texunit,target,level,xoffset,yoffset,zoffset,x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glBindMultiTextureEXT( texunit,target,texture ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glEnableClientStateIndexedEXT( array,index ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glDisableClientStateIndexedEXT( array,index ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glMultiTexCoordPointerEXT( texunit,size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glMultiTexEnvfEXT( texunit,target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glMultiTexEnvfvEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLint) def glMultiTexEnviEXT( texunit,target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glMultiTexEnvivEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLdouble) def glMultiTexGendEXT( texunit,coord,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexGendvEXT( texunit,coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glMultiTexGenfEXT( texunit,coord,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glMultiTexGenfvEXT( texunit,coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLint) def glMultiTexGeniEXT( texunit,coord,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glMultiTexGenivEXT( texunit,coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetMultiTexEnvfvEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMultiTexEnvivEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLdoubleArray) def glGetMultiTexGendvEXT( texunit,coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetMultiTexGenfvEXT( texunit,coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMultiTexGenivEXT( texunit,coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glGetFloatIndexedvEXT( target,index,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLdoubleArray) def glGetDoubleIndexedvEXT( target,index,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLvoidpArray) def glGetPointerIndexedvEXT( target,index,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedTextureImage3DEXT( texture,target,level,internalformat,width,height,depth,border,imageSize,bits ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedTextureImage2DEXT( texture,target,level,internalformat,width,height,border,imageSize,bits ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedTextureImage1DEXT( texture,target,level,internalformat,width,border,imageSize,bits ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedTextureSubImage3DEXT( texture,target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,bits ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedTextureSubImage2DEXT( texture,target,level,xoffset,yoffset,width,height,format,imageSize,bits ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedTextureSubImage1DEXT( texture,target,level,xoffset,width,format,imageSize,bits ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,ctypes.c_void_p) def glGetCompressedTextureImageEXT( texture,target,lod,img ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedMultiTexImage3DEXT( texunit,target,level,internalformat,width,height,depth,border,imageSize,bits ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedMultiTexImage2DEXT( texunit,target,level,internalformat,width,height,border,imageSize,bits ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedMultiTexImage1DEXT( texunit,target,level,internalformat,width,border,imageSize,bits ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedMultiTexSubImage3DEXT( texunit,target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,bits ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedMultiTexSubImage2DEXT( texunit,target,level,xoffset,yoffset,width,height,format,imageSize,bits ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedMultiTexSubImage1DEXT( texunit,target,level,xoffset,width,format,imageSize,bits ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,ctypes.c_void_p) def glGetCompressedMultiTexImageEXT( texunit,target,lod,img ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glNamedProgramStringEXT( program,target,format,len,string ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glNamedProgramLocalParameter4dEXT( program,target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,arrays.GLdoubleArray) def glNamedProgramLocalParameter4dvEXT( program,target,index,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glNamedProgramLocalParameter4fEXT( program,target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glNamedProgramLocalParameter4fvEXT( program,target,index,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,arrays.GLdoubleArray) def glGetNamedProgramLocalParameterdvEXT( program,target,index,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glGetNamedProgramLocalParameterfvEXT( program,target,index,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetNamedProgramivEXT( program,target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetNamedProgramStringEXT( program,target,pname,string ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glNamedProgramLocalParameters4fvEXT( program,target,index,count,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glNamedProgramLocalParameterI4iEXT( program,target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,arrays.GLintArray) def glNamedProgramLocalParameterI4ivEXT( program,target,index,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLintArray) def glNamedProgramLocalParametersI4ivEXT( program,target,index,count,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glNamedProgramLocalParameterI4uiEXT( program,target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,arrays.GLuintArray) def glNamedProgramLocalParameterI4uivEXT( program,target,index,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray) def glNamedProgramLocalParametersI4uivEXT( program,target,index,count,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,arrays.GLintArray) def glGetNamedProgramLocalParameterIivEXT( program,target,index,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,arrays.GLuintArray) def glGetNamedProgramLocalParameterIuivEXT( program,target,index,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glTextureParameterIivEXT( texture,target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glTextureParameterIuivEXT( texture,target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetTextureParameterIivEXT( texture,target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glGetTextureParameterIuivEXT( texture,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glMultiTexParameterIivEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glMultiTexParameterIuivEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMultiTexParameterIivEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glGetMultiTexParameterIuivEXT( texunit,target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLfloat) def glProgramUniform1fEXT( program,location,v0 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLfloat,_cs.GLfloat) def glProgramUniform2fEXT( program,location,v0,v1 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glProgramUniform3fEXT( program,location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glProgramUniform4fEXT( program,location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint) def glProgramUniform1iEXT( program,location,v0 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint) def glProgramUniform2iEXT( program,location,v0,v1 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glProgramUniform3iEXT( program,location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glProgramUniform4iEXT( program,location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glProgramUniform1fvEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glProgramUniform2fvEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glProgramUniform3fvEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glProgramUniform4fvEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glProgramUniform1ivEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glProgramUniform2ivEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glProgramUniform3ivEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glProgramUniform4ivEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix2fvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix3fvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix4fvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix2x3fvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix3x2fvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix2x4fvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix4x2fvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix3x4fvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix4x3fvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint) def glProgramUniform1uiEXT( program,location,v0 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint,_cs.GLuint) def glProgramUniform2uiEXT( program,location,v0,v1 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glProgramUniform3uiEXT( program,location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glProgramUniform4uiEXT( program,location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glProgramUniform1uivEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glProgramUniform2uivEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glProgramUniform3uivEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glProgramUniform4uivEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizeiptr,ctypes.c_void_p,_cs.GLenum) def glNamedBufferDataEXT( buffer,size,data,usage ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr,ctypes.c_void_p) def glNamedBufferSubDataEXT( buffer,offset,size,data ):pass @_f @_p.types(ctypes.c_void_p,_cs.GLuint,_cs.GLenum) def glMapNamedBufferEXT( buffer,access ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glUnmapNamedBufferEXT( buffer ):pass @_f @_p.types(ctypes.c_void_p,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr,_cs.GLbitfield) def glMapNamedBufferRangeEXT( buffer,offset,length,access ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr) def glFlushMappedNamedBufferRangeEXT( buffer,offset,length ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLintptr,_cs.GLintptr,_cs.GLsizeiptr) def glNamedCopyBufferSubDataEXT( readBuffer,writeBuffer,readOffset,writeOffset,size ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetNamedBufferParameterivEXT( buffer,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLvoidpArray) def glGetNamedBufferPointervEXT( buffer,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr,ctypes.c_void_p) def glGetNamedBufferSubDataEXT( buffer,offset,size,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glTextureBufferEXT( texture,target,internalformat,buffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glMultiTexBufferEXT( texunit,target,internalformat,buffer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glNamedRenderbufferStorageEXT( renderbuffer,internalformat,width,height ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetNamedRenderbufferParameterivEXT( renderbuffer,pname,params ):pass @_f @_p.types(_cs.GLenum,_cs.GLuint,_cs.GLenum) def glCheckNamedFramebufferStatusEXT( framebuffer,target ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint) def glNamedFramebufferTexture1DEXT( framebuffer,attachment,textarget,texture,level ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint) def glNamedFramebufferTexture2DEXT( framebuffer,attachment,textarget,texture,level ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint) def glNamedFramebufferTexture3DEXT( framebuffer,attachment,textarget,texture,level,zoffset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glNamedFramebufferRenderbufferEXT( framebuffer,attachment,renderbuffertarget,renderbuffer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetNamedFramebufferAttachmentParameterivEXT( framebuffer,attachment,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glGenerateTextureMipmapEXT( texture,target ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glGenerateMultiTexMipmapEXT( texunit,target ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glFramebufferDrawBufferEXT( framebuffer,mode ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray) def glFramebufferDrawBuffersEXT( framebuffer,n,bufs ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glFramebufferReadBufferEXT( framebuffer,mode ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetFramebufferParameterivEXT( framebuffer,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glNamedRenderbufferStorageMultisampleEXT( renderbuffer,samples,internalformat,width,height ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glNamedRenderbufferStorageMultisampleCoverageEXT( renderbuffer,coverageSamples,colorSamples,internalformat,width,height ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLint) def glNamedFramebufferTextureEXT( framebuffer,attachment,texture,level ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint) def glNamedFramebufferTextureLayerEXT( framebuffer,attachment,texture,level,layer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLenum) def glNamedFramebufferTextureFaceEXT( framebuffer,attachment,texture,level,face ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint) def glTextureRenderbufferEXT( texture,target,renderbuffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glMultiTexRenderbufferEXT( texunit,target,renderbuffer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLdouble) def glProgramUniform1dEXT( program,location,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLdouble,_cs.GLdouble) def glProgramUniform2dEXT( program,location,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glProgramUniform3dEXT( program,location,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glProgramUniform4dEXT( program,location,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glProgramUniform1dvEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glProgramUniform2dvEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glProgramUniform3dvEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glProgramUniform4dvEXT( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix2dvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix3dvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix4dvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix2x3dvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix2x4dvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix3x2dvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix3x4dvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix4x2dvEXT( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix4x3dvEXT( program,location,count,transpose,value ):pass def glInitDirectStateAccessEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/coordinate_frame.py0000644000175000001440000000622112025001653022642 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_coordinate_frame' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_coordinate_frame',False) _p.unpack_constants( """GL_TANGENT_ARRAY_EXT 0x8439 GL_BINORMAL_ARRAY_EXT 0x843A GL_CURRENT_TANGENT_EXT 0x843B GL_CURRENT_BINORMAL_EXT 0x843C GL_TANGENT_ARRAY_TYPE_EXT 0x843E GL_TANGENT_ARRAY_STRIDE_EXT 0x843F GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 GL_TANGENT_ARRAY_POINTER_EXT 0x8442 GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 GL_MAP1_TANGENT_EXT 0x8444 GL_MAP2_TANGENT_EXT 0x8445 GL_MAP1_BINORMAL_EXT 0x8446 GL_MAP2_BINORMAL_EXT 0x8447""", globals()) glget.addGLGetConstant( GL_TANGENT_ARRAY_EXT, (1,) ) glget.addGLGetConstant( GL_CURRENT_TANGENT_EXT, (1,) ) glget.addGLGetConstant( GL_CURRENT_BINORMAL_EXT, (1,) ) glget.addGLGetConstant( GL_TANGENT_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_TANGENT_ARRAY_STRIDE_EXT, (1,) ) glget.addGLGetConstant( GL_BINORMAL_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_BINORMAL_ARRAY_STRIDE_EXT, (1,) ) @_f @_p.types(None,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte) def glTangent3bEXT( tx,ty,tz ):pass @_f @_p.types(None,arrays.GLbyteArray) def glTangent3bvEXT( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glTangent3dEXT( tx,ty,tz ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glTangent3dvEXT( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTangent3fEXT( tx,ty,tz ):pass @_f @_p.types(None,arrays.GLfloatArray) def glTangent3fvEXT( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glTangent3iEXT( tx,ty,tz ):pass @_f @_p.types(None,arrays.GLintArray) def glTangent3ivEXT( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glTangent3sEXT( tx,ty,tz ):pass @_f @_p.types(None,arrays.GLshortArray) def glTangent3svEXT( v ):pass @_f @_p.types(None,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte) def glBinormal3bEXT( bx,by,bz ):pass @_f @_p.types(None,arrays.GLbyteArray) def glBinormal3bvEXT( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glBinormal3dEXT( bx,by,bz ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glBinormal3dvEXT( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glBinormal3fEXT( bx,by,bz ):pass @_f @_p.types(None,arrays.GLfloatArray) def glBinormal3fvEXT( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glBinormal3iEXT( bx,by,bz ):pass @_f @_p.types(None,arrays.GLintArray) def glBinormal3ivEXT( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glBinormal3sEXT( bx,by,bz ):pass @_f @_p.types(None,arrays.GLshortArray) def glBinormal3svEXT( v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glTangentPointerEXT( type,stride,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glBinormalPointerEXT( type,stride,pointer ):pass def glInitCoordinateFrameEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/depth_bounds_test.py0000644000175000001440000000143212025001653023055 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_depth_bounds_test' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_depth_bounds_test',False) _p.unpack_constants( """GL_DEPTH_BOUNDS_TEST_EXT 0x8890 GL_DEPTH_BOUNDS_EXT 0x8891""", globals()) glget.addGLGetConstant( GL_DEPTH_BOUNDS_TEST_EXT, (1,) ) glget.addGLGetConstant( GL_DEPTH_BOUNDS_EXT, (1,) ) @_f @_p.types(None,_cs.GLclampd,_cs.GLclampd) def glDepthBoundsEXT( zmin,zmax ):pass def glInitDepthBoundsTestEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/422_pixels.py0000644000175000001440000000316112025001653021234 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.GL_422_pixels Overview (from the spec) This extension provides support for converting 422 pixels in host memory to 444 pixels as part of the pixel storage operation. The pixel unpack storage operation treats a 422 pixel as a 2 element format where the first element is C (chrominance) and the second element is L (luminance). Luminance is present on all pixels; a full chrominance value requires two pixels. The pixel pack storage operation converts RGB to a 422 pixel defined as a 2 element format where the first element stored is C (chrominance) and the second element stored is L (luminance). Luminance is present on all pixels; a full chrominance value requires two pixels. Both averaging and non-averaging is supported for green and blue assignments for pack and unpack operations. The official definition of this extension is available here: http://oss.sgi.com/projects/ogl-sample/registry/EXT/GL_422_pixels.txt Automatically generated by the get_gl_extensions script, do not edit! ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions from OpenGL.GL import glget import ctypes GL_422_EXT = constant.Constant( 'GL_422_EXT', 0x80CC ) GL_422_REV_EXT = constant.Constant( 'GL_422_REV_EXT', 0x80CD ) GL_422_AVERAGE_EXT = constant.Constant( 'GL_422_AVERAGE_EXT', 0x80CE ) GL_422_REV_AVERAGE_EXT = constant.Constant( 'GL_422_REV_AVERAGE_EXT', 0x80CF ) def glInit422PixelsEXT(): '''Return boolean indicating whether this extension is available''' return extensions.hasGLExtension( 'GL_EXT_422_pixels' )PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_cube_map.py0000644000175000001440000000152512025001653022676 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_cube_map' _p.unpack_constants( """GL_NORMAL_MAP_EXT 0x8511 GL_REFLECTION_MAP_EXT 0x8512 GL_TEXTURE_CUBE_MAP_EXT 0x8513 GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C""", globals()) def glInitTextureCubeMapEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/shadow_funcs.py0000644000175000001440000000054312025001653022025 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_shadow_funcs' def glInitShadowFuncsEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/light_texture.py0000644000175000001440000000202212025001653022223 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_light_texture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_light_texture',False) _p.unpack_constants( """GL_FRAGMENT_MATERIAL_EXT 0x8349 GL_FRAGMENT_NORMAL_EXT 0x834A GL_FRAGMENT_COLOR_EXT 0x834C GL_ATTENUATION_EXT 0x834D GL_SHADOW_ATTENUATION_EXT 0x834E GL_TEXTURE_APPLICATION_MODE_EXT 0x834F GL_TEXTURE_LIGHT_EXT 0x8350 GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352""", globals()) @_f @_p.types(None,_cs.GLenum) def glApplyTextureEXT( mode ):pass @_f @_p.types(None,_cs.GLenum) def glTextureLightEXT( pname ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glTextureMaterialEXT( face,mode ):pass def glInitLightTextureEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_mirror_clamp.py0000644000175000001440000000077312025001653023615 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_mirror_clamp' _p.unpack_constants( """GL_MIRROR_CLAMP_EXT 0x8742 GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912""", globals()) def glInitTextureMirrorClampEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/bgra.py0000644000175000001440000000063712025001653020261 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_bgra' _p.unpack_constants( """GL_BGR_EXT 0x80E0 GL_BGRA_EXT 0x80E1""", globals()) def glInitBgraEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/subtexture.py0000644000175000001440000000155512025001653021560 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_subtexture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_subtexture',False) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexSubImage1DEXT( target,level,xoffset,width,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexSubImage2DEXT( target,level,xoffset,yoffset,width,height,format,type,pixels ):pass def glInitSubtextureEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_filter_anisotropic.py0000644000175000001440000000106412025001653025020 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_filter_anisotropic' _p.unpack_constants( """GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF""", globals()) glget.addGLGetConstant( GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, (1,) ) def glInitTextureFilterAnisotropicEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/index_material.py0000644000175000001440000000131612025001653022326 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_index_material' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_index_material',False) _p.unpack_constants( """GL_INDEX_MATERIAL_EXT 0x81B8 GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 GL_INDEX_MATERIAL_FACE_EXT 0x81BA""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glIndexMaterialEXT( face,mode ):pass def glInitIndexMaterialEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/stencil_clear_tag.py0000644000175000001440000000131512025001653023002 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_stencil_clear_tag' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_stencil_clear_tag',False) _p.unpack_constants( """GL_STENCIL_TAG_BITS_EXT 0x88F2 GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3""", globals()) @_f @_p.types(None,_cs.GLsizei,_cs.GLuint) def glStencilClearTagEXT( stencilTagBits,stencilClearTag ):pass def glInitStencilClearTagEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture3D.py0000644000175000001440000000312712025001653021232 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_texture3D' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_texture3D',False) _p.unpack_constants( """GL_PACK_SKIP_IMAGES_EXT 0x806B GL_PACK_IMAGE_HEIGHT_EXT 0x806C GL_UNPACK_SKIP_IMAGES_EXT 0x806D GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E GL_TEXTURE_3D_EXT 0x806F GL_PROXY_TEXTURE_3D_EXT 0x8070 GL_TEXTURE_DEPTH_EXT 0x8071 GL_TEXTURE_WRAP_R_EXT 0x8072 GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073""", globals()) glget.addGLGetConstant( GL_PACK_SKIP_IMAGES_EXT, (1,) ) glget.addGLGetConstant( GL_PACK_IMAGE_HEIGHT_EXT, (1,) ) glget.addGLGetConstant( GL_UNPACK_SKIP_IMAGES_EXT, (1,) ) glget.addGLGetConstant( GL_UNPACK_IMAGE_HEIGHT_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_3D_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_3D_TEXTURE_SIZE_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexImage3DEXT( target,level,internalformat,width,height,depth,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexSubImage3DEXT( target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels ):pass def glInitTexture3DEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_perturb_normal.py0000644000175000001440000000124212025001653024152 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_texture_perturb_normal' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_texture_perturb_normal',False) _p.unpack_constants( """GL_PERTURB_EXT 0x85AE GL_TEXTURE_NORMAL_EXT 0x85AF""", globals()) @_f @_p.types(None,_cs.GLenum) def glTextureNormalEXT( mode ):pass def glInitTexturePerturbNormalEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/framebuffer_sRGB.py0000644000175000001440000000072712025001653022507 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_framebuffer_sRGB' _p.unpack_constants( """GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA""", globals()) def glInitFramebufferSrgbEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/polygon_offset.py0000644000175000001440000000157512025001653022405 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_polygon_offset' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_polygon_offset',False) _p.unpack_constants( """GL_POLYGON_OFFSET_EXT 0x8037 GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 GL_POLYGON_OFFSET_BIAS_EXT 0x8039""", globals()) glget.addGLGetConstant( GL_POLYGON_OFFSET_EXT, (1,) ) glget.addGLGetConstant( GL_POLYGON_OFFSET_FACTOR_EXT, (1,) ) glget.addGLGetConstant( GL_POLYGON_OFFSET_BIAS_EXT, (1,) ) @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glPolygonOffsetEXT( factor,bias ):pass def glInitPolygonOffsetEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/color_subtable.py0000644000175000001440000000142412025001653022340 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_color_subtable' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_color_subtable',False) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glColorSubTableEXT( target,start,count,format,type,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyColorSubTableEXT( target,start,x,y,width ):pass def glInitColorSubtableEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/separate_shader_objects.py0000644000175000001440000000152412025001653024205 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_separate_shader_objects' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_separate_shader_objects',False) _p.unpack_constants( """GL_ACTIVE_PROGRAM_EXT 0x8B8D""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glUseShaderProgramEXT( type,program ):pass @_f @_p.types(None,_cs.GLuint) def glActiveProgramEXT( program ):pass @_f @_p.types(_cs.GLuint,_cs.GLenum,arrays.GLcharArray) def glCreateShaderProgramEXT( type,string ):pass def glInitSeparateShaderObjectsEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/packed_depth_stencil.py0000644000175000001440000000102612025001653023473 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_packed_depth_stencil' _p.unpack_constants( """GL_DEPTH_STENCIL_EXT 0x84F9 GL_UNSIGNED_INT_24_8_EXT 0x84FA GL_DEPTH24_STENCIL8_EXT 0x88F0 GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1""", globals()) def glInitPackedDepthStencilEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/geometry_shader4.py0000644000175000001440000000252012025001653022604 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_geometry_shader4' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_geometry_shader4',False) _p.unpack_constants( """GL_GEOMETRY_SHADER_EXT 0x8DD9 GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1""", globals()) glget.addGLGetConstant( GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_VARYING_COMPONENTS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_VARYING_COMPONENTS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT, (1,) ) @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint) def glProgramParameteriEXT( program,pname,value ):pass def glInitGeometryShader4EXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/clip_volume_hint.py0000644000175000001440000000077112025001653022705 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_clip_volume_hint' _p.unpack_constants( """GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0""", globals()) glget.addGLGetConstant( GL_CLIP_VOLUME_CLIPPING_HINT_EXT, (1,) ) def glInitClipVolumeHintEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/secondary_color.py0000644000175000001440000000521612025001653022531 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_secondary_color' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_secondary_color',False) _p.unpack_constants( """GL_COLOR_SUM_EXT 0x8458 GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D GL_SECONDARY_COLOR_ARRAY_EXT 0x845E""", globals()) glget.addGLGetConstant( GL_COLOR_SUM_EXT, (1,) ) glget.addGLGetConstant( GL_CURRENT_SECONDARY_COLOR_EXT, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_SIZE_EXT, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_TYPE_EXT, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT, (1,) ) @_f @_p.types(None,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte) def glSecondaryColor3bEXT( red,green,blue ):pass @_f @_p.types(None,arrays.GLbyteArray) def glSecondaryColor3bvEXT( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glSecondaryColor3dEXT( red,green,blue ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glSecondaryColor3dvEXT( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glSecondaryColor3fEXT( red,green,blue ):pass @_f @_p.types(None,arrays.GLfloatArray) def glSecondaryColor3fvEXT( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glSecondaryColor3iEXT( red,green,blue ):pass @_f @_p.types(None,arrays.GLintArray) def glSecondaryColor3ivEXT( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glSecondaryColor3sEXT( red,green,blue ):pass @_f @_p.types(None,arrays.GLshortArray) def glSecondaryColor3svEXT( v ):pass @_f @_p.types(None,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte) def glSecondaryColor3ubEXT( red,green,blue ):pass @_f @_p.types(None,arrays.GLubyteArray) def glSecondaryColor3ubvEXT( v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glSecondaryColor3uiEXT( red,green,blue ):pass @_f @_p.types(None,arrays.GLuintArray) def glSecondaryColor3uivEXT( v ):pass @_f @_p.types(None,_cs.GLushort,_cs.GLushort,_cs.GLushort) def glSecondaryColor3usEXT( red,green,blue ):pass @_f @_p.types(None,arrays.GLushortArray) def glSecondaryColor3usvEXT( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glSecondaryColorPointerEXT( size,type,stride,pointer ):pass def glInitSecondaryColorEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/paletted_texture.py0000644000175000001440000000237012025001653022724 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_paletted_texture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_paletted_texture',False) _p.unpack_constants( """GL_COLOR_INDEX1_EXT 0x80E2 GL_COLOR_INDEX2_EXT 0x80E3 GL_COLOR_INDEX4_EXT 0x80E4 GL_COLOR_INDEX8_EXT 0x80E5 GL_COLOR_INDEX12_EXT 0x80E6 GL_COLOR_INDEX16_EXT 0x80E7 GL_TEXTURE_INDEX_SIZE_EXT 0x80ED""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glColorTableEXT( target,internalFormat,width,format,type,table ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetColorTableEXT( target,format,type,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetColorTableParameterivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetColorTableParameterfvEXT( target,pname,params ):pass def glInitPalettedTextureEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/abgr.py0000644000175000001440000000061512025001653020255 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_abgr' _p.unpack_constants( """GL_ABGR_EXT 0x8000""", globals()) def glInitAbgrEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_buffer_object.py0000644000175000001440000000221312025001653023715 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_texture_buffer_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_texture_buffer_object',False) _p.unpack_constants( """GL_TEXTURE_BUFFER_EXT 0x8C2A GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E""", globals()) glget.addGLGetConstant( GL_TEXTURE_BUFFER_EXT, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_BUFFER_SIZE_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BINDING_BUFFER_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BUFFER_FORMAT_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glTexBufferEXT( target,internalformat,buffer ):pass def glInitTextureBufferObjectEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/gpu_shader4.py0000644000175000001440000000504112025001653021545 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_gpu_shader4' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_gpu_shader4',False) _p.unpack_constants( """GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 GL_SAMPLER_BUFFER_EXT 0x8DC2 GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 GL_INT_SAMPLER_1D_EXT 0x8DC9 GL_INT_SAMPLER_2D_EXT 0x8DCA GL_INT_SAMPLER_3D_EXT 0x8DCB GL_INT_SAMPLER_CUBE_EXT 0x8DCC GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLint,arrays.GLuintArray) def glGetUniformuivEXT( program,location,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,arrays.GLcharArray) def glBindFragDataLocationEXT( program,color,name ):pass @_f @_p.types(_cs.GLint,_cs.GLuint,arrays.GLcharArray) def glGetFragDataLocationEXT( program,name ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint) def glUniform1uiEXT( location,v0 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint,_cs.GLuint) def glUniform2uiEXT( location,v0,v1 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glUniform3uiEXT( location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glUniform4uiEXT( location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glUniform1uivEXT( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glUniform2uivEXT( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glUniform3uivEXT( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glUniform4uivEXT( location,count,value ):pass def glInitGpuShader4EXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/framebuffer_blit.py0000644000175000001440000000153312025001653022640 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_framebuffer_blit' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_framebuffer_blit',False) _p.unpack_constants( """GL_READ_FRAMEBUFFER_EXT 0x8CA8 GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA""", globals()) @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLbitfield,_cs.GLenum) def glBlitFramebufferEXT( srcX0,srcY0,srcX1,srcY1,dstX0,dstY0,dstX1,dstY1,mask,filter ):pass def glInitFramebufferBlitEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_sRGB.py0000644000175000001440000000163112025001653021716 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_sRGB' _p.unpack_constants( """GL_SRGB_EXT 0x8C40 GL_SRGB8_EXT 0x8C41 GL_SRGB_ALPHA_EXT 0x8C42 GL_SRGB8_ALPHA8_EXT 0x8C43 GL_SLUMINANCE_ALPHA_EXT 0x8C44 GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 GL_SLUMINANCE_EXT 0x8C46 GL_SLUMINANCE8_EXT 0x8C47 GL_COMPRESSED_SRGB_EXT 0x8C48 GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F""", globals()) def glInitTextureSrgbEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_env_combine.py0000644000175000001440000000170112025001653023403 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_env_combine' _p.unpack_constants( """GL_COMBINE_EXT 0x8570 GL_COMBINE_RGB_EXT 0x8571 GL_COMBINE_ALPHA_EXT 0x8572 GL_RGB_SCALE_EXT 0x8573 GL_ADD_SIGNED_EXT 0x8574 GL_INTERPOLATE_EXT 0x8575 GL_CONSTANT_EXT 0x8576 GL_PRIMARY_COLOR_EXT 0x8577 GL_PREVIOUS_EXT 0x8578 GL_SOURCE0_RGB_EXT 0x8580 GL_SOURCE1_RGB_EXT 0x8581 GL_SOURCE2_RGB_EXT 0x8582 GL_SOURCE0_ALPHA_EXT 0x8588 GL_SOURCE1_ALPHA_EXT 0x8589 GL_SOURCE2_ALPHA_EXT 0x858A GL_OPERAND0_RGB_EXT 0x8590 GL_OPERAND1_RGB_EXT 0x8591 GL_OPERAND2_RGB_EXT 0x8592 GL_OPERAND0_ALPHA_EXT 0x8598 GL_OPERAND1_ALPHA_EXT 0x8599 GL_OPERAND2_ALPHA_EXT 0x859A""", globals()) def glInitTextureEnvCombineEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_compression_latc.py0000644000175000001440000000113612025001653024465 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_compression_latc' _p.unpack_constants( """GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73""", globals()) def glInitTextureCompressionLatcEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/rescale_normal.py0000644000175000001440000000065212025001653022331 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_rescale_normal' _p.unpack_constants( """GL_RESCALE_NORMAL_EXT 0x803A""", globals()) def glInitRescaleNormalEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/cmyka.py0000644000175000001440000000111512025001653020442 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_cmyka' _p.unpack_constants( """GL_CMYK_EXT 0x800C GL_CMYKA_EXT 0x800D GL_PACK_CMYK_HINT_EXT 0x800E GL_UNPACK_CMYK_HINT_EXT 0x800F""", globals()) glget.addGLGetConstant( GL_PACK_CMYK_HINT_EXT, (1,) ) glget.addGLGetConstant( GL_UNPACK_CMYK_HINT_EXT, (1,) ) def glInitCmykaEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/convolution.py0000644000175000001440000000742212025001653021724 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_convolution' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_convolution',False) _p.unpack_constants( """GL_CONVOLUTION_1D_EXT 0x8010 GL_CONVOLUTION_2D_EXT 0x8011 GL_SEPARABLE_2D_EXT 0x8012 GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 GL_REDUCE_EXT 0x8016 GL_CONVOLUTION_FORMAT_EXT 0x8017 GL_CONVOLUTION_WIDTH_EXT 0x8018 GL_CONVOLUTION_HEIGHT_EXT 0x8019 GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023""", globals()) glget.addGLGetConstant( GL_CONVOLUTION_1D_EXT, (1,) ) glget.addGLGetConstant( GL_CONVOLUTION_2D_EXT, (1,) ) glget.addGLGetConstant( GL_SEPARABLE_2D_EXT, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_RED_SCALE_EXT, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_GREEN_SCALE_EXT, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_BLUE_SCALE_EXT, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_ALPHA_SCALE_EXT, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_RED_BIAS_EXT, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_GREEN_BIAS_EXT, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_BLUE_BIAS_EXT, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_ALPHA_BIAS_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glConvolutionFilter1DEXT( target,internalformat,width,format,type,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glConvolutionFilter2DEXT( target,internalformat,width,height,format,type,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glConvolutionParameterfEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glConvolutionParameterfvEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glConvolutionParameteriEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glConvolutionParameterivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyConvolutionFilter1DEXT( target,internalformat,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyConvolutionFilter2DEXT( target,internalformat,x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetConvolutionFilterEXT( target,format,type,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetConvolutionParameterfvEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetConvolutionParameterivEXT( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p,ctypes.c_void_p,ctypes.c_void_p) def glGetSeparableFilterEXT( target,format,type,row,column,span ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p,ctypes.c_void_p) def glSeparableFilter2DEXT( target,internalformat,width,height,format,type,row,column ):pass def glInitConvolutionEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/stencil_two_side.py0000644000175000001440000000143712025001653022703 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_stencil_two_side' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_stencil_two_side',False) _p.unpack_constants( """GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 GL_ACTIVE_STENCIL_FACE_EXT 0x8911""", globals()) glget.addGLGetConstant( GL_STENCIL_TEST_TWO_SIDE_EXT, (1,) ) glget.addGLGetConstant( GL_ACTIVE_STENCIL_FACE_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum) def glActiveStencilFaceEXT( face ):pass def glInitStencilTwoSideEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/provoking_vertex.py0000644000175000001440000000161112025001653022752 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_provoking_vertex' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_provoking_vertex',False) _p.unpack_constants( """GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E GL_PROVOKING_VERTEX_EXT 0x8E4F""", globals()) glget.addGLGetConstant( GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT, (1,) ) glget.addGLGetConstant( GL_PROVOKING_VERTEX_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum) def glProvokingVertexEXT( mode ):pass def glInitProvokingVertexEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/blend_minmax.py0000644000175000001440000000134012025001653021773 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_blend_minmax' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_blend_minmax',False) _p.unpack_constants( """GL_FUNC_ADD_EXT 0x8006 GL_MIN_EXT 0x8007 GL_MAX_EXT 0x8008 GL_BLEND_EQUATION_EXT 0x8009""", globals()) glget.addGLGetConstant( GL_BLEND_EQUATION_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum) def glBlendEquationEXT( mode ):pass def glInitBlendMinmaxEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/blend_equation_separate.py0000644000175000001440000000142212025001653024214 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_EXT_blend_equation_separate' def _f( function ): return _p.createFunction( function,_p.GL,'GL_EXT_blend_equation_separate',False) _p.unpack_constants( """GL_BLEND_EQUATION_RGB_EXT 0x8009 GL_BLEND_EQUATION_ALPHA_EXT 0x883D""", globals()) glget.addGLGetConstant( GL_BLEND_EQUATION_ALPHA_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glBlendEquationSeparateEXT( modeRGB,modeAlpha ):pass def glInitBlendEquationSeparateEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_env_add.py0000644000175000001440000000055012025001653022520 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_env_add' def glInitTextureEnvAddEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_snorm.py0000644000175000001440000000133012025001653022253 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_snorm' _p.unpack_constants( """GL_ALPHA_SNORM 0x9010 GL_LUMINANCE_SNORM 0x9011 GL_LUMINANCE_ALPHA_SNORM 0x9012 GL_INTENSITY_SNORM 0x9013 GL_ALPHA8_SNORM 0x9014 GL_LUMINANCE8_SNORM 0x9015 GL_LUMINANCE8_ALPHA8_SNORM 0x9016 GL_INTENSITY8_SNORM 0x9017 GL_ALPHA16_SNORM 0x9018 GL_LUMINANCE16_SNORM 0x9019 GL_LUMINANCE16_ALPHA16_SNORM 0x901A GL_INTENSITY16_SNORM 0x901B""", globals()) def glInitTextureSnormEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/EXT/texture_compression_rgtc.py0000644000175000001440000000110612025001653024476 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_EXT_texture_compression_rgtc' _p.unpack_constants( """GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE""", globals()) def glInitTextureCompressionRgtcEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/PGI/0000755000175000001440000000000012032640120016741 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/PGI/vertex_hints.py0000644000175000001440000000207512025001653022045 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_PGI_vertex_hints' _p.unpack_constants( """GL_VERTEX_DATA_HINT_PGI 0x1A22A GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B GL_MATERIAL_SIDE_HINT_PGI 0x1A22C GL_MAX_VERTEX_HINT_PGI 0x1A22D GL_COLOR3_BIT_PGI 0x10000 GL_COLOR4_BIT_PGI 0x20000 GL_EDGEFLAG_BIT_PGI 0x40000 GL_INDEX_BIT_PGI 0x80000 GL_MAT_AMBIENT_BIT_PGI 0x100000 GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x200000 GL_MAT_DIFFUSE_BIT_PGI 0x400000 GL_MAT_EMISSION_BIT_PGI 0x800000 GL_MAT_COLOR_INDEXES_BIT_PGI 0x1000000 GL_MAT_SHININESS_BIT_PGI 0x2000000 GL_MAT_SPECULAR_BIT_PGI 0x4000000 GL_NORMAL_BIT_PGI 0x8000000 GL_TEXCOORD1_BIT_PGI 0x10000000 GL_TEXCOORD2_BIT_PGI 0x20000000 GL_TEXCOORD3_BIT_PGI 0x40000000 GL_TEXCOORD4_BIT_PGI 0x80000000 GL_VERTEX23_BIT_PGI 0x4 GL_VERTEX4_BIT_PGI 0x8""", globals()) def glInitVertexHintsPGI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/PGI/misc_hints.py0000644000175000001440000000241612025001653021462 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_PGI_misc_hints' def _f( function ): return _p.createFunction( function,_p.GL,'GL_PGI_misc_hints',False) _p.unpack_constants( """GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 GL_ALWAYS_FAST_HINT_PGI 0x1A20C GL_ALWAYS_SOFT_HINT_PGI 0x1A20D GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 GL_STRICT_LIGHTING_HINT_PGI 0x1A217 GL_STRICT_SCISSOR_HINT_PGI 0x1A218 GL_FULL_STIPPLE_HINT_PGI 0x1A219 GL_CLIP_NEAR_HINT_PGI 0x1A220 GL_CLIP_FAR_HINT_PGI 0x1A221 GL_WIDE_LINE_HINT_PGI 0x1A222 GL_BACK_NORMALS_HINT_PGI 0x1A223""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glHintPGI( target,mode ):pass def glInitMiscHintsPGI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/PGI/__init__.py0000644000175000001440000000002712025001653021055 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/0000755000175000001440000000000012032640120017067 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/sharpen_texture.py0000644000175000001440000000160112025001653022663 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIS_sharpen_texture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIS_sharpen_texture',False) _p.unpack_constants( """GL_LINEAR_SHARPEN_SGIS 0x80AD GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLfloatArray) def glSharpenTexFuncSGIS( target,n,points ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glGetSharpenTexFuncSGIS( target,points ):pass def glInitSharpenTextureSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/point_parameters.py0000644000175000001440000000154312025001653023024 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIS_point_parameters' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIS_point_parameters',False) _p.unpack_constants( """GL_POINT_SIZE_MIN_SGIS 0x8126 GL_POINT_SIZE_MAX_SGIS 0x8127 GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 GL_DISTANCE_ATTENUATION_SGIS 0x8129""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glPointParameterfSGIS( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glPointParameterfvSGIS( pname,params ):pass def glInitPointParametersSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/texture_border_clamp.py0000644000175000001440000000067112025001653023662 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIS_texture_border_clamp' _p.unpack_constants( """GL_CLAMP_TO_BORDER_SGIS 0x812D""", globals()) def glInitTextureBorderClampSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/texture_color_mask.py0000644000175000001440000000131612025001653023357 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIS_texture_color_mask' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIS_texture_color_mask',False) _p.unpack_constants( """GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF""", globals()) @_f @_p.types(None,_cs.GLboolean,_cs.GLboolean,_cs.GLboolean,_cs.GLboolean) def glTextureColorMaskSGIS( red,green,blue,alpha ):pass def glInitTextureColorMaskSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/texture_lod.py0000644000175000001440000000101212025001653021775 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIS_texture_lod' _p.unpack_constants( """GL_TEXTURE_MIN_LOD_SGIS 0x813A GL_TEXTURE_MAX_LOD_SGIS 0x813B GL_TEXTURE_BASE_LEVEL_SGIS 0x813C GL_TEXTURE_MAX_LEVEL_SGIS 0x813D""", globals()) def glInitTextureLodSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/point_line_texgen.py0000644000175000001440000000122412025001653023156 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIS_point_line_texgen' _p.unpack_constants( """GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 GL_EYE_POINT_SGIS 0x81F4 GL_OBJECT_POINT_SGIS 0x81F5 GL_EYE_LINE_SGIS 0x81F6 GL_OBJECT_LINE_SGIS 0x81F7""", globals()) def glInitPointLineTexgenSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/pixel_texture.py0000644000175000001440000000241112025001653022344 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIS_pixel_texture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIS_pixel_texture',False) _p.unpack_constants( """GL_PIXEL_TEXTURE_SGIS 0x8353 GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 GL_PIXEL_GROUP_COLOR_SGIS 0x8356""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glPixelTexGenParameteriSGIS( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glPixelTexGenParameterivSGIS( pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glPixelTexGenParameterfSGIS( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glPixelTexGenParameterfvSGIS( pname,params ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glGetPixelTexGenParameterivSGIS( pname,params ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glGetPixelTexGenParameterfvSGIS( pname,params ):pass def glInitPixelTextureSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/__init__.py0000644000175000001440000000002712025001653021203 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/texture4D.py0000644000175000001440000000255512025001653021344 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIS_texture4D' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIS_texture4D',False) _p.unpack_constants( """GL_PACK_SKIP_VOLUMES_SGIS 0x8130 GL_PACK_IMAGE_DEPTH_SGIS 0x8131 GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 GL_TEXTURE_4D_SGIS 0x8134 GL_PROXY_TEXTURE_4D_SGIS 0x8135 GL_TEXTURE_4DSIZE_SGIS 0x8136 GL_TEXTURE_WRAP_Q_SGIS 0x8137 GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 GL_TEXTURE_4D_BINDING_SGIS 0x814F""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexImage4DSGIS( target,level,internalformat,width,height,depth,size4d,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexSubImage4DSGIS( target,level,xoffset,yoffset,zoffset,woffset,width,height,depth,size4d,format,type,pixels ):pass def glInitTexture4DSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/texture_edge_clamp.py0000644000175000001440000000066312025001653023312 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIS_texture_edge_clamp' _p.unpack_constants( """GL_CLAMP_TO_EDGE_SGIS 0x812F""", globals()) def glInitTextureEdgeClampSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/texture_select.py0000644000175000001440000000207312025001653022506 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIS_texture_select' _p.unpack_constants( """GL_DUAL_ALPHA4_SGIS 0x8110 GL_DUAL_ALPHA8_SGIS 0x8111 GL_DUAL_ALPHA12_SGIS 0x8112 GL_DUAL_ALPHA16_SGIS 0x8113 GL_DUAL_LUMINANCE4_SGIS 0x8114 GL_DUAL_LUMINANCE8_SGIS 0x8115 GL_DUAL_LUMINANCE12_SGIS 0x8116 GL_DUAL_LUMINANCE16_SGIS 0x8117 GL_DUAL_INTENSITY4_SGIS 0x8118 GL_DUAL_INTENSITY8_SGIS 0x8119 GL_DUAL_INTENSITY12_SGIS 0x811A GL_DUAL_INTENSITY16_SGIS 0x811B GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D GL_QUAD_ALPHA4_SGIS 0x811E GL_QUAD_ALPHA8_SGIS 0x811F GL_QUAD_LUMINANCE4_SGIS 0x8120 GL_QUAD_LUMINANCE8_SGIS 0x8121 GL_QUAD_INTENSITY4_SGIS 0x8122 GL_QUAD_INTENSITY8_SGIS 0x8123 GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 GL_QUAD_TEXTURE_SELECT_SGIS 0x8125""", globals()) def glInitTextureSelectSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/multisample.py0000644000175000001440000000312612025001653022003 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIS_multisample' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIS_multisample',False) _p.unpack_constants( """GL_MULTISAMPLE_SGIS 0x809D GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F GL_SAMPLE_MASK_SGIS 0x80A0 GL_1PASS_SGIS 0x80A1 GL_2PASS_0_SGIS 0x80A2 GL_2PASS_1_SGIS 0x80A3 GL_4PASS_0_SGIS 0x80A4 GL_4PASS_1_SGIS 0x80A5 GL_4PASS_2_SGIS 0x80A6 GL_4PASS_3_SGIS 0x80A7 GL_SAMPLE_BUFFERS_SGIS 0x80A8 GL_SAMPLES_SGIS 0x80A9 GL_SAMPLE_MASK_VALUE_SGIS 0x80AA GL_SAMPLE_MASK_INVERT_SGIS 0x80AB GL_SAMPLE_PATTERN_SGIS 0x80AC""", globals()) glget.addGLGetConstant( GL_MULTISAMPLE_SGIS, (1,) ) glget.addGLGetConstant( GL_SAMPLE_ALPHA_TO_MASK_SGIS, (1,) ) glget.addGLGetConstant( GL_SAMPLE_ALPHA_TO_ONE_SGIS, (1,) ) glget.addGLGetConstant( GL_SAMPLE_MASK_SGIS, (1,) ) glget.addGLGetConstant( GL_SAMPLE_BUFFERS_SGIS, (1,) ) glget.addGLGetConstant( GL_SAMPLES_SGIS, (1,) ) glget.addGLGetConstant( GL_SAMPLE_MASK_VALUE_SGIS, (1,) ) glget.addGLGetConstant( GL_SAMPLE_MASK_INVERT_SGIS, (1,) ) glget.addGLGetConstant( GL_SAMPLE_PATTERN_SGIS, (1,) ) @_f @_p.types(None,_cs.GLclampf,_cs.GLboolean) def glSampleMaskSGIS( value,invert ):pass @_f @_p.types(None,_cs.GLenum) def glSamplePatternSGIS( pattern ):pass def glInitMultisampleSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/generate_mipmap.py0000644000175000001440000000102112025001653022574 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIS_generate_mipmap' _p.unpack_constants( """GL_GENERATE_MIPMAP_SGIS 0x8191 GL_GENERATE_MIPMAP_HINT_SGIS 0x8192""", globals()) glget.addGLGetConstant( GL_GENERATE_MIPMAP_HINT_SGIS, (1,) ) def glInitGenerateMipmapSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/detail_texture.py0000644000175000001440000000201112025001653022461 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIS_detail_texture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIS_detail_texture',False) _p.unpack_constants( """GL_DETAIL_TEXTURE_2D_SGIS 0x8095 GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 GL_LINEAR_DETAIL_SGIS 0x8097 GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A GL_DETAIL_TEXTURE_MODE_SGIS 0x809B GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLfloatArray) def glDetailTexFuncSGIS( target,n,points ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glGetDetailTexFuncSGIS( target,points ):pass def glInitDetailTextureSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/texture_filter4.py0000644000175000001440000000151712025001653022602 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIS_texture_filter4' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIS_texture_filter4',False) _p.unpack_constants( """GL_FILTER4_SGIS 0x8146 GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetTexFilterFuncSGIS( target,filter,weights ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,arrays.GLfloatArray) def glTexFilterFuncSGIS( target,filter,n,weights ):pass def glInitTextureFilter4SGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIS/fog_function.py0000644000175000001440000000141712025001653022130 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIS_fog_function' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIS_fog_function',False) _p.unpack_constants( """GL_FOG_FUNC_SGIS 0x812A GL_FOG_FUNC_POINTS_SGIS 0x812B GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C""", globals()) @_f @_p.types(None,_cs.GLsizei,arrays.GLfloatArray) def glFogFuncSGIS( n,points ):pass @_f @_p.types(None,arrays.GLfloatArray) def glGetFogFuncSGIS( points ):pass def glInitFogFunctionSGIS(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/0000755000175000001440000000000012032640120016726 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/transform_feedback3.py0000644000175000001440000000202312025001653023203 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_transform_feedback3' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_transform_feedback3',False) _p.unpack_constants( """GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 GL_MAX_VERTEX_STREAMS 0x8E71""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint) def glDrawTransformFeedbackStream( mode,id,stream ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint) def glBeginQueryIndexed( target,index,id ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glEndQueryIndexed( target,index ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetQueryIndexediv( target,index,pname,params ):pass def glInitTransformFeedback3ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/ES2_compatibility.py0000644000175000001440000000272112031734131022631 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_ES2_compatibility' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_ES2_compatibility',False) _p.unpack_constants( """GL_FIXED 0x140C GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B GL_LOW_FLOAT 0x8DF0 GL_MEDIUM_FLOAT 0x8DF1 GL_HIGH_FLOAT 0x8DF2 GL_LOW_INT 0x8DF3 GL_MEDIUM_INT 0x8DF4 GL_HIGH_INT 0x8DF5 GL_SHADER_COMPILER 0x8DFA GL_SHADER_BINARY_FORMATS 0x8DF8 GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB GL_MAX_VARYING_VECTORS 0x8DFC GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD GL_RGB565 0x8D62""", globals()) @_f @_p.types(None,) def glReleaseShaderCompiler( ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray,_cs.GLenum,ctypes.c_void_p,_cs.GLsizei) def glShaderBinary( count,shaders,binaryformat,binary,length ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray,arrays.GLintArray) def glGetShaderPrecisionFormat( shadertype,precisiontype,range,precision ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glDepthRangef( n,f ):pass @_f @_p.types(None,_cs.GLfloat) def glClearDepthf( d ):pass def glInitEs2CompatibilityARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_rg.py0000644000175000001440000000133112025001653021472 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_rg' _p.unpack_constants( """GL_RG 0x8227 GL_RG_INTEGER 0x8228 GL_R8 0x8229 GL_R16 0x822A GL_RG8 0x822B GL_RG16 0x822C GL_R16F 0x822D GL_R32F 0x822E GL_RG16F 0x822F GL_RG32F 0x8230 GL_R8I 0x8231 GL_R8UI 0x8232 GL_R16I 0x8233 GL_R16UI 0x8234 GL_R32I 0x8235 GL_R32UI 0x8236 GL_RG8I 0x8237 GL_RG8UI 0x8238 GL_RG16I 0x8239 GL_RG16UI 0x823A GL_RG32I 0x823B GL_RG32UI 0x823C""", globals()) def glInitTextureRgARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/multi_draw_indirect.py0000644000175000001440000000147112025001653023337 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_multi_draw_indirect' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_multi_draw_indirect',False) @_f @_p.types(None,_cs.GLenum,ctypes.POINTER(_cs.void),_cs.GLsizei,_cs.GLsizei) def glMultiDrawArraysIndirect( mode,indirect,drawcount,stride ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,ctypes.POINTER(_cs.void),_cs.GLsizei,_cs.GLsizei) def glMultiDrawElementsIndirect( mode,type,indirect,drawcount,stride ):pass def glInitMultiDrawIndirectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/point_parameters.py0000644000175000001440000000211712025001653022661 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_point_parameters' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_point_parameters',False) _p.unpack_constants( """GL_POINT_SIZE_MIN_ARB 0x8126 GL_POINT_SIZE_MAX_ARB 0x8127 GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129""", globals()) glget.addGLGetConstant( GL_POINT_SIZE_MIN_ARB, (1,) ) glget.addGLGetConstant( GL_POINT_SIZE_MAX_ARB, (1,) ) glget.addGLGetConstant( GL_POINT_FADE_THRESHOLD_SIZE_ARB, (1,) ) glget.addGLGetConstant( GL_POINT_DISTANCE_ATTENUATION_ARB, (3,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glPointParameterfARB( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glPointParameterfvARB( pname,params ):pass def glInitPointParametersARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shadow_ambient.py0000644000175000001440000000066612025001653022300 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shadow_ambient' _p.unpack_constants( """GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF""", globals()) def glInitShadowAmbientARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_border_clamp.py0000644000175000001440000000066612025001653023525 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_border_clamp' _p.unpack_constants( """GL_CLAMP_TO_BORDER_ARB 0x812D""", globals()) def glInitTextureBorderClampARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/internalformat_query.py0000644000175000001440000000134312025001653023557 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_internalformat_query' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_internalformat_query',False) _p.unpack_constants( """GL_NUM_SAMPLE_COUNTS 0x9380""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLsizei,arrays.GLintArray) def glGetInternalformativ( target,internalformat,pname,bufSize,params ):pass def glInitInternalformatQueryARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/debug_output.py0000644000175000001440000000403212025001653022011 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_debug_output' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_debug_output',False) _p.unpack_constants( """GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 GL_DEBUG_SOURCE_API_ARB 0x8246 GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A GL_DEBUG_SOURCE_OTHER_ARB 0x824B GL_DEBUG_TYPE_ERROR_ARB 0x824C GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 GL_DEBUG_TYPE_OTHER_ARB 0x8251 GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 GL_DEBUG_SEVERITY_LOW_ARB 0x9148""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray,_cs.GLboolean) def glDebugMessageControlARB( source,type,severity,count,ids,enabled ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLenum,_cs.GLsizei,arrays.GLcharArray) def glDebugMessageInsertARB( source,type,id,severity,length,buf ):pass @_f @_p.types(None,_cs.GLDEBUGPROCARB,ctypes.c_void_p) def glDebugMessageCallbackARB( callback,userParam ):pass @_f @_p.types(_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray,arrays.GLuintArray,arrays.GLuintArray,arrays.GLuintArray,arrays.GLsizeiArray,arrays.GLcharArray) def glGetDebugMessageLogARB( count,bufsize,sources,types,ids,severities,lengths,messageLog ):pass def glInitDebugOutputARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/robustness.py0000644000175000001440000000672512025001653021525 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_robustness' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_robustness',False) _p.unpack_constants( """GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x4 GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 GL_GUILTY_CONTEXT_RESET_ARB 0x8253 GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 GL_NO_RESET_NOTIFICATION_ARB 0x8261""", globals()) @_f @_p.types(_cs.GLenum,) def glGetGraphicsResetStatusARB( ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,arrays.GLdoubleArray) def glGetnMapdvARB( target,query,bufSize,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,arrays.GLfloatArray) def glGetnMapfvARB( target,query,bufSize,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,arrays.GLintArray) def glGetnMapivARB( target,query,bufSize,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLfloatArray) def glGetnPixelMapfvARB( map,bufSize,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray) def glGetnPixelMapuivARB( map,bufSize,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLushortArray) def glGetnPixelMapusvARB( map,bufSize,values ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLubyteArray) def glGetnPolygonStippleARB( bufSize,pattern ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glGetnColorTableARB( target,format,type,bufSize,table ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glGetnConvolutionFilterARB( target,format,type,bufSize,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p,_cs.GLsizei,ctypes.c_void_p,ctypes.c_void_p) def glGetnSeparableFilterARB( target,format,type,rowBufSize,row,columnBufSize,column,span ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLboolean,_cs.GLenum,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glGetnHistogramARB( target,reset,format,type,bufSize,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLboolean,_cs.GLenum,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glGetnMinmaxARB( target,reset,format,type,bufSize,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glGetnTexImageARB( target,level,format,type,bufSize,img ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glReadnPixelsARB( x,y,width,height,format,type,bufSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glGetnCompressedTexImageARB( target,lod,bufSize,img ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glGetnUniformfvARB( program,location,bufSize,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glGetnUniformivARB( program,location,bufSize,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glGetnUniformuivARB( program,location,bufSize,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glGetnUniformdvARB( program,location,bufSize,params ):pass def glInitRobustnessARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/vertex_program.py0000644000175000001440000002412612025001653022355 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_vertex_program' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_vertex_program',False) _p.unpack_constants( """GL_COLOR_SUM_ARB 0x8458 GL_VERTEX_PROGRAM_ARB 0x8620 GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 GL_PROGRAM_LENGTH_ARB 0x8627 GL_PROGRAM_STRING_ARB 0x8628 GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E GL_MAX_PROGRAM_MATRICES_ARB 0x862F GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 GL_CURRENT_MATRIX_ARB 0x8641 GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 GL_PROGRAM_ERROR_POSITION_ARB 0x864B GL_PROGRAM_BINDING_ARB 0x8677 GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A GL_PROGRAM_ERROR_STRING_ARB 0x8874 GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 GL_PROGRAM_FORMAT_ARB 0x8876 GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 GL_PROGRAM_TEMPORARIES_ARB 0x88A4 GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 GL_PROGRAM_PARAMETERS_ARB 0x88A8 GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB GL_PROGRAM_ATTRIBS_ARB 0x88AC GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 GL_MATRIX0_ARB 0x88C0 GL_MATRIX1_ARB 0x88C1 GL_MATRIX2_ARB 0x88C2 GL_MATRIX3_ARB 0x88C3 GL_MATRIX4_ARB 0x88C4 GL_MATRIX5_ARB 0x88C5 GL_MATRIX6_ARB 0x88C6 GL_MATRIX7_ARB 0x88C7 GL_MATRIX8_ARB 0x88C8 GL_MATRIX9_ARB 0x88C9 GL_MATRIX10_ARB 0x88CA GL_MATRIX11_ARB 0x88CB GL_MATRIX12_ARB 0x88CC GL_MATRIX13_ARB 0x88CD GL_MATRIX14_ARB 0x88CE GL_MATRIX15_ARB 0x88CF GL_MATRIX16_ARB 0x88D0 GL_MATRIX17_ARB 0x88D1 GL_MATRIX18_ARB 0x88D2 GL_MATRIX19_ARB 0x88D3 GL_MATRIX20_ARB 0x88D4 GL_MATRIX21_ARB 0x88D5 GL_MATRIX22_ARB 0x88D6 GL_MATRIX23_ARB 0x88D7 GL_MATRIX24_ARB 0x88D8 GL_MATRIX25_ARB 0x88D9 GL_MATRIX26_ARB 0x88DA GL_MATRIX27_ARB 0x88DB GL_MATRIX28_ARB 0x88DC GL_MATRIX29_ARB 0x88DD GL_MATRIX30_ARB 0x88DE GL_MATRIX31_ARB 0x88DF""", globals()) glget.addGLGetConstant( GL_COLOR_SUM_ARB, (1,) ) glget.addGLGetConstant( GL_VERTEX_PROGRAM_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_PROGRAM_MATRICES_ARB, (1,) ) glget.addGLGetConstant( GL_CURRENT_MATRIX_STACK_DEPTH_ARB, (1,) ) glget.addGLGetConstant( GL_CURRENT_MATRIX_ARB, (4, 4) ) glget.addGLGetConstant( GL_VERTEX_PROGRAM_POINT_SIZE_ARB, (1,) ) glget.addGLGetConstant( GL_VERTEX_PROGRAM_TWO_SIDE_ARB, (1,) ) glget.addGLGetConstant( GL_PROGRAM_ERROR_POSITION_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_ATTRIBS_ARB, (1,) ) glget.addGLGetConstant( GL_TRANSPOSE_CURRENT_MATRIX_ARB, (4, 4) ) @_f @_p.types(None,_cs.GLuint,_cs.GLdouble) def glVertexAttrib1dARB( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib1dvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat) def glVertexAttrib1fARB( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib1fvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort) def glVertexAttrib1sARB( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib1svARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble) def glVertexAttrib2dARB( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib2dvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat) def glVertexAttrib2fARB( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib2fvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort,_cs.GLshort) def glVertexAttrib2sARB( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib2svARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttrib3dARB( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib3dvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertexAttrib3fARB( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib3fvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertexAttrib3sARB( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib3svARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLbyteArray) def glVertexAttrib4NbvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttrib4NivARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib4NsvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte) def glVertexAttrib4NubARB( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLubyteArray) def glVertexAttrib4NubvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttrib4NuivARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttrib4NusvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLbyteArray) def glVertexAttrib4bvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttrib4dARB( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib4dvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertexAttrib4fARB( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib4fvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttrib4ivARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertexAttrib4sARB( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib4svARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLubyteArray) def glVertexAttrib4ubvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttrib4uivARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttrib4usvARB( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLboolean,_cs.GLsizei,ctypes.c_void_p) def glVertexAttribPointerARB( index,size,type,normalized,stride,pointer ):pass @_f @_p.types(None,_cs.GLuint) def glEnableVertexAttribArrayARB( index ):pass @_f @_p.types(None,_cs.GLuint) def glDisableVertexAttribArrayARB( index ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glProgramStringARB( target,format,len,string ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindProgramARB( target,program ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteProgramsARB( n,programs ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenProgramsARB( n,programs ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glProgramEnvParameter4dARB( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLdoubleArray) def glProgramEnvParameter4dvARB( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glProgramEnvParameter4fARB( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glProgramEnvParameter4fvARB( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glProgramLocalParameter4dARB( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLdoubleArray) def glProgramLocalParameter4dvARB( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glProgramLocalParameter4fARB( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glProgramLocalParameter4fvARB( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLdoubleArray) def glGetProgramEnvParameterdvARB( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glGetProgramEnvParameterfvARB( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLdoubleArray) def glGetProgramLocalParameterdvARB( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glGetProgramLocalParameterfvARB( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetProgramivARB( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetProgramStringARB( target,pname,string ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLdoubleArray) def glGetVertexAttribdvARB( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetVertexAttribfvARB( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVertexAttribivARB( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLvoidpArray) def glGetVertexAttribPointervARB( index,pname,pointer ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsProgramARB( program ):pass def glInitVertexProgramARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/seamless_cube_map.py0000644000175000001440000000066612025001653022763 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_seamless_cube_map' _p.unpack_constants( """GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F""", globals()) def glInitSeamlessCubeMapARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/depth_buffer_float.py0000644000175000001440000000076612025001653023137 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_depth_buffer_float' _p.unpack_constants( """GL_DEPTH_COMPONENT32F 0x8CAC GL_DEPTH32F_STENCIL8 0x8CAD GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD""", globals()) def glInitDepthBufferFloatARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/debug_group.py0000644000175000001440000000054112025001653021606 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_debug_group' def glInitDebugGroupARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/matrix_palette.py0000644000175000001440000000326212025001653022331 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_matrix_palette' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_matrix_palette',False) _p.unpack_constants( """GL_MATRIX_PALETTE_ARB 0x8840 GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 GL_MAX_PALETTE_MATRICES_ARB 0x8842 GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 GL_MATRIX_INDEX_ARRAY_ARB 0x8844 GL_CURRENT_MATRIX_INDEX_ARB 0x8845 GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849""", globals()) glget.addGLGetConstant( GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_PALETTE_MATRICES_ARB, (1,) ) glget.addGLGetConstant( GL_MATRIX_INDEX_ARRAY_SIZE_ARB, (1,) ) glget.addGLGetConstant( GL_MATRIX_INDEX_ARRAY_TYPE_ARB, (1,) ) glget.addGLGetConstant( GL_MATRIX_INDEX_ARRAY_STRIDE_ARB, (1,) ) @_f @_p.types(None,_cs.GLint) def glCurrentPaletteMatrixARB( index ):pass @_f @_p.types(None,_cs.GLint,arrays.GLubyteArray) def glMatrixIndexubvARB( size,indices ):pass @_f @_p.types(None,_cs.GLint,arrays.GLushortArray) def glMatrixIndexusvARB( size,indices ):pass @_f @_p.types(None,_cs.GLint,arrays.GLuintArray) def glMatrixIndexuivARB( size,indices ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glMatrixIndexPointerARB( size,type,stride,pointer ):pass def glInitMatrixPaletteARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/viewport_array.py0000644000175000001440000000340012025001653022356 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_viewport_array' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_viewport_array',False) _p.unpack_constants( """GL_MAX_VIEWPORTS 0x825B GL_VIEWPORT_SUBPIXEL_BITS 0x825C GL_VIEWPORT_BOUNDS_RANGE 0x825D GL_LAYER_PROVOKING_VERTEX 0x825E GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F GL_UNDEFINED_VERTEX 0x8260""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glViewportArrayv( first,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glViewportIndexedf( index,x,y,w,h ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glViewportIndexedfv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLintArray) def glScissorArrayv( first,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glScissorIndexed( index,left,bottom,width,height ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glScissorIndexedv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLdoubleArray) def glDepthRangeArrayv( first,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble) def glDepthRangeIndexed( index,n,f ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glGetFloati_v( target,index,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLdoubleArray) def glGetDoublei_v( target,index,data ):pass def glInitViewportArrayARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/fragment_layer_viewport.py0000644000175000001440000000057012025001653024244 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_fragment_layer_viewport' def glInitFragmentLayerViewportARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_image_load_store.py0000644000175000001440000000555312025001653024137 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_shader_image_load_store' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_shader_image_load_store',False) _p.unpack_constants( """GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x1 GL_ELEMENT_ARRAY_BARRIER_BIT 0x2 GL_UNIFORM_BARRIER_BIT 0x4 GL_TEXTURE_FETCH_BARRIER_BIT 0x8 GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x20 GL_COMMAND_BARRIER_BIT 0x40 GL_PIXEL_BUFFER_BARRIER_BIT 0x80 GL_TEXTURE_UPDATE_BARRIER_BIT 0x100 GL_BUFFER_UPDATE_BARRIER_BIT 0x200 GL_FRAMEBUFFER_BARRIER_BIT 0x400 GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x800 GL_ATOMIC_COUNTER_BARRIER_BIT 0x1000 GL_ALL_BARRIER_BITS 0xFFFFFFFF GL_MAX_IMAGE_UNITS 0x8F38 GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 GL_IMAGE_BINDING_NAME 0x8F3A GL_IMAGE_BINDING_LEVEL 0x8F3B GL_IMAGE_BINDING_LAYERED 0x8F3C GL_IMAGE_BINDING_LAYER 0x8F3D GL_IMAGE_BINDING_ACCESS 0x8F3E GL_IMAGE_1D 0x904C GL_IMAGE_2D 0x904D GL_IMAGE_3D 0x904E GL_IMAGE_2D_RECT 0x904F GL_IMAGE_CUBE 0x9050 GL_IMAGE_BUFFER 0x9051 GL_IMAGE_1D_ARRAY 0x9052 GL_IMAGE_2D_ARRAY 0x9053 GL_IMAGE_CUBE_MAP_ARRAY 0x9054 GL_IMAGE_2D_MULTISAMPLE 0x9055 GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 GL_INT_IMAGE_1D 0x9057 GL_INT_IMAGE_2D 0x9058 GL_INT_IMAGE_3D 0x9059 GL_INT_IMAGE_2D_RECT 0x905A GL_INT_IMAGE_CUBE 0x905B GL_INT_IMAGE_BUFFER 0x905C GL_INT_IMAGE_1D_ARRAY 0x905D GL_INT_IMAGE_2D_ARRAY 0x905E GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 GL_UNSIGNED_INT_IMAGE_1D 0x9062 GL_UNSIGNED_INT_IMAGE_2D 0x9063 GL_UNSIGNED_INT_IMAGE_3D 0x9064 GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C GL_MAX_IMAGE_SAMPLES 0x906D GL_IMAGE_BINDING_FORMAT 0x906E GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLint,_cs.GLboolean,_cs.GLint,_cs.GLenum,_cs.GLenum) def glBindImageTexture( unit,texture,level,layered,layer,access,format ):pass @_f @_p.types(None,_cs.GLbitfield) def glMemoryBarrier( barriers ):pass def glInitShaderImageLoadStoreARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/robustness_isolation.py0000644000175000001440000000056312025001653023600 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_robustness_isolation' def glInitRobustnessIsolationARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_storage.py0000644000175000001440000000277112025001653022537 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_texture_storage' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_texture_storage',False) _p.unpack_constants( """GL_TEXTURE_IMMUTABLE_FORMAT 0x912F""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei) def glTexStorage1D( target,levels,internalformat,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glTexStorage2D( target,levels,internalformat,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei) def glTexStorage3D( target,levels,internalformat,width,height,depth ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei) def glTextureStorage1DEXT( texture,target,levels,internalformat,width ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glTextureStorage2DEXT( texture,target,levels,internalformat,width,height ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei) def glTextureStorage3DEXT( texture,target,levels,internalformat,width,height,depth ):pass def glInitTextureStorageARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/vertex_shader.py0000644000175000001440000000301112025001653022142 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_vertex_shader' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_vertex_shader',False) _p.unpack_constants( """GL_VERTEX_SHADER_ARB 0x8B31 GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A GL_MAX_VARYING_FLOATS_ARB 0x8B4B GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A""", globals()) glget.addGLGetConstant( GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_VARYING_FLOATS_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, (1,) ) @_f @_p.types(None,_cs.GLhandleARB,_cs.GLuint,arrays.GLcharARBArray) def glBindAttribLocationARB( programObj,index,name ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLintArray,arrays.GLuintArray,arrays.GLcharARBArray) def glGetActiveAttribARB( programObj,index,maxLength,length,size,type,name ):pass @_f @_p.types(_cs.GLint,_cs.GLhandleARB,arrays.GLcharARBArray) def glGetAttribLocationARB( programObj,name ):pass def glInitVertexShaderARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_rgb10_a2ui.py0000644000175000001440000000065112025001653022721 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_rgb10_a2ui' _p.unpack_constants( """GL_RGB10_A2UI 0x906F""", globals()) def glInitTextureRgb10A2UiARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_storage_buffer_object.py0000644000175000001440000000251112025001653025154 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_shader_storage_buffer_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_shader_storage_buffer_object',False) _p.unpack_constants( """GL_SHADER_STORAGE_BUFFER 0x90D2 GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 GL_SHADER_STORAGE_BUFFER_START 0x90D4 GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF GL_SHADER_STORAGE_BARRIER_BIT 0x2000""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glShaderStorageBlockBinding( program,storageBlockIndex,storageBlockBinding ):pass def glInitShaderStorageBufferObjectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/arrays_of_arrays.py0000644000175000001440000000055212025001653022654 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_arrays_of_arrays' def glInitArraysOfArraysARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_texture_lod.py0000644000175000001440000000055612025001653023176 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shader_texture_lod' def glInitShaderTextureLodARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shadow.py0000644000175000001440000000074712025001653020601 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shadow' _p.unpack_constants( """GL_TEXTURE_COMPARE_MODE_ARB 0x884C GL_TEXTURE_COMPARE_FUNC_ARB 0x884D GL_COMPARE_R_TO_TEXTURE_ARB 0x884E""", globals()) def glInitShadowARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_float.py0000644000175000001440000000171312025001653022173 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_float' _p.unpack_constants( """GL_TEXTURE_RED_TYPE_ARB 0x8C10 GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 GL_UNSIGNED_NORMALIZED_ARB 0x8C17 GL_RGBA32F_ARB 0x8814 GL_RGB32F_ARB 0x8815 GL_ALPHA32F_ARB 0x8816 GL_INTENSITY32F_ARB 0x8817 GL_LUMINANCE32F_ARB 0x8818 GL_LUMINANCE_ALPHA32F_ARB 0x8819 GL_RGBA16F_ARB 0x881A GL_RGB16F_ARB 0x881B GL_ALPHA16F_ARB 0x881C GL_INTENSITY16F_ARB 0x881D GL_LUMINANCE16F_ARB 0x881E GL_LUMINANCE_ALPHA16F_ARB 0x881F""", globals()) def glInitTextureFloatARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/base_instance.py0000644000175000001440000000210312025001653022076 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_base_instance' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_base_instance',False) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLuint) def glDrawArraysInstancedBaseInstance( mode,first,count,instancecount,baseinstance ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,ctypes.POINTER(_cs.void),_cs.GLsizei,_cs.GLuint) def glDrawElementsInstancedBaseInstance( mode,count,type,indices,instancecount,baseinstance ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,ctypes.POINTER(_cs.void),_cs.GLsizei,_cs.GLint,_cs.GLuint) def glDrawElementsInstancedBaseVertexBaseInstance( mode,count,type,indices,instancecount,basevertex,baseinstance ):pass def glInitBaseInstanceARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_mirrored_repeat.py0000644000175000001440000000067412025001653024256 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_mirrored_repeat' _p.unpack_constants( """GL_MIRRORED_REPEAT_ARB 0x8370""", globals()) def glInitTextureMirroredRepeatARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/gpu_shader5.py0000644000175000001440000000113412025001653021511 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_gpu_shader5' _p.unpack_constants( """GL_GEOMETRY_SHADER_INVOCATIONS 0x887F GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D""", globals()) def glInitGpuShader5ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_compression_bptc.py0000644000175000001440000000113012025001653024430 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_compression_bptc' _p.unpack_constants( """GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F""", globals()) def glInitTextureCompressionBptcARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_swizzle.py0000644000175000001440000000103612025001653022573 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_swizzle' _p.unpack_constants( """GL_TEXTURE_SWIZZLE_R 0x8E42 GL_TEXTURE_SWIZZLE_G 0x8E43 GL_TEXTURE_SWIZZLE_B 0x8E44 GL_TEXTURE_SWIZZLE_A 0x8E45 GL_TEXTURE_SWIZZLE_RGBA 0x8E46""", globals()) def glInitTextureSwizzleARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/tessellation_shader.py0000644000175000001440000000365312025001653023347 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_tessellation_shader' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_tessellation_shader',False) _p.unpack_constants( """GL_PATCHES 0xE GL_PATCH_VERTICES 0x8E72 GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 GL_TESS_GEN_MODE 0x8E76 GL_TESS_GEN_SPACING 0x8E77 GL_TESS_GEN_VERTEX_ORDER 0x8E78 GL_TESS_GEN_POINT_MODE 0x8E79 GL_ISOLINES 0x8E7A GL_FRACTIONAL_ODD 0x8E7B GL_FRACTIONAL_EVEN 0x8E7C GL_MAX_PATCH_VERTICES 0x8E7D GL_MAX_TESS_GEN_LEVEL 0x8E7E GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 GL_TESS_EVALUATION_SHADER 0x8E87 GL_TESS_CONTROL_SHADER 0x8E88""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glPatchParameteri( pname,value ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glPatchParameterfv( pname,values ):pass def glInitTessellationShaderARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/draw_instanced.py0000644000175000001440000000141312025001653022270 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_draw_instanced' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_draw_instanced',False) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glDrawArraysInstancedARB( mode,first,count,primcount ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLsizei) def glDrawElementsInstancedARB( mode,count,type,indices,primcount ):pass def glInitDrawInstancedARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/draw_elements_base_vertex.py0000644000175000001440000000234512025001653024530 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_draw_elements_base_vertex' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_draw_elements_base_vertex',False) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLint) def glDrawElementsBaseVertex( mode,count,type,indices,basevertex ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLint) def glDrawRangeElementsBaseVertex( mode,start,end,count,type,indices,basevertex ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLsizei,_cs.GLint) def glDrawElementsInstancedBaseVertex( mode,count,type,indices,instancecount,basevertex ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLsizeiArray,_cs.GLenum,arrays.GLvoidpArray,_cs.GLsizei,arrays.GLintArray) def glMultiDrawElementsBaseVertex( mode,count,type,indices,drawcount,basevertex ):pass def glInitDrawElementsBaseVertexARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_query_levels.py0000644000175000001440000000056212025001653023606 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_query_levels' def glInitTextureQueryLevelsARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/occlusion_query.py0000644000175000001440000000266712025001653022542 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_occlusion_query' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_occlusion_query',False) _p.unpack_constants( """GL_QUERY_COUNTER_BITS_ARB 0x8864 GL_CURRENT_QUERY_ARB 0x8865 GL_QUERY_RESULT_ARB 0x8866 GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 GL_SAMPLES_PASSED_ARB 0x8914""", globals()) glget.addGLGetConstant( GL_QUERY_COUNTER_BITS_ARB, (1,) ) @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenQueriesARB( n,ids ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteQueriesARB( n,ids ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsQueryARB( id ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBeginQueryARB( target,id ):pass @_f @_p.types(None,_cs.GLenum) def glEndQueryARB( target ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetQueryivARB( target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetQueryObjectivARB( id,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuintArray) def glGetQueryObjectuivARB( id,pname,params ):pass def glInitOcclusionQueryARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/vertex_attrib_64bit.py0000644000175000001440000000302012025001653023171 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_vertex_attrib_64bit' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_vertex_attrib_64bit',False) @_f @_p.types(None,_cs.GLuint,_cs.GLdouble) def glVertexAttribL1d( index,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble) def glVertexAttribL2d( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttribL3d( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttribL4d( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttribL1dv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttribL2dv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttribL3dv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttribL4dv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glVertexAttribLPointer( index,size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLdoubleArray) def glGetVertexAttribLdv( index,pname,params ):pass def glInitVertexAttrib64BitARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/blend_func_extended.py0000644000175000001440000000162112025001653023263 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_blend_func_extended' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_blend_func_extended',False) _p.unpack_constants( """GL_SRC1_COLOR 0x88F9 GL_ONE_MINUS_SRC1_COLOR 0x88FA GL_ONE_MINUS_SRC1_ALPHA 0x88FB GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,arrays.GLcharArray) def glBindFragDataLocationIndexed( program,colorNumber,index,name ):pass @_f @_p.types(_cs.GLint,_cs.GLuint,arrays.GLcharArray) def glGetFragDataIndex( program,name ):pass def glInitBlendFuncExtendedARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/__init__.py0000644000175000001440000000002712025001653021042 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/copy_buffer.py0000644000175000001440000000137112025001653021611 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_copy_buffer' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_copy_buffer',False) _p.unpack_constants( """GL_COPY_READ_BUFFER_BINDING 0x8F36 GL_COPY_WRITE_BUFFER_BINDING 0x8F37""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLintptr,_cs.GLintptr,_cs.GLsizeiptr) def glCopyBufferSubData( readTarget,writeTarget,readOffset,writeOffset,size ):pass def glInitCopyBufferARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_stencil_export.py0000644000175000001440000000056412025001653023701 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shader_stencil_export' def glInitShaderStencilExportARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_precision.py0000644000175000001440000000055312025001653022630 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shader_precision' def glInitShaderPrecisionARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/vertex_array_bgra.py0000644000175000001440000000055412025001653023016 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_vertex_array_bgra' def glInitVertexArrayBgraARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_query_lod.py0000644000175000001440000000055412025001653023073 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_query_lod' def glInitTextureQueryLodARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/ES3_compatibility.py0000644000175000001440000000157212025001653022634 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_ES3_compatibility' _p.unpack_constants( """GL_COMPRESSED_RGB8_ETC2 0x9274 GL_COMPRESSED_SRGB8_ETC2 0x9275 GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 GL_COMPRESSED_R11_EAC 0x9270 GL_COMPRESSED_SIGNED_R11_EAC 0x9271 GL_COMPRESSED_RG11_EAC 0x9272 GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A GL_MAX_ELEMENT_INDEX 0x8D6B""", globals()) def glInitEs3CompatibilityARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/draw_buffers.py0000644000175000001440000000367112025001653021764 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_draw_buffers' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_draw_buffers',False) _p.unpack_constants( """GL_MAX_DRAW_BUFFERS_ARB 0x8824 GL_DRAW_BUFFER0_ARB 0x8825 GL_DRAW_BUFFER1_ARB 0x8826 GL_DRAW_BUFFER2_ARB 0x8827 GL_DRAW_BUFFER3_ARB 0x8828 GL_DRAW_BUFFER4_ARB 0x8829 GL_DRAW_BUFFER5_ARB 0x882A GL_DRAW_BUFFER6_ARB 0x882B GL_DRAW_BUFFER7_ARB 0x882C GL_DRAW_BUFFER8_ARB 0x882D GL_DRAW_BUFFER9_ARB 0x882E GL_DRAW_BUFFER10_ARB 0x882F GL_DRAW_BUFFER11_ARB 0x8830 GL_DRAW_BUFFER12_ARB 0x8831 GL_DRAW_BUFFER13_ARB 0x8832 GL_DRAW_BUFFER14_ARB 0x8833 GL_DRAW_BUFFER15_ARB 0x8834""", globals()) glget.addGLGetConstant( GL_MAX_DRAW_BUFFERS_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER0_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER1_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER2_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER3_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER4_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER5_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER6_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER7_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER8_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER9_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER10_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER11_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER12_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER13_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER14_ARB, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER15_ARB, (1,) ) @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDrawBuffersARB( n,bufs ):pass def glInitDrawBuffersARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/half_float_pixel.py0000644000175000001440000000065112025001653022606 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_half_float_pixel' _p.unpack_constants( """GL_HALF_FLOAT_ARB 0x140B""", globals()) def glInitHalfFloatPixelARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/occlusion_query2.py0000644000175000001440000000065612025001653022620 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_occlusion_query2' _p.unpack_constants( """GL_ANY_SAMPLES_PASSED 0x8C2F""", globals()) def glInitOcclusionQuery2ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/pixel_buffer_object.py0000644000175000001440000000125612025001653023310 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_pixel_buffer_object' _p.unpack_constants( """GL_PIXEL_PACK_BUFFER_ARB 0x88EB GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF""", globals()) glget.addGLGetConstant( GL_PIXEL_PACK_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_PIXEL_UNPACK_BUFFER_BINDING_ARB, (1,) ) def glInitPixelBufferObjectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/internalformat_query2.py0000644000175000001440000000725512025001653023651 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_internalformat_query2' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_internalformat_query2',False) _p.unpack_constants( """GL_INTERNALFORMAT_SUPPORTED 0x826F GL_INTERNALFORMAT_PREFERRED 0x8270 GL_INTERNALFORMAT_RED_SIZE 0x8271 GL_INTERNALFORMAT_GREEN_SIZE 0x8272 GL_INTERNALFORMAT_BLUE_SIZE 0x8273 GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 GL_INTERNALFORMAT_SHARED_SIZE 0x8277 GL_INTERNALFORMAT_RED_TYPE 0x8278 GL_INTERNALFORMAT_GREEN_TYPE 0x8279 GL_INTERNALFORMAT_BLUE_TYPE 0x827A GL_INTERNALFORMAT_ALPHA_TYPE 0x827B GL_INTERNALFORMAT_DEPTH_TYPE 0x827C GL_INTERNALFORMAT_STENCIL_TYPE 0x827D GL_MAX_WIDTH 0x827E GL_MAX_HEIGHT 0x827F GL_MAX_DEPTH 0x8280 GL_MAX_LAYERS 0x8281 GL_MAX_COMBINED_DIMENSIONS 0x8282 GL_COLOR_COMPONENTS 0x8283 GL_DEPTH_COMPONENTS 0x8284 GL_STENCIL_COMPONENTS 0x8285 GL_COLOR_RENDERABLE 0x8286 GL_DEPTH_RENDERABLE 0x8287 GL_STENCIL_RENDERABLE 0x8288 GL_FRAMEBUFFER_RENDERABLE 0x8289 GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A GL_FRAMEBUFFER_BLEND 0x828B GL_READ_PIXELS 0x828C GL_READ_PIXELS_FORMAT 0x828D GL_READ_PIXELS_TYPE 0x828E GL_TEXTURE_IMAGE_FORMAT 0x828F GL_TEXTURE_IMAGE_TYPE 0x8290 GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 GL_GET_TEXTURE_IMAGE_TYPE 0x8292 GL_MIPMAP 0x8293 GL_MANUAL_GENERATE_MIPMAP 0x8294 GL_AUTO_GENERATE_MIPMAP 0x8295 GL_COLOR_ENCODING 0x8296 GL_SRGB_READ 0x8297 GL_SRGB_WRITE 0x8298 GL_SRGB_DECODE_ARB 0x8299 GL_FILTER 0x829A GL_VERTEX_TEXTURE 0x829B GL_TESS_CONTROL_TEXTURE 0x829C GL_TESS_EVALUATION_TEXTURE 0x829D GL_GEOMETRY_TEXTURE 0x829E GL_FRAGMENT_TEXTURE 0x829F GL_COMPUTE_TEXTURE 0x82A0 GL_TEXTURE_SHADOW 0x82A1 GL_TEXTURE_GATHER 0x82A2 GL_TEXTURE_GATHER_SHADOW 0x82A3 GL_SHADER_IMAGE_LOAD 0x82A4 GL_SHADER_IMAGE_STORE 0x82A5 GL_SHADER_IMAGE_ATOMIC 0x82A6 GL_IMAGE_TEXEL_SIZE 0x82A7 GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 GL_IMAGE_PIXEL_FORMAT 0x82A9 GL_IMAGE_PIXEL_TYPE 0x82AA GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 GL_CLEAR_BUFFER 0x82B4 GL_TEXTURE_VIEW 0x82B5 GL_VIEW_COMPATIBILITY_CLASS 0x82B6 GL_FULL_SUPPORT 0x82B7 GL_CAVEAT_SUPPORT 0x82B8 GL_IMAGE_CLASS_4_X_32 0x82B9 GL_IMAGE_CLASS_2_X_32 0x82BA GL_IMAGE_CLASS_1_X_32 0x82BB GL_IMAGE_CLASS_4_X_16 0x82BC GL_IMAGE_CLASS_2_X_16 0x82BD GL_IMAGE_CLASS_1_X_16 0x82BE GL_IMAGE_CLASS_4_X_8 0x82BF GL_IMAGE_CLASS_2_X_8 0x82C0 GL_IMAGE_CLASS_1_X_8 0x82C1 GL_IMAGE_CLASS_11_11_10 0x82C2 GL_IMAGE_CLASS_10_10_10_2 0x82C3 GL_VIEW_CLASS_128_BITS 0x82C4 GL_VIEW_CLASS_96_BITS 0x82C5 GL_VIEW_CLASS_64_BITS 0x82C6 GL_VIEW_CLASS_48_BITS 0x82C7 GL_VIEW_CLASS_32_BITS 0x82C8 GL_VIEW_CLASS_24_BITS 0x82C9 GL_VIEW_CLASS_16_BITS 0x82CA GL_VIEW_CLASS_8_BITS 0x82CB GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF GL_VIEW_CLASS_RGTC1_RED 0x82D0 GL_VIEW_CLASS_RGTC2_RG 0x82D1 GL_VIEW_CLASS_BPTC_UNORM 0x82D2 GL_VIEW_CLASS_BPTC_FLOAT 0x82D3""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLsizei,arrays.GLint64Array) def glGetInternalformati64v( target,internalformat,pname,bufSize,params ):pass def glInitInternalformatQuery2ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_buffer_object_rgb32.py0000644000175000001440000000057712025001653024673 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_buffer_object_rgb32' def glInitTextureBufferObjectRgb32ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/vertex_type_2_10_10_10_rev.py0000644000175000001440000001041612025001653024061 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_vertex_type_2_10_10_10_rev' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_vertex_type_2_10_10_10_rev',False) _p.unpack_constants( """GL_INT_2_10_10_10_REV 0x8D9F""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glVertexP2ui( type,value ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glVertexP2uiv( type,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glVertexP3ui( type,value ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glVertexP3uiv( type,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glVertexP4ui( type,value ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glVertexP4uiv( type,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glTexCoordP1ui( type,coords ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glTexCoordP1uiv( type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glTexCoordP2ui( type,coords ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glTexCoordP2uiv( type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glTexCoordP3ui( type,coords ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glTexCoordP3uiv( type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glTexCoordP4ui( type,coords ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glTexCoordP4uiv( type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glMultiTexCoordP1ui( texture,type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glMultiTexCoordP1uiv( texture,type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glMultiTexCoordP2ui( texture,type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glMultiTexCoordP2uiv( texture,type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glMultiTexCoordP3ui( texture,type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glMultiTexCoordP3uiv( texture,type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glMultiTexCoordP4ui( texture,type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glMultiTexCoordP4uiv( texture,type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glNormalP3ui( type,coords ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glNormalP3uiv( type,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glColorP3ui( type,color ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glColorP3uiv( type,color ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glColorP4ui( type,color ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glColorP4uiv( type,color ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glSecondaryColorP3ui( type,color ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glSecondaryColorP3uiv( type,color ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLboolean,_cs.GLuint) def glVertexAttribP1ui( index,type,normalized,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLboolean,arrays.GLuintArray) def glVertexAttribP1uiv( index,type,normalized,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLboolean,_cs.GLuint) def glVertexAttribP2ui( index,type,normalized,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLboolean,arrays.GLuintArray) def glVertexAttribP2uiv( index,type,normalized,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLboolean,_cs.GLuint) def glVertexAttribP3ui( index,type,normalized,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLboolean,arrays.GLuintArray) def glVertexAttribP3uiv( index,type,normalized,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLboolean,_cs.GLuint) def glVertexAttribP4ui( index,type,normalized,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLboolean,arrays.GLuintArray) def glVertexAttribP4uiv( index,type,normalized,value ):pass def glInitVertexType2101010RevARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/timer_query.py0000644000175000001440000000154612025001653021657 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_timer_query' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_timer_query',False) _p.unpack_constants( """GL_TIME_ELAPSED 0x88BF GL_TIMESTAMP 0x8E28""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glQueryCounter( id,target ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLint64Array) def glGetQueryObjecti64v( id,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuint64Array) def glGetQueryObjectui64v( id,pname,params ):pass def glInitTimerQueryARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_env_dot3.py0000644000175000001440000000067712025001653022617 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_env_dot3' _p.unpack_constants( """GL_DOT3_RGB_ARB 0x86AE GL_DOT3_RGBA_ARB 0x86AF""", globals()) def glInitTextureEnvDot3ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/vertex_array_object.py0000644000175000001440000000167612025001653023357 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_vertex_array_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_vertex_array_object',False) _p.unpack_constants( """GL_VERTEX_ARRAY_BINDING 0x85B5""", globals()) glget.addGLGetConstant( GL_VERTEX_ARRAY_BINDING, (1,) ) @_f @_p.types(None,_cs.GLuint) def glBindVertexArray( array ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteVertexArrays( n,arrays ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenVertexArrays( n,arrays ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsVertexArray( array ):pass def glInitVertexArrayObjectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/fragment_coord_conventions.py0000644000175000001440000000057612025001653024732 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_fragment_coord_conventions' def glInitFragmentCoordConventionsARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/draw_buffers_blend.py0000644000175000001440000000166012025001653023124 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_draw_buffers_blend' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_draw_buffers_blend',False) @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glBlendEquationiARB( buf,mode ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum) def glBlendEquationSeparateiARB( buf,modeRGB,modeAlpha ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum) def glBlendFunciARB( buf,src,dst ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glBlendFuncSeparateiARB( buf,srcRGB,dstRGB,srcAlpha,dstAlpha ):pass def glInitDrawBuffersBlendARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/sample_shading.py0000644000175000001440000000124112025001653022260 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_sample_shading' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_sample_shading',False) _p.unpack_constants( """GL_SAMPLE_SHADING_ARB 0x8C36 GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37""", globals()) @_f @_p.types(None,_cs.GLfloat) def glMinSampleShadingARB( value ):pass def glInitSampleShadingARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/multisample.py0000644000175000001440000000251412025001653021642 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_multisample' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_multisample',False) _p.unpack_constants( """GL_MULTISAMPLE_ARB 0x809D GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F GL_SAMPLE_COVERAGE_ARB 0x80A0 GL_SAMPLE_BUFFERS_ARB 0x80A8 GL_SAMPLES_ARB 0x80A9 GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB GL_MULTISAMPLE_BIT_ARB 0x20000000""", globals()) glget.addGLGetConstant( GL_MULTISAMPLE_ARB, (1,) ) glget.addGLGetConstant( GL_SAMPLE_ALPHA_TO_COVERAGE_ARB, (1,) ) glget.addGLGetConstant( GL_SAMPLE_ALPHA_TO_ONE_ARB, (1,) ) glget.addGLGetConstant( GL_SAMPLE_COVERAGE_ARB, (1,) ) glget.addGLGetConstant( GL_SAMPLE_BUFFERS_ARB, (1,) ) glget.addGLGetConstant( GL_SAMPLES_ARB, (1,) ) glget.addGLGetConstant( GL_SAMPLE_COVERAGE_VALUE_ARB, (1,) ) glget.addGLGetConstant( GL_SAMPLE_COVERAGE_INVERT_ARB, (1,) ) @_f @_p.types(None,_cs.GLfloat,_cs.GLboolean) def glSampleCoverageARB( value,invert ):pass def glInitMultisampleARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/framebuffer_object.py0000644000175000001440000001330612031734145023127 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_framebuffer_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_framebuffer_object',False) _p.unpack_constants( """GL_INVALID_FRAMEBUFFER_OPERATION 0x506 GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 GL_FRAMEBUFFER_DEFAULT 0x8218 GL_FRAMEBUFFER_UNDEFINED 0x8219 GL_DEPTH_STENCIL_ATTACHMENT 0x821A GL_MAX_RENDERBUFFER_SIZE 0x84E8 GL_DEPTH_STENCIL 0x84F9 GL_UNSIGNED_INT_24_8 0x84FA GL_DEPTH24_STENCIL8 0x88F0 GL_TEXTURE_STENCIL_SIZE 0x88F1 GL_TEXTURE_RED_TYPE 0x8C10 GL_TEXTURE_GREEN_TYPE 0x8C11 GL_TEXTURE_BLUE_TYPE 0x8C12 GL_TEXTURE_ALPHA_TYPE 0x8C13 GL_TEXTURE_DEPTH_TYPE 0x8C16 GL_UNSIGNED_NORMALIZED 0x8C17 GL_FRAMEBUFFER_BINDING 0x8CA6 GL_RENDERBUFFER_BINDING 0x8CA7 GL_READ_FRAMEBUFFER 0x8CA8 GL_DRAW_FRAMEBUFFER 0x8CA9 GL_READ_FRAMEBUFFER_BINDING 0x8CAA GL_RENDERBUFFER_SAMPLES 0x8CAB GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 GL_FRAMEBUFFER_COMPLETE 0x8CD5 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD GL_MAX_COLOR_ATTACHMENTS 0x8CDF GL_COLOR_ATTACHMENT0 0x8CE0 GL_COLOR_ATTACHMENT1 0x8CE1 GL_COLOR_ATTACHMENT2 0x8CE2 GL_COLOR_ATTACHMENT3 0x8CE3 GL_COLOR_ATTACHMENT4 0x8CE4 GL_COLOR_ATTACHMENT5 0x8CE5 GL_COLOR_ATTACHMENT6 0x8CE6 GL_COLOR_ATTACHMENT7 0x8CE7 GL_COLOR_ATTACHMENT8 0x8CE8 GL_COLOR_ATTACHMENT9 0x8CE9 GL_COLOR_ATTACHMENT10 0x8CEA GL_COLOR_ATTACHMENT11 0x8CEB GL_COLOR_ATTACHMENT12 0x8CEC GL_COLOR_ATTACHMENT13 0x8CED GL_COLOR_ATTACHMENT14 0x8CEE GL_COLOR_ATTACHMENT15 0x8CEF GL_DEPTH_ATTACHMENT 0x8D00 GL_STENCIL_ATTACHMENT 0x8D20 GL_FRAMEBUFFER 0x8D40 GL_RENDERBUFFER 0x8D41 GL_RENDERBUFFER_WIDTH 0x8D42 GL_RENDERBUFFER_HEIGHT 0x8D43 GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 GL_STENCIL_INDEX1 0x8D46 GL_STENCIL_INDEX4 0x8D47 GL_STENCIL_INDEX8 0x8D48 GL_STENCIL_INDEX16 0x8D49 GL_RENDERBUFFER_RED_SIZE 0x8D50 GL_RENDERBUFFER_GREEN_SIZE 0x8D51 GL_RENDERBUFFER_BLUE_SIZE 0x8D52 GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 GL_MAX_SAMPLES 0x8D57 GL_INDEX 0x8222 GL_TEXTURE_LUMINANCE_TYPE 0x8C14 GL_TEXTURE_INTENSITY_TYPE 0x8C15""", globals()) glget.addGLGetConstant( GL_MAX_RENDERBUFFER_SIZE, (1,) ) glget.addGLGetConstant( GL_RENDERBUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_MAX_COLOR_ATTACHMENTS, (1,) ) glget.addGLGetConstant( GL_MAX_SAMPLES, (1,) ) @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsRenderbuffer( renderbuffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindRenderbuffer( target,renderbuffer ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteRenderbuffers( n,renderbuffers ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenRenderbuffers( n,renderbuffers ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glRenderbufferStorage( target,internalformat,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetRenderbufferParameteriv( target,pname,params ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsFramebuffer( framebuffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindFramebuffer( target,framebuffer ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteFramebuffers( n,framebuffers ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenFramebuffers( n,framebuffers ):pass @_f @_p.types(_cs.GLenum,_cs.GLenum) def glCheckFramebufferStatus( target ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint) def glFramebufferTexture1D( target,attachment,textarget,texture,level ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint) def glFramebufferTexture2D( target,attachment,textarget,texture,level ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint) def glFramebufferTexture3D( target,attachment,textarget,texture,level,zoffset ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glFramebufferRenderbuffer( target,attachment,renderbuffertarget,renderbuffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetFramebufferAttachmentParameteriv( target,attachment,pname,params ):pass @_f @_p.types(None,_cs.GLenum) def glGenerateMipmap( target ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLbitfield,_cs.GLenum) def glBlitFramebuffer( srcX0,srcY0,srcX1,srcY1,dstX0,dstY0,dstX1,dstY1,mask,filter ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glRenderbufferStorageMultisample( target,samples,internalformat,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint) def glFramebufferTextureLayer( target,attachment,texture,level,layer ):pass def glInitFramebufferObjectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/compatibility.py0000644000175000001440000000054612025001653022162 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_compatibility' def glInitCompatibilityARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_non_power_of_two.py0000644000175000001440000000057012025001653024451 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_non_power_of_two' def glInitTextureNonPowerOfTwoARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/cl_event.py0000644000175000001440000000134612025001653021107 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_cl_event' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_cl_event',False) _p.unpack_constants( """GL_SYNC_CL_EVENT_ARB 0x8240 GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241""", globals()) @_f @_p.types(_cs.GLsync,ctypes.POINTER(_cs._cl_context),ctypes.POINTER(_cs._cl_event),_cs.GLbitfield) def glCreateSyncFromCLeventARB( context,event,flags ):pass def glInitClEventARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/clear_buffer_object.py0000644000175000001440000000233512025001653023254 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_clear_buffer_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_clear_buffer_object',False) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.POINTER(_cs.void)) def glClearBufferData( target,internalformat,format,type,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLintptr,_cs.GLsizeiptr,_cs.GLenum,_cs.GLenum,ctypes.POINTER(_cs.void)) def glClearBufferSubData( target,internalformat,offset,size,format,type,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.POINTER(_cs.void)) def glClearNamedBufferDataEXT( buffer,internalformat,format,type,data ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLsizeiptr,_cs.GLsizeiptr,ctypes.POINTER(_cs.void)) def glClearNamedBufferSubDataEXT( buffer,internalformat,format,type,offset,size,data ):pass def glInitClearBufferObjectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_image_size.py0000644000175000001440000000055412025001653022752 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shader_image_size' def glInitShaderImageSizeARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/debug_output2.py0000644000175000001440000000054512025001653022100 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_debug_output2' def glInitDebugOutput2ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/depth_texture.py0000644000175000001440000000105512025001653022171 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_depth_texture' _p.unpack_constants( """GL_DEPTH_COMPONENT16_ARB 0x81A5 GL_DEPTH_COMPONENT24_ARB 0x81A6 GL_DEPTH_COMPONENT32_ARB 0x81A7 GL_TEXTURE_DEPTH_SIZE_ARB 0x884A GL_DEPTH_TEXTURE_MODE_ARB 0x884B""", globals()) def glInitDepthTextureARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/stencil_texturing.py0000644000175000001440000000067012025001653023061 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_stencil_texturing' _p.unpack_constants( """GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA""", globals()) def glInitStencilTexturingARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/vertex_blend.py0000644000175000001440000000570612025001653021775 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_vertex_blend' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_vertex_blend',False) _p.unpack_constants( """GL_MAX_VERTEX_UNITS_ARB 0x86A4 GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 GL_WEIGHT_SUM_UNITY_ARB 0x86A6 GL_VERTEX_BLEND_ARB 0x86A7 GL_CURRENT_WEIGHT_ARB 0x86A8 GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC GL_WEIGHT_ARRAY_ARB 0x86AD GL_MODELVIEW0_ARB 0x1700 GL_MODELVIEW1_ARB 0x850A GL_MODELVIEW2_ARB 0x8722 GL_MODELVIEW3_ARB 0x8723 GL_MODELVIEW4_ARB 0x8724 GL_MODELVIEW5_ARB 0x8725 GL_MODELVIEW6_ARB 0x8726 GL_MODELVIEW7_ARB 0x8727 GL_MODELVIEW8_ARB 0x8728 GL_MODELVIEW9_ARB 0x8729 GL_MODELVIEW10_ARB 0x872A GL_MODELVIEW11_ARB 0x872B GL_MODELVIEW12_ARB 0x872C GL_MODELVIEW13_ARB 0x872D GL_MODELVIEW14_ARB 0x872E GL_MODELVIEW15_ARB 0x872F GL_MODELVIEW16_ARB 0x8730 GL_MODELVIEW17_ARB 0x8731 GL_MODELVIEW18_ARB 0x8732 GL_MODELVIEW19_ARB 0x8733 GL_MODELVIEW20_ARB 0x8734 GL_MODELVIEW21_ARB 0x8735 GL_MODELVIEW22_ARB 0x8736 GL_MODELVIEW23_ARB 0x8737 GL_MODELVIEW24_ARB 0x8738 GL_MODELVIEW25_ARB 0x8739 GL_MODELVIEW26_ARB 0x873A GL_MODELVIEW27_ARB 0x873B GL_MODELVIEW28_ARB 0x873C GL_MODELVIEW29_ARB 0x873D GL_MODELVIEW30_ARB 0x873E GL_MODELVIEW31_ARB 0x873F""", globals()) glget.addGLGetConstant( GL_MAX_VERTEX_UNITS_ARB, (1,) ) glget.addGLGetConstant( GL_ACTIVE_VERTEX_UNITS_ARB, (1,) ) glget.addGLGetConstant( GL_WEIGHT_SUM_UNITY_ARB, (1,) ) glget.addGLGetConstant( GL_VERTEX_BLEND_ARB, (1,) ) glget.addGLGetConstant( GL_CURRENT_WEIGHT_ARB, (1,) ) glget.addGLGetConstant( GL_WEIGHT_ARRAY_TYPE_ARB, (1,) ) glget.addGLGetConstant( GL_WEIGHT_ARRAY_STRIDE_ARB, (1,) ) glget.addGLGetConstant( GL_WEIGHT_ARRAY_SIZE_ARB, (1,) ) @_f @_p.types(None,_cs.GLint,arrays.GLbyteArray) def glWeightbvARB( size,weights ):pass @_f @_p.types(None,_cs.GLint,arrays.GLshortArray) def glWeightsvARB( size,weights ):pass @_f @_p.types(None,_cs.GLint,arrays.GLintArray) def glWeightivARB( size,weights ):pass @_f @_p.types(None,_cs.GLint,arrays.GLfloatArray) def glWeightfvARB( size,weights ):pass @_f @_p.types(None,_cs.GLint,arrays.GLdoubleArray) def glWeightdvARB( size,weights ):pass @_f @_p.types(None,_cs.GLint,arrays.GLubyteArray) def glWeightubvARB( size,weights ):pass @_f @_p.types(None,_cs.GLint,arrays.GLushortArray) def glWeightusvARB( size,weights ):pass @_f @_p.types(None,_cs.GLint,arrays.GLuintArray) def glWeightuivARB( size,weights ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glWeightPointerARB( size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLint) def glVertexBlendARB( count ):pass def glInitVertexBlendARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shading_language_packing.py0000644000175000001440000000057212025001653024264 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shading_language_packing' def glInitShadingLanguagePackingARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_cube_map.py0000644000175000001440000000201612025001653022636 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_cube_map' _p.unpack_constants( """GL_NORMAL_MAP_ARB 0x8511 GL_REFLECTION_MAP_ARB 0x8512 GL_TEXTURE_CUBE_MAP_ARB 0x8513 GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C""", globals()) glget.addGLGetConstant( GL_TEXTURE_CUBE_MAP_ARB, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BINDING_CUBE_MAP_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB, (1,) ) def glInitTextureCubeMapARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/fragment_program_shadow.py0000644000175000001440000000057012025001653024205 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_fragment_program_shadow' def glInitFragmentProgramShadowARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/explicit_uniform_location.py0000644000175000001440000000070212025001653024553 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_explicit_uniform_location' _p.unpack_constants( """GL_MAX_UNIFORM_LOCATIONS 0x826E""", globals()) def glInitExplicitUniformLocationARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/half_float_vertex.py0000644000175000001440000000064712025001653023007 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_half_float_vertex' _p.unpack_constants( """GL_HALF_FLOAT 0x140B""", globals()) def glInitHalfFloatVertexARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/uniform_buffer_object.py0000644000175000001440000000704012025001653023643 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_uniform_buffer_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_uniform_buffer_object',False) _p.unpack_constants( """GL_UNIFORM_BUFFER 0x8A11 GL_UNIFORM_BUFFER_BINDING 0x8A28 GL_UNIFORM_BUFFER_START 0x8A29 GL_UNIFORM_BUFFER_SIZE 0x8A2A GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 GL_UNIFORM_TYPE 0x8A37 GL_UNIFORM_SIZE 0x8A38 GL_UNIFORM_NAME_LENGTH 0x8A39 GL_UNIFORM_BLOCK_INDEX 0x8A3A GL_UNIFORM_OFFSET 0x8A3B GL_UNIFORM_ARRAY_STRIDE 0x8A3C GL_UNIFORM_MATRIX_STRIDE 0x8A3D GL_UNIFORM_IS_ROW_MAJOR 0x8A3E GL_UNIFORM_BLOCK_BINDING 0x8A3F GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 GL_INVALID_INDEX 0xFFFFFFFF""", globals()) glget.addGLGetConstant( GL_UNIFORM_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_UNIFORM_BLOCKS, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_UNIFORM_BLOCKS, (1,) ) glget.addGLGetConstant( GL_MAX_FRAGMENT_UNIFORM_BLOCKS, (1,) ) glget.addGLGetConstant( GL_MAX_COMBINED_UNIFORM_BLOCKS, (1,) ) glget.addGLGetConstant( GL_MAX_UNIFORM_BUFFER_BINDINGS, (1,) ) glget.addGLGetConstant( GL_MAX_UNIFORM_BLOCK_SIZE, (1,) ) glget.addGLGetConstant( GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, (1,) ) glget.addGLGetConstant( GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS, (1,) ) glget.addGLGetConstant( GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, (1,) ) glget.addGLGetConstant( GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, (1,) ) @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,ctypes.POINTER( ctypes.POINTER( _cs.GLchar )),arrays.GLuintArray) def glGetUniformIndices( program,uniformCount,uniformNames,uniformIndices ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray,_cs.GLenum,arrays.GLintArray) def glGetActiveUniformsiv( program,uniformCount,uniformIndices,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetActiveUniformName( program,uniformIndex,bufSize,length,uniformName ):pass @_f @_p.types(_cs.GLuint,_cs.GLuint,arrays.GLcharArray) def glGetUniformBlockIndex( program,uniformBlockName ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetActiveUniformBlockiv( program,uniformBlockIndex,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetActiveUniformBlockName( program,uniformBlockIndex,bufSize,length,uniformBlockName ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glUniformBlockBinding( program,uniformBlockIndex,uniformBlockBinding ):pass def glInitUniformBufferObjectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_gather.py0000644000175000001440000000104112031734172022340 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_gather' _p.unpack_constants( """GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F""", globals()) def glInitTextureGatherARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/point_sprite.py0000644000175000001440000000076412025001653022032 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_point_sprite' _p.unpack_constants( """GL_POINT_SPRITE_ARB 0x8861 GL_COORD_REPLACE_ARB 0x8862""", globals()) glget.addGLGetConstant( GL_POINT_SPRITE_ARB, (1,) ) def glInitPointSpriteARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_rectangle.py0000644000175000001440000000134612025001653023034 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_rectangle' _p.unpack_constants( """GL_TEXTURE_RECTANGLE_ARB 0x84F5 GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8""", globals()) glget.addGLGetConstant( GL_TEXTURE_RECTANGLE_ARB, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BINDING_RECTANGLE_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB, (1,) ) def glInitTextureRectangleARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/robust_buffer_access_behavior.py0000644000175000001440000000060312025001653025352 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_robust_buffer_access_behavior' def glInitRobustBufferAccessBehaviorARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_storage_multisample.py0000644000175000001440000000256512025001653025154 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_texture_storage_multisample' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_texture_storage_multisample',False) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTexStorage2DMultisample( target,samples,internalformat,width,height,fixedsamplelocations ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTexStorage3DMultisample( target,samples,internalformat,width,height,depth,fixedsamplelocations ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTextureStorage2DMultisampleEXT( texture,target,samples,internalformat,width,height,fixedsamplelocations ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTextureStorage3DMultisampleEXT( texture,target,samples,internalformat,width,height,depth,fixedsamplelocations ):pass def glInitTextureStorageMultisampleARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_atomic_counters.py0000644000175000001440000000402412025001653024030 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_shader_atomic_counters' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_shader_atomic_counters',False) _p.unpack_constants( """GL_ATOMIC_COUNTER_BUFFER 0x92C0 GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetActiveAtomicCounterBufferiv( program,bufferIndex,pname,params ):pass def glInitShaderAtomicCountersARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shading_language_100.py0000644000175000001440000000067712025001653023156 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shading_language_100' _p.unpack_constants( """GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C""", globals()) def glInitShadingLanguage100ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_multisample.py0000644000175000001440000000435312025001653023425 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_texture_multisample' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_texture_multisample',False) _p.unpack_constants( """GL_SAMPLE_POSITION 0x8E50 GL_SAMPLE_MASK 0x8E51 GL_SAMPLE_MASK_VALUE 0x8E52 GL_MAX_SAMPLE_MASK_WORDS 0x8E59 GL_TEXTURE_2D_MULTISAMPLE 0x9100 GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 GL_TEXTURE_SAMPLES 0x9106 GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 GL_SAMPLER_2D_MULTISAMPLE 0x9108 GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F GL_MAX_INTEGER_SAMPLES 0x9110""", globals()) glget.addGLGetConstant( GL_MAX_SAMPLE_MASK_WORDS, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BINDING_2D_MULTISAMPLE, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY, (1,) ) glget.addGLGetConstant( GL_MAX_COLOR_TEXTURE_SAMPLES, (1,) ) glget.addGLGetConstant( GL_MAX_DEPTH_TEXTURE_SAMPLES, (1,) ) glget.addGLGetConstant( GL_MAX_INTEGER_SAMPLES, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTexImage2DMultisample( target,samples,internalformat,width,height,fixedsamplelocations ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTexImage3DMultisample( target,samples,internalformat,width,height,depth,fixedsamplelocations ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glGetMultisamplefv( pname,index,val ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLbitfield) def glSampleMaski( index,mask ):pass def glInitTextureMultisampleARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/explicit_attrib_location.py0000644000175000001440000000057212025001653024366 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_explicit_attrib_location' def glInitExplicitAttribLocationARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/framebuffer_sRGB.py0000644000175000001440000000065412025001653022452 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_framebuffer_sRGB' _p.unpack_constants( """GL_FRAMEBUFFER_SRGB 0x8DB9""", globals()) def glInitFramebufferSrgbARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_objects.py0000644000175000001440000001343012025001653022264 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_shader_objects' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_shader_objects',False) _p.unpack_constants( """GL_PROGRAM_OBJECT_ARB 0x8B40 GL_SHADER_OBJECT_ARB 0x8B48 GL_OBJECT_TYPE_ARB 0x8B4E GL_OBJECT_SUBTYPE_ARB 0x8B4F GL_FLOAT_VEC2_ARB 0x8B50 GL_FLOAT_VEC3_ARB 0x8B51 GL_FLOAT_VEC4_ARB 0x8B52 GL_INT_VEC2_ARB 0x8B53 GL_INT_VEC3_ARB 0x8B54 GL_INT_VEC4_ARB 0x8B55 GL_BOOL_ARB 0x8B56 GL_BOOL_VEC2_ARB 0x8B57 GL_BOOL_VEC3_ARB 0x8B58 GL_BOOL_VEC4_ARB 0x8B59 GL_FLOAT_MAT2_ARB 0x8B5A GL_FLOAT_MAT3_ARB 0x8B5B GL_FLOAT_MAT4_ARB 0x8B5C GL_SAMPLER_1D_ARB 0x8B5D GL_SAMPLER_2D_ARB 0x8B5E GL_SAMPLER_3D_ARB 0x8B5F GL_SAMPLER_CUBE_ARB 0x8B60 GL_SAMPLER_1D_SHADOW_ARB 0x8B61 GL_SAMPLER_2D_SHADOW_ARB 0x8B62 GL_SAMPLER_2D_RECT_ARB 0x8B63 GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 GL_OBJECT_DELETE_STATUS_ARB 0x8B80 GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 GL_OBJECT_LINK_STATUS_ARB 0x8B82 GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88""", globals()) @_f @_p.types(None,_cs.GLhandleARB) def glDeleteObjectARB( obj ):pass @_f @_p.types(_cs.GLhandleARB,_cs.GLenum) def glGetHandleARB( pname ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLhandleARB) def glDetachObjectARB( containerObj,attachedObj ):pass @_f @_p.types(_cs.GLhandleARB,_cs.GLenum) def glCreateShaderObjectARB( shaderType ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLsizei,ctypes.POINTER( ctypes.POINTER( _cs.GLchar )),arrays.GLintArray) def glShaderSourceARB( shaderObj,count,string,length ):pass @_f @_p.types(None,_cs.GLhandleARB) def glCompileShaderARB( shaderObj ):pass @_f @_p.types(_cs.GLhandleARB,) def glCreateProgramObjectARB( ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLhandleARB) def glAttachObjectARB( containerObj,obj ):pass @_f @_p.types(None,_cs.GLhandleARB) def glLinkProgramARB( programObj ):pass @_f @_p.types(None,_cs.GLhandleARB) def glUseProgramObjectARB( programObj ):pass @_f @_p.types(None,_cs.GLhandleARB) def glValidateProgramARB( programObj ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat) def glUniform1fARB( location,v0 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat,_cs.GLfloat) def glUniform2fARB( location,v0,v1 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glUniform3fARB( location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glUniform4fARB( location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glUniform1iARB( location,v0 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glUniform2iARB( location,v0,v1 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glUniform3iARB( location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glUniform4iARB( location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glUniform1fvARB( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glUniform2fvARB( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glUniform3fvARB( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glUniform4fvARB( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glUniform1ivARB( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glUniform2ivARB( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glUniform3ivARB( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glUniform4ivARB( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix2fvARB( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix3fvARB( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix4fvARB( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLenum,arrays.GLfloatArray) def glGetObjectParameterfvARB( obj,pname,params ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLenum,arrays.GLintArray) def glGetObjectParameterivARB( obj,pname,params ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharARBArray) def glGetInfoLogARB( obj,maxLength,length,infoLog ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLuintArray) def glGetAttachedObjectsARB( containerObj,maxCount,count,obj ):pass @_f @_p.types(_cs.GLint,_cs.GLhandleARB,arrays.GLcharARBArray) def glGetUniformLocationARB( programObj,name ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLintArray,arrays.GLuintArray,arrays.GLcharARBArray) def glGetActiveUniformARB( programObj,index,maxLength,length,size,type,name ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLint,arrays.GLfloatArray) def glGetUniformfvARB( programObj,location,params ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLint,arrays.GLintArray) def glGetUniformivARB( programObj,location,params ):pass @_f @_p.types(None,_cs.GLhandleARB,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharARBArray) def glGetShaderSourceARB( obj,maxLength,length,source ):pass def glInitShaderObjectsARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_bit_encoding.py0000644000175000001440000000056012025001653023257 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shader_bit_encoding' def glInitShaderBitEncodingARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/compute_shader.py0000644000175000001440000000266512025001653022317 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_compute_shader' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_compute_shader',False) _p.unpack_constants( """GL_COMPUTE_SHADER 0x91B9 GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 GL_MAX_COMPUTE_LOCAL_INVOCATIONS 0x90EB GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF GL_COMPUTE_LOCAL_WORK_SIZE 0x8267 GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED GL_DISPATCH_INDIRECT_BUFFER 0x90EE GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF GL_COMPUTE_SHADER_BIT 0x20""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glDispatchCompute( num_groups_x,num_groups_y,num_groups_z ):pass @_f @_p.types(None,_cs.GLintptr) def glDispatchComputeIndirect( indirect ):pass def glInitComputeShaderARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/depth_clamp.py0000644000175000001440000000063512025001653021570 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_depth_clamp' _p.unpack_constants( """GL_DEPTH_CLAMP 0x864F""", globals()) def glInitDepthClampARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_buffer_range.py0000644000175000001440000000172612025001653023517 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_texture_buffer_range' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_texture_buffer_range',False) _p.unpack_constants( """GL_TEXTURE_BUFFER_OFFSET 0x919D GL_TEXTURE_BUFFER_SIZE 0x919E GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr) def glTexBufferRange( target,internalformat,buffer,offset,size ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr) def glTextureBufferRangeEXT( texture,target,internalformat,buffer,offset,size ):pass def glInitTextureBufferRangeARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shader_subroutine.py0000644000175000001440000000401712025001653023033 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_shader_subroutine' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_shader_subroutine',False) _p.unpack_constants( """GL_ACTIVE_SUBROUTINES 0x8DE5 GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 GL_MAX_SUBROUTINES 0x8DE7 GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A GL_COMPATIBLE_SUBROUTINES 0x8E4B""", globals()) @_f @_p.types(_cs.GLint,_cs.GLuint,_cs.GLenum,arrays.GLcharArray) def glGetSubroutineUniformLocation( program,shadertype,name ):pass @_f @_p.types(_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLcharArray) def glGetSubroutineIndex( program,shadertype,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetActiveSubroutineUniformiv( program,shadertype,index,pname,values ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetActiveSubroutineUniformName( program,shadertype,index,bufsize,length,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetActiveSubroutineName( program,shadertype,index,bufsize,length,name ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray) def glUniformSubroutinesuiv( shadertype,count,indices ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,arrays.GLuintArray) def glGetUniformSubroutineuiv( shadertype,location,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetProgramStageiv( program,shadertype,pname,values ):pass def glInitShaderSubroutineARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/multitexture.py0000644000175000001440000001142712025001653022064 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_multitexture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_multitexture',False) _p.unpack_constants( """GL_TEXTURE0_ARB 0x84C0 GL_TEXTURE1_ARB 0x84C1 GL_TEXTURE2_ARB 0x84C2 GL_TEXTURE3_ARB 0x84C3 GL_TEXTURE4_ARB 0x84C4 GL_TEXTURE5_ARB 0x84C5 GL_TEXTURE6_ARB 0x84C6 GL_TEXTURE7_ARB 0x84C7 GL_TEXTURE8_ARB 0x84C8 GL_TEXTURE9_ARB 0x84C9 GL_TEXTURE10_ARB 0x84CA GL_TEXTURE11_ARB 0x84CB GL_TEXTURE12_ARB 0x84CC GL_TEXTURE13_ARB 0x84CD GL_TEXTURE14_ARB 0x84CE GL_TEXTURE15_ARB 0x84CF GL_TEXTURE16_ARB 0x84D0 GL_TEXTURE17_ARB 0x84D1 GL_TEXTURE18_ARB 0x84D2 GL_TEXTURE19_ARB 0x84D3 GL_TEXTURE20_ARB 0x84D4 GL_TEXTURE21_ARB 0x84D5 GL_TEXTURE22_ARB 0x84D6 GL_TEXTURE23_ARB 0x84D7 GL_TEXTURE24_ARB 0x84D8 GL_TEXTURE25_ARB 0x84D9 GL_TEXTURE26_ARB 0x84DA GL_TEXTURE27_ARB 0x84DB GL_TEXTURE28_ARB 0x84DC GL_TEXTURE29_ARB 0x84DD GL_TEXTURE30_ARB 0x84DE GL_TEXTURE31_ARB 0x84DF GL_ACTIVE_TEXTURE_ARB 0x84E0 GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 GL_MAX_TEXTURE_UNITS_ARB 0x84E2""", globals()) glget.addGLGetConstant( GL_ACTIVE_TEXTURE_ARB, (1,) ) glget.addGLGetConstant( GL_CLIENT_ACTIVE_TEXTURE_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_UNITS_ARB, (1,) ) @_f @_p.types(None,_cs.GLenum) def glActiveTextureARB( texture ):pass @_f @_p.types(None,_cs.GLenum) def glClientActiveTextureARB( texture ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble) def glMultiTexCoord1dARB( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord1dvARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glMultiTexCoord1fARB( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord1fvARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glMultiTexCoord1iARB( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord1ivARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort) def glMultiTexCoord1sARB( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord1svARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble) def glMultiTexCoord2dARB( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord2dvARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat) def glMultiTexCoord2fARB( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord2fvARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint) def glMultiTexCoord2iARB( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord2ivARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort) def glMultiTexCoord2sARB( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord2svARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMultiTexCoord3dARB( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord3dvARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glMultiTexCoord3fARB( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord3fvARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint) def glMultiTexCoord3iARB( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord3ivARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glMultiTexCoord3sARB( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord3svARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMultiTexCoord4dARB( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord4dvARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glMultiTexCoord4fARB( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord4fvARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glMultiTexCoord4iARB( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord4ivARB( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glMultiTexCoord4sARB( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord4svARB( target,v ):pass def glInitMultitextureARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/separate_shader_objects.py0000644000175000001440000002146212025001653024154 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_separate_shader_objects' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_separate_shader_objects',False) _p.unpack_constants( """GL_VERTEX_SHADER_BIT 0x1 GL_FRAGMENT_SHADER_BIT 0x2 GL_GEOMETRY_SHADER_BIT 0x4 GL_TESS_CONTROL_SHADER_BIT 0x8 GL_TESS_EVALUATION_SHADER_BIT 0x10 GL_ALL_SHADER_BITS 0xFFFFFFFF GL_PROGRAM_SEPARABLE 0x8258 GL_ACTIVE_PROGRAM 0x8259 GL_PROGRAM_PIPELINE_BINDING 0x825A""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLbitfield,_cs.GLuint) def glUseProgramStages( pipeline,stages,program ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glActiveShaderProgram( pipeline,program ):pass @_f @_p.types(_cs.GLuint,_cs.GLenum,_cs.GLsizei,ctypes.POINTER( ctypes.POINTER( _cs.GLchar ))) def glCreateShaderProgramv( type,count,strings ):pass @_f @_p.types(None,_cs.GLuint) def glBindProgramPipeline( pipeline ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteProgramPipelines( n,pipelines ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenProgramPipelines( n,pipelines ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsProgramPipeline( pipeline ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetProgramPipelineiv( pipeline,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint) def glProgramUniform1i( program,location,v0 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glProgramUniform1iv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLfloat) def glProgramUniform1f( program,location,v0 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glProgramUniform1fv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLdouble) def glProgramUniform1d( program,location,v0 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glProgramUniform1dv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint) def glProgramUniform1ui( program,location,v0 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glProgramUniform1uiv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint) def glProgramUniform2i( program,location,v0,v1 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glProgramUniform2iv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLfloat,_cs.GLfloat) def glProgramUniform2f( program,location,v0,v1 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glProgramUniform2fv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLdouble,_cs.GLdouble) def glProgramUniform2d( program,location,v0,v1 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glProgramUniform2dv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint,_cs.GLuint) def glProgramUniform2ui( program,location,v0,v1 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glProgramUniform2uiv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glProgramUniform3i( program,location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glProgramUniform3iv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glProgramUniform3f( program,location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glProgramUniform3fv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glProgramUniform3d( program,location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glProgramUniform3dv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glProgramUniform3ui( program,location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glProgramUniform3uiv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glProgramUniform4i( program,location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glProgramUniform4iv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glProgramUniform4f( program,location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glProgramUniform4fv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glProgramUniform4d( program,location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glProgramUniform4dv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glProgramUniform4ui( program,location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glProgramUniform4uiv( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix2fv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix3fv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix4fv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix2dv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix3dv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix4dv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix2x3fv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix3x2fv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix2x4fv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix4x2fv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix3x4fv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glProgramUniformMatrix4x3fv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix2x3dv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix3x2dv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix2x4dv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix4x2dv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix3x4dv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glProgramUniformMatrix4x3dv( program,location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint) def glValidateProgramPipeline( pipeline ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetProgramPipelineInfoLog( pipeline,bufSize,length,infoLog ):pass def glInitSeparateShaderObjectsARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/map_buffer_alignment.py0000644000175000001440000000067312025001653023456 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_map_buffer_alignment' _p.unpack_constants( """GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC""", globals()) def glInitMapBufferAlignmentARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/color_buffer_float.py0000644000175000001440000000176212025001653023146 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_color_buffer_float' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_color_buffer_float',False) _p.unpack_constants( """GL_RGBA_FLOAT_MODE_ARB 0x8820 GL_CLAMP_VERTEX_COLOR_ARB 0x891A GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B GL_CLAMP_READ_COLOR_ARB 0x891C GL_FIXED_ONLY_ARB 0x891D""", globals()) glget.addGLGetConstant( GL_RGBA_FLOAT_MODE_ARB, (1,) ) glget.addGLGetConstant( GL_CLAMP_VERTEX_COLOR_ARB, (1,) ) glget.addGLGetConstant( GL_CLAMP_FRAGMENT_COLOR_ARB, (1,) ) glget.addGLGetConstant( GL_CLAMP_READ_COLOR_ARB, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glClampColorARB( target,clamp ):pass def glInitColorBufferFloatARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/get_program_binary.py0000644000175000001440000000211112025001653023151 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_get_program_binary' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_get_program_binary',False) _p.unpack_constants( """GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 GL_PROGRAM_BINARY_LENGTH 0x8741 GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE GL_PROGRAM_BINARY_FORMATS 0x87FF""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLuintArray,ctypes.c_void_p) def glGetProgramBinary( program,bufSize,length,binaryFormat,binary ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,ctypes.c_void_p,_cs.GLsizei) def glProgramBinary( program,binaryFormat,binary,length ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint) def glProgramParameteri( program,pname,value ):pass def glInitGetProgramBinaryARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/geometry_shader4.py0000644000175000001440000000435112025001653022554 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_geometry_shader4' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_geometry_shader4',False) _p.unpack_constants( """GL_LINES_ADJACENCY_ARB 0xA GL_LINE_STRIP_ADJACENCY_ARB 0xB GL_TRIANGLES_ADJACENCY_ARB 0xC GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD GL_PROGRAM_POINT_SIZE_ARB 0x8642 GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 GL_GEOMETRY_SHADER_ARB 0x8DD9 GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1""", globals()) glget.addGLGetConstant( GL_PROGRAM_POINT_SIZE_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_VARYING_COMPONENTS_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB, (1,) ) @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint) def glProgramParameteriARB( program,pname,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint) def glFramebufferTextureARB( target,attachment,texture,level ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint) def glFramebufferTextureLayerARB( target,attachment,texture,level,layer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLenum) def glFramebufferTextureFaceARB( target,attachment,texture,level,face ):pass def glInitGeometryShader4ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shading_language_include.py0000644000175000001440000000271512025001653024274 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_shading_language_include' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_shading_language_include',False) _p.unpack_constants( """GL_SHADER_INCLUDE_ARB 0x8DAE GL_NAMED_STRING_LENGTH_ARB 0x8DE9 GL_NAMED_STRING_TYPE_ARB 0x8DEA""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLint,arrays.GLcharArray,_cs.GLint,arrays.GLcharArray) def glNamedStringARB( type,namelen,name,stringlen,string ):pass @_f @_p.types(None,_cs.GLint,arrays.GLcharArray) def glDeleteNamedStringARB( namelen,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,ctypes.POINTER( ctypes.POINTER( _cs.GLchar )),arrays.GLintArray) def glCompileShaderIncludeARB( shader,count,path,length ):pass @_f @_p.types(_cs.GLboolean,_cs.GLint,arrays.GLcharArray) def glIsNamedStringARB( namelen,name ):pass @_f @_p.types(None,_cs.GLint,arrays.GLcharArray,_cs.GLsizei,arrays.GLintArray,arrays.GLcharArray) def glGetNamedStringARB( namelen,name,bufSize,stringlen,string ):pass @_f @_p.types(None,_cs.GLint,arrays.GLcharArray,_cs.GLenum,arrays.GLintArray) def glGetNamedStringivARB( namelen,name,pname,params ):pass def glInitShadingLanguageIncludeARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/transform_feedback2.py0000644000175000001440000000233512025001653023210 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_transform_feedback2' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_transform_feedback2',False) _p.unpack_constants( """GL_TRANSFORM_FEEDBACK 0x8E22 GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 GL_TRANSFORM_FEEDBACK_BINDING 0x8E25""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindTransformFeedback( target,id ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteTransformFeedbacks( n,ids ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenTransformFeedbacks( n,ids ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsTransformFeedback( id ):pass @_f @_p.types(None,) def glPauseTransformFeedback( ):pass @_f @_p.types(None,) def glResumeTransformFeedback( ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glDrawTransformFeedback( mode,id ):pass def glInitTransformFeedback2ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/imaging.py0000644000175000001440000001036712031734150020730 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_imaging' _p.unpack_constants( """GL_CONSTANT_COLOR 0x8001 GL_ONE_MINUS_CONSTANT_COLOR 0x8002 GL_CONSTANT_ALPHA 0x8003 GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 GL_BLEND_COLOR 0x8005 GL_FUNC_ADD 0x8006 GL_MIN 0x8007 GL_MAX 0x8008 GL_BLEND_EQUATION 0x8009 GL_FUNC_SUBTRACT 0x800A GL_FUNC_REVERSE_SUBTRACT 0x800B GL_CONVOLUTION_1D 0x8010 GL_CONVOLUTION_2D 0x8011 GL_SEPARABLE_2D 0x8012 GL_CONVOLUTION_BORDER_MODE 0x8013 GL_CONVOLUTION_FILTER_SCALE 0x8014 GL_CONVOLUTION_FILTER_BIAS 0x8015 GL_REDUCE 0x8016 GL_CONVOLUTION_FORMAT 0x8017 GL_CONVOLUTION_WIDTH 0x8018 GL_CONVOLUTION_HEIGHT 0x8019 GL_MAX_CONVOLUTION_WIDTH 0x801A GL_MAX_CONVOLUTION_HEIGHT 0x801B GL_POST_CONVOLUTION_RED_SCALE 0x801C GL_POST_CONVOLUTION_GREEN_SCALE 0x801D GL_POST_CONVOLUTION_BLUE_SCALE 0x801E GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F GL_POST_CONVOLUTION_RED_BIAS 0x8020 GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 GL_HISTOGRAM 0x8024 GL_PROXY_HISTOGRAM 0x8025 GL_HISTOGRAM_WIDTH 0x8026 GL_HISTOGRAM_FORMAT 0x8027 GL_HISTOGRAM_RED_SIZE 0x8028 GL_HISTOGRAM_GREEN_SIZE 0x8029 GL_HISTOGRAM_BLUE_SIZE 0x802A GL_HISTOGRAM_ALPHA_SIZE 0x802B GL_HISTOGRAM_LUMINANCE_SIZE 0x802C GL_HISTOGRAM_SINK 0x802D GL_MINMAX 0x802E GL_MINMAX_FORMAT 0x802F GL_MINMAX_SINK 0x8030 GL_TABLE_TOO_LARGE 0x8031 GL_COLOR_MATRIX 0x80B1 GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB GL_COLOR_TABLE 0x80D0 GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 GL_PROXY_COLOR_TABLE 0x80D3 GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 GL_COLOR_TABLE_SCALE 0x80D6 GL_COLOR_TABLE_BIAS 0x80D7 GL_COLOR_TABLE_FORMAT 0x80D8 GL_COLOR_TABLE_WIDTH 0x80D9 GL_COLOR_TABLE_RED_SIZE 0x80DA GL_COLOR_TABLE_GREEN_SIZE 0x80DB GL_COLOR_TABLE_BLUE_SIZE 0x80DC GL_COLOR_TABLE_ALPHA_SIZE 0x80DD GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF GL_CONSTANT_BORDER 0x8151 GL_REPLICATE_BORDER 0x8153 GL_CONVOLUTION_BORDER_COLOR 0x8154""", globals()) glget.addGLGetConstant( GL_BLEND_COLOR, (4,) ) glget.addGLGetConstant( GL_CONVOLUTION_1D, (1,) ) glget.addGLGetConstant( GL_CONVOLUTION_2D, (1,) ) glget.addGLGetConstant( GL_SEPARABLE_2D, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_RED_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_GREEN_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_BLUE_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_ALPHA_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_RED_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_GREEN_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_BLUE_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_ALPHA_BIAS, (1,) ) glget.addGLGetConstant( GL_HISTOGRAM, (1,) ) glget.addGLGetConstant( GL_MINMAX, (1,) ) glget.addGLGetConstant( GL_COLOR_MATRIX, (4, 4) ) glget.addGLGetConstant( GL_COLOR_MATRIX_STACK_DEPTH, (1,) ) glget.addGLGetConstant( GL_MAX_COLOR_MATRIX_STACK_DEPTH, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_RED_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_GREEN_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_BLUE_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_ALPHA_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_RED_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_GREEN_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_BLUE_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_ALPHA_BIAS, (1,) ) glget.addGLGetConstant( GL_COLOR_TABLE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_COLOR_TABLE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_COLOR_TABLE, (1,) ) def glInitImagingARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_buffer_object.py0000644000175000001440000000221312025001653023661 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_texture_buffer_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_texture_buffer_object',False) _p.unpack_constants( """GL_TEXTURE_BUFFER_ARB 0x8C2A GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E""", globals()) glget.addGLGetConstant( GL_TEXTURE_BUFFER_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_BUFFER_SIZE_ARB, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BINDING_BUFFER_ARB, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BUFFER_FORMAT_ARB, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glTexBufferARB( target,internalformat,buffer ):pass def glInitTextureBufferObjectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_env_crossbar.py0000644000175000001440000000056212025001653023555 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_env_crossbar' def glInitTextureEnvCrossbarARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/map_buffer_range.py0000644000175000001440000000170512025001653022571 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_map_buffer_range' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_map_buffer_range',False) _p.unpack_constants( """GL_MAP_READ_BIT 0x1 GL_MAP_WRITE_BIT 0x2 GL_MAP_INVALIDATE_RANGE_BIT 0x4 GL_MAP_INVALIDATE_BUFFER_BIT 0x8 GL_MAP_FLUSH_EXPLICIT_BIT 0x10 GL_MAP_UNSYNCHRONIZED_BIT 0x20""", globals()) @_f @_p.types(ctypes.c_void_p,_cs.GLenum,_cs.GLintptr,_cs.GLsizeiptr,_cs.GLbitfield) def glMapBufferRange( target,offset,length,access ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLintptr,_cs.GLsizeiptr) def glFlushMappedBufferRange( target,offset,length ):pass def glInitMapBufferRangeARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_env_combine.py0000644000175000001440000000173012025001653023351 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_env_combine' _p.unpack_constants( """GL_COMBINE_ARB 0x8570 GL_COMBINE_RGB_ARB 0x8571 GL_COMBINE_ALPHA_ARB 0x8572 GL_SOURCE0_RGB_ARB 0x8580 GL_SOURCE1_RGB_ARB 0x8581 GL_SOURCE2_RGB_ARB 0x8582 GL_SOURCE0_ALPHA_ARB 0x8588 GL_SOURCE1_ALPHA_ARB 0x8589 GL_SOURCE2_ALPHA_ARB 0x858A GL_OPERAND0_RGB_ARB 0x8590 GL_OPERAND1_RGB_ARB 0x8591 GL_OPERAND2_RGB_ARB 0x8592 GL_OPERAND0_ALPHA_ARB 0x8598 GL_OPERAND1_ALPHA_ARB 0x8599 GL_OPERAND2_ALPHA_ARB 0x859A GL_RGB_SCALE_ARB 0x8573 GL_ADD_SIGNED_ARB 0x8574 GL_INTERPOLATE_ARB 0x8575 GL_SUBTRACT_ARB 0x84E7 GL_CONSTANT_ARB 0x8576 GL_PRIMARY_COLOR_ARB 0x8577 GL_PREVIOUS_ARB 0x8578""", globals()) def glInitTextureEnvCombineARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/sampler_objects.py0000644000175000001440000000377412025001653022473 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_sampler_objects' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_sampler_objects',False) _p.unpack_constants( """GL_SAMPLER_BINDING 0x8919""", globals()) @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenSamplers( count,samplers ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteSamplers( count,samplers ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsSampler( sampler ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glBindSampler( unit,sampler ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint) def glSamplerParameteri( sampler,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glSamplerParameteriv( sampler,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLfloat) def glSamplerParameterf( sampler,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glSamplerParameterfv( sampler,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glSamplerParameterIiv( sampler,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuintArray) def glSamplerParameterIuiv( sampler,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetSamplerParameteriv( sampler,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetSamplerParameterIiv( sampler,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetSamplerParameterfv( sampler,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuintArray) def glGetSamplerParameterIuiv( sampler,pname,params ):pass def glInitSamplerObjectsARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/transpose_matrix.py0000644000175000001440000000240312025001653022705 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_transpose_matrix' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_transpose_matrix',False) _p.unpack_constants( """GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6""", globals()) glget.addGLGetConstant( GL_TRANSPOSE_MODELVIEW_MATRIX_ARB, (4,4) ) glget.addGLGetConstant( GL_TRANSPOSE_PROJECTION_MATRIX_ARB, (4,4) ) glget.addGLGetConstant( GL_TRANSPOSE_TEXTURE_MATRIX_ARB, (4,4) ) glget.addGLGetConstant( GL_TRANSPOSE_COLOR_MATRIX_ARB, (4,4) ) @_f @_p.types(None,arrays.GLfloatArray) def glLoadTransposeMatrixfARB( m ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glLoadTransposeMatrixdARB( m ):pass @_f @_p.types(None,arrays.GLfloatArray) def glMultTransposeMatrixfARB( m ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glMultTransposeMatrixdARB( m ):pass def glInitTransposeMatrixARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/fragment_shader.py0000644000175000001440000000122712025001653022437 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_fragment_shader' _p.unpack_constants( """GL_FRAGMENT_SHADER_ARB 0x8B30 GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B""", globals()) glget.addGLGetConstant( GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB, (1,) ) glget.addGLGetConstant( GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB, (1,) ) def glInitFragmentShaderARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/vertex_buffer_object.py0000644000175000001440000000665012025001653023507 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_vertex_buffer_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_vertex_buffer_object',False) _p.unpack_constants( """GL_BUFFER_SIZE_ARB 0x8764 GL_BUFFER_USAGE_ARB 0x8765 GL_ARRAY_BUFFER_ARB 0x8892 GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 GL_ARRAY_BUFFER_BINDING_ARB 0x8894 GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F GL_READ_ONLY_ARB 0x88B8 GL_WRITE_ONLY_ARB 0x88B9 GL_READ_WRITE_ARB 0x88BA GL_BUFFER_ACCESS_ARB 0x88BB GL_BUFFER_MAPPED_ARB 0x88BC GL_BUFFER_MAP_POINTER_ARB 0x88BD GL_STREAM_DRAW_ARB 0x88E0 GL_STREAM_READ_ARB 0x88E1 GL_STREAM_COPY_ARB 0x88E2 GL_STATIC_DRAW_ARB 0x88E4 GL_STATIC_READ_ARB 0x88E5 GL_STATIC_COPY_ARB 0x88E6 GL_DYNAMIC_DRAW_ARB 0x88E8 GL_DYNAMIC_READ_ARB 0x88E9 GL_DYNAMIC_COPY_ARB 0x88EA""", globals()) glget.addGLGetConstant( GL_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_VERTEX_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_NORMAL_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_COLOR_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_INDEX_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB, (1,) ) glget.addGLGetConstant( GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindBufferARB( target,buffer ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteBuffersARB( n,buffers ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenBuffersARB( n,buffers ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsBufferARB( buffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizeiptrARB,ctypes.c_void_p,_cs.GLenum) def glBufferDataARB( target,size,data,usage ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLintptrARB,_cs.GLsizeiptrARB,ctypes.c_void_p) def glBufferSubDataARB( target,offset,size,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLintptrARB,_cs.GLsizeiptrARB,ctypes.c_void_p) def glGetBufferSubDataARB( target,offset,size,data ):pass @_f @_p.types(ctypes.c_void_p,_cs.GLenum,_cs.GLenum) def glMapBufferARB( target,access ):pass @_f @_p.types(_cs.GLboolean,_cs.GLenum) def glUnmapBufferARB( target ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetBufferParameterivARB( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLvoidpArray) def glGetBufferPointervARB( target,pname,params ):pass def glInitVertexBufferObjectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/invalidate_subdata.py0000644000175000001440000000244212025001653023131 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_invalidate_subdata' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_invalidate_subdata',False) @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei) def glInvalidateTexSubImage( texture,level,xoffset,yoffset,zoffset,width,height,depth ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint) def glInvalidateTexImage( texture,level ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr) def glInvalidateBufferSubData( buffer,offset,length ):pass @_f @_p.types(None,_cs.GLuint) def glInvalidateBufferData( buffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray) def glInvalidateFramebuffer( target,numAttachments,attachments ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glInvalidateSubFramebuffer( target,numAttachments,attachments,x,y,width,height ):pass def glInitInvalidateSubdataARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/sync.py0000644000175000001440000000304612025001653020263 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_sync' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_sync',False) _p.unpack_constants( """GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 GL_OBJECT_TYPE 0x9112 GL_SYNC_CONDITION 0x9113 GL_SYNC_STATUS 0x9114 GL_SYNC_FLAGS 0x9115 GL_SYNC_FENCE 0x9116 GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 GL_UNSIGNALED 0x9118 GL_SIGNALED 0x9119 GL_ALREADY_SIGNALED 0x911A GL_TIMEOUT_EXPIRED 0x911B GL_CONDITION_SATISFIED 0x911C GL_WAIT_FAILED 0x911D GL_SYNC_FLUSH_COMMANDS_BIT 0x1 GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF""", globals()) @_f @_p.types(_cs.GLsync,_cs.GLenum,_cs.GLbitfield) def glFenceSync( condition,flags ):pass @_f @_p.types(_cs.GLboolean,_cs.GLsync) def glIsSync( sync ):pass @_f @_p.types(None,_cs.GLsync) def glDeleteSync( sync ):pass @_f @_p.types(_cs.GLenum,_cs.GLsync,_cs.GLbitfield,_cs.GLuint64) def glClientWaitSync( sync,flags,timeout ):pass @_f @_p.types(None,_cs.GLsync,_cs.GLbitfield,_cs.GLuint64) def glWaitSync( sync,flags,timeout ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLint64Array) def glGetInteger64v( pname,params ):pass @_f @_p.types(None,_cs.GLsync,_cs.GLenum,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLintArray) def glGetSynciv( sync,pname,bufSize,length,values ):pass def glInitSyncARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/shading_language_420pack.py0000644000175000001440000000057212025001653024014 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_shading_language_420pack' def glInitShadingLanguage420PackARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/window_pos.py0000644000175000001440000000327412025001653021502 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_window_pos' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_window_pos',False) @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glWindowPos2dARB( x,y ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glWindowPos2dvARB( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glWindowPos2fARB( x,y ):pass @_f @_p.types(None,arrays.GLfloatArray) def glWindowPos2fvARB( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glWindowPos2iARB( x,y ):pass @_f @_p.types(None,arrays.GLintArray) def glWindowPos2ivARB( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort) def glWindowPos2sARB( x,y ):pass @_f @_p.types(None,arrays.GLshortArray) def glWindowPos2svARB( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glWindowPos3dARB( x,y,z ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glWindowPos3dvARB( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glWindowPos3fARB( x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray) def glWindowPos3fvARB( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glWindowPos3iARB( x,y,z ):pass @_f @_p.types(None,arrays.GLintArray) def glWindowPos3ivARB( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glWindowPos3sARB( x,y,z ):pass @_f @_p.types(None,arrays.GLshortArray) def glWindowPos3svARB( v ):pass def glInitWindowPosARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/instanced_arrays.py0000644000175000001440000000124212025001653022634 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_instanced_arrays' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_instanced_arrays',False) _p.unpack_constants( """GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glVertexAttribDivisorARB( index,divisor ):pass def glInitInstancedArraysARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/conservative_depth.py0000644000175000001440000000055712025001653023207 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_conservative_depth' def glInitConservativeDepthARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_view.py0000644000175000001440000000161612025001653022042 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_texture_view' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_texture_view',False) _p.unpack_constants( """GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC GL_TEXTURE_VIEW_MIN_LAYER 0x82DD GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glTextureView( texture,target,origtexture,internalformat,minlevel,numlevels,minlayer,numlayers ):pass def glInitTextureViewARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/compressed_texture_pixel_storage.py0000644000175000001440000000134712025001653026162 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_compressed_texture_pixel_storage' _p.unpack_constants( """GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E""", globals()) def glInitCompressedTexturePixelStorageARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/framebuffer_object_DEPRECATED.py0000644000175000001440000000076112025001653024602 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_framebuffer_object' _p.unpack_constants( """GL_INDEX 0x8222 GL_TEXTURE_LUMINANCE_TYPE 0x8C14 GL_TEXTURE_INTENSITY_TYPE 0x8C15""", globals()) def glInitFramebufferObjectDeprecatedARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/provoking_vertex.py0000644000175000001440000000155612025001653022726 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_provoking_vertex' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_provoking_vertex',False) _p.unpack_constants( """GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C GL_FIRST_VERTEX_CONVENTION 0x8E4D GL_LAST_VERTEX_CONVENTION 0x8E4E GL_PROVOKING_VERTEX 0x8E4F""", globals()) glget.addGLGetConstant( GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION, (1,) ) glget.addGLGetConstant( GL_PROVOKING_VERTEX, (1,) ) @_f @_p.types(None,_cs.GLenum) def glProvokingVertex( mode ):pass def glInitProvokingVertexARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/program_interface_query.py0000644000175000001440000000564412025001653024231 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_program_interface_query' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_program_interface_query',False) _p.unpack_constants( """GL_UNIFORM 0x92E1 GL_UNIFORM_BLOCK 0x92E2 GL_PROGRAM_INPUT 0x92E3 GL_PROGRAM_OUTPUT 0x92E4 GL_BUFFER_VARIABLE 0x92E5 GL_SHADER_STORAGE_BLOCK 0x92E6 GL_VERTEX_SUBROUTINE 0x92E8 GL_TESS_CONTROL_SUBROUTINE 0x92E9 GL_TESS_EVALUATION_SUBROUTINE 0x92EA GL_GEOMETRY_SUBROUTINE 0x92EB GL_FRAGMENT_SUBROUTINE 0x92EC GL_COMPUTE_SUBROUTINE 0x92ED GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 GL_ACTIVE_RESOURCES 0x92F5 GL_MAX_NAME_LENGTH 0x92F6 GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 GL_NAME_LENGTH 0x92F9 GL_TYPE 0x92FA GL_ARRAY_SIZE 0x92FB GL_OFFSET 0x92FC GL_BLOCK_INDEX 0x92FD GL_ARRAY_STRIDE 0x92FE GL_MATRIX_STRIDE 0x92FF GL_IS_ROW_MAJOR 0x9300 GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 GL_BUFFER_BINDING 0x9302 GL_BUFFER_DATA_SIZE 0x9303 GL_NUM_ACTIVE_VARIABLES 0x9304 GL_ACTIVE_VARIABLES 0x9305 GL_REFERENCED_BY_VERTEX_SHADER 0x9306 GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A GL_REFERENCED_BY_COMPUTE_SHADER 0x930B GL_TOP_LEVEL_ARRAY_SIZE 0x930C GL_TOP_LEVEL_ARRAY_STRIDE 0x930D GL_LOCATION 0x930E GL_LOCATION_INDEX 0x930F GL_IS_PER_PATCH 0x92E7""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetProgramInterfaceiv( program,programInterface,pname,params ):pass @_f @_p.types(_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLcharArray) def glGetProgramResourceIndex( program,programInterface,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetProgramResourceName( program,programInterface,index,bufSize,length,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLintArray) def glGetProgramResourceiv( program,programInterface,index,propCount,props,bufSize,length,params ):pass @_f @_p.types(_cs.GLint,_cs.GLuint,_cs.GLenum,arrays.GLcharArray) def glGetProgramResourceLocation( program,programInterface,name ):pass @_f @_p.types(_cs.GLint,_cs.GLuint,_cs.GLenum,arrays.GLcharArray) def glGetProgramResourceLocationIndex( program,programInterface,name ):pass def glInitProgramInterfaceQueryARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/transform_feedback_instanced.py0000644000175000001440000000144212025001653025154 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_transform_feedback_instanced' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_transform_feedback_instanced',False) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei) def glDrawTransformFeedbackInstanced( mode,id,instancecount ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLsizei) def glDrawTransformFeedbackStreamInstanced( mode,id,stream,instancecount ):pass def glInitTransformFeedbackInstancedARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/draw_indirect.py0000644000175000001440000000144612025001653022127 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_draw_indirect' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_draw_indirect',False) _p.unpack_constants( """GL_DRAW_INDIRECT_BUFFER 0x8F3F GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43""", globals()) @_f @_p.types(None,_cs.GLenum,ctypes.c_void_p) def glDrawArraysIndirect( mode,indirect ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glDrawElementsIndirect( mode,type,indirect ):pass def glInitDrawIndirectARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_cube_map_array.py0000644000175000001440000000130412025001653024033 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_cube_map_array' _p.unpack_constants( """GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F""", globals()) def glInitTextureCubeMapArrayARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/fragment_program.py0000644000175000001440000000227612025001653022645 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_fragment_program' _p.unpack_constants( """GL_FRAGMENT_PROGRAM_ARB 0x8804 GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 GL_MAX_TEXTURE_COORDS_ARB 0x8871 GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872""", globals()) glget.addGLGetConstant( GL_FRAGMENT_PROGRAM_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_COORDS_ARB, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_IMAGE_UNITS_ARB, (1,) ) def glInitFragmentProgramARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/gpu_shader_fp64.py0000644000175000001440000000572112025001653022271 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_gpu_shader_fp64' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_gpu_shader_fp64',False) _p.unpack_constants( """GL_DOUBLE_VEC2 0x8FFC GL_DOUBLE_VEC3 0x8FFD GL_DOUBLE_VEC4 0x8FFE GL_DOUBLE_MAT2 0x8F46 GL_DOUBLE_MAT3 0x8F47 GL_DOUBLE_MAT4 0x8F48 GL_DOUBLE_MAT2x3 0x8F49 GL_DOUBLE_MAT2x4 0x8F4A GL_DOUBLE_MAT3x2 0x8F4B GL_DOUBLE_MAT3x4 0x8F4C GL_DOUBLE_MAT4x2 0x8F4D GL_DOUBLE_MAT4x3 0x8F4E""", globals()) @_f @_p.types(None,_cs.GLint,_cs.GLdouble) def glUniform1d( location,x ):pass @_f @_p.types(None,_cs.GLint,_cs.GLdouble,_cs.GLdouble) def glUniform2d( location,x,y ):pass @_f @_p.types(None,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glUniform3d( location,x,y,z ):pass @_f @_p.types(None,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glUniform4d( location,x,y,z,w ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glUniform1dv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glUniform2dv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glUniform3dv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLdoubleArray) def glUniform4dv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glUniformMatrix2dv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glUniformMatrix3dv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glUniformMatrix4dv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glUniformMatrix2x3dv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glUniformMatrix2x4dv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glUniformMatrix3x2dv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glUniformMatrix3x4dv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glUniformMatrix4x2dv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLdoubleArray) def glUniformMatrix4x3dv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,arrays.GLdoubleArray) def glGetUniformdv( program,location,params ):pass def glInitGpuShaderFp64ARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_env_add.py0000644000175000001440000000055012025001653022464 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_env_add' def glInitTextureEnvAddARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/debug_label.py0000644000175000001440000000054112025001653021531 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_debug_label' def glInitDebugLabelARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/copy_image.py0000644000175000001440000000144612025001653021425 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_copy_image' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_copy_image',False) @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei) def glCopyImageSubData( srcName,srcTarget,srcLevel,srcX,srcY,srcZ,dstName,dstTarget,dstLevel,dstX,dstY,dstZ,srcWidth,srcHeight,srcDepth ):pass def glInitCopyImageARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_compression_rgtc.py0000644000175000001440000000105012025001653024440 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_texture_compression_rgtc' _p.unpack_constants( """GL_COMPRESSED_RED_RGTC1 0x8DBB GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC GL_COMPRESSED_RG_RGTC2 0x8DBD GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE""", globals()) def glInitTextureCompressionRgtcARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/vertex_attrib_binding.py0000644000175000001440000000470712025001653023670 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_vertex_attrib_binding' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_vertex_attrib_binding',False) _p.unpack_constants( """GL_VERTEX_ATTRIB_BINDING 0x82D4 GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 GL_VERTEX_BINDING_DIVISOR 0x82D6 GL_VERTEX_BINDING_OFFSET 0x82D7 GL_VERTEX_BINDING_STRIDE 0x82D8 GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLintptr,_cs.GLsizei) def glBindVertexBuffer( bindingindex,buffer,offset,stride ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLboolean,_cs.GLuint) def glVertexAttribFormat( attribindex,size,type,normalized,relativeoffset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLuint) def glVertexAttribIFormat( attribindex,size,type,relativeoffset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLuint) def glVertexAttribLFormat( attribindex,size,type,relativeoffset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glVertexAttribBinding( attribindex,bindingindex ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glVertexBindingDivisor( bindingindex,divisor ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLintptr,_cs.GLsizei) def glVertexArrayBindVertexBufferEXT( vaobj,bindingindex,buffer,offset,stride ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLboolean,_cs.GLuint) def glVertexArrayVertexAttribFormatEXT( vaobj,attribindex,size,type,normalized,relativeoffset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLuint) def glVertexArrayVertexAttribIFormatEXT( vaobj,attribindex,size,type,relativeoffset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLuint) def glVertexArrayVertexAttribLFormatEXT( vaobj,attribindex,size,type,relativeoffset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glVertexArrayVertexAttribBindingEXT( vaobj,attribindex,bindingindex ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glVertexArrayVertexBindingDivisorEXT( vaobj,bindingindex,divisor ):pass def glInitVertexAttribBindingARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/framebuffer_no_attachments.py0000644000175000001440000000254512025001653024665 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_framebuffer_no_attachments' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_framebuffer_no_attachments',False) _p.unpack_constants( """GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 GL_MAX_FRAMEBUFFER_WIDTH 0x9315 GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 GL_MAX_FRAMEBUFFER_LAYERS 0x9317 GL_MAX_FRAMEBUFFER_SAMPLES 0x9318""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glFramebufferParameteri( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetFramebufferParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint) def glNamedFramebufferParameteriEXT( framebuffer,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetNamedFramebufferParameterivEXT( framebuffer,pname,params ):pass def glInitFramebufferNoAttachmentsARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/imaging_DEPRECATED.py0000644000175000001440000000770412025001653022407 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ARB_imaging' _p.unpack_constants( """GL_CONVOLUTION_1D 0x8010 GL_CONVOLUTION_2D 0x8011 GL_SEPARABLE_2D 0x8012 GL_CONVOLUTION_BORDER_MODE 0x8013 GL_CONVOLUTION_FILTER_SCALE 0x8014 GL_CONVOLUTION_FILTER_BIAS 0x8015 GL_REDUCE 0x8016 GL_CONVOLUTION_FORMAT 0x8017 GL_CONVOLUTION_WIDTH 0x8018 GL_CONVOLUTION_HEIGHT 0x8019 GL_MAX_CONVOLUTION_WIDTH 0x801A GL_MAX_CONVOLUTION_HEIGHT 0x801B GL_POST_CONVOLUTION_RED_SCALE 0x801C GL_POST_CONVOLUTION_GREEN_SCALE 0x801D GL_POST_CONVOLUTION_BLUE_SCALE 0x801E GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F GL_POST_CONVOLUTION_RED_BIAS 0x8020 GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 GL_HISTOGRAM 0x8024 GL_PROXY_HISTOGRAM 0x8025 GL_HISTOGRAM_WIDTH 0x8026 GL_HISTOGRAM_FORMAT 0x8027 GL_HISTOGRAM_RED_SIZE 0x8028 GL_HISTOGRAM_GREEN_SIZE 0x8029 GL_HISTOGRAM_BLUE_SIZE 0x802A GL_HISTOGRAM_ALPHA_SIZE 0x802B GL_HISTOGRAM_LUMINANCE_SIZE 0x802C GL_HISTOGRAM_SINK 0x802D GL_MINMAX 0x802E GL_MINMAX_FORMAT 0x802F GL_MINMAX_SINK 0x8030 GL_TABLE_TOO_LARGE 0x8031 GL_COLOR_MATRIX 0x80B1 GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB GL_COLOR_TABLE 0x80D0 GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 GL_PROXY_COLOR_TABLE 0x80D3 GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 GL_COLOR_TABLE_SCALE 0x80D6 GL_COLOR_TABLE_BIAS 0x80D7 GL_COLOR_TABLE_FORMAT 0x80D8 GL_COLOR_TABLE_WIDTH 0x80D9 GL_COLOR_TABLE_RED_SIZE 0x80DA GL_COLOR_TABLE_GREEN_SIZE 0x80DB GL_COLOR_TABLE_BLUE_SIZE 0x80DC GL_COLOR_TABLE_ALPHA_SIZE 0x80DD GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF GL_CONSTANT_BORDER 0x8151 GL_REPLICATE_BORDER 0x8153 GL_CONVOLUTION_BORDER_COLOR 0x8154""", globals()) glget.addGLGetConstant( GL_CONVOLUTION_1D, (1,) ) glget.addGLGetConstant( GL_CONVOLUTION_2D, (1,) ) glget.addGLGetConstant( GL_SEPARABLE_2D, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_RED_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_GREEN_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_BLUE_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_ALPHA_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_RED_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_GREEN_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_BLUE_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_ALPHA_BIAS, (1,) ) glget.addGLGetConstant( GL_HISTOGRAM, (1,) ) glget.addGLGetConstant( GL_MINMAX, (1,) ) glget.addGLGetConstant( GL_COLOR_MATRIX, (4, 4) ) glget.addGLGetConstant( GL_COLOR_MATRIX_STACK_DEPTH, (1,) ) glget.addGLGetConstant( GL_MAX_COLOR_MATRIX_STACK_DEPTH, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_RED_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_GREEN_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_BLUE_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_ALPHA_SCALE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_RED_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_GREEN_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_BLUE_BIAS, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_ALPHA_BIAS, (1,) ) glget.addGLGetConstant( GL_COLOR_TABLE, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_COLOR_TABLE, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_COLOR_TABLE, (1,) ) def glInitImagingDeprecatedARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ARB/texture_compression.py0000644000175000001440000000504212025001653023426 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ARB_texture_compression' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ARB_texture_compression',False) _p.unpack_constants( """GL_COMPRESSED_ALPHA_ARB 0x84E9 GL_COMPRESSED_LUMINANCE_ARB 0x84EA GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB GL_COMPRESSED_INTENSITY_ARB 0x84EC GL_COMPRESSED_RGB_ARB 0x84ED GL_COMPRESSED_RGBA_ARB 0x84EE GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 GL_TEXTURE_COMPRESSED_ARB 0x86A1 GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3""", globals()) glget.addGLGetConstant( GL_TEXTURE_COMPRESSION_HINT_ARB, (1,) ) glget.addGLGetConstant( GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, (1,) ) glget.addGLGetConstant( GL_COMPRESSED_TEXTURE_FORMATS_ARB, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexImage3DARB( target,level,internalformat,width,height,depth,border,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexImage2DARB( target,level,internalformat,width,height,border,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexImage1DARB( target,level,internalformat,width,border,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexSubImage3DARB( target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexSubImage2DARB( target,level,xoffset,yoffset,width,height,format,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexSubImage1DARB( target,level,xoffset,width,format,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,ctypes.c_void_p) def glGetCompressedTexImageARB( target,level,img ):pass def glInitTextureCompressionARB(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/INTEL/0000755000175000001440000000000012032640120017175 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/INTEL/parallel_arrays.py0000644000175000001440000000235712025001653022737 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_INTEL_parallel_arrays' def _f( function ): return _p.createFunction( function,_p.GL,'GL_INTEL_parallel_arrays',False) _p.unpack_constants( """GL_PARALLEL_ARRAYS_INTEL 0x83F4 GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8""", globals()) glget.addGLGetConstant( GL_PARALLEL_ARRAYS_INTEL, (1,) ) @_f @_p.types(None,_cs.GLint,_cs.GLenum,arrays.GLvoidpArray) def glVertexPointervINTEL( size,type,pointer ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLvoidpArray) def glNormalPointervINTEL( type,pointer ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,arrays.GLvoidpArray) def glColorPointervINTEL( size,type,pointer ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,arrays.GLvoidpArray) def glTexCoordPointervINTEL( size,type,pointer ):pass def glInitParallelArraysINTEL(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/INTEL/__init__.py0000644000175000001440000000002712025001653021311 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/INTEL/texture_scissor.py0000644000175000001440000000055512025001653023025 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_INTEL_texture_scissor' def glInitTextureScissorINTEL(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/OML/0000755000175000001440000000000012032640120016751 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/OML/__init__.py0000644000175000001440000000002712025001653021065 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/OML/subsample.py0000644000175000001440000000072012025001653021321 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_OML_subsample' _p.unpack_constants( """GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983""", globals()) def glInitSubsampleOML(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/OML/interlace.py0000644000175000001440000000104012025001653021270 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_OML_interlace' _p.unpack_constants( """GL_INTERLACE_OML 0x8980 GL_INTERLACE_READ_OML 0x8981""", globals()) glget.addGLGetConstant( GL_INTERLACE_OML, (1,) ) glget.addGLGetConstant( GL_INTERLACE_READ_OML, (1,) ) def glInitInterlaceOML(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/OML/resample.py0000644000175000001440000000125112025001653021136 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_OML_resample' _p.unpack_constants( """GL_PACK_RESAMPLE_OML 0x8984 GL_UNPACK_RESAMPLE_OML 0x8985 GL_RESAMPLE_REPLICATE_OML 0x8986 GL_RESAMPLE_ZERO_FILL_OML 0x8987 GL_RESAMPLE_AVERAGE_OML 0x8988 GL_RESAMPLE_DECIMATE_OML 0x8989""", globals()) glget.addGLGetConstant( GL_PACK_RESAMPLE_OML, (1,) ) glget.addGLGetConstant( GL_UNPACK_RESAMPLE_OML, (1,) ) def glInitResampleOML(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/IBM/0000755000175000001440000000000012032640120016731 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/IBM/texture_mirrored_repeat.py0000644000175000001440000000067412025001653024261 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_IBM_texture_mirrored_repeat' _p.unpack_constants( """GL_MIRRORED_REPEAT_IBM 0x8370""", globals()) def glInitTextureMirroredRepeatIBM(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/IBM/__init__.py0000644000175000001440000000002712025001653021045 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/IBM/multimode_draw_arrays.py0000644000175000001440000000156512025001653023713 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_IBM_multimode_draw_arrays' def _f( function ): return _p.createFunction( function,_p.GL,'GL_IBM_multimode_draw_arrays',False) @_f @_p.types(None,arrays.GLuintArray,arrays.GLintArray,arrays.GLsizeiArray,_cs.GLsizei,_cs.GLint) def glMultiModeDrawArraysIBM( mode,first,count,primcount,modestride ):pass @_f @_p.types(None,arrays.GLuintArray,arrays.GLsizeiArray,_cs.GLenum,arrays.GLvoidpArray,_cs.GLsizei,_cs.GLint) def glMultiModeDrawElementsIBM( mode,count,type,indices,primcount,modestride ):pass def glInitMultimodeDrawArraysIBM(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/IBM/cull_vertex.py0000644000175000001440000000054112025001653021643 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_IBM_cull_vertex' def glInitCullVertexIBM(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/IBM/rasterpos_clip.py0000644000175000001440000000076712025001653022352 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_IBM_rasterpos_clip' _p.unpack_constants( """GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262""", globals()) glget.addGLGetConstant( GL_RASTER_POSITION_UNCLIPPED_IBM, (1,) ) def glInitRasterposClipIBM(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/IBM/vertex_array_lists.py0000644000175000001440000000316412025001653023244 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_IBM_vertex_array_lists' def _f( function ): return _p.createFunction( function,_p.GL,'GL_IBM_vertex_array_lists',False) @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLint,arrays.GLvoidpArray,_cs.GLint) def glColorPointerListIBM( size,type,stride,pointer,ptrstride ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLint,arrays.GLvoidpArray,_cs.GLint) def glSecondaryColorPointerListIBM( size,type,stride,pointer,ptrstride ):pass @_f @_p.types(None,_cs.GLint,arrays.GLbooleanArray,_cs.GLint) def glEdgeFlagPointerListIBM( stride,pointer,ptrstride ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,arrays.GLvoidpArray,_cs.GLint) def glFogCoordPointerListIBM( type,stride,pointer,ptrstride ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,arrays.GLvoidpArray,_cs.GLint) def glIndexPointerListIBM( type,stride,pointer,ptrstride ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,arrays.GLvoidpArray,_cs.GLint) def glNormalPointerListIBM( type,stride,pointer,ptrstride ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLint,arrays.GLvoidpArray,_cs.GLint) def glTexCoordPointerListIBM( size,type,stride,pointer,ptrstride ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLint,arrays.GLvoidpArray,_cs.GLint) def glVertexPointerListIBM( size,type,stride,pointer,ptrstride ):pass def glInitVertexArrayListsIBM(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/0000755000175000001440000000000012032640120016645 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texture_shader2.py0000644000175000001440000000066112025001653022336 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_texture_shader2' _p.unpack_constants( """GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF""", globals()) def glInitTextureShader2NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/conditional_render.py0000644000175000001440000000145412025001653023071 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_conditional_render' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_conditional_render',False) _p.unpack_constants( """GL_QUERY_WAIT_NV 0x8E13 GL_QUERY_NO_WAIT_NV 0x8E14 GL_QUERY_BY_REGION_WAIT_NV 0x8E15 GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glBeginConditionalRenderNV( id,mode ):pass @_f @_p.types(None,) def glEndConditionalRenderNV( ):pass def glInitConditionalRenderNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/present_video.py0000644000175000001440000000332512025001653022074 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_present_video' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_present_video',False) _p.unpack_constants( """GL_FRAME_NV 0x8E26 GL_FIELDS_NV 0x8E27 GL_CURRENT_TIME_NV 0x8E28 GL_NUM_FILL_STREAMS_NV 0x8E29 GL_PRESENT_TIME_NV 0x8E2A GL_PRESENT_DURATION_NV 0x8E2B""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint64EXT,_cs.GLuint,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLuint) def glPresentFrameKeyedNV( video_slot,minPresentTime,beginPresentTimeId,presentDurationId,type,target0,fill0,key0,target1,fill1,key1 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint64EXT,_cs.GLuint,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLenum,_cs.GLuint) def glPresentFrameDualFillNV( video_slot,minPresentTime,beginPresentTimeId,presentDurationId,type,target0,fill0,target1,fill1,target2,fill2,target3,fill3 ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVideoivNV( video_slot,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuintArray) def glGetVideouivNV( video_slot,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLint64Array) def glGetVideoi64vNV( video_slot,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuint64Array) def glGetVideoui64vNV( video_slot,pname,params ):pass def glInitPresentVideoNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texture_compression_vtc.py0000644000175000001440000000056612025001653024227 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_texture_compression_vtc' def glInitTextureCompressionVtcNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_program.py0000644000175000001440000003244612025001653022300 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_vertex_program' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_vertex_program',False) _p.unpack_constants( """GL_VERTEX_PROGRAM_NV 0x8620 GL_VERTEX_STATE_PROGRAM_NV 0x8621 GL_ATTRIB_ARRAY_SIZE_NV 0x8623 GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 GL_ATTRIB_ARRAY_TYPE_NV 0x8625 GL_CURRENT_ATTRIB_NV 0x8626 GL_PROGRAM_LENGTH_NV 0x8627 GL_PROGRAM_STRING_NV 0x8628 GL_MODELVIEW_PROJECTION_NV 0x8629 GL_IDENTITY_NV 0x862A GL_INVERSE_NV 0x862B GL_TRANSPOSE_NV 0x862C GL_INVERSE_TRANSPOSE_NV 0x862D GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E GL_MAX_TRACK_MATRICES_NV 0x862F GL_MATRIX0_NV 0x8630 GL_MATRIX1_NV 0x8631 GL_MATRIX2_NV 0x8632 GL_MATRIX3_NV 0x8633 GL_MATRIX4_NV 0x8634 GL_MATRIX5_NV 0x8635 GL_MATRIX6_NV 0x8636 GL_MATRIX7_NV 0x8637 GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 GL_CURRENT_MATRIX_NV 0x8641 GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 GL_PROGRAM_PARAMETER_NV 0x8644 GL_ATTRIB_ARRAY_POINTER_NV 0x8645 GL_PROGRAM_TARGET_NV 0x8646 GL_PROGRAM_RESIDENT_NV 0x8647 GL_TRACK_MATRIX_NV 0x8648 GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 GL_VERTEX_PROGRAM_BINDING_NV 0x864A GL_PROGRAM_ERROR_POSITION_NV 0x864B GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F""", globals()) glget.addGLGetConstant( GL_VERTEX_PROGRAM_NV, (1,) ) glget.addGLGetConstant( GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV, (1,) ) glget.addGLGetConstant( GL_MAX_TRACK_MATRICES_NV, (1,) ) glget.addGLGetConstant( GL_CURRENT_MATRIX_STACK_DEPTH_NV, (1,) ) glget.addGLGetConstant( GL_CURRENT_MATRIX_NV, (4, 4) ) glget.addGLGetConstant( GL_VERTEX_PROGRAM_POINT_SIZE_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_PROGRAM_TWO_SIDE_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_PROGRAM_BINDING_NV, (1,) ) glget.addGLGetConstant( GL_PROGRAM_ERROR_POSITION_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY0_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY1_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY2_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY3_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY4_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY5_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY6_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY7_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY8_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY9_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY10_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY11_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY12_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY13_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY14_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ATTRIB_ARRAY15_NV, (1,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB0_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB1_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB2_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB3_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB4_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB5_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB6_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB7_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB8_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB9_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB10_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB11_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB12_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB13_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB14_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP1_VERTEX_ATTRIB15_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB0_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB1_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB2_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB3_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB4_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB5_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB6_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB7_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB8_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB9_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB10_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB11_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB12_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB13_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB14_4_NV, (4,) ) glget.addGLGetConstant( GL_MAP2_VERTEX_ATTRIB15_4_NV, (4,) ) @_f @_p.types(_cs.GLboolean,_cs.GLsizei,arrays.GLuintArray,arrays.GLbooleanArray) def glAreProgramsResidentNV( n,programs,residences ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindProgramNV( target,id ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteProgramsNV( n,programs ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glExecuteProgramNV( target,id,params ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenProgramsNV( n,programs ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,arrays.GLdoubleArray) def glGetProgramParameterdvNV( target,index,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetProgramParameterfvNV( target,index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetProgramivNV( id,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLubyteArray) def glGetProgramStringNV( id,pname,program ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetTrackMatrixivNV( target,address,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLdoubleArray) def glGetVertexAttribdvNV( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetVertexAttribfvNV( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVertexAttribivNV( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLvoidpArray) def glGetVertexAttribPointervNV( index,pname,pointer ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsProgramNV( id ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLubyteArray) def glLoadProgramNV( target,id,len,program ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glProgramParameter4dNV( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLdoubleArray) def glProgramParameter4dvNV( target,index,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glProgramParameter4fNV( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glProgramParameter4fvNV( target,index,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLdoubleArray) def glProgramParameters4dvNV( target,index,count,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glProgramParameters4fvNV( target,index,count,v ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glRequestResidentProgramsNV( n,programs ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,_cs.GLenum) def glTrackMatrixNV( target,address,matrix,transform ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glVertexAttribPointerNV( index,fsize,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble) def glVertexAttrib1dNV( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib1dvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat) def glVertexAttrib1fNV( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib1fvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort) def glVertexAttrib1sNV( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib1svNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble) def glVertexAttrib2dNV( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib2dvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat) def glVertexAttrib2fNV( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib2fvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort,_cs.GLshort) def glVertexAttrib2sNV( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib2svNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttrib3dNV( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib3dvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertexAttrib3fNV( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib3fvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertexAttrib3sNV( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib3svNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttrib4dNV( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib4dvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertexAttrib4fNV( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib4fvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertexAttrib4sNV( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib4svNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte) def glVertexAttrib4ubNV( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLubyteArray) def glVertexAttrib4ubvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLdoubleArray) def glVertexAttribs1dvNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glVertexAttribs1fvNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLshortArray) def glVertexAttribs1svNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLdoubleArray) def glVertexAttribs2dvNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glVertexAttribs2fvNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLshortArray) def glVertexAttribs2svNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLdoubleArray) def glVertexAttribs3dvNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glVertexAttribs3fvNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLshortArray) def glVertexAttribs3svNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLdoubleArray) def glVertexAttribs4dvNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glVertexAttribs4fvNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLshortArray) def glVertexAttribs4svNV( index,count,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLubyteArray) def glVertexAttribs4ubvNV( index,count,v ):pass def glInitVertexProgramNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/pixel_data_range.py0000644000175000001440000000211312025001653022506 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_pixel_data_range' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_pixel_data_range',False) _p.unpack_constants( """GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 GL_READ_PIXEL_DATA_RANGE_NV 0x8879 GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D""", globals()) glget.addGLGetConstant( GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV, (1,) ) glget.addGLGetConstant( GL_READ_PIXEL_DATA_RANGE_LENGTH_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glPixelDataRangeNV( target,length,pointer ):pass @_f @_p.types(None,_cs.GLenum) def glFlushPixelDataRangeNV( target ):pass def glInitPixelDataRangeNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/parameter_buffer_object2.py0000644000175000001440000000057012025001653024146 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_parameter_buffer_object2' def glInitParameterBufferObject2NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/depth_buffer_float.py0000644000175000001440000000163212025001653023047 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_depth_buffer_float' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_depth_buffer_float',False) _p.unpack_constants( """GL_DEPTH_COMPONENT32F_NV 0x8DAB GL_DEPTH32F_STENCIL8_NV 0x8DAC GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF""", globals()) @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glDepthRangedNV( zNear,zFar ):pass @_f @_p.types(None,_cs.GLdouble) def glClearDepthdNV( depth ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glDepthBoundsdNV( zmin,zmax ):pass def glInitDepthBufferFloatNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/blend_square.py0000644000175000001440000000054112025001653021667 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_blend_square' def glInitBlendSquareNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_program2.py0000644000175000001440000000054712025001653022357 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_vertex_program2' def glInitVertexProgram2NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/evaluators.py0000644000175000001440000000711112025001653021410 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_evaluators' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_evaluators',False) _p.unpack_constants( """GL_EVAL_2D_NV 0x86C0 GL_EVAL_TRIANGULAR_2D_NV 0x86C1 GL_MAP_TESSELLATION_NV 0x86C2 GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 GL_MAX_MAP_TESSELLATION_NV 0x86D6 GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7""", globals()) glget.addGLGetConstant( GL_EVAL_FRACTIONAL_TESSELLATION_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB0_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB1_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB2_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB3_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB4_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB5_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB6_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB7_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB8_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB9_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB10_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB11_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB12_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB13_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB14_NV, (1,) ) glget.addGLGetConstant( GL_EVAL_VERTEX_ATTRIB15_NV, (1,) ) glget.addGLGetConstant( GL_MAX_MAP_TESSELLATION_NV, (1,) ) glget.addGLGetConstant( GL_MAX_RATIONAL_EVAL_ORDER_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLint,_cs.GLboolean,ctypes.c_void_p) def glMapControlPointsNV( target,index,type,ustride,vstride,uorder,vorder,packed,points ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glMapParameterivNV( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glMapParameterfvNV( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean,ctypes.c_void_p) def glGetMapControlPointsNV( target,index,type,ustride,vstride,packed,points ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMapParameterivNV( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetMapParameterfvNV( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetMapAttribParameterivNV( target,index,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetMapAttribParameterfvNV( target,index,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glEvalMapsNV( target,mode ):pass def glInitEvaluatorsNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/gpu_shader5.py0000644000175000001440000001241212025001653021431 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_gpu_shader5' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_gpu_shader5',False) _p.unpack_constants( """GL_INT64_NV 0x140E GL_UNSIGNED_INT64_NV 0x140F GL_INT8_NV 0x8FE0 GL_INT8_VEC2_NV 0x8FE1 GL_INT8_VEC3_NV 0x8FE2 GL_INT8_VEC4_NV 0x8FE3 GL_INT16_NV 0x8FE4 GL_INT16_VEC2_NV 0x8FE5 GL_INT16_VEC3_NV 0x8FE6 GL_INT16_VEC4_NV 0x8FE7 GL_INT64_VEC2_NV 0x8FE9 GL_INT64_VEC3_NV 0x8FEA GL_INT64_VEC4_NV 0x8FEB GL_UNSIGNED_INT8_NV 0x8FEC GL_UNSIGNED_INT8_VEC2_NV 0x8FED GL_UNSIGNED_INT8_VEC3_NV 0x8FEE GL_UNSIGNED_INT8_VEC4_NV 0x8FEF GL_UNSIGNED_INT16_NV 0x8FF0 GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 GL_FLOAT16_NV 0x8FF8 GL_FLOAT16_VEC2_NV 0x8FF9 GL_FLOAT16_VEC3_NV 0x8FFA GL_FLOAT16_VEC4_NV 0x8FFB""", globals()) @_f @_p.types(None,_cs.GLint,_cs.GLint64EXT) def glUniform1i64NV( location,x ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint64EXT,_cs.GLint64EXT) def glUniform2i64NV( location,x,y ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint64EXT,_cs.GLint64EXT,_cs.GLint64EXT) def glUniform3i64NV( location,x,y,z ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint64EXT,_cs.GLint64EXT,_cs.GLint64EXT,_cs.GLint64EXT) def glUniform4i64NV( location,x,y,z,w ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLint64Array) def glUniform1i64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLint64Array) def glUniform2i64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLint64Array) def glUniform3i64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLint64Array) def glUniform4i64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint64EXT) def glUniform1ui64NV( location,x ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint64EXT,_cs.GLuint64EXT) def glUniform2ui64NV( location,x,y ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint64EXT,_cs.GLuint64EXT,_cs.GLuint64EXT) def glUniform3ui64NV( location,x,y,z ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint64EXT,_cs.GLuint64EXT,_cs.GLuint64EXT,_cs.GLuint64EXT) def glUniform4ui64NV( location,x,y,z,w ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glUniform1ui64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glUniform2ui64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glUniform3ui64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glUniform4ui64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,arrays.GLint64Array) def glGetUniformi64vNV( program,location,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint64EXT) def glProgramUniform1i64NV( program,location,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint64EXT,_cs.GLint64EXT) def glProgramUniform2i64NV( program,location,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint64EXT,_cs.GLint64EXT,_cs.GLint64EXT) def glProgramUniform3i64NV( program,location,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint64EXT,_cs.GLint64EXT,_cs.GLint64EXT,_cs.GLint64EXT) def glProgramUniform4i64NV( program,location,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLint64Array) def glProgramUniform1i64vNV( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLint64Array) def glProgramUniform2i64vNV( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLint64Array) def glProgramUniform3i64vNV( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLint64Array) def glProgramUniform4i64vNV( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint64EXT) def glProgramUniform1ui64NV( program,location,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint64EXT,_cs.GLuint64EXT) def glProgramUniform2ui64NV( program,location,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint64EXT,_cs.GLuint64EXT,_cs.GLuint64EXT) def glProgramUniform3ui64NV( program,location,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint64EXT,_cs.GLuint64EXT,_cs.GLuint64EXT,_cs.GLuint64EXT) def glProgramUniform4ui64NV( program,location,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glProgramUniform1ui64vNV( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glProgramUniform2ui64vNV( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glProgramUniform3ui64vNV( program,location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glProgramUniform4ui64vNV( program,location,count,value ):pass def glInitGpuShader5NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texture_barrier.py0000644000175000001440000000104412025001653022430 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_texture_barrier' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_texture_barrier',False) @_f @_p.types(None,) def glTextureBarrierNV( ):pass def glInitTextureBarrierNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/parameter_buffer_object.py0000644000175000001440000000247712025001653024074 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_parameter_buffer_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_parameter_buffer_object',False) _p.unpack_constants( """GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4""", globals()) glget.addGLGetConstant( GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glProgramBufferParametersfvNV( target,buffer,index,count,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLintArray) def glProgramBufferParametersIivNV( target,buffer,index,count,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray) def glProgramBufferParametersIuivNV( target,buffer,index,count,params ):pass def glInitParameterBufferObjectNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texture_env_combine4.py0000644000175000001440000000102612025001653023352 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_texture_env_combine4' _p.unpack_constants( """GL_COMBINE4_NV 0x8503 GL_SOURCE3_RGB_NV 0x8583 GL_SOURCE3_ALPHA_NV 0x858B GL_OPERAND3_RGB_NV 0x8593 GL_OPERAND3_ALPHA_NV 0x859B""", globals()) def glInitTextureEnvCombine4NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/fog_distance.py0000644000175000001440000000102612025001653021647 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_fog_distance' _p.unpack_constants( """GL_FOG_DISTANCE_MODE_NV 0x855A GL_EYE_RADIAL_NV 0x855B GL_EYE_PLANE_ABSOLUTE_NV 0x855C""", globals()) glget.addGLGetConstant( GL_FOG_DISTANCE_MODE_NV, (1,) ) def glInitFogDistanceNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/multisample_coverage.py0000644000175000001440000000072012025001653023431 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_multisample_coverage' _p.unpack_constants( """GL_COVERAGE_SAMPLES_NV 0x80A9 GL_COLOR_SAMPLES_NV 0x8E20""", globals()) def glInitMultisampleCoverageNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/occlusion_query.py0000644000175000001440000000257412025001653022456 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_occlusion_query' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_occlusion_query',False) _p.unpack_constants( """GL_PIXEL_COUNTER_BITS_NV 0x8864 GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 GL_PIXEL_COUNT_NV 0x8866 GL_PIXEL_COUNT_AVAILABLE_NV 0x8867""", globals()) glget.addGLGetConstant( GL_PIXEL_COUNTER_BITS_NV, (1,) ) glget.addGLGetConstant( GL_CURRENT_OCCLUSION_QUERY_ID_NV, (1,) ) @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenOcclusionQueriesNV( n,ids ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteOcclusionQueriesNV( n,ids ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsOcclusionQueryNV( id ):pass @_f @_p.types(None,_cs.GLuint) def glBeginOcclusionQueryNV( id ):pass @_f @_p.types(None,) def glEndOcclusionQueryNV( ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetOcclusionQueryivNV( id,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuintArray) def glGetOcclusionQueryuivNV( id,pname,params ):pass def glInitOcclusionQueryNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_program1_1.py0000644000175000001440000000055212025001653022572 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_vertex_program1_1' def glInitVertexProgram11NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/__init__.py0000644000175000001440000000002712025001653020761 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/NV/float_buffer.py0000644000175000001440000000160112025001653021657 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_float_buffer' _p.unpack_constants( """GL_FLOAT_R_NV 0x8880 GL_FLOAT_RG_NV 0x8881 GL_FLOAT_RGB_NV 0x8882 GL_FLOAT_RGBA_NV 0x8883 GL_FLOAT_R16_NV 0x8884 GL_FLOAT_R32_NV 0x8885 GL_FLOAT_RG16_NV 0x8886 GL_FLOAT_RG32_NV 0x8887 GL_FLOAT_RGB16_NV 0x8888 GL_FLOAT_RGB32_NV 0x8889 GL_FLOAT_RGBA16_NV 0x888A GL_FLOAT_RGBA32_NV 0x888B GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D GL_FLOAT_RGBA_MODE_NV 0x888E""", globals()) glget.addGLGetConstant( GL_FLOAT_CLEAR_COLOR_VALUE_NV, (4,) ) glget.addGLGetConstant( GL_FLOAT_RGBA_MODE_NV, (1,) ) def glInitFloatBufferNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_program3.py0000644000175000001440000000054712025001653022360 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_vertex_program3' def glInitVertexProgram3NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_array_range2.py0000644000175000001440000000070212025001653023173 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_vertex_array_range2' _p.unpack_constants( """GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533""", globals()) def glInitVertexArrayRange2NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/shader_buffer_store.py0000644000175000001440000000070012025001653023233 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_shader_buffer_store' _p.unpack_constants( """GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x10""", globals()) def glInitShaderBufferStoreNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/transform_feedback.py0000644000175000001440000000602212031734277023056 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_transform_feedback' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_transform_feedback',False) _p.unpack_constants( """GL_BACK_PRIMARY_COLOR_NV 0x8C77 GL_BACK_SECONDARY_COLOR_NV 0x8C78 GL_TEXTURE_COORD_NV 0x8C79 GL_CLIP_DISTANCE_NV 0x8C7A GL_VERTEX_ID_NV 0x8C7B GL_PRIMITIVE_ID_NV 0x8C7C GL_GENERIC_ATTRIB_NV 0x8C7D GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 GL_ACTIVE_VARYINGS_NV 0x8C81 GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 GL_PRIMITIVES_GENERATED_NV 0x8C87 GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 GL_RASTERIZER_DISCARD_NV 0x8C89 GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B GL_INTERLEAVED_ATTRIBS_NV 0x8C8C GL_SEPARATE_ATTRIBS_NV 0x8C8D GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F GL_LAYER_NV 0x8DAA""", globals()) glget.addGLGetConstant( GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV, (1,) ) @_f @_p.types(None,_cs.GLenum) def glBeginTransformFeedbackNV( primitiveMode ):pass @_f @_p.types(None,) def glEndTransformFeedbackNV( ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray,_cs.GLenum) def glTransformFeedbackAttribsNV( count,attribs,bufferMode ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr) def glBindBufferRangeNV( target,index,buffer,offset,size ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLintptr) def glBindBufferOffsetNV( target,index,buffer,offset ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint) def glBindBufferBaseNV( target,index,buffer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLintArray,_cs.GLenum) def glTransformFeedbackVaryingsNV( program,count,locations,bufferMode ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLcharArray) def glActiveVaryingNV( program,name ):pass @_f @_p.types(_cs.GLint,_cs.GLuint,arrays.GLcharArray) def glGetVaryingLocationNV( program,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLsizeiArray,arrays.GLuintArray,arrays.GLcharArray) def glGetActiveVaryingNV( program,index,bufSize,length,size,type,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,arrays.GLintArray) def glGetTransformFeedbackVaryingNV( program,index,location ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLintArray,_cs.GLsizei,arrays.GLintArray,_cs.GLenum) def glTransformFeedbackStreamAttribsNV( count,attribs,nbuffers,bufstreams,bufferMode ):pass def glInitTransformFeedbackNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_program2_option.py0000644000175000001440000000056412025001653023746 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_vertex_program2_option' def glInitVertexProgram2OptionNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/explicit_multisample.py0000644000175000001440000000261112025001653023460 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_explicit_multisample' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_explicit_multisample',False) _p.unpack_constants( """GL_SAMPLE_POSITION_NV 0x8E50 GL_SAMPLE_MASK_NV 0x8E51 GL_SAMPLE_MASK_VALUE_NV 0x8E52 GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 GL_TEXTURE_RENDERBUFFER_NV 0x8E55 GL_SAMPLER_RENDERBUFFER_NV 0x8E56 GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59""", globals()) glget.addGLGetConstant( GL_TEXTURE_BINDING_RENDERBUFFER_NV, (1,) ) glget.addGLGetConstant( GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV, (1,) ) glget.addGLGetConstant( GL_MAX_SAMPLE_MASK_WORDS_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glGetMultisamplefvNV( pname,index,val ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLbitfield) def glSampleMaskIndexedNV( index,mask ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glTexRenderbufferNV( target,renderbuffer ):pass def glInitExplicitMultisampleNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texture_shader.py0000644000175000001440000000611612025001653022255 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_texture_shader' _p.unpack_constants( """GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB GL_DSDT_MAG_INTENSITY_NV 0x86DC GL_SHADER_CONSISTENT_NV 0x86DD GL_TEXTURE_SHADER_NV 0x86DE GL_SHADER_OPERATION_NV 0x86DF GL_CULL_MODES_NV 0x86E0 GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 GL_CONST_EYE_NV 0x86E5 GL_PASS_THROUGH_NV 0x86E6 GL_CULL_FRAGMENT_NV 0x86E7 GL_OFFSET_TEXTURE_2D_NV 0x86E8 GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA GL_DOT_PRODUCT_NV 0x86EC GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 GL_HILO_NV 0x86F4 GL_DSDT_NV 0x86F5 GL_DSDT_MAG_NV 0x86F6 GL_DSDT_MAG_VIB_NV 0x86F7 GL_HILO16_NV 0x86F8 GL_SIGNED_HILO_NV 0x86F9 GL_SIGNED_HILO16_NV 0x86FA GL_SIGNED_RGBA_NV 0x86FB GL_SIGNED_RGBA8_NV 0x86FC GL_SIGNED_RGB_NV 0x86FE GL_SIGNED_RGB8_NV 0x86FF GL_SIGNED_LUMINANCE_NV 0x8701 GL_SIGNED_LUMINANCE8_NV 0x8702 GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 GL_SIGNED_ALPHA_NV 0x8705 GL_SIGNED_ALPHA8_NV 0x8706 GL_SIGNED_INTENSITY_NV 0x8707 GL_SIGNED_INTENSITY8_NV 0x8708 GL_DSDT8_NV 0x8709 GL_DSDT8_MAG8_NV 0x870A GL_DSDT8_MAG8_INTENSITY8_NV 0x870B GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D GL_HI_SCALE_NV 0x870E GL_LO_SCALE_NV 0x870F GL_DS_SCALE_NV 0x8710 GL_DT_SCALE_NV 0x8711 GL_MAGNITUDE_SCALE_NV 0x8712 GL_VIBRANCE_SCALE_NV 0x8713 GL_HI_BIAS_NV 0x8714 GL_LO_BIAS_NV 0x8715 GL_DS_BIAS_NV 0x8716 GL_DT_BIAS_NV 0x8717 GL_MAGNITUDE_BIAS_NV 0x8718 GL_VIBRANCE_BIAS_NV 0x8719 GL_TEXTURE_BORDER_VALUES_NV 0x871A GL_TEXTURE_HI_SIZE_NV 0x871B GL_TEXTURE_LO_SIZE_NV 0x871C GL_TEXTURE_DS_SIZE_NV 0x871D GL_TEXTURE_DT_SIZE_NV 0x871E GL_TEXTURE_MAG_SIZE_NV 0x871F""", globals()) glget.addGLGetConstant( GL_TEXTURE_SHADER_NV, (1,) ) glget.addGLGetConstant( GL_HI_SCALE_NV, (1,) ) glget.addGLGetConstant( GL_LO_SCALE_NV, (1,) ) glget.addGLGetConstant( GL_DS_SCALE_NV, (1,) ) glget.addGLGetConstant( GL_DT_SCALE_NV, (1,) ) glget.addGLGetConstant( GL_MAGNITUDE_SCALE_NV, (1,) ) glget.addGLGetConstant( GL_VIBRANCE_SCALE_NV, (1,) ) glget.addGLGetConstant( GL_HI_BIAS_NV, (1,) ) glget.addGLGetConstant( GL_LO_BIAS_NV, (1,) ) glget.addGLGetConstant( GL_DS_BIAS_NV, (1,) ) glget.addGLGetConstant( GL_DT_BIAS_NV, (1,) ) glget.addGLGetConstant( GL_MAGNITUDE_BIAS_NV, (1,) ) glget.addGLGetConstant( GL_VIBRANCE_BIAS_NV, (1,) ) def glInitTextureShaderNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/shader_atomic_float.py0000644000175000001440000000055612025001653023220 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_shader_atomic_float' def glInitShaderAtomicFloatNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/half_float.py0000644000175000001440000001104612025001653021324 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_half_float' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_half_float',False) _p.unpack_constants( """GL_HALF_FLOAT_NV 0x140B""", globals()) @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV) def glVertex2hNV( x,y ):pass @_f @_p.types(None,arrays.GLushortArray) def glVertex2hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glVertex3hNV( x,y,z ):pass @_f @_p.types(None,arrays.GLushortArray) def glVertex3hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glVertex4hNV( x,y,z,w ):pass @_f @_p.types(None,arrays.GLushortArray) def glVertex4hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glNormal3hNV( nx,ny,nz ):pass @_f @_p.types(None,arrays.GLushortArray) def glNormal3hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glColor3hNV( red,green,blue ):pass @_f @_p.types(None,arrays.GLushortArray) def glColor3hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glColor4hNV( red,green,blue,alpha ):pass @_f @_p.types(None,arrays.GLushortArray) def glColor4hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV) def glTexCoord1hNV( s ):pass @_f @_p.types(None,arrays.GLushortArray) def glTexCoord1hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV) def glTexCoord2hNV( s,t ):pass @_f @_p.types(None,arrays.GLushortArray) def glTexCoord2hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glTexCoord3hNV( s,t,r ):pass @_f @_p.types(None,arrays.GLushortArray) def glTexCoord3hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glTexCoord4hNV( s,t,r,q ):pass @_f @_p.types(None,arrays.GLushortArray) def glTexCoord4hvNV( v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLhalfNV) def glMultiTexCoord1hNV( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLushortArray) def glMultiTexCoord1hvNV( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLhalfNV,_cs.GLhalfNV) def glMultiTexCoord2hNV( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLushortArray) def glMultiTexCoord2hvNV( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glMultiTexCoord3hNV( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLushortArray) def glMultiTexCoord3hvNV( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glMultiTexCoord4hNV( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLushortArray) def glMultiTexCoord4hvNV( target,v ):pass @_f @_p.types(None,_cs.GLhalfNV) def glFogCoordhNV( fog ):pass @_f @_p.types(None,arrays.GLushortArray) def glFogCoordhvNV( fog ):pass @_f @_p.types(None,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glSecondaryColor3hNV( red,green,blue ):pass @_f @_p.types(None,arrays.GLushortArray) def glSecondaryColor3hvNV( v ):pass @_f @_p.types(None,_cs.GLhalfNV) def glVertexWeighthNV( weight ):pass @_f @_p.types(None,arrays.GLushortArray) def glVertexWeighthvNV( weight ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLhalfNV) def glVertexAttrib1hNV( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttrib1hvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLhalfNV,_cs.GLhalfNV) def glVertexAttrib2hNV( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttrib2hvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glVertexAttrib3hNV( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttrib3hvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV,_cs.GLhalfNV) def glVertexAttrib4hNV( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttrib4hvNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLushortArray) def glVertexAttribs1hvNV( index,n,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLushortArray) def glVertexAttribs2hvNV( index,n,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLushortArray) def glVertexAttribs3hvNV( index,n,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLushortArray) def glVertexAttribs4hvNV( index,n,v ):pass def glInitHalfFloatNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/register_combiners.py0000644000175000001440000000765712025001653023127 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_register_combiners' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_register_combiners',False) _p.unpack_constants( """GL_REGISTER_COMBINERS_NV 0x8522 GL_VARIABLE_A_NV 0x8523 GL_VARIABLE_B_NV 0x8524 GL_VARIABLE_C_NV 0x8525 GL_VARIABLE_D_NV 0x8526 GL_VARIABLE_E_NV 0x8527 GL_VARIABLE_F_NV 0x8528 GL_VARIABLE_G_NV 0x8529 GL_CONSTANT_COLOR0_NV 0x852A GL_CONSTANT_COLOR1_NV 0x852B GL_PRIMARY_COLOR_NV 0x852C GL_SECONDARY_COLOR_NV 0x852D GL_SPARE0_NV 0x852E GL_SPARE1_NV 0x852F GL_DISCARD_NV 0x8530 GL_E_TIMES_F_NV 0x8531 GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 GL_UNSIGNED_IDENTITY_NV 0x8536 GL_UNSIGNED_INVERT_NV 0x8537 GL_EXPAND_NORMAL_NV 0x8538 GL_EXPAND_NEGATE_NV 0x8539 GL_HALF_BIAS_NORMAL_NV 0x853A GL_HALF_BIAS_NEGATE_NV 0x853B GL_SIGNED_IDENTITY_NV 0x853C GL_SIGNED_NEGATE_NV 0x853D GL_SCALE_BY_TWO_NV 0x853E GL_SCALE_BY_FOUR_NV 0x853F GL_SCALE_BY_ONE_HALF_NV 0x8540 GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 GL_COMBINER_INPUT_NV 0x8542 GL_COMBINER_MAPPING_NV 0x8543 GL_COMBINER_COMPONENT_USAGE_NV 0x8544 GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 GL_COMBINER_MUX_SUM_NV 0x8547 GL_COMBINER_SCALE_NV 0x8548 GL_COMBINER_BIAS_NV 0x8549 GL_COMBINER_AB_OUTPUT_NV 0x854A GL_COMBINER_CD_OUTPUT_NV 0x854B GL_COMBINER_SUM_OUTPUT_NV 0x854C GL_MAX_GENERAL_COMBINERS_NV 0x854D GL_NUM_GENERAL_COMBINERS_NV 0x854E GL_COLOR_SUM_CLAMP_NV 0x854F GL_COMBINER0_NV 0x8550 GL_COMBINER1_NV 0x8551 GL_COMBINER2_NV 0x8552 GL_COMBINER3_NV 0x8553 GL_COMBINER4_NV 0x8554 GL_COMBINER5_NV 0x8555 GL_COMBINER6_NV 0x8556 GL_COMBINER7_NV 0x8557""", globals()) glget.addGLGetConstant( GL_REGISTER_COMBINERS_NV, (1,) ) glget.addGLGetConstant( GL_MAX_GENERAL_COMBINERS_NV, (1,) ) glget.addGLGetConstant( GL_NUM_GENERAL_COMBINERS_NV, (1,) ) glget.addGLGetConstant( GL_COLOR_SUM_CLAMP_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glCombinerParameterfvNV( pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glCombinerParameterfNV( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glCombinerParameterivNV( pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glCombinerParameteriNV( pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glCombinerInputNV( stage,portion,variable,input,mapping,componentUsage ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLboolean,_cs.GLboolean,_cs.GLboolean) def glCombinerOutputNV( stage,portion,abOutput,cdOutput,sumOutput,scale,bias,abDotProduct,cdDotProduct,muxSum ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glFinalCombinerInputNV( variable,input,mapping,componentUsage ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetCombinerInputParameterfvNV( stage,portion,variable,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetCombinerInputParameterivNV( stage,portion,variable,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetCombinerOutputParameterfvNV( stage,portion,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetCombinerOutputParameterivNV( stage,portion,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetFinalCombinerInputParameterfvNV( variable,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetFinalCombinerInputParameterivNV( variable,pname,params ):pass def glInitRegisterCombinersNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/video_capture.py0000644000175000001440000000644412025001653022064 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_video_capture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_video_capture',False) _p.unpack_constants( """GL_VIDEO_BUFFER_NV 0x9020 GL_VIDEO_BUFFER_BINDING_NV 0x9021 GL_FIELD_UPPER_NV 0x9022 GL_FIELD_LOWER_NV 0x9023 GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 GL_VIDEO_BUFFER_PITCH_NV 0x9028 GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D GL_PARTIAL_SUCCESS_NV 0x902E GL_SUCCESS_NV 0x902F GL_FAILURE_NV 0x9030 GL_YCBYCR8_422_NV 0x9031 GL_YCBAYCR8A_4224_NV 0x9032 GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C""", globals()) glget.addGLGetConstant( GL_VIDEO_BUFFER_BINDING_NV, (1,) ) @_f @_p.types(None,_cs.GLuint) def glBeginVideoCaptureNV( video_capture_slot ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,_cs.GLintptrARB) def glBindVideoCaptureStreamBufferNV( video_capture_slot,stream,frame_region,offset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glBindVideoCaptureStreamTextureNV( video_capture_slot,stream,frame_region,target,texture ):pass @_f @_p.types(None,_cs.GLuint) def glEndVideoCaptureNV( video_capture_slot ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVideoCaptureivNV( video_capture_slot,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVideoCaptureStreamivNV( video_capture_slot,stream,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetVideoCaptureStreamfvNV( video_capture_slot,stream,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLdoubleArray) def glGetVideoCaptureStreamdvNV( video_capture_slot,stream,pname,params ):pass @_f @_p.types(_cs.GLenum,_cs.GLuint,arrays.GLuintArray,arrays.GLuint64Array) def glVideoCaptureNV( video_capture_slot,sequence_num,capture_time ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glVideoCaptureStreamParameterivNV( video_capture_slot,stream,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glVideoCaptureStreamParameterfvNV( video_capture_slot,stream,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLdoubleArray) def glVideoCaptureStreamParameterdvNV( video_capture_slot,stream,pname,params ):pass def glInitVideoCaptureNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_array_range.py0000644000175000001440000000207612025001653023117 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_vertex_array_range' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_vertex_array_range',False) _p.unpack_constants( """GL_VERTEX_ARRAY_RANGE_NV 0x851D GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521""", globals()) glget.addGLGetConstant( GL_VERTEX_ARRAY_RANGE_LENGTH_NV, (1,) ) glget.addGLGetConstant( GL_VERTEX_ARRAY_RANGE_VALID_NV, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV, (1,) ) @_f @_p.types(None,) def glFlushVertexArrayRangeNV( ):pass @_f @_p.types(None,_cs.GLsizei,ctypes.c_void_p) def glVertexArrayRangeNV( length,pointer ):pass def glInitVertexArrayRangeNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/fragment_program2.py0000644000175000001440000000111212025001653022632 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_fragment_program2' _p.unpack_constants( """GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8""", globals()) def glInitFragmentProgram2NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/tessellation_program5.py0000644000175000001440000000116012025001653023543 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_tessellation_program5' _p.unpack_constants( """GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 GL_TESS_CONTROL_PROGRAM_NV 0x891E GL_TESS_EVALUATION_PROGRAM_NV 0x891F GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75""", globals()) def glInitTessellationProgram5NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/register_combiners2.py0000644000175000001440000000156312025001653023177 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_register_combiners2' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_register_combiners2',False) _p.unpack_constants( """GL_PER_STAGE_CONSTANTS_NV 0x8535""", globals()) glget.addGLGetConstant( GL_PER_STAGE_CONSTANTS_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glCombinerStageParameterfvNV( stage,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetCombinerStageParameterfvNV( stage,pname,params ):pass def glInitRegisterCombiners2NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/geometry_program4.py0000644000175000001440000000343312025001653022674 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_geometry_program4' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_geometry_program4',False) _p.unpack_constants( """GL_LINES_ADJACENCY_EXT 0xA GL_LINE_STRIP_ADJACENCY_EXT 0xB GL_TRIANGLES_ADJACENCY_EXT 0xC GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD GL_GEOMETRY_PROGRAM_NV 0x8C26 GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 GL_PROGRAM_POINT_SIZE_EXT 0x8642""", globals()) glget.addGLGetConstant( GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT, (1,) ) glget.addGLGetConstant( GL_PROGRAM_POINT_SIZE_EXT, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glProgramVertexLimitNV( target,limit ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint) def glFramebufferTextureEXT( target,attachment,texture,level ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint) def glFramebufferTextureLayerEXT( target,attachment,texture,level,layer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLenum) def glFramebufferTextureFaceEXT( target,attachment,texture,level,face ):pass def glInitGeometryProgram4NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/fragment_program4.py0000644000175000001440000000055312025001653022644 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_fragment_program4' def glInitFragmentProgram4NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/point_sprite.py0000644000175000001440000000160312025001653021742 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_point_sprite' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_point_sprite',False) _p.unpack_constants( """GL_POINT_SPRITE_NV 0x8861 GL_COORD_REPLACE_NV 0x8862 GL_POINT_SPRITE_R_MODE_NV 0x8863""", globals()) glget.addGLGetConstant( GL_POINT_SPRITE_NV, (1,) ) glget.addGLGetConstant( GL_POINT_SPRITE_R_MODE_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glPointParameteriNV( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glPointParameterivNV( pname,params ):pass def glInitPointSpriteNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texture_rectangle.py0000644000175000001440000000133512025001653022751 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_texture_rectangle' _p.unpack_constants( """GL_TEXTURE_RECTANGLE_NV 0x84F5 GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8""", globals()) glget.addGLGetConstant( GL_TEXTURE_RECTANGLE_NV, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BINDING_RECTANGLE_NV, (1,) ) glget.addGLGetConstant( GL_MAX_RECTANGLE_TEXTURE_SIZE_NV, (1,) ) def glInitTextureRectangleNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/shader_buffer_load.py0000644000175000001440000000402412025001653023021 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_shader_buffer_load' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_shader_buffer_load',False) _p.unpack_constants( """GL_BUFFER_GPU_ADDRESS_NV 0x8F1D GL_GPU_ADDRESS_NV 0x8F34 GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glMakeBufferResidentNV( target,access ):pass @_f @_p.types(None,_cs.GLenum) def glMakeBufferNonResidentNV( target ):pass @_f @_p.types(_cs.GLboolean,_cs.GLenum) def glIsBufferResidentNV( target ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glMakeNamedBufferResidentNV( buffer,access ):pass @_f @_p.types(None,_cs.GLuint) def glMakeNamedBufferNonResidentNV( buffer ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsNamedBufferResidentNV( buffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLuint64Array) def glGetBufferParameterui64vNV( target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuint64Array) def glGetNamedBufferParameterui64vNV( buffer,pname,params ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuint64Array) def glGetIntegerui64vNV( value,result ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint64EXT) def glUniformui64NV( location,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glUniformui64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,arrays.GLuint64Array) def glGetUniformui64vNV( program,location,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint64EXT) def glProgramUniformui64NV( program,location,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glProgramUniformui64vNV( program,location,count,value ):pass def glInitShaderBufferLoadNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texture_multisample.py0000644000175000001440000000404612025001653023343 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_texture_multisample' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_texture_multisample',False) _p.unpack_constants( """GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 GL_TEXTURE_COLOR_SAMPLES_NV 0x9046""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTexImage2DMultisampleCoverageNV( target,coverageSamples,colorSamples,internalFormat,width,height,fixedSampleLocations ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTexImage3DMultisampleCoverageNV( target,coverageSamples,colorSamples,internalFormat,width,height,depth,fixedSampleLocations ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTextureImage2DMultisampleNV( texture,target,samples,internalFormat,width,height,fixedSampleLocations ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTextureImage3DMultisampleNV( texture,target,samples,internalFormat,width,height,depth,fixedSampleLocations ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTextureImage2DMultisampleCoverageNV( texture,target,coverageSamples,colorSamples,internalFormat,width,height,fixedSampleLocations ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLboolean) def glTextureImage3DMultisampleCoverageNV( texture,target,coverageSamples,colorSamples,internalFormat,width,height,depth,fixedSampleLocations ):pass def glInitTextureMultisampleNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texgen_emboss.py0000644000175000001440000000073012025001653022065 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_texgen_emboss' _p.unpack_constants( """GL_EMBOSS_LIGHT_NV 0x855D GL_EMBOSS_CONSTANT_NV 0x855E GL_EMBOSS_MAP_NV 0x855F""", globals()) def glInitTexgenEmbossNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texture_shader3.py0000644000175000001440000000210012025001653022325 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_texture_shader3' _p.unpack_constants( """GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D GL_HILO8_NV 0x885E GL_SIGNED_HILO8_NV 0x885F GL_FORCE_BLUE_TO_ONE_NV 0x8860""", globals()) def glInitTextureShader3NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/light_max_exponent.py0000644000175000001440000000107012025001653023115 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_light_max_exponent' _p.unpack_constants( """GL_MAX_SHININESS_NV 0x8504 GL_MAX_SPOT_EXPONENT_NV 0x8505""", globals()) glget.addGLGetConstant( GL_MAX_SHININESS_NV, (1,) ) glget.addGLGetConstant( GL_MAX_SPOT_EXPONENT_NV, (1,) ) def glInitLightMaxExponentNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/depth_clamp.py0000644000175000001440000000072012025001653021502 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_depth_clamp' _p.unpack_constants( """GL_DEPTH_CLAMP_NV 0x864F""", globals()) glget.addGLGetConstant( GL_DEPTH_CLAMP_NV, (1,) ) def glInitDepthClampNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/fragment_program_option.py0000644000175000001440000000056612025001653024154 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_fragment_program_option' def glInitFragmentProgramOptionNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_program4.py0000644000175000001440000000547712025001653022370 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_vertex_program4' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_vertex_program4',False) _p.unpack_constants( """GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLint) def glVertexAttribI1iEXT( index,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint) def glVertexAttribI2iEXT( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint) def glVertexAttribI3iEXT( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glVertexAttribI4iEXT( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glVertexAttribI1uiEXT( index,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glVertexAttribI2uiEXT( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glVertexAttribI3uiEXT( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glVertexAttribI4uiEXT( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttribI1ivEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttribI2ivEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttribI3ivEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttribI4ivEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttribI1uivEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttribI2uivEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttribI3uivEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttribI4uivEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLbyteArray) def glVertexAttribI4bvEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttribI4svEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLubyteArray) def glVertexAttribI4ubvEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttribI4usvEXT( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glVertexAttribIPointerEXT( index,size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVertexAttribIivEXT( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuintArray) def glGetVertexAttribIuivEXT( index,pname,params ):pass def glInitVertexProgram4NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_buffer_unified_memory.py0000644000175000001440000000620312025001653025165 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_vertex_buffer_unified_memory' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_vertex_buffer_unified_memory',False) _p.unpack_constants( """GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C GL_COLOR_ARRAY_LENGTH_NV 0x8F2D GL_INDEX_ARRAY_LENGTH_NV 0x8F2E GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 GL_DRAW_INDIRECT_LENGTH_NV 0x8F42""", globals()) glget.addGLGetConstant( GL_VERTEX_ARRAY_LENGTH_NV, (1,) ) glget.addGLGetConstant( GL_NORMAL_ARRAY_LENGTH_NV, (1,) ) glget.addGLGetConstant( GL_COLOR_ARRAY_LENGTH_NV, (1,) ) glget.addGLGetConstant( GL_INDEX_ARRAY_LENGTH_NV, (1,) ) glget.addGLGetConstant( GL_EDGE_FLAG_ARRAY_LENGTH_NV, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_LENGTH_NV, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_ARRAY_LENGTH_NV, (1,) ) glget.addGLGetConstant( GL_ELEMENT_ARRAY_LENGTH_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint64EXT,_cs.GLsizeiptr) def glBufferAddressRangeNV( pname,index,address,length ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei) def glVertexFormatNV( size,type,stride ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei) def glNormalFormatNV( type,stride ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei) def glColorFormatNV( size,type,stride ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei) def glIndexFormatNV( type,stride ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei) def glTexCoordFormatNV( size,type,stride ):pass @_f @_p.types(None,_cs.GLsizei) def glEdgeFlagFormatNV( stride ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei) def glSecondaryColorFormatNV( size,type,stride ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei) def glFogCoordFormatNV( type,stride ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLboolean,_cs.GLsizei) def glVertexAttribFormatNV( index,size,type,normalized,stride ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLsizei) def glVertexAttribIFormatNV( index,size,type,stride ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLuint64Array) def glGetIntegerui64i_vNV( value,index,result ):pass def glInitVertexBufferUnifiedMemoryNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vdpau_interop.py0000644000175000001440000000347012025001653022106 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_vdpau_interop' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_vdpau_interop',False) _p.unpack_constants( """GL_SURFACE_STATE_NV 0x86EB GL_SURFACE_REGISTERED_NV 0x86FD GL_SURFACE_MAPPED_NV 0x8700 GL_WRITE_DISCARD_NV 0x88BE""", globals()) @_f @_p.types(None,ctypes.c_void_p,ctypes.c_void_p) def glVDPAUInitNV( vdpDevice,getProcAddress ):pass @_f @_p.types(None,) def glVDPAUFiniNV( ):pass @_f @_p.types(_cs.GLvdpauSurfaceNV,ctypes.c_void_p,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray) def glVDPAURegisterVideoSurfaceNV( vdpSurface,target,numTextureNames,textureNames ):pass @_f @_p.types(_cs.GLvdpauSurfaceNV,ctypes.c_void_p,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray) def glVDPAURegisterOutputSurfaceNV( vdpSurface,target,numTextureNames,textureNames ):pass @_f @_p.types(None,_cs.GLvdpauSurfaceNV) def glVDPAUIsSurfaceNV( surface ):pass @_f @_p.types(None,_cs.GLvdpauSurfaceNV) def glVDPAUUnregisterSurfaceNV( surface ):pass @_f @_p.types(None,_cs.GLvdpauSurfaceNV,_cs.GLenum,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLintArray) def glVDPAUGetSurfaceivNV( surface,pname,bufSize,length,values ):pass @_f @_p.types(None,_cs.GLvdpauSurfaceNV,_cs.GLenum) def glVDPAUSurfaceAccessNV( surface,access ):pass @_f @_p.types(None,_cs.GLsizei,ctypes.POINTER(_cs.GLvdpauSurfaceNV)) def glVDPAUMapSurfacesNV( numSurfaces,surfaces ):pass @_f @_p.types(None,_cs.GLsizei,ctypes.POINTER(_cs.GLvdpauSurfaceNV)) def glVDPAUUnmapSurfacesNV( numSurface,surfaces ):pass def glInitVdpauInteropNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/gpu_program5.py0000644000175000001440000000220712025001653021633 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_gpu_program5' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_gpu_program5',False) _p.unpack_constants( """GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray) def glProgramSubroutineParametersuivNV( target,count,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLuintArray) def glGetProgramSubroutineParameteruivNV( target,index,param ):pass def glInitGpuProgram5NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/packed_depth_stencil.py0000644000175000001440000000072012025001653023356 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_packed_depth_stencil' _p.unpack_constants( """GL_DEPTH_STENCIL_NV 0x84F9 GL_UNSIGNED_INT_24_8_NV 0x84FA""", globals()) def glInitPackedDepthStencilNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/geometry_shader4.py0000644000175000001440000000055112025001653022471 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_geometry_shader4' def glInitGeometryShader4NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/path_rendering.py0000644000175000001440000002646312025001653022227 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_path_rendering' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_path_rendering',False) _p.unpack_constants( """GL_PATH_FORMAT_SVG_NV 0x9070 GL_PATH_FORMAT_PS_NV 0x9071 GL_STANDARD_FONT_NAME_NV 0x9072 GL_SYSTEM_FONT_NAME_NV 0x9073 GL_FILE_NAME_NV 0x9074 GL_PATH_STROKE_WIDTH_NV 0x9075 GL_PATH_END_CAPS_NV 0x9076 GL_PATH_INITIAL_END_CAP_NV 0x9077 GL_PATH_TERMINAL_END_CAP_NV 0x9078 GL_PATH_JOIN_STYLE_NV 0x9079 GL_PATH_MITER_LIMIT_NV 0x907A GL_PATH_DASH_CAPS_NV 0x907B GL_PATH_INITIAL_DASH_CAP_NV 0x907C GL_PATH_TERMINAL_DASH_CAP_NV 0x907D GL_PATH_DASH_OFFSET_NV 0x907E GL_PATH_CLIENT_LENGTH_NV 0x907F GL_PATH_FILL_MODE_NV 0x9080 GL_PATH_FILL_MASK_NV 0x9081 GL_PATH_FILL_COVER_MODE_NV 0x9082 GL_PATH_STROKE_COVER_MODE_NV 0x9083 GL_PATH_STROKE_MASK_NV 0x9084 GL_PATH_SAMPLE_QUALITY_NV 0x9085 GL_PATH_STROKE_BOUND_NV 0x9086 GL_PATH_STROKE_OVERSAMPLE_COUNT_NV 0x9087 GL_COUNT_UP_NV 0x9088 GL_COUNT_DOWN_NV 0x9089 GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A GL_CONVEX_HULL_NV 0x908B GL_MULTI_HULLS_NV 0x908C GL_BOUNDING_BOX_NV 0x908D GL_TRANSLATE_X_NV 0x908E GL_TRANSLATE_Y_NV 0x908F GL_TRANSLATE_2D_NV 0x9090 GL_TRANSLATE_3D_NV 0x9091 GL_AFFINE_2D_NV 0x9092 GL_PROJECTIVE_2D_NV 0x9093 GL_AFFINE_3D_NV 0x9094 GL_PROJECTIVE_3D_NV 0x9095 GL_TRANSPOSE_AFFINE_2D_NV 0x9096 GL_TRANSPOSE_PROJECTIVE_2D_NV 0x9097 GL_TRANSPOSE_AFFINE_3D_NV 0x9098 GL_TRANSPOSE_PROJECTIVE_3D_NV 0x9099 GL_UTF8_NV 0x909A GL_UTF16_NV 0x909B GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C GL_PATH_COMMAND_COUNT_NV 0x909D GL_PATH_COORD_COUNT_NV 0x909E GL_PATH_DASH_ARRAY_COUNT_NV 0x909F GL_PATH_COMPUTED_LENGTH_NV 0x90A0 GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 GL_SQUARE_NV 0x90A3 GL_ROUND_NV 0x90A4 GL_TRIANGULAR_NV 0x90A5 GL_BEVEL_NV 0x90A6 GL_MITER_REVERT_NV 0x90A7 GL_MITER_TRUNCATE_NV 0x90A8 GL_SKIP_MISSING_GLYPH_NV 0x90A9 GL_USE_MISSING_GLYPH_NV 0x90AA GL_PATH_ERROR_POSITION_NV 0x90AB GL_PATH_FOG_GEN_MODE_NV 0x90AC GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD GL_ADJACENT_PAIRS_NV 0x90AE GL_FIRST_TO_REST_NV 0x90AF GL_PATH_GEN_MODE_NV 0x90B0 GL_PATH_GEN_COEFF_NV 0x90B1 GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 GL_PATH_GEN_COMPONENTS_NV 0x90B3 GL_PATH_STENCIL_FUNC_NV 0x90B7 GL_PATH_STENCIL_REF_NV 0x90B8 GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 GL_MOVE_TO_RESETS_NV 0x90B5 GL_MOVE_TO_CONTINUES_NV 0x90B6 GL_CLOSE_PATH_NV 0x0 GL_MOVE_TO_NV 0x2 GL_RELATIVE_MOVE_TO_NV 0x3 GL_LINE_TO_NV 0x4 GL_RELATIVE_LINE_TO_NV 0x5 GL_HORIZONTAL_LINE_TO_NV 0x6 GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x7 GL_VERTICAL_LINE_TO_NV 0x8 GL_RELATIVE_VERTICAL_LINE_TO_NV 0x9 GL_QUADRATIC_CURVE_TO_NV 0xA GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0xB GL_CUBIC_CURVE_TO_NV 0xC GL_RELATIVE_CUBIC_CURVE_TO_NV 0xD GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0xE GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0xF GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 GL_SMALL_CCW_ARC_TO_NV 0x12 GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 GL_SMALL_CW_ARC_TO_NV 0x14 GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 GL_LARGE_CCW_ARC_TO_NV 0x16 GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 GL_LARGE_CW_ARC_TO_NV 0x18 GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 GL_RESTART_PATH_NV 0xF0 GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 GL_RECT_NV 0xF6 GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 GL_CIRCULAR_CW_ARC_TO_NV 0xFA GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC GL_ARC_TO_NV 0xFE GL_RELATIVE_ARC_TO_NV 0xFF GL_BOLD_BIT_NV 0x1 GL_ITALIC_BIT_NV 0x2 GL_GLYPH_WIDTH_BIT_NV 0x1 GL_GLYPH_HEIGHT_BIT_NV 0x2 GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x4 GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x8 GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 GL_GLYPH_HAS_KERNING_NV 0x100 GL_FONT_X_MIN_BOUNDS_NV 0x10000 GL_FONT_Y_MIN_BOUNDS_NV 0x20000 GL_FONT_X_MAX_BOUNDS_NV 0x40000 GL_FONT_Y_MAX_BOUNDS_NV 0x80000 GL_FONT_UNITS_PER_EM_NV 0x100000 GL_FONT_ASCENDER_NV 0x200000 GL_FONT_DESCENDER_NV 0x400000 GL_FONT_HEIGHT_NV 0x800000 GL_FONT_MAX_ADVANCE_WIDTH_NV 0x1000000 GL_FONT_MAX_ADVANCE_HEIGHT_NV 0x2000000 GL_FONT_UNDERLINE_POSITION_NV 0x4000000 GL_FONT_UNDERLINE_THICKNESS_NV 0x8000000 GL_FONT_HAS_KERNING_NV 0x10000000""", globals()) @_f @_p.types(_cs.GLuint,_cs.GLsizei) def glGenPathsNV( range ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei) def glDeletePathsNV( path,range ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsPathNV( path ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLubyteArray,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p) def glPathCommandsNV( path,numCommands,commands,numCoords,coordType,coords ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p) def glPathCoordsNV( path,numCoords,coordType,coords ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,arrays.GLubyteArray,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p) def glPathSubCommandsNV( path,commandStart,commandsToDelete,numCommands,commands,numCoords,coordType,coords ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p) def glPathSubCoordsNV( path,coordStart,numCoords,coordType,coords ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glPathStringNV( path,format,length,pathString ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,ctypes.c_void_p,_cs.GLbitfield,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLenum,_cs.GLuint,_cs.GLfloat) def glPathGlyphsNV( firstPathName,fontTarget,fontName,fontStyle,numGlyphs,type,charcodes,handleMissingGlyphs,pathParameterTemplate,emScale ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,ctypes.c_void_p,_cs.GLbitfield,_cs.GLuint,_cs.GLsizei,_cs.GLenum,_cs.GLuint,_cs.GLfloat) def glPathGlyphRangeNV( firstPathName,fontTarget,fontName,fontStyle,firstGlyph,numGlyphs,handleMissingGlyphs,pathParameterTemplate,emScale ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray,arrays.GLfloatArray) def glWeightPathsNV( resultPath,numPaths,paths,weights ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glCopyPathNV( resultPath,srcPath ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLfloat) def glInterpolatePathsNV( resultPath,pathA,pathB,weight ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glTransformPathNV( resultPath,srcPath,transformType,transformValues ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glPathParameterivNV( path,pname,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint) def glPathParameteriNV( path,pname,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glPathParameterfvNV( path,pname,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLfloat) def glPathParameterfNV( path,pname,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glPathDashArrayNV( path,dashCount,dashArray ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLuint) def glPathStencilFuncNV( func,ref,mask ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glPathStencilDepthOffsetNV( factor,units ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLuint) def glStencilFillPathNV( path,fillMode,mask ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint) def glStencilStrokePathNV( path,reference,mask ):pass @_f @_p.types(None,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLuint,_cs.GLenum,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glStencilFillPathInstancedNV( numPaths,pathNameType,paths,pathBase,fillMode,mask,transformType,transformValues ):pass @_f @_p.types(None,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLuint,_cs.GLint,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glStencilStrokePathInstancedNV( numPaths,pathNameType,paths,pathBase,reference,mask,transformType,transformValues ):pass @_f @_p.types(None,_cs.GLenum) def glPathCoverDepthFuncNV( func ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glPathColorGenNV( color,genMode,colorFormat,coeffs ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,arrays.GLfloatArray) def glPathTexGenNV( texCoordSet,genMode,components,coeffs ):pass @_f @_p.types(None,_cs.GLenum) def glPathFogGenNV( genMode ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glCoverFillPathNV( path,coverMode ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glCoverStrokePathNV( path,coverMode ):pass @_f @_p.types(None,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glCoverFillPathInstancedNV( numPaths,pathNameType,paths,pathBase,coverMode,transformType,transformValues ):pass @_f @_p.types(None,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLuint,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glCoverStrokePathInstancedNV( numPaths,pathNameType,paths,pathBase,coverMode,transformType,transformValues ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetPathParameterivNV( path,pname,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetPathParameterfvNV( path,pname,value ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLubyteArray) def glGetPathCommandsNV( path,commands ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glGetPathCoordsNV( path,coords ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glGetPathDashArrayNV( path,dashArray ):pass @_f @_p.types(None,_cs.GLbitfield,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLuint,_cs.GLsizei,arrays.GLfloatArray) def glGetPathMetricsNV( metricQueryMask,numPaths,pathNameType,paths,pathBase,stride,metrics ):pass @_f @_p.types(None,_cs.GLbitfield,_cs.GLuint,_cs.GLsizei,_cs.GLsizei,arrays.GLfloatArray) def glGetPathMetricRangeNV( metricQueryMask,firstPathName,numPaths,stride,metrics ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLenum,arrays.GLfloatArray) def glGetPathSpacingNV( pathListMode,numPaths,pathNameType,paths,pathBase,advanceScale,kerningScale,transformType,returnedSpacing ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetPathColorGenivNV( color,pname,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetPathColorGenfvNV( color,pname,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetPathTexGenivNV( texCoordSet,pname,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetPathTexGenfvNV( texCoordSet,pname,value ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint,_cs.GLuint,_cs.GLfloat,_cs.GLfloat) def glIsPointInFillPathNV( path,mask,x,y ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint,_cs.GLfloat,_cs.GLfloat) def glIsPointInStrokePathNV( path,x,y ):pass @_f @_p.types(_cs.GLfloat,_cs.GLuint,_cs.GLsizei,_cs.GLsizei) def glGetPathLengthNV( path,startSegment,numSegments ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint,_cs.GLsizei,_cs.GLsizei,_cs.GLfloat,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray) def glPointAlongPathNV( path,startSegment,numSegments,distance,x,y,tangentX,tangentY ):pass def glInitPathRenderingNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/transform_feedback2.py0000644000175000001440000000272112025001653023126 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_transform_feedback2' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_transform_feedback2',False) _p.unpack_constants( """GL_TRANSFORM_FEEDBACK_NV 0x8E22 GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25""", globals()) glget.addGLGetConstant( GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV, (1,) ) glget.addGLGetConstant( GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV, (1,) ) glget.addGLGetConstant( GL_TRANSFORM_FEEDBACK_BINDING_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindTransformFeedbackNV( target,id ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteTransformFeedbacksNV( n,ids ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenTransformFeedbacksNV( n,ids ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsTransformFeedbackNV( id ):pass @_f @_p.types(None,) def glPauseTransformFeedbackNV( ):pass @_f @_p.types(None,) def glResumeTransformFeedbackNV( ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glDrawTransformFeedbackNV( mode,id ):pass def glInitTransformFeedback2NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/bindless_texture.py0000644000175000001440000000345112025001653022611 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_bindless_texture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_bindless_texture',False) @_f @_p.types(_cs.GLuint64,_cs.GLuint) def glGetTextureHandleNV( texture ):pass @_f @_p.types(_cs.GLuint64,_cs.GLuint,_cs.GLuint) def glGetTextureSamplerHandleNV( texture,sampler ):pass @_f @_p.types(None,_cs.GLuint64) def glMakeTextureHandleResidentNV( handle ):pass @_f @_p.types(None,_cs.GLuint64) def glMakeTextureHandleNonResidentNV( handle ):pass @_f @_p.types(_cs.GLuint64,_cs.GLuint,_cs.GLint,_cs.GLboolean,_cs.GLint,_cs.GLenum) def glGetImageHandleNV( texture,level,layered,layer,format ):pass @_f @_p.types(None,_cs.GLuint64,_cs.GLenum) def glMakeImageHandleResidentNV( handle,access ):pass @_f @_p.types(None,_cs.GLuint64) def glMakeImageHandleNonResidentNV( handle ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint64) def glUniformHandleui64NV( location,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glUniformHandleui64vNV( location,count,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLuint64) def glProgramUniformHandleui64NV( program,location,value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLsizei,arrays.GLuint64Array) def glProgramUniformHandleui64vNV( program,location,count,values ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint64) def glIsTextureHandleResidentNV( handle ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint64) def glIsImageHandleResidentNV( handle ):pass def glInitBindlessTextureNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/framebuffer_multisample_coverage.py0000644000175000001440000000200412025001653025772 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_framebuffer_multisample_coverage' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_framebuffer_multisample_coverage',False) _p.unpack_constants( """GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12""", globals()) glget.addGLGetConstant( GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,_cs.GLsizei) def glRenderbufferStorageMultisampleCoverageNV( target,coverageSamples,colorSamples,internalformat,width,height ):pass def glInitFramebufferMultisampleCoverageNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/primitive_restart.py0000644000175000001440000000152712025001653023004 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_primitive_restart' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_primitive_restart',False) _p.unpack_constants( """GL_PRIMITIVE_RESTART_NV 0x8558 GL_PRIMITIVE_RESTART_INDEX_NV 0x8559""", globals()) glget.addGLGetConstant( GL_PRIMITIVE_RESTART_NV, (1,) ) glget.addGLGetConstant( GL_PRIMITIVE_RESTART_INDEX_NV, (1,) ) @_f @_p.types(None,) def glPrimitiveRestartNV( ):pass @_f @_p.types(None,_cs.GLuint) def glPrimitiveRestartIndexNV( index ):pass def glInitPrimitiveRestartNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texture_expand_normal.py0000644000175000001440000000070112025001653023630 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_texture_expand_normal' _p.unpack_constants( """GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F""", globals()) def glInitTextureExpandNormalNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/fence.py0000644000175000001440000000220512025001653020302 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_fence' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_fence',False) _p.unpack_constants( """GL_ALL_COMPLETED_NV 0x84F2 GL_FENCE_STATUS_NV 0x84F3 GL_FENCE_CONDITION_NV 0x84F4""", globals()) @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteFencesNV( n,fences ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenFencesNV( n,fences ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsFenceNV( fence ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glTestFenceNV( fence ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetFenceivNV( fence,pname,params ):pass @_f @_p.types(None,_cs.GLuint) def glFinishFenceNV( fence ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glSetFenceNV( fence,condition ):pass def glInitFenceNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/texgen_reflection.py0000644000175000001440000000070512025001653022731 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_texgen_reflection' _p.unpack_constants( """GL_NORMAL_MAP_NV 0x8511 GL_REFLECTION_MAP_NV 0x8512""", globals()) def glInitTexgenReflectionNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/fragment_program.py0000644000175000001440000000370112025001653022556 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_fragment_program' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_fragment_program',False) _p.unpack_constants( """GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 GL_FRAGMENT_PROGRAM_NV 0x8870 GL_MAX_TEXTURE_COORDS_NV 0x8871 GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 GL_PROGRAM_ERROR_STRING_NV 0x8874""", globals()) glget.addGLGetConstant( GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV, (1,) ) glget.addGLGetConstant( GL_FRAGMENT_PROGRAM_NV, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_COORDS_NV, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_IMAGE_UNITS_NV, (1,) ) glget.addGLGetConstant( GL_FRAGMENT_PROGRAM_BINDING_NV, (1,) ) @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLubyteArray,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glProgramNamedParameter4fNV( id,len,name,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLubyteArray,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glProgramNamedParameter4dNV( id,len,name,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLubyteArray,arrays.GLfloatArray) def glProgramNamedParameter4fvNV( id,len,name,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLubyteArray,arrays.GLdoubleArray) def glProgramNamedParameter4dvNV( id,len,name,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLubyteArray,arrays.GLfloatArray) def glGetProgramNamedParameterfvNV( id,len,name,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLubyteArray,arrays.GLdoubleArray) def glGetProgramNamedParameterdvNV( id,len,name,params ):pass def glInitFragmentProgramNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/copy_depth_to_color.py0000644000175000001440000000073112025001653023262 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_copy_depth_to_color' _p.unpack_constants( """GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F""", globals()) def glInitCopyDepthToColorNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/copy_image.py0000644000175000001440000000143412025001653021341 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_copy_image' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_copy_image',False) @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLuint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei) def glCopyImageSubDataNV( srcName,srcTarget,srcLevel,srcX,srcY,srcZ,dstName,dstTarget,dstLevel,dstX,dstY,dstZ,width,height,depth ):pass def glInitCopyImageNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/multisample_filter_hint.py0000644000175000001440000000077712025001653024161 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_NV_multisample_filter_hint' _p.unpack_constants( """GL_MULTISAMPLE_FILTER_HINT_NV 0x8534""", globals()) glget.addGLGetConstant( GL_MULTISAMPLE_FILTER_HINT_NV, (1,) ) def glInitMultisampleFilterHintNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/gpu_program4.py0000644000175000001440000000564012025001653021636 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_gpu_program4' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_gpu_program4',False) _p.unpack_constants( """GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glProgramLocalParameterI4iNV( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLintArray) def glProgramLocalParameterI4ivNV( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLintArray) def glProgramLocalParametersI4ivNV( target,index,count,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glProgramLocalParameterI4uiNV( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLuintArray) def glProgramLocalParameterI4uivNV( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray) def glProgramLocalParametersI4uivNV( target,index,count,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glProgramEnvParameterI4iNV( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLintArray) def glProgramEnvParameterI4ivNV( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLintArray) def glProgramEnvParametersI4ivNV( target,index,count,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glProgramEnvParameterI4uiNV( target,index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLuintArray) def glProgramEnvParameterI4uivNV( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray) def glProgramEnvParametersI4uivNV( target,index,count,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLintArray) def glGetProgramLocalParameterIivNV( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLuintArray) def glGetProgramLocalParameterIuivNV( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLintArray) def glGetProgramEnvParameterIivNV( target,index,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLuintArray) def glGetProgramEnvParameterIuivNV( target,index,params ):pass def glInitGpuProgram4NV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/NV/vertex_attrib_integer_64bit.py0000644000175000001440000000501412025001653024632 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_NV_vertex_attrib_integer_64bit' def _f( function ): return _p.createFunction( function,_p.GL,'GL_NV_vertex_attrib_integer_64bit',False) @_f @_p.types(None,_cs.GLuint,_cs.GLint64EXT) def glVertexAttribL1i64NV( index,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint64EXT,_cs.GLint64EXT) def glVertexAttribL2i64NV( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint64EXT,_cs.GLint64EXT,_cs.GLint64EXT) def glVertexAttribL3i64NV( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint64EXT,_cs.GLint64EXT,_cs.GLint64EXT,_cs.GLint64EXT) def glVertexAttribL4i64NV( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLint64Array) def glVertexAttribL1i64vNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLint64Array) def glVertexAttribL2i64vNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLint64Array) def glVertexAttribL3i64vNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLint64Array) def glVertexAttribL4i64vNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint64EXT) def glVertexAttribL1ui64NV( index,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint64EXT,_cs.GLuint64EXT) def glVertexAttribL2ui64NV( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint64EXT,_cs.GLuint64EXT,_cs.GLuint64EXT) def glVertexAttribL3ui64NV( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint64EXT,_cs.GLuint64EXT,_cs.GLuint64EXT,_cs.GLuint64EXT) def glVertexAttribL4ui64NV( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuint64Array) def glVertexAttribL1ui64vNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuint64Array) def glVertexAttribL2ui64vNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuint64Array) def glVertexAttribL3ui64vNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuint64Array) def glVertexAttribL4ui64vNV( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLint64Array) def glGetVertexAttribLi64vNV( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuint64Array) def glGetVertexAttribLui64vNV( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLsizei) def glVertexAttribLFormatNV( index,size,type,stride ):pass def glInitVertexAttribInteger64BitNV(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/REND/0000755000175000001440000000000012032640120017052 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/REND/__init__.py0000644000175000001440000000002712025001653021166 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/REND/screen_coordinates.py0000644000175000001440000000073212025001653023303 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_REND_screen_coordinates' _p.unpack_constants( """GL_SCREEN_COORDINATES_REND 0x8490 GL_INVERTED_SCREEN_W_REND 0x8491""", globals()) def glInitScreenCoordinatesREND(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/WIN/0000755000175000001440000000000012032640120016757 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/WIN/__init__.py0000644000175000001440000000002712025001653021073 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/WIN/phong_shading.py0000644000175000001440000000067012025001653022150 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_WIN_phong_shading' _p.unpack_constants( """GL_PHONG_WIN 0x80EA GL_PHONG_HINT_WIN 0x80EB""", globals()) def glInitPhongShadingWIN(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/WIN/specular_fog.py0000644000175000001440000000065412025001653022013 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_WIN_specular_fog' _p.unpack_constants( """GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC""", globals()) def glInitSpecularFogWIN(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/HP/0000755000175000001440000000000012032640120016631 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/HP/texture_lighting.py0000644000175000001440000000076712025001653022606 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_HP_texture_lighting' _p.unpack_constants( """GL_TEXTURE_LIGHTING_MODE_HP 0x8167 GL_TEXTURE_POST_SPECULAR_HP 0x8168 GL_TEXTURE_PRE_SPECULAR_HP 0x8169""", globals()) def glInitTextureLightingHP(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/HP/__init__.py0000644000175000001440000000002712025001653020745 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/HP/image_transform.py0000644000175000001440000000331112025001653022362 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_HP_image_transform' def _f( function ): return _p.createFunction( function,_p.GL,'GL_HP_image_transform',False) _p.unpack_constants( """GL_IMAGE_SCALE_X_HP 0x8155 GL_IMAGE_SCALE_Y_HP 0x8156 GL_IMAGE_TRANSLATE_X_HP 0x8157 GL_IMAGE_TRANSLATE_Y_HP 0x8158 GL_IMAGE_ROTATE_ANGLE_HP 0x8159 GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B GL_IMAGE_MAG_FILTER_HP 0x815C GL_IMAGE_MIN_FILTER_HP 0x815D GL_IMAGE_CUBIC_WEIGHT_HP 0x815E GL_CUBIC_HP 0x815F GL_AVERAGE_HP 0x8160 GL_IMAGE_TRANSFORM_2D_HP 0x8161 GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glImageTransformParameteriHP( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glImageTransformParameterfHP( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glImageTransformParameterivHP( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glImageTransformParameterfvHP( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetImageTransformParameterivHP( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetImageTransformParameterfvHP( target,pname,params ):pass def glInitImageTransformHP(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/HP/convolution_border_modes.py0000644000175000001440000000103212025001653024306 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_HP_convolution_border_modes' _p.unpack_constants( """GL_IGNORE_BORDER_HP 0x8150 GL_CONSTANT_BORDER_HP 0x8151 GL_REPLICATE_BORDER_HP 0x8153 GL_CONVOLUTION_BORDER_COLOR_HP 0x8154""", globals()) def glInitConvolutionBorderModesHP(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/HP/occlusion_test.py0000644000175000001440000000107312025001653022245 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_HP_occlusion_test' _p.unpack_constants( """GL_OCCLUSION_TEST_HP 0x8165 GL_OCCLUSION_TEST_RESULT_HP 0x8166""", globals()) glget.addGLGetConstant( GL_OCCLUSION_TEST_HP, (1,) ) glget.addGLGetConstant( GL_OCCLUSION_TEST_RESULT_HP, (1,) ) def glInitOcclusionTestHP(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/__init__.py0000644000175000001440000000004612025001653020437 0ustar mcfletchusers00000000000000"""Raw (C-style) API for OpenGL.GL""" PyOpenGL-3.0.2/OpenGL/raw/GL/S3/0000755000175000001440000000000012032640120016607 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/S3/__init__.py0000644000175000001440000000002712025001653020723 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/S3/s3tc.py0000644000175000001440000000077312031734306020055 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_S3_s3tc' _p.unpack_constants( """GL_RGB_S3TC 0x83A0 GL_RGB4_S3TC 0x83A1 GL_RGBA_S3TC 0x83A2 GL_RGBA4_S3TC 0x83A3 GL_RGBA_DXT5_S3TC 0x83A4 GL_RGBA4_DXT5_S3TC 0x83A5""", globals()) def glInitS3TcS3(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SUN/0000755000175000001440000000000012032640120016767 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/SUN/global_alpha.py0000644000175000001440000000234012025001653021751 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SUN_global_alpha' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SUN_global_alpha',False) _p.unpack_constants( """GL_GLOBAL_ALPHA_SUN 0x81D9 GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA""", globals()) glget.addGLGetConstant( GL_GLOBAL_ALPHA_FACTOR_SUN, (1,) ) @_f @_p.types(None,_cs.GLbyte) def glGlobalAlphaFactorbSUN( factor ):pass @_f @_p.types(None,_cs.GLshort) def glGlobalAlphaFactorsSUN( factor ):pass @_f @_p.types(None,_cs.GLint) def glGlobalAlphaFactoriSUN( factor ):pass @_f @_p.types(None,_cs.GLfloat) def glGlobalAlphaFactorfSUN( factor ):pass @_f @_p.types(None,_cs.GLdouble) def glGlobalAlphaFactordSUN( factor ):pass @_f @_p.types(None,_cs.GLubyte) def glGlobalAlphaFactorubSUN( factor ):pass @_f @_p.types(None,_cs.GLushort) def glGlobalAlphaFactorusSUN( factor ):pass @_f @_p.types(None,_cs.GLuint) def glGlobalAlphaFactoruiSUN( factor ):pass def glInitGlobalAlphaSUN(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SUN/__init__.py0000644000175000001440000000002712025001653021103 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/SUN/slice_accum.py0000644000175000001440000000064112025001653021615 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SUN_slice_accum' _p.unpack_constants( """GL_SLICE_ACCUM_SUN 0x85CC""", globals()) def glInitSliceAccumSUN(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SUN/vertex.py0000644000175000001440000001516112025001653020666 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SUN_vertex' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SUN_vertex',False) @_f @_p.types(None,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLfloat,_cs.GLfloat) def glColor4ubVertex2fSUN( r,g,b,a,x,y ):pass @_f @_p.types(None,arrays.GLubyteArray,arrays.GLfloatArray) def glColor4ubVertex2fvSUN( c,v ):pass @_f @_p.types(None,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glColor4ubVertex3fSUN( r,g,b,a,x,y,z ):pass @_f @_p.types(None,arrays.GLubyteArray,arrays.GLfloatArray) def glColor4ubVertex3fvSUN( c,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glColor3fVertex3fSUN( r,g,b,x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray) def glColor3fVertex3fvSUN( c,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glNormal3fVertex3fSUN( nx,ny,nz,x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray) def glNormal3fVertex3fvSUN( n,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glColor4fNormal3fVertex3fSUN( r,g,b,a,nx,ny,nz,x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray) def glColor4fNormal3fVertex3fvSUN( c,n,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTexCoord2fVertex3fSUN( s,t,x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray) def glTexCoord2fVertex3fvSUN( tc,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTexCoord4fVertex4fSUN( s,t,p,q,x,y,z,w ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray) def glTexCoord4fVertex4fvSUN( tc,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTexCoord2fColor4ubVertex3fSUN( s,t,r,g,b,a,x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLubyteArray,arrays.GLfloatArray) def glTexCoord2fColor4ubVertex3fvSUN( tc,c,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTexCoord2fColor3fVertex3fSUN( s,t,r,g,b,x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray) def glTexCoord2fColor3fVertex3fvSUN( tc,c,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTexCoord2fNormal3fVertex3fSUN( s,t,nx,ny,nz,x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray) def glTexCoord2fNormal3fVertex3fvSUN( tc,n,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTexCoord2fColor4fNormal3fVertex3fSUN( s,t,r,g,b,a,nx,ny,nz,x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray) def glTexCoord2fColor4fNormal3fVertex3fvSUN( tc,c,n,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTexCoord4fColor4fNormal3fVertex4fSUN( s,t,p,q,r,g,b,a,nx,ny,nz,x,y,z,w ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray) def glTexCoord4fColor4fNormal3fVertex4fvSUN( tc,c,n,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glReplacementCodeuiVertex3fSUN( rc,x,y,z ):pass @_f @_p.types(None,arrays.GLuintArray,arrays.GLfloatArray) def glReplacementCodeuiVertex3fvSUN( rc,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glReplacementCodeuiColor4ubVertex3fSUN( rc,r,g,b,a,x,y,z ):pass @_f @_p.types(None,arrays.GLuintArray,arrays.GLubyteArray,arrays.GLfloatArray) def glReplacementCodeuiColor4ubVertex3fvSUN( rc,c,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glReplacementCodeuiColor3fVertex3fSUN( rc,r,g,b,x,y,z ):pass @_f @_p.types(None,arrays.GLuintArray,arrays.GLfloatArray,arrays.GLfloatArray) def glReplacementCodeuiColor3fVertex3fvSUN( rc,c,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glReplacementCodeuiNormal3fVertex3fSUN( rc,nx,ny,nz,x,y,z ):pass @_f @_p.types(None,arrays.GLuintArray,arrays.GLfloatArray,arrays.GLfloatArray) def glReplacementCodeuiNormal3fVertex3fvSUN( rc,n,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glReplacementCodeuiColor4fNormal3fVertex3fSUN( rc,r,g,b,a,nx,ny,nz,x,y,z ):pass @_f @_p.types(None,arrays.GLuintArray,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray) def glReplacementCodeuiColor4fNormal3fVertex3fvSUN( rc,c,n,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glReplacementCodeuiTexCoord2fVertex3fSUN( rc,s,t,x,y,z ):pass @_f @_p.types(None,arrays.GLuintArray,arrays.GLfloatArray,arrays.GLfloatArray) def glReplacementCodeuiTexCoord2fVertex3fvSUN( rc,tc,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN( rc,s,t,nx,ny,nz,x,y,z ):pass @_f @_p.types(None,arrays.GLuintArray,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray) def glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN( rc,tc,n,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN( rc,s,t,r,g,b,a,nx,ny,nz,x,y,z ):pass @_f @_p.types(None,arrays.GLuintArray,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLfloatArray) def glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN( rc,tc,c,n,v ):pass def glInitVertexSUN(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SUN/convolution_border_modes.py0000644000175000001440000000067212025001653024455 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SUN_convolution_border_modes' _p.unpack_constants( """GL_WRAP_BORDER_SUN 0x81D4""", globals()) def glInitConvolutionBorderModesSUN(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SUN/mesh_array.py0000644000175000001440000000126512025001653021503 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SUN_mesh_array' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SUN_mesh_array',False) _p.unpack_constants( """GL_QUAD_MESH_SUN 0x8614 GL_TRIANGLE_MESH_SUN 0x8615""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glDrawMeshArraysSUN( mode,first,count,width ):pass def glInitMeshArraySUN(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SUN/triangle_list.py0000644000175000001440000000344712025001653022215 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SUN_triangle_list' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SUN_triangle_list',False) _p.unpack_constants( """GL_RESTART_SUN 0x1 GL_REPLACE_MIDDLE_SUN 0x2 GL_REPLACE_OLDEST_SUN 0x3 GL_TRIANGLE_LIST_SUN 0x81D7 GL_REPLACEMENT_CODE_SUN 0x81D8 GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 GL_R1UI_V3F_SUN 0x85C4 GL_R1UI_C4UB_V3F_SUN 0x85C5 GL_R1UI_C3F_V3F_SUN 0x85C6 GL_R1UI_N3F_V3F_SUN 0x85C7 GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 GL_R1UI_T2F_V3F_SUN 0x85C9 GL_R1UI_T2F_N3F_V3F_SUN 0x85CA GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB""", globals()) glget.addGLGetConstant( GL_REPLACEMENT_CODE_SUN, (1,) ) glget.addGLGetConstant( GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN, (1,) ) glget.addGLGetConstant( GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN, (1,) ) @_f @_p.types(None,_cs.GLuint) def glReplacementCodeuiSUN( code ):pass @_f @_p.types(None,_cs.GLushort) def glReplacementCodeusSUN( code ):pass @_f @_p.types(None,_cs.GLubyte) def glReplacementCodeubSUN( code ):pass @_f @_p.types(None,arrays.GLuintArray) def glReplacementCodeuivSUN( code ):pass @_f @_p.types(None,arrays.GLushortArray) def glReplacementCodeusvSUN( code ):pass @_f @_p.types(None,arrays.GLubyteArray) def glReplacementCodeubvSUN( code ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLvoidpArray) def glReplacementCodePointerSUN( type,stride,pointer ):pass def glInitTriangleListSUN(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/0000755000175000001440000000000012032640120017163 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/aux_depth_stencil.py0000644000175000001440000000067012025001653023246 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_APPLE_aux_depth_stencil' _p.unpack_constants( """GL_AUX_DEPTH_STENCIL_APPLE 0x8A14""", globals()) def glInitAuxDepthStencilAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/client_storage.py0000644000175000001440000000076612025001653022554 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_APPLE_client_storage' _p.unpack_constants( """GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2""", globals()) glget.addGLGetConstant( GL_UNPACK_CLIENT_STORAGE_APPLE, (1,) ) def glInitClientStorageAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/element_array.py0000644000175000001440000000254112025001653022372 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_APPLE_element_array' def _f( function ): return _p.createFunction( function,_p.GL,'GL_APPLE_element_array',False) _p.unpack_constants( """GL_ELEMENT_ARRAY_APPLE 0x8A0C GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E""", globals()) glget.addGLGetConstant( GL_ELEMENT_ARRAY_TYPE_APPLE, (1,) ) @_f @_p.types(None,_cs.GLenum,ctypes.c_void_p) def glElementPointerAPPLE( type,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLsizei) def glDrawElementArrayAPPLE( mode,first,count ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLint,_cs.GLsizei) def glDrawRangeElementArrayAPPLE( mode,start,end,first,count ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray,arrays.GLsizeiArray,_cs.GLsizei) def glMultiDrawElementArrayAPPLE( mode,first,count,primcount ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,arrays.GLintArray,arrays.GLsizeiArray,_cs.GLsizei) def glMultiDrawRangeElementArrayAPPLE( mode,start,end,first,count,primcount ):pass def glInitElementArrayAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/__init__.py0000644000175000001440000000002712025001653021277 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/vertex_program_evaluators.py0000644000175000001440000000411012025001653025046 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_APPLE_vertex_program_evaluators' def _f( function ): return _p.createFunction( function,_p.GL,'GL_APPLE_vertex_program_evaluators',False) _p.unpack_constants( """GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glEnableVertexAttribAPPLE( index,pname ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glDisableVertexAttribAPPLE( index,pname ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint,_cs.GLenum) def glIsVertexAttribEnabledAPPLE( index,pname ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLint,arrays.GLdoubleArray) def glMapVertexAttrib1dAPPLE( index,size,u1,u2,stride,order,points ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLint,arrays.GLfloatArray) def glMapVertexAttrib1fAPPLE( index,size,u1,u2,stride,order,points ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLint,arrays.GLdoubleArray) def glMapVertexAttrib2dAPPLE( index,size,u1,u2,ustride,uorder,v1,v2,vstride,vorder,points ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLint,arrays.GLfloatArray) def glMapVertexAttrib2fAPPLE( index,size,u1,u2,ustride,uorder,v1,v2,vstride,vorder,points ):pass def glInitVertexProgramEvaluatorsAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/rgb_422.py0000644000175000001440000000063312025001653020704 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_APPLE_rgb_422' _p.unpack_constants( """GL_RGB_422_APPLE 0x8A1F""", globals()) def glInitRgb422APPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/specular_vector.py0000644000175000001440000000067712025001653022753 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_APPLE_specular_vector' _p.unpack_constants( """GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0""", globals()) def glInitSpecularVectorAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/vertex_array_object.py0000644000175000001440000000174412025001653023610 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_APPLE_vertex_array_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_APPLE_vertex_array_object',False) _p.unpack_constants( """GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5""", globals()) glget.addGLGetConstant( GL_VERTEX_ARRAY_BINDING_APPLE, (1,) ) @_f @_p.types(None,_cs.GLuint) def glBindVertexArrayAPPLE( array ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteVertexArraysAPPLE( n,arrays ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenVertexArraysAPPLE( n,arrays ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsVertexArrayAPPLE( array ):pass def glInitVertexArrayObjectAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/row_bytes.py0000644000175000001440000000070712025001653021562 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_APPLE_row_bytes' _p.unpack_constants( """GL_PACK_ROW_BYTES_APPLE 0x8A15 GL_UNPACK_ROW_BYTES_APPLE 0x8A16""", globals()) def glInitRowBytesAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/vertex_array_range.py0000644000175000001440000000222112025001653023425 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_APPLE_vertex_array_range' def _f( function ): return _p.createFunction( function,_p.GL,'GL_APPLE_vertex_array_range',False) _p.unpack_constants( """GL_VERTEX_ARRAY_RANGE_APPLE 0x851D GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 GL_STORAGE_CLIENT_APPLE 0x85B4 GL_STORAGE_CACHED_APPLE 0x85BE GL_STORAGE_SHARED_APPLE 0x85BF""", globals()) glget.addGLGetConstant( GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE, (1,) ) @_f @_p.types(None,_cs.GLsizei,ctypes.c_void_p) def glVertexArrayRangeAPPLE( length,pointer ):pass @_f @_p.types(None,_cs.GLsizei,ctypes.c_void_p) def glFlushVertexArrayRangeAPPLE( length,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glVertexArrayParameteriAPPLE( pname,param ):pass def glInitVertexArrayRangeAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/texture_range.py0000644000175000001440000000162612025001653022422 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_APPLE_texture_range' def _f( function ): return _p.createFunction( function,_p.GL,'GL_APPLE_texture_range',False) _p.unpack_constants( """GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC GL_STORAGE_PRIVATE_APPLE 0x85BD""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glTextureRangeAPPLE( target,length,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLvoidpArray) def glGetTexParameterPointervAPPLE( target,pname,params ):pass def glInitTextureRangeAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/transform_hint.py0000644000175000001440000000066012025001653022600 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_APPLE_transform_hint' _p.unpack_constants( """GL_TRANSFORM_HINT_APPLE 0x85B1""", globals()) def glInitTransformHintAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/object_purgeable.py0000644000175000001440000000206612025001653023041 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_APPLE_object_purgeable' def _f( function ): return _p.createFunction( function,_p.GL,'GL_APPLE_object_purgeable',False) _p.unpack_constants( """GL_BUFFER_OBJECT_APPLE 0x85B3 GL_RELEASED_APPLE 0x8A19 GL_VOLATILE_APPLE 0x8A1A GL_RETAINED_APPLE 0x8A1B GL_UNDEFINED_APPLE 0x8A1C GL_PURGEABLE_APPLE 0x8A1D""", globals()) @_f @_p.types(_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLenum) def glObjectPurgeableAPPLE( objectType,name,option ):pass @_f @_p.types(_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLenum) def glObjectUnpurgeableAPPLE( objectType,name,option ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetObjectParameterivAPPLE( objectType,name,pname,params ):pass def glInitObjectPurgeableAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/ycbcr_422.py0000644000175000001440000000075312025001653021237 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_APPLE_ycbcr_422' _p.unpack_constants( """GL_YCBCR_422_APPLE 0x85B9 GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB""", globals()) def glInitYcbcr422APPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/fence.py0000644000175000001440000000226312025001653020624 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_APPLE_fence' def _f( function ): return _p.createFunction( function,_p.GL,'GL_APPLE_fence',False) _p.unpack_constants( """GL_DRAW_PIXELS_APPLE 0x8A0A GL_FENCE_APPLE 0x8A0B""", globals()) @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenFencesAPPLE( n,fences ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteFencesAPPLE( n,fences ):pass @_f @_p.types(None,_cs.GLuint) def glSetFenceAPPLE( fence ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsFenceAPPLE( fence ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glTestFenceAPPLE( fence ):pass @_f @_p.types(None,_cs.GLuint) def glFinishFenceAPPLE( fence ):pass @_f @_p.types(_cs.GLboolean,_cs.GLenum,_cs.GLuint) def glTestObjectAPPLE( object,name ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glFinishObjectAPPLE( object,name ):pass def glInitFenceAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/float_pixels.py0000644000175000001440000000150412025001653022232 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_APPLE_float_pixels' _p.unpack_constants( """GL_HALF_APPLE 0x140B GL_RGBA_FLOAT32_APPLE 0x8814 GL_RGB_FLOAT32_APPLE 0x8815 GL_ALPHA_FLOAT32_APPLE 0x8816 GL_INTENSITY_FLOAT32_APPLE 0x8817 GL_LUMINANCE_FLOAT32_APPLE 0x8818 GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 GL_RGBA_FLOAT16_APPLE 0x881A GL_RGB_FLOAT16_APPLE 0x881B GL_ALPHA_FLOAT16_APPLE 0x881C GL_INTENSITY_FLOAT16_APPLE 0x881D GL_LUMINANCE_FLOAT16_APPLE 0x881E GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F GL_COLOR_FLOAT_APPLE 0x8A0F""", globals()) def glInitFloatPixelsAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/APPLE/flush_buffer_range.py0000644000175000001440000000153012025001653023366 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_APPLE_flush_buffer_range' def _f( function ): return _p.createFunction( function,_p.GL,'GL_APPLE_flush_buffer_range',False) _p.unpack_constants( """GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glBufferParameteriAPPLE( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLintptr,_cs.GLsizeiptr) def glFlushMappedBufferRangeAPPLE( target,offset,size ):pass def glInitFlushBufferRangeAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/0000755000175000001440000000000012032640120017447 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_3_0_DEPRECATED.py0000644000175000001440000000064112025001653022451 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_3_0' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_3_0',True) _p.unpack_constants( """GL_CLAMP_VERTEX_COLOR 0x891A GL_CLAMP_FRAGMENT_COLOR 0x891B GL_ALPHA_INTEGER 0x8D97""", globals()) PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_1_5.py0000644000175000001440000001053512031734330021001 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_1_5' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_1_5',False) _p.unpack_constants( """GL_BUFFER_SIZE 0x8764 GL_BUFFER_USAGE 0x8765 GL_QUERY_COUNTER_BITS 0x8864 GL_CURRENT_QUERY 0x8865 GL_QUERY_RESULT 0x8866 GL_QUERY_RESULT_AVAILABLE 0x8867 GL_ARRAY_BUFFER 0x8892 GL_ELEMENT_ARRAY_BUFFER 0x8893 GL_ARRAY_BUFFER_BINDING 0x8894 GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F GL_READ_ONLY 0x88B8 GL_WRITE_ONLY 0x88B9 GL_READ_WRITE 0x88BA GL_BUFFER_ACCESS 0x88BB GL_BUFFER_MAPPED 0x88BC GL_BUFFER_MAP_POINTER 0x88BD GL_STREAM_DRAW 0x88E0 GL_STREAM_READ 0x88E1 GL_STREAM_COPY 0x88E2 GL_STATIC_DRAW 0x88E4 GL_STATIC_READ 0x88E5 GL_STATIC_COPY 0x88E6 GL_DYNAMIC_DRAW 0x88E8 GL_DYNAMIC_READ 0x88E9 GL_DYNAMIC_COPY 0x88EA GL_SAMPLES_PASSED 0x8914 GL_SRC1_ALPHA 0x8589 GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E GL_FOG_COORD_SRC 0x8450 GL_FOG_COORD 0x8451 GL_CURRENT_FOG_COORD 0x8453 GL_FOG_COORD_ARRAY_TYPE 0x8454 GL_FOG_COORD_ARRAY_STRIDE 0x8455 GL_FOG_COORD_ARRAY_POINTER 0x8456 GL_FOG_COORD_ARRAY 0x8457 GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D GL_SRC0_RGB 0x8580 GL_SRC1_RGB 0x8581 GL_SRC2_RGB 0x8582 GL_SRC0_ALPHA 0x8588 GL_SRC2_ALPHA 0x858A""", globals()) glget.addGLGetConstant( GL_QUERY_COUNTER_BITS, (1,) ) glget.addGLGetConstant( GL_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_ELEMENT_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_VERTEX_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_NORMAL_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_COLOR_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_INDEX_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_EDGE_FLAG_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_SRC, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_ARRAY_TYPE, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_ARRAY_STRIDE, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_ARRAY, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_ARRAY_BUFFER_BINDING, (1,) ) @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenQueries( n,ids ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteQueries( n,ids ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsQuery( id ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBeginQuery( target,id ):pass @_f @_p.types(None,_cs.GLenum) def glEndQuery( target ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetQueryiv( target,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetQueryObjectiv( id,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuintArray) def glGetQueryObjectuiv( id,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindBuffer( target,buffer ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteBuffers( n,buffers ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenBuffers( n,buffers ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsBuffer( buffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizeiptr,ctypes.c_void_p,_cs.GLenum) def glBufferData( target,size,data,usage ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLintptr,_cs.GLsizeiptr,ctypes.c_void_p) def glBufferSubData( target,offset,size,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLintptr,_cs.GLsizeiptr,ctypes.c_void_p) def glGetBufferSubData( target,offset,size,data ):pass @_f @_p.types(ctypes.c_void_p,_cs.GLenum,_cs.GLenum) def glMapBuffer( target,access ):pass @_f @_p.types(_cs.GLboolean,_cs.GLenum) def glUnmapBuffer( target ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetBufferParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLvoidpArray) def glGetBufferPointerv( target,pname,params ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_2_1.py0000644000175000001440000000337212031734330020777 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_2_1' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_2_1',False) _p.unpack_constants( """GL_PIXEL_PACK_BUFFER 0x88EB GL_PIXEL_UNPACK_BUFFER 0x88EC GL_PIXEL_PACK_BUFFER_BINDING 0x88ED GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF GL_FLOAT_MAT2x3 0x8B65 GL_FLOAT_MAT2x4 0x8B66 GL_FLOAT_MAT3x2 0x8B67 GL_FLOAT_MAT3x4 0x8B68 GL_FLOAT_MAT4x2 0x8B69 GL_FLOAT_MAT4x3 0x8B6A GL_SRGB 0x8C40 GL_SRGB8 0x8C41 GL_SRGB_ALPHA 0x8C42 GL_SRGB8_ALPHA8 0x8C43 GL_COMPRESSED_SRGB 0x8C48 GL_COMPRESSED_SRGB_ALPHA 0x8C49 GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F GL_SLUMINANCE_ALPHA 0x8C44 GL_SLUMINANCE8_ALPHA8 0x8C45 GL_SLUMINANCE 0x8C46 GL_SLUMINANCE8 0x8C47 GL_COMPRESSED_SLUMINANCE 0x8C4A GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B""", globals()) @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix2x3fv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix3x2fv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix2x4fv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix4x2fv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix3x4fv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix4x3fv( location,count,transpose,value ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_3_0.py0000644000175000001440000002207712031734330021002 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_3_0' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_3_0',False) _p.unpack_constants( """GL_COMPARE_REF_TO_TEXTURE 0x884E GL_CLIP_DISTANCE0 0x3000 GL_CLIP_DISTANCE1 0x3001 GL_CLIP_DISTANCE2 0x3002 GL_CLIP_DISTANCE3 0x3003 GL_CLIP_DISTANCE4 0x3004 GL_CLIP_DISTANCE5 0x3005 GL_CLIP_DISTANCE6 0x3006 GL_CLIP_DISTANCE7 0x3007 GL_MAX_CLIP_DISTANCES 0xD32 GL_MAJOR_VERSION 0x821B GL_MINOR_VERSION 0x821C GL_NUM_EXTENSIONS 0x821D GL_CONTEXT_FLAGS 0x821E GL_COMPRESSED_RED 0x8225 GL_COMPRESSED_RG 0x8226 GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x1 GL_RGBA32F 0x8814 GL_RGB32F 0x8815 GL_RGBA16F 0x881A GL_RGB16F 0x881B GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 GL_CLAMP_READ_COLOR 0x891C GL_FIXED_ONLY 0x891D GL_MAX_VARYING_COMPONENTS 0x8B4B GL_TEXTURE_1D_ARRAY 0x8C18 GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 GL_TEXTURE_2D_ARRAY 0x8C1A GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D GL_R11F_G11F_B10F 0x8C3A GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B GL_RGB9_E5 0x8C3D GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E GL_TEXTURE_SHARED_SIZE 0x8C3F GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 GL_PRIMITIVES_GENERATED 0x8C87 GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 GL_RASTERIZER_DISCARD 0x8C89 GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B GL_INTERLEAVED_ATTRIBS 0x8C8C GL_SEPARATE_ATTRIBS 0x8C8D GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F GL_RGBA32UI 0x8D70 GL_RGB32UI 0x8D71 GL_RGBA16UI 0x8D76 GL_RGB16UI 0x8D77 GL_RGBA8UI 0x8D7C GL_RGB8UI 0x8D7D GL_RGBA32I 0x8D82 GL_RGB32I 0x8D83 GL_RGBA16I 0x8D88 GL_RGB16I 0x8D89 GL_RGBA8I 0x8D8E GL_RGB8I 0x8D8F GL_RED_INTEGER 0x8D94 GL_GREEN_INTEGER 0x8D95 GL_BLUE_INTEGER 0x8D96 GL_RGB_INTEGER 0x8D98 GL_RGBA_INTEGER 0x8D99 GL_BGR_INTEGER 0x8D9A GL_BGRA_INTEGER 0x8D9B GL_SAMPLER_1D_ARRAY 0x8DC0 GL_SAMPLER_2D_ARRAY 0x8DC1 GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 GL_SAMPLER_CUBE_SHADOW 0x8DC5 GL_UNSIGNED_INT_VEC2 0x8DC6 GL_UNSIGNED_INT_VEC3 0x8DC7 GL_UNSIGNED_INT_VEC4 0x8DC8 GL_INT_SAMPLER_1D 0x8DC9 GL_INT_SAMPLER_2D 0x8DCA GL_INT_SAMPLER_3D 0x8DCB GL_INT_SAMPLER_CUBE 0x8DCC GL_INT_SAMPLER_1D_ARRAY 0x8DCE GL_INT_SAMPLER_2D_ARRAY 0x8DCF GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 GL_QUERY_WAIT 0x8E13 GL_QUERY_NO_WAIT 0x8E14 GL_QUERY_BY_REGION_WAIT 0x8E15 GL_QUERY_BY_REGION_NO_WAIT 0x8E16 GL_BUFFER_ACCESS_FLAGS 0x911F GL_BUFFER_MAP_LENGTH 0x9120 GL_BUFFER_MAP_OFFSET 0x9121 GL_CLAMP_VERTEX_COLOR 0x891A GL_CLAMP_FRAGMENT_COLOR 0x891B GL_ALPHA_INTEGER 0x8D97""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLboolean,_cs.GLboolean,_cs.GLboolean,_cs.GLboolean) def glColorMaski( index,r,g,b,a ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLbooleanArray) def glGetBooleani_v( target,index,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLintArray) def glGetIntegeri_v( target,index,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glEnablei( target,index ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glDisablei( target,index ):pass @_f @_p.types(_cs.GLboolean,_cs.GLenum,_cs.GLuint) def glIsEnabledi( target,index ):pass @_f @_p.types(None,_cs.GLenum) def glBeginTransformFeedback( primitiveMode ):pass @_f @_p.types(None,) def glEndTransformFeedback( ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLintptr,_cs.GLsizeiptr) def glBindBufferRange( target,index,buffer,offset,size ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint) def glBindBufferBase( target,index,buffer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,ctypes.POINTER( ctypes.POINTER( _cs.GLchar )),_cs.GLenum) def glTransformFeedbackVaryings( program,count,varyings,bufferMode ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLsizeiArray,arrays.GLuintArray,arrays.GLcharArray) def glGetTransformFeedbackVarying( program,index,bufSize,length,size,type,name ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glClampColor( target,clamp ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glBeginConditionalRender( id,mode ):pass @_f @_p.types(None,) def glEndConditionalRender( ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glVertexAttribIPointer( index,size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVertexAttribIiv( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLuintArray) def glGetVertexAttribIuiv( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint) def glVertexAttribI1i( index,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint) def glVertexAttribI2i( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint) def glVertexAttribI3i( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glVertexAttribI4i( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glVertexAttribI1ui( index,x ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glVertexAttribI2ui( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glVertexAttribI3ui( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glVertexAttribI4ui( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttribI1iv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttribI2iv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttribI3iv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttribI4iv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttribI1uiv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttribI2uiv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttribI3uiv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttribI4uiv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLbyteArray) def glVertexAttribI4bv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttribI4sv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLubyteArray) def glVertexAttribI4ubv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttribI4usv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,arrays.GLuintArray) def glGetUniformuiv( program,location,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,arrays.GLcharArray) def glBindFragDataLocation( program,color,name ):pass @_f @_p.types(_cs.GLint,_cs.GLuint,arrays.GLcharArray) def glGetFragDataLocation( program,name ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint) def glUniform1ui( location,v0 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint,_cs.GLuint) def glUniform2ui( location,v0,v1 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glUniform3ui( location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glUniform4ui( location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glUniform1uiv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glUniform2uiv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glUniform3uiv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLuintArray) def glUniform4uiv( location,count,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glTexParameterIiv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glTexParameterIuiv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetTexParameterIiv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLuintArray) def glGetTexParameterIuiv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,arrays.GLintArray) def glClearBufferiv( buffer,drawbuffer,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,arrays.GLuintArray) def glClearBufferuiv( buffer,drawbuffer,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,arrays.GLfloatArray) def glClearBufferfv( buffer,drawbuffer,value ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLfloat,_cs.GLint) def glClearBufferfi( buffer,drawbuffer,depth,stencil ):pass @_f @_p.types(arrays.GLubyteArray,_cs.GLenum,_cs.GLuint) def glGetStringi( name,index ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_1_4.py0000644000175000001440000001431512031734330021000 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_1_4' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_1_4',False) _p.unpack_constants( """GL_BLEND_DST_RGB 0x80C8 GL_BLEND_SRC_RGB 0x80C9 GL_BLEND_DST_ALPHA 0x80CA GL_BLEND_SRC_ALPHA 0x80CB GL_POINT_FADE_THRESHOLD_SIZE 0x8128 GL_DEPTH_COMPONENT16 0x81A5 GL_DEPTH_COMPONENT24 0x81A6 GL_DEPTH_COMPONENT32 0x81A7 GL_MIRRORED_REPEAT 0x8370 GL_MAX_TEXTURE_LOD_BIAS 0x84FD GL_TEXTURE_LOD_BIAS 0x8501 GL_INCR_WRAP 0x8507 GL_DECR_WRAP 0x8508 GL_TEXTURE_DEPTH_SIZE 0x884A GL_TEXTURE_COMPARE_MODE 0x884C GL_TEXTURE_COMPARE_FUNC 0x884D GL_POINT_SIZE_MIN 0x8126 GL_POINT_SIZE_MAX 0x8127 GL_POINT_DISTANCE_ATTENUATION 0x8129 GL_GENERATE_MIPMAP 0x8191 GL_GENERATE_MIPMAP_HINT 0x8192 GL_FOG_COORDINATE_SOURCE 0x8450 GL_FOG_COORDINATE 0x8451 GL_FRAGMENT_DEPTH 0x8452 GL_CURRENT_FOG_COORDINATE 0x8453 GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 GL_FOG_COORDINATE_ARRAY 0x8457 GL_COLOR_SUM 0x8458 GL_CURRENT_SECONDARY_COLOR 0x8459 GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D GL_SECONDARY_COLOR_ARRAY 0x845E GL_TEXTURE_FILTER_CONTROL 0x8500 GL_DEPTH_TEXTURE_MODE 0x884B GL_COMPARE_R_TO_TEXTURE 0x884E""", globals()) glget.addGLGetConstant( GL_BLEND_DST_RGB, (1,) ) glget.addGLGetConstant( GL_BLEND_SRC_RGB, (1,) ) glget.addGLGetConstant( GL_BLEND_DST_ALPHA, (1,) ) glget.addGLGetConstant( GL_BLEND_SRC_ALPHA, (1,) ) glget.addGLGetConstant( GL_POINT_FADE_THRESHOLD_SIZE, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_LOD_BIAS, (1,) ) glget.addGLGetConstant( GL_POINT_SIZE_MIN, (1,) ) glget.addGLGetConstant( GL_POINT_SIZE_MAX, (1,) ) glget.addGLGetConstant( GL_POINT_DISTANCE_ATTENUATION, (3,) ) glget.addGLGetConstant( GL_GENERATE_MIPMAP_HINT, (1,) ) glget.addGLGetConstant( GL_CURRENT_FOG_COORDINATE, (1,) ) glget.addGLGetConstant( GL_COLOR_SUM, (1,) ) glget.addGLGetConstant( GL_CURRENT_SECONDARY_COLOR, (4,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_SIZE, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_TYPE, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_STRIDE, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glBlendFuncSeparate( sfactorRGB,dfactorRGB,sfactorAlpha,dfactorAlpha ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray,arrays.GLsizeiArray,_cs.GLsizei) def glMultiDrawArrays( mode,first,count,drawcount ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLsizeiArray,_cs.GLenum,arrays.GLvoidpArray,_cs.GLsizei) def glMultiDrawElements( mode,count,type,indices,drawcount ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glPointParameterf( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glPointParameterfv( pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glPointParameteri( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glPointParameteriv( pname,params ):pass @_f @_p.types(None,_cs.GLfloat) def glFogCoordf( coord ):pass @_f @_p.types(None,arrays.GLfloatArray) def glFogCoordfv( coord ):pass @_f @_p.types(None,_cs.GLdouble) def glFogCoordd( coord ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glFogCoorddv( coord ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glFogCoordPointer( type,stride,pointer ):pass @_f @_p.types(None,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte) def glSecondaryColor3b( red,green,blue ):pass @_f @_p.types(None,arrays.GLbyteArray) def glSecondaryColor3bv( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glSecondaryColor3d( red,green,blue ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glSecondaryColor3dv( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glSecondaryColor3f( red,green,blue ):pass @_f @_p.types(None,arrays.GLfloatArray) def glSecondaryColor3fv( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glSecondaryColor3i( red,green,blue ):pass @_f @_p.types(None,arrays.GLintArray) def glSecondaryColor3iv( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glSecondaryColor3s( red,green,blue ):pass @_f @_p.types(None,arrays.GLshortArray) def glSecondaryColor3sv( v ):pass @_f @_p.types(None,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte) def glSecondaryColor3ub( red,green,blue ):pass @_f @_p.types(None,arrays.GLubyteArray) def glSecondaryColor3ubv( v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glSecondaryColor3ui( red,green,blue ):pass @_f @_p.types(None,arrays.GLuintArray) def glSecondaryColor3uiv( v ):pass @_f @_p.types(None,_cs.GLushort,_cs.GLushort,_cs.GLushort) def glSecondaryColor3us( red,green,blue ):pass @_f @_p.types(None,arrays.GLushortArray) def glSecondaryColor3usv( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glSecondaryColorPointer( size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glWindowPos2d( x,y ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glWindowPos2dv( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glWindowPos2f( x,y ):pass @_f @_p.types(None,arrays.GLfloatArray) def glWindowPos2fv( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glWindowPos2i( x,y ):pass @_f @_p.types(None,arrays.GLintArray) def glWindowPos2iv( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort) def glWindowPos2s( x,y ):pass @_f @_p.types(None,arrays.GLshortArray) def glWindowPos2sv( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glWindowPos3d( x,y,z ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glWindowPos3dv( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glWindowPos3f( x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray) def glWindowPos3fv( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glWindowPos3i( x,y,z ):pass @_f @_p.types(None,arrays.GLintArray) def glWindowPos3iv( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glWindowPos3s( x,y,z ):pass @_f @_p.types(None,arrays.GLshortArray) def glWindowPos3sv( v ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_2_0_DEPRECATED.py0000644000175000001440000000113412025001653022446 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_2_0' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_2_0',True) _p.unpack_constants( """GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 GL_POINT_SPRITE 0x8861 GL_COORD_REPLACE 0x8862 GL_MAX_TEXTURE_COORDS 0x8871""", globals()) glget.addGLGetConstant( GL_VERTEX_PROGRAM_TWO_SIDE, (1,) ) glget.addGLGetConstant( GL_POINT_SPRITE, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_COORDS, (1,) ) PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_1_4_DEPRECATED.py0000644000175000001440000001127612025001653022461 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_1_4' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_1_4',True) _p.unpack_constants( """GL_POINT_SIZE_MIN 0x8126 GL_POINT_SIZE_MAX 0x8127 GL_POINT_DISTANCE_ATTENUATION 0x8129 GL_GENERATE_MIPMAP 0x8191 GL_GENERATE_MIPMAP_HINT 0x8192 GL_FOG_COORDINATE_SOURCE 0x8450 GL_FOG_COORDINATE 0x8451 GL_FRAGMENT_DEPTH 0x8452 GL_CURRENT_FOG_COORDINATE 0x8453 GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 GL_FOG_COORDINATE_ARRAY 0x8457 GL_COLOR_SUM 0x8458 GL_CURRENT_SECONDARY_COLOR 0x8459 GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D GL_SECONDARY_COLOR_ARRAY 0x845E GL_TEXTURE_FILTER_CONTROL 0x8500 GL_DEPTH_TEXTURE_MODE 0x884B GL_COMPARE_R_TO_TEXTURE 0x884E""", globals()) glget.addGLGetConstant( GL_POINT_SIZE_MIN, (1,) ) glget.addGLGetConstant( GL_POINT_SIZE_MAX, (1,) ) glget.addGLGetConstant( GL_POINT_DISTANCE_ATTENUATION, (3,) ) glget.addGLGetConstant( GL_GENERATE_MIPMAP_HINT, (1,) ) glget.addGLGetConstant( GL_CURRENT_FOG_COORDINATE, (1,) ) glget.addGLGetConstant( GL_COLOR_SUM, (1,) ) glget.addGLGetConstant( GL_CURRENT_SECONDARY_COLOR, (4,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_SIZE, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_TYPE, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_STRIDE, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY, (1,) ) @_f @_p.types(None,_cs.GLfloat) def glFogCoordf( coord ):pass @_f @_p.types(None,arrays.GLfloatArray) def glFogCoordfv( coord ):pass @_f @_p.types(None,_cs.GLdouble) def glFogCoordd( coord ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glFogCoorddv( coord ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glFogCoordPointer( type,stride,pointer ):pass @_f @_p.types(None,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte) def glSecondaryColor3b( red,green,blue ):pass @_f @_p.types(None,arrays.GLbyteArray) def glSecondaryColor3bv( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glSecondaryColor3d( red,green,blue ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glSecondaryColor3dv( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glSecondaryColor3f( red,green,blue ):pass @_f @_p.types(None,arrays.GLfloatArray) def glSecondaryColor3fv( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glSecondaryColor3i( red,green,blue ):pass @_f @_p.types(None,arrays.GLintArray) def glSecondaryColor3iv( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glSecondaryColor3s( red,green,blue ):pass @_f @_p.types(None,arrays.GLshortArray) def glSecondaryColor3sv( v ):pass @_f @_p.types(None,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte) def glSecondaryColor3ub( red,green,blue ):pass @_f @_p.types(None,arrays.GLubyteArray) def glSecondaryColor3ubv( v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glSecondaryColor3ui( red,green,blue ):pass @_f @_p.types(None,arrays.GLuintArray) def glSecondaryColor3uiv( v ):pass @_f @_p.types(None,_cs.GLushort,_cs.GLushort,_cs.GLushort) def glSecondaryColor3us( red,green,blue ):pass @_f @_p.types(None,arrays.GLushortArray) def glSecondaryColor3usv( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glSecondaryColorPointer( size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glWindowPos2d( x,y ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glWindowPos2dv( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glWindowPos2f( x,y ):pass @_f @_p.types(None,arrays.GLfloatArray) def glWindowPos2fv( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glWindowPos2i( x,y ):pass @_f @_p.types(None,arrays.GLintArray) def glWindowPos2iv( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort) def glWindowPos2s( x,y ):pass @_f @_p.types(None,arrays.GLshortArray) def glWindowPos2sv( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glWindowPos3d( x,y,z ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glWindowPos3dv( v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glWindowPos3f( x,y,z ):pass @_f @_p.types(None,arrays.GLfloatArray) def glWindowPos3fv( v ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glWindowPos3i( x,y,z ):pass @_f @_p.types(None,arrays.GLintArray) def glWindowPos3iv( v ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glWindowPos3s( x,y,z ):pass @_f @_p.types(None,arrays.GLshortArray) def glWindowPos3sv( v ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/__init__.py0000644000175000001440000000002712025001653021563 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_2_1_DEPRECATED.py0000644000175000001440000000103712025001653022451 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_2_1' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_2_1',True) _p.unpack_constants( """GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F GL_SLUMINANCE_ALPHA 0x8C44 GL_SLUMINANCE8_ALPHA8 0x8C45 GL_SLUMINANCE 0x8C46 GL_SLUMINANCE8 0x8C47 GL_COMPRESSED_SLUMINANCE 0x8C4A GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B""", globals()) PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_4_3.py0000644000175000001440000000063112025001653020774 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_4_3' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_4_3',False) _p.unpack_constants( """GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E""", globals()) PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_1_5_DEPRECATED.py0000644000175000001440000000340312025001653022453 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_1_5' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_1_5',True) _p.unpack_constants( """GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E GL_FOG_COORD_SRC 0x8450 GL_FOG_COORD 0x8451 GL_CURRENT_FOG_COORD 0x8453 GL_FOG_COORD_ARRAY_TYPE 0x8454 GL_FOG_COORD_ARRAY_STRIDE 0x8455 GL_FOG_COORD_ARRAY_POINTER 0x8456 GL_FOG_COORD_ARRAY 0x8457 GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D GL_SRC0_RGB 0x8580 GL_SRC1_RGB 0x8581 GL_SRC2_RGB 0x8582 GL_SRC0_ALPHA 0x8588 GL_SRC1_ALPHA 0x8589 GL_SRC2_ALPHA 0x858A""", globals()) glget.addGLGetConstant( GL_VERTEX_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_NORMAL_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_COLOR_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_INDEX_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_EDGE_FLAG_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_SRC, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_ARRAY_TYPE, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_ARRAY_STRIDE, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_ARRAY, (1,) ) glget.addGLGetConstant( GL_FOG_COORD_ARRAY_BUFFER_BINDING, (1,) ) PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_3_2.py0000644000175000001440000000267712025001653021006 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_3_2' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_3_2',False) _p.unpack_constants( """GL_CONTEXT_CORE_PROFILE_BIT 0x1 GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x2 GL_LINES_ADJACENCY 0xA GL_LINE_STRIP_ADJACENCY 0xB GL_TRIANGLES_ADJACENCY 0xC GL_TRIANGLE_STRIP_ADJACENCY 0xD GL_PROGRAM_POINT_SIZE 0x8642 GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 GL_GEOMETRY_SHADER 0x8DD9 GL_GEOMETRY_VERTICES_OUT 0x8916 GL_GEOMETRY_INPUT_TYPE 0x8917 GL_GEOMETRY_OUTPUT_TYPE 0x8918 GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 GL_CONTEXT_PROFILE_MASK 0x9126""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLint64Array) def glGetInteger64i_v( target,index,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLint64Array) def glGetBufferParameteri64v( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLint) def glFramebufferTexture( target,attachment,texture,level ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_1_2_DEPRECATED.py0000644000175000001440000001132612025001653022453 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_1_2' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_1_2',True) _p.unpack_constants( """GL_RESCALE_NORMAL 0x803A GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 GL_SINGLE_COLOR 0x81F9 GL_SEPARATE_SPECULAR_COLOR 0x81FA GL_ALIASED_POINT_SIZE_RANGE 0x846D""", globals()) glget.addGLGetConstant( GL_RESCALE_NORMAL, (1,) ) glget.addGLGetConstant( GL_LIGHT_MODEL_COLOR_CONTROL, (1,) ) glget.addGLGetConstant( GL_ALIASED_POINT_SIZE_RANGE, (2,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glColorTable( target,internalformat,width,format,type,table ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glColorTableParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glColorTableParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyColorTable( target,internalformat,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetColorTable( target,format,type,table ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetColorTableParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetColorTableParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glColorSubTable( target,start,count,format,type,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyColorSubTable( target,start,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glConvolutionFilter1D( target,internalformat,width,format,type,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glConvolutionFilter2D( target,internalformat,width,height,format,type,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glConvolutionParameterf( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glConvolutionParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glConvolutionParameteri( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glConvolutionParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyConvolutionFilter1D( target,internalformat,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyConvolutionFilter2D( target,internalformat,x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetConvolutionFilter( target,format,type,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetConvolutionParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetConvolutionParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p,ctypes.c_void_p,ctypes.c_void_p) def glGetSeparableFilter( target,format,type,row,column,span ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p,ctypes.c_void_p) def glSeparableFilter2D( target,internalformat,width,height,format,type,row,column ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLboolean,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetHistogram( target,reset,format,type,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetHistogramParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetHistogramParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLboolean,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetMinmax( target,reset,format,type,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetMinmaxParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMinmaxParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLboolean) def glHistogram( target,width,internalformat,sink ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLboolean) def glMinmax( target,internalformat,sink ):pass @_f @_p.types(None,_cs.GLenum) def glResetHistogram( target ):pass @_f @_p.types(None,_cs.GLenum) def glResetMinmax( target ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_1_2.py0000644000175000001440000001704112031734330020775 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_1_2' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_1_2',False) _p.unpack_constants( """GL_UNSIGNED_BYTE_3_3_2 0x8032 GL_UNSIGNED_SHORT_4_4_4_4 0x8033 GL_UNSIGNED_SHORT_5_5_5_1 0x8034 GL_UNSIGNED_INT_8_8_8_8 0x8035 GL_UNSIGNED_INT_10_10_10_2 0x8036 GL_TEXTURE_BINDING_3D 0x806A GL_PACK_SKIP_IMAGES 0x806B GL_PACK_IMAGE_HEIGHT 0x806C GL_UNPACK_SKIP_IMAGES 0x806D GL_UNPACK_IMAGE_HEIGHT 0x806E GL_TEXTURE_3D 0x806F GL_PROXY_TEXTURE_3D 0x8070 GL_TEXTURE_DEPTH 0x8071 GL_TEXTURE_WRAP_R 0x8072 GL_MAX_3D_TEXTURE_SIZE 0x8073 GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 GL_UNSIGNED_SHORT_5_6_5 0x8363 GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 GL_BGR 0x80E0 GL_BGRA 0x80E1 GL_MAX_ELEMENTS_VERTICES 0x80E8 GL_MAX_ELEMENTS_INDICES 0x80E9 GL_CLAMP_TO_EDGE 0x812F GL_TEXTURE_MIN_LOD 0x813A GL_TEXTURE_MAX_LOD 0x813B GL_TEXTURE_BASE_LEVEL 0x813C GL_TEXTURE_MAX_LEVEL 0x813D GL_SMOOTH_POINT_SIZE_RANGE 0xB12 GL_SMOOTH_POINT_SIZE_GRANULARITY 0xB13 GL_SMOOTH_LINE_WIDTH_RANGE 0xB22 GL_SMOOTH_LINE_WIDTH_GRANULARITY 0xB23 GL_ALIASED_LINE_WIDTH_RANGE 0x846E GL_RESCALE_NORMAL 0x803A GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 GL_SINGLE_COLOR 0x81F9 GL_SEPARATE_SPECULAR_COLOR 0x81FA GL_ALIASED_POINT_SIZE_RANGE 0x846D""", globals()) glget.addGLGetConstant( GL_TEXTURE_BINDING_3D, (1,) ) glget.addGLGetConstant( GL_PACK_SKIP_IMAGES, (1,) ) glget.addGLGetConstant( GL_PACK_IMAGE_HEIGHT, (1,) ) glget.addGLGetConstant( GL_UNPACK_SKIP_IMAGES, (1,) ) glget.addGLGetConstant( GL_UNPACK_IMAGE_HEIGHT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_3D, (1,) ) glget.addGLGetConstant( GL_MAX_3D_TEXTURE_SIZE, (1,) ) glget.addGLGetConstant( GL_MAX_ELEMENTS_VERTICES, (1,) ) glget.addGLGetConstant( GL_MAX_ELEMENTS_INDICES, (1,) ) glget.addGLGetConstant( GL_SMOOTH_POINT_SIZE_RANGE, (2,) ) glget.addGLGetConstant( GL_SMOOTH_POINT_SIZE_GRANULARITY, (1,) ) glget.addGLGetConstant( GL_SMOOTH_LINE_WIDTH_RANGE, (2,) ) glget.addGLGetConstant( GL_SMOOTH_LINE_WIDTH_GRANULARITY, (1,) ) glget.addGLGetConstant( GL_ALIASED_LINE_WIDTH_RANGE, (2,) ) glget.addGLGetConstant( GL_RESCALE_NORMAL, (1,) ) glget.addGLGetConstant( GL_LIGHT_MODEL_COLOR_CONTROL, (1,) ) glget.addGLGetConstant( GL_ALIASED_POINT_SIZE_RANGE, (2,) ) @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glBlendColor( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLenum) def glBlendEquation( mode ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p) def glDrawRangeElements( mode,start,end,count,type,indices ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexImage3D( target,level,internalformat,width,height,depth,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexSubImage3D( target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyTexSubImage3D( target,level,xoffset,yoffset,zoffset,x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glColorTable( target,internalformat,width,format,type,table ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glColorTableParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glColorTableParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyColorTable( target,internalformat,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetColorTable( target,format,type,table ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetColorTableParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetColorTableParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glColorSubTable( target,start,count,format,type,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyColorSubTable( target,start,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glConvolutionFilter1D( target,internalformat,width,format,type,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glConvolutionFilter2D( target,internalformat,width,height,format,type,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glConvolutionParameterf( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glConvolutionParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glConvolutionParameteri( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glConvolutionParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyConvolutionFilter1D( target,internalformat,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyConvolutionFilter2D( target,internalformat,x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetConvolutionFilter( target,format,type,image ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetConvolutionParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetConvolutionParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p,ctypes.c_void_p,ctypes.c_void_p) def glGetSeparableFilter( target,format,type,row,column,span ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p,ctypes.c_void_p) def glSeparableFilter2D( target,internalformat,width,height,format,type,row,column ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLboolean,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetHistogram( target,reset,format,type,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetHistogramParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetHistogramParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLboolean,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetMinmax( target,reset,format,type,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetMinmaxParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMinmaxParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLboolean) def glHistogram( target,width,internalformat,sink ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLboolean) def glMinmax( target,internalformat,sink ):pass @_f @_p.types(None,_cs.GLenum) def glResetHistogram( target ):pass @_f @_p.types(None,_cs.GLenum) def glResetMinmax( target ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_2_0.py0000644000175000001440000003370612031734330021002 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_2_0' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_2_0',False) _p.unpack_constants( """GL_BLEND_EQUATION_RGB 0x8009 GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 GL_CURRENT_VERTEX_ATTRIB 0x8626 GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 GL_STENCIL_BACK_FUNC 0x8800 GL_STENCIL_BACK_FAIL 0x8801 GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 GL_MAX_DRAW_BUFFERS 0x8824 GL_DRAW_BUFFER0 0x8825 GL_DRAW_BUFFER1 0x8826 GL_DRAW_BUFFER2 0x8827 GL_DRAW_BUFFER3 0x8828 GL_DRAW_BUFFER4 0x8829 GL_DRAW_BUFFER5 0x882A GL_DRAW_BUFFER6 0x882B GL_DRAW_BUFFER7 0x882C GL_DRAW_BUFFER8 0x882D GL_DRAW_BUFFER9 0x882E GL_DRAW_BUFFER10 0x882F GL_DRAW_BUFFER11 0x8830 GL_DRAW_BUFFER12 0x8831 GL_DRAW_BUFFER13 0x8832 GL_DRAW_BUFFER14 0x8833 GL_DRAW_BUFFER15 0x8834 GL_BLEND_EQUATION_ALPHA 0x883D GL_MAX_VERTEX_ATTRIBS 0x8869 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 GL_FRAGMENT_SHADER 0x8B30 GL_VERTEX_SHADER 0x8B31 GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A GL_MAX_VARYING_FLOATS 0x8B4B GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D GL_SHADER_TYPE 0x8B4F GL_FLOAT_VEC2 0x8B50 GL_FLOAT_VEC3 0x8B51 GL_FLOAT_VEC4 0x8B52 GL_INT_VEC2 0x8B53 GL_INT_VEC3 0x8B54 GL_INT_VEC4 0x8B55 GL_BOOL 0x8B56 GL_BOOL_VEC2 0x8B57 GL_BOOL_VEC3 0x8B58 GL_BOOL_VEC4 0x8B59 GL_FLOAT_MAT2 0x8B5A GL_FLOAT_MAT3 0x8B5B GL_FLOAT_MAT4 0x8B5C GL_SAMPLER_1D 0x8B5D GL_SAMPLER_2D 0x8B5E GL_SAMPLER_3D 0x8B5F GL_SAMPLER_CUBE 0x8B60 GL_SAMPLER_1D_SHADOW 0x8B61 GL_SAMPLER_2D_SHADOW 0x8B62 GL_DELETE_STATUS 0x8B80 GL_COMPILE_STATUS 0x8B81 GL_LINK_STATUS 0x8B82 GL_VALIDATE_STATUS 0x8B83 GL_INFO_LOG_LENGTH 0x8B84 GL_ATTACHED_SHADERS 0x8B85 GL_ACTIVE_UNIFORMS 0x8B86 GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 GL_SHADER_SOURCE_LENGTH 0x8B88 GL_ACTIVE_ATTRIBUTES 0x8B89 GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B GL_SHADING_LANGUAGE_VERSION 0x8B8C GL_CURRENT_PROGRAM 0x8B8D GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 GL_LOWER_LEFT 0x8CA1 GL_UPPER_LEFT 0x8CA2 GL_STENCIL_BACK_REF 0x8CA3 GL_STENCIL_BACK_VALUE_MASK 0x8CA4 GL_STENCIL_BACK_WRITEMASK 0x8CA5 GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 GL_POINT_SPRITE 0x8861 GL_COORD_REPLACE 0x8862 GL_MAX_TEXTURE_COORDS 0x8871""", globals()) glget.addGLGetConstant( GL_BLEND_EQUATION_RGB, (1,) ) glget.addGLGetConstant( GL_VERTEX_PROGRAM_POINT_SIZE, (1,) ) glget.addGLGetConstant( GL_STENCIL_BACK_FUNC, (1,) ) glget.addGLGetConstant( GL_STENCIL_BACK_FAIL, (1,) ) glget.addGLGetConstant( GL_STENCIL_BACK_PASS_DEPTH_FAIL, (1,) ) glget.addGLGetConstant( GL_STENCIL_BACK_PASS_DEPTH_PASS, (1,) ) glget.addGLGetConstant( GL_MAX_DRAW_BUFFERS, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER0, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER1, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER2, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER3, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER4, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER5, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER6, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER7, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER8, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER9, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER10, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER11, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER12, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER13, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER14, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER15, (1,) ) glget.addGLGetConstant( GL_BLEND_EQUATION_ALPHA, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_ATTRIBS, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_IMAGE_UNITS, (1,) ) glget.addGLGetConstant( GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_UNIFORM_COMPONENTS, (1,) ) glget.addGLGetConstant( GL_MAX_VARYING_FLOATS, (1,) ) glget.addGLGetConstant( GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, (1,) ) glget.addGLGetConstant( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, (1,) ) glget.addGLGetConstant( GL_FRAGMENT_SHADER_DERIVATIVE_HINT, (1,) ) glget.addGLGetConstant( GL_CURRENT_PROGRAM, (1,) ) glget.addGLGetConstant( GL_POINT_SPRITE_COORD_ORIGIN, (1,) ) glget.addGLGetConstant( GL_STENCIL_BACK_REF, (1,) ) glget.addGLGetConstant( GL_STENCIL_BACK_VALUE_MASK, (1,) ) glget.addGLGetConstant( GL_STENCIL_BACK_WRITEMASK, (1,) ) glget.addGLGetConstant( GL_VERTEX_PROGRAM_TWO_SIDE, (1,) ) glget.addGLGetConstant( GL_POINT_SPRITE, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_COORDS, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glBlendEquationSeparate( modeRGB,modeAlpha ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDrawBuffers( n,bufs ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glStencilOpSeparate( face,sfail,dpfail,dppass ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLuint) def glStencilFuncSeparate( face,func,ref,mask ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glStencilMaskSeparate( face,mask ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glAttachShader( program,shader ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,arrays.GLcharArray) def glBindAttribLocation( program,index,name ):pass @_f @_p.types(None,_cs.GLuint) def glCompileShader( shader ):pass @_f @_p.types(_cs.GLuint,) def glCreateProgram( ):pass @_f @_p.types(_cs.GLuint,_cs.GLenum) def glCreateShader( type ):pass @_f @_p.types(None,_cs.GLuint) def glDeleteProgram( program ):pass @_f @_p.types(None,_cs.GLuint) def glDeleteShader( shader ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glDetachShader( program,shader ):pass @_f @_p.types(None,_cs.GLuint) def glDisableVertexAttribArray( index ):pass @_f @_p.types(None,_cs.GLuint) def glEnableVertexAttribArray( index ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLintArray,arrays.GLuintArray,arrays.GLcharArray) def glGetActiveAttrib( program,index,bufSize,length,size,type,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLintArray,arrays.GLuintArray,arrays.GLcharArray) def glGetActiveUniform( program,index,bufSize,length,size,type,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLuintArray) def glGetAttachedShaders( program,maxCount,count,obj ):pass @_f @_p.types(_cs.GLint,_cs.GLuint,arrays.GLcharArray) def glGetAttribLocation( program,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetProgramiv( program,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetProgramInfoLog( program,bufSize,length,infoLog ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetShaderiv( shader,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetShaderInfoLog( shader,bufSize,length,infoLog ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetShaderSource( shader,bufSize,length,source ):pass @_f @_p.types(_cs.GLint,_cs.GLuint,arrays.GLcharArray) def glGetUniformLocation( program,name ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,arrays.GLfloatArray) def glGetUniformfv( program,location,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,arrays.GLintArray) def glGetUniformiv( program,location,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLdoubleArray) def glGetVertexAttribdv( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetVertexAttribfv( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVertexAttribiv( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLvoidpArray) def glGetVertexAttribPointerv( index,pname,pointer ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsProgram( program ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsShader( shader ):pass @_f @_p.types(None,_cs.GLuint) def glLinkProgram( program ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,ctypes.POINTER( ctypes.POINTER( _cs.GLchar )),arrays.GLintArray) def glShaderSource( shader,count,string,length ):pass @_f @_p.types(None,_cs.GLuint) def glUseProgram( program ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat) def glUniform1f( location,v0 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat,_cs.GLfloat) def glUniform2f( location,v0,v1 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glUniform3f( location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glUniform4f( location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glUniform1i( location,v0 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glUniform2i( location,v0,v1 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glUniform3i( location,v0,v1,v2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glUniform4i( location,v0,v1,v2,v3 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glUniform1fv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glUniform2fv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glUniform3fv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLfloatArray) def glUniform4fv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glUniform1iv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glUniform2iv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glUniform3iv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,arrays.GLintArray) def glUniform4iv( location,count,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix2fv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix3fv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLint,_cs.GLsizei,_cs.GLboolean,arrays.GLfloatArray) def glUniformMatrix4fv( location,count,transpose,value ):pass @_f @_p.types(None,_cs.GLuint) def glValidateProgram( program ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble) def glVertexAttrib1d( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib1dv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat) def glVertexAttrib1f( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib1fv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort) def glVertexAttrib1s( index,x ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib1sv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble) def glVertexAttrib2d( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib2dv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat) def glVertexAttrib2f( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib2fv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort,_cs.GLshort) def glVertexAttrib2s( index,x,y ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib2sv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttrib3d( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib3dv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertexAttrib3f( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib3fv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertexAttrib3s( index,x,y,z ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib3sv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLbyteArray) def glVertexAttrib4Nbv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttrib4Niv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib4Nsv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte) def glVertexAttrib4Nub( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLubyteArray) def glVertexAttrib4Nubv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttrib4Nuiv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttrib4Nusv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLbyteArray) def glVertexAttrib4bv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexAttrib4d( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLdoubleArray) def glVertexAttrib4dv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertexAttrib4f( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glVertexAttrib4fv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray) def glVertexAttrib4iv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertexAttrib4s( index,x,y,z,w ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLshortArray) def glVertexAttrib4sv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLubyteArray) def glVertexAttrib4ubv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLuintArray) def glVertexAttrib4uiv( index,v ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLushortArray) def glVertexAttrib4usv( index,v ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLboolean,_cs.GLsizei,ctypes.c_void_p) def glVertexAttribPointer( index,size,type,normalized,stride,pointer ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_4_2.py0000644000175000001440000000045012025001653020772 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_4_2' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_4_2',False) PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_1_1.py0000644000175000001440000014617212025001653021002 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays _GLGET_CONSTANTS = {} import ctypes EXTENSION_NAME = 'GL_VERSION_GL_1_1' def _f( function ): return _p.createFunction( function,None,'GL_VERSION_GL_1_1',False) _p.unpack_constants( """GL_FALSE 0x0 GL_TRUE 0x1 GL_BYTE 0x1400 GL_UNSIGNED_BYTE 0x1401 GL_SHORT 0x1402 GL_UNSIGNED_SHORT 0x1403 GL_INT 0x1404 GL_UNSIGNED_INT 0x1405 GL_FLOAT 0x1406 GL_2_BYTES 0x1407 GL_3_BYTES 0x1408 GL_4_BYTES 0x1409 GL_DOUBLE 0x140A GL_POINTS 0x0 GL_LINES 0x1 GL_LINE_LOOP 0x2 GL_LINE_STRIP 0x3 GL_TRIANGLES 0x4 GL_TRIANGLE_STRIP 0x5 GL_TRIANGLE_FAN 0x6 GL_QUADS 0x7 GL_QUAD_STRIP 0x8 GL_POLYGON 0x9 GL_VERTEX_ARRAY 0x8074 GL_NORMAL_ARRAY 0x8075 GL_COLOR_ARRAY 0x8076 GL_INDEX_ARRAY 0x8077 GL_TEXTURE_COORD_ARRAY 0x8078 GL_EDGE_FLAG_ARRAY 0x8079 GL_VERTEX_ARRAY_SIZE 0x807A GL_VERTEX_ARRAY_TYPE 0x807B GL_VERTEX_ARRAY_STRIDE 0x807C GL_NORMAL_ARRAY_TYPE 0x807E GL_NORMAL_ARRAY_STRIDE 0x807F GL_COLOR_ARRAY_SIZE 0x8081 GL_COLOR_ARRAY_TYPE 0x8082 GL_COLOR_ARRAY_STRIDE 0x8083 GL_INDEX_ARRAY_TYPE 0x8085 GL_INDEX_ARRAY_STRIDE 0x8086 GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A GL_EDGE_FLAG_ARRAY_STRIDE 0x808C GL_VERTEX_ARRAY_POINTER 0x808E GL_NORMAL_ARRAY_POINTER 0x808F GL_COLOR_ARRAY_POINTER 0x8090 GL_INDEX_ARRAY_POINTER 0x8091 GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 GL_EDGE_FLAG_ARRAY_POINTER 0x8093 GL_V2F 0x2A20 GL_V3F 0x2A21 GL_C4UB_V2F 0x2A22 GL_C4UB_V3F 0x2A23 GL_C3F_V3F 0x2A24 GL_N3F_V3F 0x2A25 GL_C4F_N3F_V3F 0x2A26 GL_T2F_V3F 0x2A27 GL_T4F_V4F 0x2A28 GL_T2F_C4UB_V3F 0x2A29 GL_T2F_C3F_V3F 0x2A2A GL_T2F_N3F_V3F 0x2A2B GL_T2F_C4F_N3F_V3F 0x2A2C GL_T4F_C4F_N3F_V4F 0x2A2D GL_MATRIX_MODE 0xBA0 GL_MODELVIEW 0x1700 GL_PROJECTION 0x1701 GL_TEXTURE 0x1702 GL_POINT_SMOOTH 0xB10 GL_POINT_SIZE 0xB11 GL_POINT_SIZE_GRANULARITY 0xB13 GL_POINT_SIZE_RANGE 0xB12 GL_LINE_SMOOTH 0xB20 GL_LINE_STIPPLE 0xB24 GL_LINE_STIPPLE_PATTERN 0xB25 GL_LINE_STIPPLE_REPEAT 0xB26 GL_LINE_WIDTH 0xB21 GL_LINE_WIDTH_GRANULARITY 0xB23 GL_LINE_WIDTH_RANGE 0xB22 GL_POINT 0x1B00 GL_LINE 0x1B01 GL_FILL 0x1B02 GL_CW 0x900 GL_CCW 0x901 GL_FRONT 0x404 GL_BACK 0x405 GL_POLYGON_MODE 0xB40 GL_POLYGON_SMOOTH 0xB41 GL_POLYGON_STIPPLE 0xB42 GL_EDGE_FLAG 0xB43 GL_CULL_FACE 0xB44 GL_CULL_FACE_MODE 0xB45 GL_FRONT_FACE 0xB46 GL_POLYGON_OFFSET_FACTOR 0x8038 GL_POLYGON_OFFSET_UNITS 0x2A00 GL_POLYGON_OFFSET_POINT 0x2A01 GL_POLYGON_OFFSET_LINE 0x2A02 GL_POLYGON_OFFSET_FILL 0x8037 GL_COMPILE 0x1300 GL_COMPILE_AND_EXECUTE 0x1301 GL_LIST_BASE 0xB32 GL_LIST_INDEX 0xB33 GL_LIST_MODE 0xB30 GL_NEVER 0x200 GL_LESS 0x201 GL_EQUAL 0x202 GL_LEQUAL 0x203 GL_GREATER 0x204 GL_NOTEQUAL 0x205 GL_GEQUAL 0x206 GL_ALWAYS 0x207 GL_DEPTH_TEST 0xB71 GL_DEPTH_BITS 0xD56 GL_DEPTH_CLEAR_VALUE 0xB73 GL_DEPTH_FUNC 0xB74 GL_DEPTH_RANGE 0xB70 GL_DEPTH_WRITEMASK 0xB72 GL_DEPTH_COMPONENT 0x1902 GL_LIGHTING 0xB50 GL_LIGHT0 0x4000 GL_LIGHT1 0x4001 GL_LIGHT2 0x4002 GL_LIGHT3 0x4003 GL_LIGHT4 0x4004 GL_LIGHT5 0x4005 GL_LIGHT6 0x4006 GL_LIGHT7 0x4007 GL_SPOT_EXPONENT 0x1205 GL_SPOT_CUTOFF 0x1206 GL_CONSTANT_ATTENUATION 0x1207 GL_LINEAR_ATTENUATION 0x1208 GL_QUADRATIC_ATTENUATION 0x1209 GL_AMBIENT 0x1200 GL_DIFFUSE 0x1201 GL_SPECULAR 0x1202 GL_SHININESS 0x1601 GL_EMISSION 0x1600 GL_POSITION 0x1203 GL_SPOT_DIRECTION 0x1204 GL_AMBIENT_AND_DIFFUSE 0x1602 GL_COLOR_INDEXES 0x1603 GL_LIGHT_MODEL_TWO_SIDE 0xB52 GL_LIGHT_MODEL_LOCAL_VIEWER 0xB51 GL_LIGHT_MODEL_AMBIENT 0xB53 GL_FRONT_AND_BACK 0x408 GL_SHADE_MODEL 0xB54 GL_FLAT 0x1D00 GL_SMOOTH 0x1D01 GL_COLOR_MATERIAL 0xB57 GL_COLOR_MATERIAL_FACE 0xB55 GL_COLOR_MATERIAL_PARAMETER 0xB56 GL_NORMALIZE 0xBA1 GL_CLIP_PLANE0 0x3000 GL_CLIP_PLANE1 0x3001 GL_CLIP_PLANE2 0x3002 GL_CLIP_PLANE3 0x3003 GL_CLIP_PLANE4 0x3004 GL_CLIP_PLANE5 0x3005 GL_ACCUM_RED_BITS 0xD58 GL_ACCUM_GREEN_BITS 0xD59 GL_ACCUM_BLUE_BITS 0xD5A GL_ACCUM_ALPHA_BITS 0xD5B GL_ACCUM_CLEAR_VALUE 0xB80 GL_ACCUM 0x100 GL_ADD 0x104 GL_LOAD 0x101 GL_MULT 0x103 GL_RETURN 0x102 GL_ALPHA_TEST 0xBC0 GL_ALPHA_TEST_REF 0xBC2 GL_ALPHA_TEST_FUNC 0xBC1 GL_BLEND 0xBE2 GL_BLEND_SRC 0xBE1 GL_BLEND_DST 0xBE0 GL_ZERO 0x0 GL_ONE 0x1 GL_SRC_COLOR 0x300 GL_ONE_MINUS_SRC_COLOR 0x301 GL_SRC_ALPHA 0x302 GL_ONE_MINUS_SRC_ALPHA 0x303 GL_DST_ALPHA 0x304 GL_ONE_MINUS_DST_ALPHA 0x305 GL_DST_COLOR 0x306 GL_ONE_MINUS_DST_COLOR 0x307 GL_SRC_ALPHA_SATURATE 0x308 GL_FEEDBACK 0x1C01 GL_RENDER 0x1C00 GL_SELECT 0x1C02 GL_2D 0x600 GL_3D 0x601 GL_3D_COLOR 0x602 GL_3D_COLOR_TEXTURE 0x603 GL_4D_COLOR_TEXTURE 0x604 GL_POINT_TOKEN 0x701 GL_LINE_TOKEN 0x702 GL_LINE_RESET_TOKEN 0x707 GL_POLYGON_TOKEN 0x703 GL_BITMAP_TOKEN 0x704 GL_DRAW_PIXEL_TOKEN 0x705 GL_COPY_PIXEL_TOKEN 0x706 GL_PASS_THROUGH_TOKEN 0x700 GL_FEEDBACK_BUFFER_POINTER 0xDF0 GL_FEEDBACK_BUFFER_SIZE 0xDF1 GL_FEEDBACK_BUFFER_TYPE 0xDF2 GL_SELECTION_BUFFER_POINTER 0xDF3 GL_SELECTION_BUFFER_SIZE 0xDF4 GL_FOG 0xB60 GL_FOG_MODE 0xB65 GL_FOG_DENSITY 0xB62 GL_FOG_COLOR 0xB66 GL_FOG_INDEX 0xB61 GL_FOG_START 0xB63 GL_FOG_END 0xB64 GL_LINEAR 0x2601 GL_EXP 0x800 GL_EXP2 0x801 GL_LOGIC_OP 0xBF1 GL_INDEX_LOGIC_OP 0xBF1 GL_COLOR_LOGIC_OP 0xBF2 GL_LOGIC_OP_MODE 0xBF0 GL_CLEAR 0x1500 GL_SET 0x150F GL_COPY 0x1503 GL_COPY_INVERTED 0x150C GL_NOOP 0x1505 GL_INVERT 0x150A GL_AND 0x1501 GL_NAND 0x150E GL_OR 0x1507 GL_NOR 0x1508 GL_XOR 0x1506 GL_EQUIV 0x1509 GL_AND_REVERSE 0x1502 GL_AND_INVERTED 0x1504 GL_OR_REVERSE 0x150B GL_OR_INVERTED 0x150D GL_STENCIL_BITS 0xD57 GL_STENCIL_TEST 0xB90 GL_STENCIL_CLEAR_VALUE 0xB91 GL_STENCIL_FUNC 0xB92 GL_STENCIL_VALUE_MASK 0xB93 GL_STENCIL_FAIL 0xB94 GL_STENCIL_PASS_DEPTH_FAIL 0xB95 GL_STENCIL_PASS_DEPTH_PASS 0xB96 GL_STENCIL_REF 0xB97 GL_STENCIL_WRITEMASK 0xB98 GL_STENCIL_INDEX 0x1901 GL_KEEP 0x1E00 GL_REPLACE 0x1E01 GL_INCR 0x1E02 GL_DECR 0x1E03 GL_NONE 0x0 GL_LEFT 0x406 GL_RIGHT 0x407 GL_FRONT_LEFT 0x400 GL_FRONT_RIGHT 0x401 GL_BACK_LEFT 0x402 GL_BACK_RIGHT 0x403 GL_AUX0 0x409 GL_AUX1 0x40A GL_AUX2 0x40B GL_AUX3 0x40C GL_COLOR_INDEX 0x1900 GL_RED 0x1903 GL_GREEN 0x1904 GL_BLUE 0x1905 GL_ALPHA 0x1906 GL_LUMINANCE 0x1909 GL_LUMINANCE_ALPHA 0x190A GL_ALPHA_BITS 0xD55 GL_RED_BITS 0xD52 GL_GREEN_BITS 0xD53 GL_BLUE_BITS 0xD54 GL_INDEX_BITS 0xD51 GL_SUBPIXEL_BITS 0xD50 GL_AUX_BUFFERS 0xC00 GL_READ_BUFFER 0xC02 GL_DRAW_BUFFER 0xC01 GL_DOUBLEBUFFER 0xC32 GL_STEREO 0xC33 GL_BITMAP 0x1A00 GL_COLOR 0x1800 GL_DEPTH 0x1801 GL_STENCIL 0x1802 GL_DITHER 0xBD0 GL_RGB 0x1907 GL_RGBA 0x1908 GL_MAX_LIST_NESTING 0xB31 GL_MAX_EVAL_ORDER 0xD30 GL_MAX_LIGHTS 0xD31 GL_MAX_CLIP_PLANES 0xD32 GL_MAX_TEXTURE_SIZE 0xD33 GL_MAX_PIXEL_MAP_TABLE 0xD34 GL_MAX_ATTRIB_STACK_DEPTH 0xD35 GL_MAX_MODELVIEW_STACK_DEPTH 0xD36 GL_MAX_NAME_STACK_DEPTH 0xD37 GL_MAX_PROJECTION_STACK_DEPTH 0xD38 GL_MAX_TEXTURE_STACK_DEPTH 0xD39 GL_MAX_VIEWPORT_DIMS 0xD3A GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0xD3B GL_ATTRIB_STACK_DEPTH 0xBB0 GL_CLIENT_ATTRIB_STACK_DEPTH 0xBB1 GL_COLOR_CLEAR_VALUE 0xC22 GL_COLOR_WRITEMASK 0xC23 GL_CURRENT_INDEX 0xB01 GL_CURRENT_COLOR 0xB00 GL_CURRENT_NORMAL 0xB02 GL_CURRENT_RASTER_COLOR 0xB04 GL_CURRENT_RASTER_DISTANCE 0xB09 GL_CURRENT_RASTER_INDEX 0xB05 GL_CURRENT_RASTER_POSITION 0xB07 GL_CURRENT_RASTER_TEXTURE_COORDS 0xB06 GL_CURRENT_RASTER_POSITION_VALID 0xB08 GL_CURRENT_TEXTURE_COORDS 0xB03 GL_INDEX_CLEAR_VALUE 0xC20 GL_INDEX_MODE 0xC30 GL_INDEX_WRITEMASK 0xC21 GL_MODELVIEW_MATRIX 0xBA6 GL_MODELVIEW_STACK_DEPTH 0xBA3 GL_NAME_STACK_DEPTH 0xD70 GL_PROJECTION_MATRIX 0xBA7 GL_PROJECTION_STACK_DEPTH 0xBA4 GL_RENDER_MODE 0xC40 GL_RGBA_MODE 0xC31 GL_TEXTURE_MATRIX 0xBA8 GL_TEXTURE_STACK_DEPTH 0xBA5 GL_VIEWPORT 0xBA2 GL_AUTO_NORMAL 0xD80 GL_MAP1_COLOR_4 0xD90 GL_MAP1_INDEX 0xD91 GL_MAP1_NORMAL 0xD92 GL_MAP1_TEXTURE_COORD_1 0xD93 GL_MAP1_TEXTURE_COORD_2 0xD94 GL_MAP1_TEXTURE_COORD_3 0xD95 GL_MAP1_TEXTURE_COORD_4 0xD96 GL_MAP1_VERTEX_3 0xD97 GL_MAP1_VERTEX_4 0xD98 GL_MAP2_COLOR_4 0xDB0 GL_MAP2_INDEX 0xDB1 GL_MAP2_NORMAL 0xDB2 GL_MAP2_TEXTURE_COORD_1 0xDB3 GL_MAP2_TEXTURE_COORD_2 0xDB4 GL_MAP2_TEXTURE_COORD_3 0xDB5 GL_MAP2_TEXTURE_COORD_4 0xDB6 GL_MAP2_VERTEX_3 0xDB7 GL_MAP2_VERTEX_4 0xDB8 GL_MAP1_GRID_DOMAIN 0xDD0 GL_MAP1_GRID_SEGMENTS 0xDD1 GL_MAP2_GRID_DOMAIN 0xDD2 GL_MAP2_GRID_SEGMENTS 0xDD3 GL_COEFF 0xA00 GL_ORDER 0xA01 GL_DOMAIN 0xA02 GL_PERSPECTIVE_CORRECTION_HINT 0xC50 GL_POINT_SMOOTH_HINT 0xC51 GL_LINE_SMOOTH_HINT 0xC52 GL_POLYGON_SMOOTH_HINT 0xC53 GL_FOG_HINT 0xC54 GL_DONT_CARE 0x1100 GL_FASTEST 0x1101 GL_NICEST 0x1102 GL_SCISSOR_BOX 0xC10 GL_SCISSOR_TEST 0xC11 GL_MAP_COLOR 0xD10 GL_MAP_STENCIL 0xD11 GL_INDEX_SHIFT 0xD12 GL_INDEX_OFFSET 0xD13 GL_RED_SCALE 0xD14 GL_RED_BIAS 0xD15 GL_GREEN_SCALE 0xD18 GL_GREEN_BIAS 0xD19 GL_BLUE_SCALE 0xD1A GL_BLUE_BIAS 0xD1B GL_ALPHA_SCALE 0xD1C GL_ALPHA_BIAS 0xD1D GL_DEPTH_SCALE 0xD1E GL_DEPTH_BIAS 0xD1F GL_PIXEL_MAP_S_TO_S_SIZE 0xCB1 GL_PIXEL_MAP_I_TO_I_SIZE 0xCB0 GL_PIXEL_MAP_I_TO_R_SIZE 0xCB2 GL_PIXEL_MAP_I_TO_G_SIZE 0xCB3 GL_PIXEL_MAP_I_TO_B_SIZE 0xCB4 GL_PIXEL_MAP_I_TO_A_SIZE 0xCB5 GL_PIXEL_MAP_R_TO_R_SIZE 0xCB6 GL_PIXEL_MAP_G_TO_G_SIZE 0xCB7 GL_PIXEL_MAP_B_TO_B_SIZE 0xCB8 GL_PIXEL_MAP_A_TO_A_SIZE 0xCB9 GL_PIXEL_MAP_S_TO_S 0xC71 GL_PIXEL_MAP_I_TO_I 0xC70 GL_PIXEL_MAP_I_TO_R 0xC72 GL_PIXEL_MAP_I_TO_G 0xC73 GL_PIXEL_MAP_I_TO_B 0xC74 GL_PIXEL_MAP_I_TO_A 0xC75 GL_PIXEL_MAP_R_TO_R 0xC76 GL_PIXEL_MAP_G_TO_G 0xC77 GL_PIXEL_MAP_B_TO_B 0xC78 GL_PIXEL_MAP_A_TO_A 0xC79 GL_PACK_ALIGNMENT 0xD05 GL_PACK_LSB_FIRST 0xD01 GL_PACK_ROW_LENGTH 0xD02 GL_PACK_SKIP_PIXELS 0xD04 GL_PACK_SKIP_ROWS 0xD03 GL_PACK_SWAP_BYTES 0xD00 GL_UNPACK_ALIGNMENT 0xCF5 GL_UNPACK_LSB_FIRST 0xCF1 GL_UNPACK_ROW_LENGTH 0xCF2 GL_UNPACK_SKIP_PIXELS 0xCF4 GL_UNPACK_SKIP_ROWS 0xCF3 GL_UNPACK_SWAP_BYTES 0xCF0 GL_ZOOM_X 0xD16 GL_ZOOM_Y 0xD17 GL_TEXTURE_ENV 0x2300 GL_TEXTURE_ENV_MODE 0x2200 GL_TEXTURE_1D 0xDE0 GL_TEXTURE_2D 0xDE1 GL_TEXTURE_WRAP_S 0x2802 GL_TEXTURE_WRAP_T 0x2803 GL_TEXTURE_MAG_FILTER 0x2800 GL_TEXTURE_MIN_FILTER 0x2801 GL_TEXTURE_ENV_COLOR 0x2201 GL_TEXTURE_GEN_S 0xC60 GL_TEXTURE_GEN_T 0xC61 GL_TEXTURE_GEN_R 0xC62 GL_TEXTURE_GEN_Q 0xC63 GL_TEXTURE_GEN_MODE 0x2500 GL_TEXTURE_BORDER_COLOR 0x1004 GL_TEXTURE_WIDTH 0x1000 GL_TEXTURE_HEIGHT 0x1001 GL_TEXTURE_BORDER 0x1005 GL_TEXTURE_COMPONENTS 0x1003 GL_TEXTURE_RED_SIZE 0x805C GL_TEXTURE_GREEN_SIZE 0x805D GL_TEXTURE_BLUE_SIZE 0x805E GL_TEXTURE_ALPHA_SIZE 0x805F GL_TEXTURE_LUMINANCE_SIZE 0x8060 GL_TEXTURE_INTENSITY_SIZE 0x8061 GL_NEAREST_MIPMAP_NEAREST 0x2700 GL_NEAREST_MIPMAP_LINEAR 0x2702 GL_LINEAR_MIPMAP_NEAREST 0x2701 GL_LINEAR_MIPMAP_LINEAR 0x2703 GL_OBJECT_LINEAR 0x2401 GL_OBJECT_PLANE 0x2501 GL_EYE_LINEAR 0x2400 GL_EYE_PLANE 0x2502 GL_SPHERE_MAP 0x2402 GL_DECAL 0x2101 GL_MODULATE 0x2100 GL_NEAREST 0x2600 GL_REPEAT 0x2901 GL_CLAMP 0x2900 GL_S 0x2000 GL_T 0x2001 GL_R 0x2002 GL_Q 0x2003 GL_VENDOR 0x1F00 GL_RENDERER 0x1F01 GL_VERSION 0x1F02 GL_EXTENSIONS 0x1F03 GL_NO_ERROR 0x0 GL_INVALID_ENUM 0x500 GL_INVALID_VALUE 0x501 GL_INVALID_OPERATION 0x502 GL_STACK_OVERFLOW 0x503 GL_STACK_UNDERFLOW 0x504 GL_OUT_OF_MEMORY 0x505 GL_CURRENT_BIT 0x1 GL_POINT_BIT 0x2 GL_LINE_BIT 0x4 GL_POLYGON_BIT 0x8 GL_POLYGON_STIPPLE_BIT 0x10 GL_PIXEL_MODE_BIT 0x20 GL_LIGHTING_BIT 0x40 GL_FOG_BIT 0x80 GL_DEPTH_BUFFER_BIT 0x100 GL_ACCUM_BUFFER_BIT 0x200 GL_STENCIL_BUFFER_BIT 0x400 GL_VIEWPORT_BIT 0x800 GL_TRANSFORM_BIT 0x1000 GL_ENABLE_BIT 0x2000 GL_COLOR_BUFFER_BIT 0x4000 GL_HINT_BIT 0x8000 GL_EVAL_BIT 0x10000 GL_LIST_BIT 0x20000 GL_TEXTURE_BIT 0x40000 GL_SCISSOR_BIT 0x80000 GL_ALL_ATTRIB_BITS 0xFFFFF GL_PROXY_TEXTURE_1D 0x8063 GL_PROXY_TEXTURE_2D 0x8064 GL_TEXTURE_PRIORITY 0x8066 GL_TEXTURE_RESIDENT 0x8067 GL_TEXTURE_BINDING_1D 0x8068 GL_TEXTURE_BINDING_2D 0x8069 GL_TEXTURE_INTERNAL_FORMAT 0x1003 GL_ALPHA4 0x803B GL_ALPHA8 0x803C GL_ALPHA12 0x803D GL_ALPHA16 0x803E GL_LUMINANCE4 0x803F GL_LUMINANCE8 0x8040 GL_LUMINANCE12 0x8041 GL_LUMINANCE16 0x8042 GL_LUMINANCE4_ALPHA4 0x8043 GL_LUMINANCE6_ALPHA2 0x8044 GL_LUMINANCE8_ALPHA8 0x8045 GL_LUMINANCE12_ALPHA4 0x8046 GL_LUMINANCE12_ALPHA12 0x8047 GL_LUMINANCE16_ALPHA16 0x8048 GL_INTENSITY 0x8049 GL_INTENSITY4 0x804A GL_INTENSITY8 0x804B GL_INTENSITY12 0x804C GL_INTENSITY16 0x804D GL_R3_G3_B2 0x2A10 GL_RGB4 0x804F GL_RGB5 0x8050 GL_RGB8 0x8051 GL_RGB10 0x8052 GL_RGB12 0x8053 GL_RGB16 0x8054 GL_RGBA2 0x8055 GL_RGBA4 0x8056 GL_RGB5_A1 0x8057 GL_RGBA8 0x8058 GL_RGB10_A2 0x8059 GL_RGBA12 0x805A GL_RGBA16 0x805B GL_CLIENT_PIXEL_STORE_BIT 0x1 GL_CLIENT_VERTEX_ARRAY_BIT 0x2 GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF""", globals()) _GLGET_CONSTANTS[ GL_VERTEX_ARRAY ] = (1,) _GLGET_CONSTANTS[ GL_NORMAL_ARRAY ] = (1,) _GLGET_CONSTANTS[ GL_COLOR_ARRAY ] = (1,) _GLGET_CONSTANTS[ GL_INDEX_ARRAY ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_COORD_ARRAY ] = (1,) _GLGET_CONSTANTS[ GL_EDGE_FLAG_ARRAY ] = (1,) _GLGET_CONSTANTS[ GL_VERTEX_ARRAY_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_VERTEX_ARRAY_TYPE ] = (1,) _GLGET_CONSTANTS[ GL_VERTEX_ARRAY_STRIDE ] = (1,) _GLGET_CONSTANTS[ GL_NORMAL_ARRAY_TYPE ] = (1,) _GLGET_CONSTANTS[ GL_NORMAL_ARRAY_STRIDE ] = (1,) _GLGET_CONSTANTS[ GL_COLOR_ARRAY_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_COLOR_ARRAY_TYPE ] = (1,) _GLGET_CONSTANTS[ GL_COLOR_ARRAY_STRIDE ] = (1,) _GLGET_CONSTANTS[ GL_INDEX_ARRAY_TYPE ] = (1,) _GLGET_CONSTANTS[ GL_INDEX_ARRAY_STRIDE ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_COORD_ARRAY_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_COORD_ARRAY_TYPE ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_COORD_ARRAY_STRIDE ] = (1,) _GLGET_CONSTANTS[ GL_EDGE_FLAG_ARRAY_STRIDE ] = (1,) _GLGET_CONSTANTS[ GL_MATRIX_MODE ] = (1,) _GLGET_CONSTANTS[ GL_POINT_SMOOTH ] = (1,) _GLGET_CONSTANTS[ GL_POINT_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_POINT_SIZE_GRANULARITY ] = (1,) _GLGET_CONSTANTS[ GL_POINT_SIZE_RANGE ] = (2,) _GLGET_CONSTANTS[ GL_LINE_SMOOTH ] = (1,) _GLGET_CONSTANTS[ GL_LINE_STIPPLE ] = (1,) _GLGET_CONSTANTS[ GL_LINE_STIPPLE_PATTERN ] = (1,) _GLGET_CONSTANTS[ GL_LINE_STIPPLE_REPEAT ] = (1,) _GLGET_CONSTANTS[ GL_LINE_WIDTH ] = (1,) _GLGET_CONSTANTS[ GL_LINE_WIDTH_GRANULARITY ] = (1,) _GLGET_CONSTANTS[ GL_LINE_WIDTH_RANGE ] = (2,) _GLGET_CONSTANTS[ GL_POLYGON_MODE ] = (2,) _GLGET_CONSTANTS[ GL_POLYGON_SMOOTH ] = (1,) _GLGET_CONSTANTS[ GL_POLYGON_STIPPLE ] = (1,) _GLGET_CONSTANTS[ GL_EDGE_FLAG ] = (1,) _GLGET_CONSTANTS[ GL_CULL_FACE ] = (1,) _GLGET_CONSTANTS[ GL_CULL_FACE_MODE ] = (1,) _GLGET_CONSTANTS[ GL_FRONT_FACE ] = (1,) _GLGET_CONSTANTS[ GL_POLYGON_OFFSET_FACTOR ] = (1,) _GLGET_CONSTANTS[ GL_POLYGON_OFFSET_UNITS ] = (1,) _GLGET_CONSTANTS[ GL_POLYGON_OFFSET_POINT ] = (1,) _GLGET_CONSTANTS[ GL_POLYGON_OFFSET_LINE ] = (1,) _GLGET_CONSTANTS[ GL_POLYGON_OFFSET_FILL ] = (1,) _GLGET_CONSTANTS[ GL_LIST_BASE ] = (1,) _GLGET_CONSTANTS[ GL_LIST_INDEX ] = (1,) _GLGET_CONSTANTS[ GL_LIST_MODE ] = (1,) _GLGET_CONSTANTS[ GL_DEPTH_TEST ] = (1,) _GLGET_CONSTANTS[ GL_DEPTH_BITS ] = (1,) _GLGET_CONSTANTS[ GL_DEPTH_CLEAR_VALUE ] = (1,) _GLGET_CONSTANTS[ GL_DEPTH_FUNC ] = (1,) _GLGET_CONSTANTS[ GL_DEPTH_RANGE ] = (2,) _GLGET_CONSTANTS[ GL_DEPTH_WRITEMASK ] = (1,) _GLGET_CONSTANTS[ GL_LIGHTING ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT0 ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT1 ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT2 ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT3 ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT4 ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT5 ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT6 ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT7 ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT_MODEL_TWO_SIDE ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT_MODEL_LOCAL_VIEWER ] = (1,) _GLGET_CONSTANTS[ GL_LIGHT_MODEL_AMBIENT ] = (4,) _GLGET_CONSTANTS[ GL_SHADE_MODEL ] = (1,) _GLGET_CONSTANTS[ GL_COLOR_MATERIAL ] = (1,) _GLGET_CONSTANTS[ GL_COLOR_MATERIAL_FACE ] = (1,) _GLGET_CONSTANTS[ GL_COLOR_MATERIAL_PARAMETER ] = (1,) _GLGET_CONSTANTS[ GL_NORMALIZE ] = (1,) _GLGET_CONSTANTS[ GL_CLIP_PLANE0 ] = (1,) _GLGET_CONSTANTS[ GL_CLIP_PLANE1 ] = (1,) _GLGET_CONSTANTS[ GL_CLIP_PLANE2 ] = (1,) _GLGET_CONSTANTS[ GL_CLIP_PLANE3 ] = (1,) _GLGET_CONSTANTS[ GL_CLIP_PLANE4 ] = (1,) _GLGET_CONSTANTS[ GL_CLIP_PLANE5 ] = (1,) _GLGET_CONSTANTS[ GL_ACCUM_RED_BITS ] = (1,) _GLGET_CONSTANTS[ GL_ACCUM_GREEN_BITS ] = (1,) _GLGET_CONSTANTS[ GL_ACCUM_BLUE_BITS ] = (1,) _GLGET_CONSTANTS[ GL_ACCUM_ALPHA_BITS ] = (1,) _GLGET_CONSTANTS[ GL_ACCUM_CLEAR_VALUE ] = (4,) _GLGET_CONSTANTS[ GL_ALPHA_TEST ] = (1,) _GLGET_CONSTANTS[ GL_ALPHA_TEST_REF ] = (1,) _GLGET_CONSTANTS[ GL_ALPHA_TEST_FUNC ] = (1,) _GLGET_CONSTANTS[ GL_BLEND ] = (1,) _GLGET_CONSTANTS[ GL_BLEND_SRC ] = (1,) _GLGET_CONSTANTS[ GL_BLEND_DST ] = (1,) _GLGET_CONSTANTS[ GL_FEEDBACK_BUFFER_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_FEEDBACK_BUFFER_TYPE ] = (1,) _GLGET_CONSTANTS[ GL_SELECTION_BUFFER_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_FOG ] = (1,) _GLGET_CONSTANTS[ GL_FOG_MODE ] = (1,) _GLGET_CONSTANTS[ GL_FOG_DENSITY ] = (1,) _GLGET_CONSTANTS[ GL_FOG_COLOR ] = (4,) _GLGET_CONSTANTS[ GL_FOG_INDEX ] = (1,) _GLGET_CONSTANTS[ GL_FOG_START ] = (1,) _GLGET_CONSTANTS[ GL_FOG_END ] = (1,) _GLGET_CONSTANTS[ GL_INDEX_LOGIC_OP ] = (1,) _GLGET_CONSTANTS[ GL_COLOR_LOGIC_OP ] = (1,) _GLGET_CONSTANTS[ GL_LOGIC_OP_MODE ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_BITS ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_TEST ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_CLEAR_VALUE ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_FUNC ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_VALUE_MASK ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_FAIL ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_PASS_DEPTH_FAIL ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_PASS_DEPTH_PASS ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_REF ] = (1,) _GLGET_CONSTANTS[ GL_STENCIL_WRITEMASK ] = (1,) _GLGET_CONSTANTS[ GL_ALPHA_BITS ] = (1,) _GLGET_CONSTANTS[ GL_RED_BITS ] = (1,) _GLGET_CONSTANTS[ GL_GREEN_BITS ] = (1,) _GLGET_CONSTANTS[ GL_BLUE_BITS ] = (1,) _GLGET_CONSTANTS[ GL_INDEX_BITS ] = (1,) _GLGET_CONSTANTS[ GL_SUBPIXEL_BITS ] = (1,) _GLGET_CONSTANTS[ GL_AUX_BUFFERS ] = (1,) _GLGET_CONSTANTS[ GL_READ_BUFFER ] = (1,) _GLGET_CONSTANTS[ GL_DRAW_BUFFER ] = (1,) _GLGET_CONSTANTS[ GL_DOUBLEBUFFER ] = (1,) _GLGET_CONSTANTS[ GL_STEREO ] = (1,) _GLGET_CONSTANTS[ GL_DITHER ] = (1,) _GLGET_CONSTANTS[ GL_MAX_LIST_NESTING ] = (1,) _GLGET_CONSTANTS[ GL_MAX_EVAL_ORDER ] = (1,) _GLGET_CONSTANTS[ GL_MAX_LIGHTS ] = (1,) _GLGET_CONSTANTS[ GL_MAX_CLIP_PLANES ] = (1,) _GLGET_CONSTANTS[ GL_MAX_TEXTURE_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_MAX_PIXEL_MAP_TABLE ] = (1,) _GLGET_CONSTANTS[ GL_MAX_ATTRIB_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_MAX_MODELVIEW_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_MAX_NAME_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_MAX_PROJECTION_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_MAX_TEXTURE_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_MAX_VIEWPORT_DIMS ] = (2,) _GLGET_CONSTANTS[ GL_MAX_CLIENT_ATTRIB_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_ATTRIB_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_CLIENT_ATTRIB_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_COLOR_CLEAR_VALUE ] = (4,) _GLGET_CONSTANTS[ GL_COLOR_WRITEMASK ] = (4,) _GLGET_CONSTANTS[ GL_CURRENT_INDEX ] = (1,) _GLGET_CONSTANTS[ GL_CURRENT_COLOR ] = (4,) _GLGET_CONSTANTS[ GL_CURRENT_NORMAL ] = (3,) _GLGET_CONSTANTS[ GL_CURRENT_RASTER_COLOR ] = (4,) _GLGET_CONSTANTS[ GL_CURRENT_RASTER_DISTANCE ] = (1,) _GLGET_CONSTANTS[ GL_CURRENT_RASTER_INDEX ] = (1,) _GLGET_CONSTANTS[ GL_CURRENT_RASTER_POSITION ] = (4,) _GLGET_CONSTANTS[ GL_CURRENT_RASTER_TEXTURE_COORDS ] = (4,) _GLGET_CONSTANTS[ GL_CURRENT_RASTER_POSITION_VALID ] = (1,) _GLGET_CONSTANTS[ GL_CURRENT_TEXTURE_COORDS ] = (4,) _GLGET_CONSTANTS[ GL_INDEX_CLEAR_VALUE ] = (1,) _GLGET_CONSTANTS[ GL_INDEX_MODE ] = (1,) _GLGET_CONSTANTS[ GL_INDEX_WRITEMASK ] = (1,) _GLGET_CONSTANTS[ GL_MODELVIEW_MATRIX ] = (4, 4) _GLGET_CONSTANTS[ GL_MODELVIEW_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_NAME_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_PROJECTION_MATRIX ] = (4, 4) _GLGET_CONSTANTS[ GL_PROJECTION_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_RENDER_MODE ] = (1,) _GLGET_CONSTANTS[ GL_RGBA_MODE ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_MATRIX ] = (4, 4) _GLGET_CONSTANTS[ GL_TEXTURE_STACK_DEPTH ] = (1,) _GLGET_CONSTANTS[ GL_VIEWPORT ] = (4,) _GLGET_CONSTANTS[ GL_AUTO_NORMAL ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_COLOR_4 ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_INDEX ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_NORMAL ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_TEXTURE_COORD_1 ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_TEXTURE_COORD_2 ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_TEXTURE_COORD_3 ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_TEXTURE_COORD_4 ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_VERTEX_3 ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_VERTEX_4 ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_COLOR_4 ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_INDEX ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_NORMAL ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_TEXTURE_COORD_1 ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_TEXTURE_COORD_2 ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_TEXTURE_COORD_3 ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_TEXTURE_COORD_4 ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_VERTEX_3 ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_VERTEX_4 ] = (1,) _GLGET_CONSTANTS[ GL_MAP1_GRID_DOMAIN ] = (2,) _GLGET_CONSTANTS[ GL_MAP1_GRID_SEGMENTS ] = (1,) _GLGET_CONSTANTS[ GL_MAP2_GRID_DOMAIN ] = (4,) _GLGET_CONSTANTS[ GL_MAP2_GRID_SEGMENTS ] = (2,) _GLGET_CONSTANTS[ GL_PERSPECTIVE_CORRECTION_HINT ] = (1,) _GLGET_CONSTANTS[ GL_POINT_SMOOTH_HINT ] = (1,) _GLGET_CONSTANTS[ GL_LINE_SMOOTH_HINT ] = (1,) _GLGET_CONSTANTS[ GL_POLYGON_SMOOTH_HINT ] = (1,) _GLGET_CONSTANTS[ GL_FOG_HINT ] = (1,) _GLGET_CONSTANTS[ GL_SCISSOR_BOX ] = (4,) _GLGET_CONSTANTS[ GL_SCISSOR_TEST ] = (1,) _GLGET_CONSTANTS[ GL_MAP_COLOR ] = (1,) _GLGET_CONSTANTS[ GL_MAP_STENCIL ] = (1,) _GLGET_CONSTANTS[ GL_INDEX_SHIFT ] = (1,) _GLGET_CONSTANTS[ GL_INDEX_OFFSET ] = (1,) _GLGET_CONSTANTS[ GL_RED_SCALE ] = (1,) _GLGET_CONSTANTS[ GL_RED_BIAS ] = (1,) _GLGET_CONSTANTS[ GL_GREEN_SCALE ] = (1,) _GLGET_CONSTANTS[ GL_GREEN_BIAS ] = (1,) _GLGET_CONSTANTS[ GL_BLUE_SCALE ] = (1,) _GLGET_CONSTANTS[ GL_BLUE_BIAS ] = (1,) _GLGET_CONSTANTS[ GL_ALPHA_SCALE ] = (1,) _GLGET_CONSTANTS[ GL_ALPHA_BIAS ] = (1,) _GLGET_CONSTANTS[ GL_DEPTH_SCALE ] = (1,) _GLGET_CONSTANTS[ GL_DEPTH_BIAS ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_S_TO_S_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_I_TO_I_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_I_TO_R_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_I_TO_G_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_I_TO_B_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_I_TO_A_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_R_TO_R_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_G_TO_G_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_B_TO_B_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PIXEL_MAP_A_TO_A_SIZE ] = (1,) _GLGET_CONSTANTS[ GL_PACK_ALIGNMENT ] = (1,) _GLGET_CONSTANTS[ GL_PACK_LSB_FIRST ] = (1,) _GLGET_CONSTANTS[ GL_PACK_ROW_LENGTH ] = (1,) _GLGET_CONSTANTS[ GL_PACK_SKIP_PIXELS ] = (1,) _GLGET_CONSTANTS[ GL_PACK_SKIP_ROWS ] = (1,) _GLGET_CONSTANTS[ GL_PACK_SWAP_BYTES ] = (1,) _GLGET_CONSTANTS[ GL_UNPACK_ALIGNMENT ] = (1,) _GLGET_CONSTANTS[ GL_UNPACK_LSB_FIRST ] = (1,) _GLGET_CONSTANTS[ GL_UNPACK_ROW_LENGTH ] = (1,) _GLGET_CONSTANTS[ GL_UNPACK_SKIP_PIXELS ] = (1,) _GLGET_CONSTANTS[ GL_UNPACK_SKIP_ROWS ] = (1,) _GLGET_CONSTANTS[ GL_UNPACK_SWAP_BYTES ] = (1,) _GLGET_CONSTANTS[ GL_ZOOM_X ] = (1,) _GLGET_CONSTANTS[ GL_ZOOM_Y ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_1D ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_2D ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_GEN_S ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_GEN_T ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_GEN_R ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_GEN_Q ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_BINDING_1D ] = (1,) _GLGET_CONSTANTS[ GL_TEXTURE_BINDING_2D ] = (1,) @_f @_p.types(None,_cs.GLfloat) def glClearIndex( c ):pass @_f @_p.types(None,_cs.GLclampf,_cs.GLclampf,_cs.GLclampf,_cs.GLclampf) def glClearColor( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLbitfield) def glClear( mask ):pass @_f @_p.types(None,_cs.GLuint) def glIndexMask( mask ):pass @_f @_p.types(None,_cs.GLboolean,_cs.GLboolean,_cs.GLboolean,_cs.GLboolean) def glColorMask( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLclampf) def glAlphaFunc( func,ref ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glBlendFunc( sfactor,dfactor ):pass @_f @_p.types(None,_cs.GLenum) def glLogicOp( opcode ):pass @_f @_p.types(None,_cs.GLenum) def glCullFace( mode ):pass @_f @_p.types(None,_cs.GLenum) def glFrontFace( mode ):pass @_f @_p.types(None,_cs.GLfloat) def glPointSize( size ):pass @_f @_p.types(None,_cs.GLfloat) def glLineWidth( width ):pass @_f @_p.types(None,_cs.GLint,_cs.GLushort) def glLineStipple( factor,pattern ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glPolygonMode( face,mode ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glPolygonOffset( factor,units ):pass @_f @_p.types(None,arrays.GLubyteArray) def glPolygonStipple( mask ):pass @_f @_p.types(None,arrays.GLubyteArray) def glGetPolygonStipple( mask ):pass @_f @_p.types(None,_cs.GLboolean) def glEdgeFlag( flag ):pass @_f @_p.types(None,arrays.GLbooleanArray) def glEdgeFlagv( flag ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glScissor( x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glClipPlane( plane,equation ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glGetClipPlane( plane,equation ):pass @_f @_p.types(None,_cs.GLenum) def glDrawBuffer( mode ):pass @_f @_p.types(None,_cs.GLenum) def glReadBuffer( mode ):pass @_f @_p.types(None,_cs.GLenum) def glEnable( cap ):pass @_f @_p.types(None,_cs.GLenum) def glDisable( cap ):pass @_f @_p.types(_cs.GLboolean,_cs.GLenum) def glIsEnabled( cap ):pass @_f @_p.types(None,_cs.GLenum) def glEnableClientState( cap ):pass @_f @_p.types(None,_cs.GLenum) def glDisableClientState( cap ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLbooleanArray) def glGetBooleanv( pname,params ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glGetDoublev( pname,params ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glGetFloatv( pname,params ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glGetIntegerv( pname,params ):pass @_f @_p.types(None,_cs.GLbitfield) def glPushAttrib( mask ):pass @_f @_p.types(None,) def glPopAttrib( ):pass @_f @_p.types(None,_cs.GLbitfield) def glPushClientAttrib( mask ):pass @_f @_p.types(None,) def glPopClientAttrib( ):pass @_f @_p.types(_cs.GLint,_cs.GLenum) def glRenderMode( mode ):pass @_f @_p.types(_cs.GLenum,) def glGetError( ):pass @_f @_p.types(arrays.GLubyteArray,_cs.GLenum) def glGetString( name ):pass @_f @_p.types(None,) def glFinish( ):pass @_f @_p.types(None,) def glFlush( ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glHint( target,mode ):pass @_f @_p.types(None,_cs.GLclampd) def glClearDepth( depth ):pass @_f @_p.types(None,_cs.GLenum) def glDepthFunc( func ):pass @_f @_p.types(None,_cs.GLboolean) def glDepthMask( flag ):pass @_f @_p.types(None,_cs.GLclampd,_cs.GLclampd) def glDepthRange( near_val,far_val ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glClearAccum( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glAccum( op,value ):pass @_f @_p.types(None,_cs.GLenum) def glMatrixMode( mode ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glOrtho( left,right,bottom,top,near_val,far_val ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glFrustum( left,right,bottom,top,near_val,far_val ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glViewport( x,y,width,height ):pass @_f @_p.types(None,) def glPushMatrix( ):pass @_f @_p.types(None,) def glPopMatrix( ):pass @_f @_p.types(None,) def glLoadIdentity( ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glLoadMatrixd( m ):pass @_f @_p.types(None,arrays.GLfloatArray) def glLoadMatrixf( m ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glMultMatrixd( m ):pass @_f @_p.types(None,arrays.GLfloatArray) def glMultMatrixf( m ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glRotated( angle,x,y,z ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glRotatef( angle,x,y,z ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glScaled( x,y,z ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glScalef( x,y,z ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glTranslated( x,y,z ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTranslatef( x,y,z ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsList( list ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei) def glDeleteLists( list,range ):pass @_f @_p.types(_cs.GLuint,_cs.GLsizei) def glGenLists( range ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glNewList( list,mode ):pass @_f @_p.types(None,) def glEndList( ):pass @_f @_p.types(None,_cs.GLuint) def glCallList( list ):pass @_f @_p.types(None,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p) def glCallLists( n,type,lists ):pass @_f @_p.types(None,_cs.GLuint) def glListBase( base ):pass @_f @_p.types(None,_cs.GLenum) def glBegin( mode ):pass @_f @_p.types(None,) def glEnd( ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glVertex2d( x,y ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glVertex2f( x,y ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glVertex2i( x,y ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort) def glVertex2s( x,y ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertex3d( x,y,z ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertex3f( x,y,z ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glVertex3i( x,y,z ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertex3s( x,y,z ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertex4d( x,y,z,w ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertex4f( x,y,z,w ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glVertex4i( x,y,z,w ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertex4s( x,y,z,w ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glVertex2dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glVertex2fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glVertex2iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glVertex2sv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glVertex3dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glVertex3fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glVertex3iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glVertex3sv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glVertex4dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glVertex4fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glVertex4iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glVertex4sv( v ):pass @_f @_p.types(None,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte) def glNormal3b( nx,ny,nz ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glNormal3d( nx,ny,nz ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glNormal3f( nx,ny,nz ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glNormal3i( nx,ny,nz ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glNormal3s( nx,ny,nz ):pass @_f @_p.types(None,arrays.GLbyteArray) def glNormal3bv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glNormal3dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glNormal3fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glNormal3iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glNormal3sv( v ):pass @_f @_p.types(None,_cs.GLdouble) def glIndexd( c ):pass @_f @_p.types(None,_cs.GLfloat) def glIndexf( c ):pass @_f @_p.types(None,_cs.GLint) def glIndexi( c ):pass @_f @_p.types(None,_cs.GLshort) def glIndexs( c ):pass @_f @_p.types(None,_cs.GLubyte) def glIndexub( c ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glIndexdv( c ):pass @_f @_p.types(None,arrays.GLfloatArray) def glIndexfv( c ):pass @_f @_p.types(None,arrays.GLintArray) def glIndexiv( c ):pass @_f @_p.types(None,arrays.GLshortArray) def glIndexsv( c ):pass @_f @_p.types(None,arrays.GLubyteArray) def glIndexubv( c ):pass @_f @_p.types(None,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte) def glColor3b( red,green,blue ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glColor3d( red,green,blue ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glColor3f( red,green,blue ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glColor3i( red,green,blue ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glColor3s( red,green,blue ):pass @_f @_p.types(None,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte) def glColor3ub( red,green,blue ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glColor3ui( red,green,blue ):pass @_f @_p.types(None,_cs.GLushort,_cs.GLushort,_cs.GLushort) def glColor3us( red,green,blue ):pass @_f @_p.types(None,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte) def glColor4b( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glColor4d( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glColor4f( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glColor4i( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glColor4s( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte,_cs.GLubyte) def glColor4ub( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glColor4ui( red,green,blue,alpha ):pass @_f @_p.types(None,_cs.GLushort,_cs.GLushort,_cs.GLushort,_cs.GLushort) def glColor4us( red,green,blue,alpha ):pass @_f @_p.types(None,arrays.GLbyteArray) def glColor3bv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glColor3dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glColor3fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glColor3iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glColor3sv( v ):pass @_f @_p.types(None,arrays.GLubyteArray) def glColor3ubv( v ):pass @_f @_p.types(None,arrays.GLuintArray) def glColor3uiv( v ):pass @_f @_p.types(None,arrays.GLushortArray) def glColor3usv( v ):pass @_f @_p.types(None,arrays.GLbyteArray) def glColor4bv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glColor4dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glColor4fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glColor4iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glColor4sv( v ):pass @_f @_p.types(None,arrays.GLubyteArray) def glColor4ubv( v ):pass @_f @_p.types(None,arrays.GLuintArray) def glColor4uiv( v ):pass @_f @_p.types(None,arrays.GLushortArray) def glColor4usv( v ):pass @_f @_p.types(None,_cs.GLdouble) def glTexCoord1d( s ):pass @_f @_p.types(None,_cs.GLfloat) def glTexCoord1f( s ):pass @_f @_p.types(None,_cs.GLint) def glTexCoord1i( s ):pass @_f @_p.types(None,_cs.GLshort) def glTexCoord1s( s ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glTexCoord2d( s,t ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glTexCoord2f( s,t ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glTexCoord2i( s,t ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort) def glTexCoord2s( s,t ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glTexCoord3d( s,t,r ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTexCoord3f( s,t,r ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glTexCoord3i( s,t,r ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glTexCoord3s( s,t,r ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glTexCoord4d( s,t,r,q ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glTexCoord4f( s,t,r,q ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glTexCoord4i( s,t,r,q ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glTexCoord4s( s,t,r,q ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glTexCoord1dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glTexCoord1fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glTexCoord1iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glTexCoord1sv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glTexCoord2dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glTexCoord2fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glTexCoord2iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glTexCoord2sv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glTexCoord3dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glTexCoord3fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glTexCoord3iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glTexCoord3sv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glTexCoord4dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glTexCoord4fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glTexCoord4iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glTexCoord4sv( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glRasterPos2d( x,y ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glRasterPos2f( x,y ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glRasterPos2i( x,y ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort) def glRasterPos2s( x,y ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glRasterPos3d( x,y,z ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glRasterPos3f( x,y,z ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint) def glRasterPos3i( x,y,z ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glRasterPos3s( x,y,z ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glRasterPos4d( x,y,z,w ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glRasterPos4f( x,y,z,w ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glRasterPos4i( x,y,z,w ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glRasterPos4s( x,y,z,w ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glRasterPos2dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glRasterPos2fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glRasterPos2iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glRasterPos2sv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glRasterPos3dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glRasterPos3fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glRasterPos3iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glRasterPos3sv( v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glRasterPos4dv( v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glRasterPos4fv( v ):pass @_f @_p.types(None,arrays.GLintArray) def glRasterPos4iv( v ):pass @_f @_p.types(None,arrays.GLshortArray) def glRasterPos4sv( v ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glRectd( x1,y1,x2,y2 ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glRectf( x1,y1,x2,y2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glRecti( x1,y1,x2,y2 ):pass @_f @_p.types(None,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glRects( x1,y1,x2,y2 ):pass @_f @_p.types(None,arrays.GLdoubleArray,arrays.GLdoubleArray) def glRectdv( v1,v2 ):pass @_f @_p.types(None,arrays.GLfloatArray,arrays.GLfloatArray) def glRectfv( v1,v2 ):pass @_f @_p.types(None,arrays.GLintArray,arrays.GLintArray) def glRectiv( v1,v2 ):pass @_f @_p.types(None,arrays.GLshortArray,arrays.GLshortArray) def glRectsv( v1,v2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glVertexPointer( size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glNormalPointer( type,stride,pointer ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glColorPointer( size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glIndexPointer( type,stride,pointer ):pass @_f @_p.types(None,_cs.GLint,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glTexCoordPointer( size,type,stride,pointer ):pass @_f @_p.types(None,_cs.GLsizei,ctypes.c_void_p) def glEdgeFlagPointer( stride,pointer ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLvoidpArray) def glGetPointerv( pname,params ):pass @_f @_p.types(None,_cs.GLint) def glArrayElement( i ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLsizei) def glDrawArrays( mode,first,count ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p) def glDrawElements( mode,count,type,indices ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glInterleavedArrays( format,stride,pointer ):pass @_f @_p.types(None,_cs.GLenum) def glShadeModel( mode ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glLightf( light,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glLighti( light,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glLightfv( light,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glLightiv( light,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetLightfv( light,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetLightiv( light,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glLightModelf( pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glLightModeli( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glLightModelfv( pname,params ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glLightModeliv( pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glMaterialf( face,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glMateriali( face,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glMaterialfv( face,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glMaterialiv( face,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetMaterialfv( face,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMaterialiv( face,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glColorMaterial( face,mode ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glPixelZoom( xfactor,yfactor ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glPixelStoref( pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glPixelStorei( pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glPixelTransferf( pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glPixelTransferi( pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLfloatArray) def glPixelMapfv( map,mapsize,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray) def glPixelMapuiv( map,mapsize,values ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,arrays.GLushortArray) def glPixelMapusv( map,mapsize,values ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glGetPixelMapfv( map,values ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLuintArray) def glGetPixelMapuiv( map,values ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLushortArray) def glGetPixelMapusv( map,values ):pass @_f @_p.types(None,_cs.GLsizei,_cs.GLsizei,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,arrays.GLubyteArray) def glBitmap( width,height,xorig,yorig,xmove,ymove,bitmap ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glReadPixels( x,y,width,height,format,type,pixels ):pass @_f @_p.types(None,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glDrawPixels( width,height,format,type,pixels ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum) def glCopyPixels( x,y,width,height,type ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLuint) def glStencilFunc( func,ref,mask ):pass @_f @_p.types(None,_cs.GLuint) def glStencilMask( mask ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glStencilOp( fail,zfail,zpass ):pass @_f @_p.types(None,_cs.GLint) def glClearStencil( s ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLdouble) def glTexGend( coord,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glTexGenf( coord,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glTexGeni( coord,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLdoubleArray) def glTexGendv( coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glTexGenfv( coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glTexGeniv( coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLdoubleArray) def glGetTexGendv( coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetTexGenfv( coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetTexGeniv( coord,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glTexEnvf( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glTexEnvi( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glTexEnvfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glTexEnviv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetTexEnvfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetTexEnviv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glTexParameterf( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glTexParameteri( target,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glTexParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glTexParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetTexParameterfv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetTexParameteriv( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,arrays.GLfloatArray) def glGetTexLevelParameterfv( target,level,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,arrays.GLintArray) def glGetTexLevelParameteriv( target,level,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexImage1D( target,level,internalFormat,width,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexImage2D( target,level,internalFormat,width,height,border,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetTexImage( target,level,format,type,pixels ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenTextures( n,textures ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeleteTextures( n,textures ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glBindTexture( target,texture ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray,arrays.GLclampfArray) def glPrioritizeTextures( n,textures,priorities ):pass @_f @_p.types(_cs.GLboolean,_cs.GLsizei,arrays.GLuintArray,arrays.GLbooleanArray) def glAreTexturesResident( n,textures,residences ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsTexture( texture ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexSubImage1D( target,level,xoffset,width,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glTexSubImage2D( target,level,xoffset,yoffset,width,height,format,type,pixels ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLint) def glCopyTexImage1D( target,level,internalformat,x,y,width,border ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLint) def glCopyTexImage2D( target,level,internalformat,x,y,width,height,border ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyTexSubImage1D( target,level,xoffset,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glCopyTexSubImage2D( target,level,xoffset,yoffset,x,y,width,height ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLint,arrays.GLdoubleArray) def glMap1d( target,u1,u2,stride,order,points ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLint,arrays.GLfloatArray) def glMap1f( target,u1,u2,stride,order,points ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLint,arrays.GLdoubleArray) def glMap2d( target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,points ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLint,arrays.GLfloatArray) def glMap2f( target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,points ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLdoubleArray) def glGetMapdv( target,query,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetMapfv( target,query,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetMapiv( target,query,v ):pass @_f @_p.types(None,_cs.GLdouble) def glEvalCoord1d( u ):pass @_f @_p.types(None,_cs.GLfloat) def glEvalCoord1f( u ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glEvalCoord1dv( u ):pass @_f @_p.types(None,arrays.GLfloatArray) def glEvalCoord1fv( u ):pass @_f @_p.types(None,_cs.GLdouble,_cs.GLdouble) def glEvalCoord2d( u,v ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLfloat) def glEvalCoord2f( u,v ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glEvalCoord2dv( u ):pass @_f @_p.types(None,arrays.GLfloatArray) def glEvalCoord2fv( u ):pass @_f @_p.types(None,_cs.GLint,_cs.GLdouble,_cs.GLdouble) def glMapGrid1d( un,u1,u2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat,_cs.GLfloat) def glMapGrid1f( un,u1,u2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLdouble,_cs.GLdouble) def glMapGrid2d( un,u1,u2,vn,v1,v2 ):pass @_f @_p.types(None,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLfloat,_cs.GLfloat) def glMapGrid2f( un,u1,u2,vn,v1,v2 ):pass @_f @_p.types(None,_cs.GLint) def glEvalPoint1( i ):pass @_f @_p.types(None,_cs.GLint,_cs.GLint) def glEvalPoint2( i,j ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint) def glEvalMesh1( mode,i1,i2 ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glEvalMesh2( mode,i1,i2,j1,j2 ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glFogf( pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glFogi( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glFogfv( pname,params ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glFogiv( pname,params ):pass @_f @_p.types(None,_cs.GLsizei,_cs.GLenum,arrays.GLfloatArray) def glFeedbackBuffer( size,type,buffer ):pass @_f @_p.types(None,_cs.GLfloat) def glPassThrough( token ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glSelectBuffer( size,buffer ):pass @_f @_p.types(None,) def glInitNames( ):pass @_f @_p.types(None,_cs.GLuint) def glLoadName( name ):pass @_f @_p.types(None,_cs.GLuint) def glPushName( name ):pass @_f @_p.types(None,) def glPopName( ):pass def glInitGl11VERSION(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_1_3.py0000644000175000001440000002145012031734330020775 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_1_3' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_1_3',False) _p.unpack_constants( """GL_TEXTURE0 0x84C0 GL_TEXTURE1 0x84C1 GL_TEXTURE2 0x84C2 GL_TEXTURE3 0x84C3 GL_TEXTURE4 0x84C4 GL_TEXTURE5 0x84C5 GL_TEXTURE6 0x84C6 GL_TEXTURE7 0x84C7 GL_TEXTURE8 0x84C8 GL_TEXTURE9 0x84C9 GL_TEXTURE10 0x84CA GL_TEXTURE11 0x84CB GL_TEXTURE12 0x84CC GL_TEXTURE13 0x84CD GL_TEXTURE14 0x84CE GL_TEXTURE15 0x84CF GL_TEXTURE16 0x84D0 GL_TEXTURE17 0x84D1 GL_TEXTURE18 0x84D2 GL_TEXTURE19 0x84D3 GL_TEXTURE20 0x84D4 GL_TEXTURE21 0x84D5 GL_TEXTURE22 0x84D6 GL_TEXTURE23 0x84D7 GL_TEXTURE24 0x84D8 GL_TEXTURE25 0x84D9 GL_TEXTURE26 0x84DA GL_TEXTURE27 0x84DB GL_TEXTURE28 0x84DC GL_TEXTURE29 0x84DD GL_TEXTURE30 0x84DE GL_TEXTURE31 0x84DF GL_ACTIVE_TEXTURE 0x84E0 GL_MULTISAMPLE 0x809D GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E GL_SAMPLE_ALPHA_TO_ONE 0x809F GL_SAMPLE_COVERAGE 0x80A0 GL_SAMPLE_BUFFERS 0x80A8 GL_SAMPLES 0x80A9 GL_SAMPLE_COVERAGE_VALUE 0x80AA GL_SAMPLE_COVERAGE_INVERT 0x80AB GL_TEXTURE_CUBE_MAP 0x8513 GL_TEXTURE_BINDING_CUBE_MAP 0x8514 GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A GL_PROXY_TEXTURE_CUBE_MAP 0x851B GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C GL_COMPRESSED_RGB 0x84ED GL_COMPRESSED_RGBA 0x84EE GL_TEXTURE_COMPRESSION_HINT 0x84EF GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 GL_TEXTURE_COMPRESSED 0x86A1 GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 GL_CLAMP_TO_BORDER 0x812D GL_CLIENT_ACTIVE_TEXTURE 0x84E1 GL_MAX_TEXTURE_UNITS 0x84E2 GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 GL_TRANSPOSE_COLOR_MATRIX 0x84E6 GL_MULTISAMPLE_BIT 0x20000000 GL_NORMAL_MAP 0x8511 GL_REFLECTION_MAP 0x8512 GL_COMPRESSED_ALPHA 0x84E9 GL_COMPRESSED_LUMINANCE 0x84EA GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB GL_COMPRESSED_INTENSITY 0x84EC GL_COMBINE 0x8570 GL_COMBINE_RGB 0x8571 GL_COMBINE_ALPHA 0x8572 GL_SOURCE0_RGB 0x8580 GL_SOURCE1_RGB 0x8581 GL_SOURCE2_RGB 0x8582 GL_SOURCE0_ALPHA 0x8588 GL_SOURCE1_ALPHA 0x8589 GL_SOURCE2_ALPHA 0x858A GL_OPERAND0_RGB 0x8590 GL_OPERAND1_RGB 0x8591 GL_OPERAND2_RGB 0x8592 GL_OPERAND0_ALPHA 0x8598 GL_OPERAND1_ALPHA 0x8599 GL_OPERAND2_ALPHA 0x859A GL_RGB_SCALE 0x8573 GL_ADD_SIGNED 0x8574 GL_INTERPOLATE 0x8575 GL_SUBTRACT 0x84E7 GL_CONSTANT 0x8576 GL_PRIMARY_COLOR 0x8577 GL_PREVIOUS 0x8578 GL_DOT3_RGB 0x86AE GL_DOT3_RGBA 0x86AF""", globals()) glget.addGLGetConstant( GL_ACTIVE_TEXTURE, (1,) ) glget.addGLGetConstant( GL_MULTISAMPLE, (1,) ) glget.addGLGetConstant( GL_SAMPLE_ALPHA_TO_COVERAGE, (1,) ) glget.addGLGetConstant( GL_SAMPLE_ALPHA_TO_ONE, (1,) ) glget.addGLGetConstant( GL_SAMPLE_COVERAGE, (1,) ) glget.addGLGetConstant( GL_SAMPLE_BUFFERS, (1,) ) glget.addGLGetConstant( GL_SAMPLES, (1,) ) glget.addGLGetConstant( GL_SAMPLE_COVERAGE_VALUE, (1,) ) glget.addGLGetConstant( GL_SAMPLE_COVERAGE_INVERT, (1,) ) glget.addGLGetConstant( GL_TEXTURE_CUBE_MAP, (1,) ) glget.addGLGetConstant( GL_TEXTURE_BINDING_CUBE_MAP, (1,) ) glget.addGLGetConstant( GL_MAX_CUBE_MAP_TEXTURE_SIZE, (1,) ) glget.addGLGetConstant( GL_TEXTURE_COMPRESSION_HINT, (1,) ) glget.addGLGetConstant( GL_NUM_COMPRESSED_TEXTURE_FORMATS, (1,) ) glget.addGLGetConstant( GL_COMPRESSED_TEXTURE_FORMATS, (1,) ) glget.addGLGetConstant( GL_CLIENT_ACTIVE_TEXTURE, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_UNITS, (1,) ) glget.addGLGetConstant( GL_TRANSPOSE_MODELVIEW_MATRIX, (4,4) ) glget.addGLGetConstant( GL_TRANSPOSE_PROJECTION_MATRIX, (4,4) ) glget.addGLGetConstant( GL_TRANSPOSE_TEXTURE_MATRIX, (4,4) ) glget.addGLGetConstant( GL_TRANSPOSE_COLOR_MATRIX, (4,4) ) @_f @_p.types(None,_cs.GLenum) def glActiveTexture( texture ):pass @_f @_p.types(None,_cs.GLfloat,_cs.GLboolean) def glSampleCoverage( value,invert ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexImage3D( target,level,internalformat,width,height,depth,border,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexImage2D( target,level,internalformat,width,height,border,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLint,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexImage1D( target,level,internalformat,width,border,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexSubImage3D( target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexSubImage2D( target,level,xoffset,yoffset,width,height,format,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei,_cs.GLenum,_cs.GLsizei,ctypes.c_void_p) def glCompressedTexSubImage1D( target,level,xoffset,width,format,imageSize,data ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,ctypes.c_void_p) def glGetCompressedTexImage( target,level,img ):pass @_f @_p.types(None,_cs.GLenum) def glClientActiveTexture( texture ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble) def glMultiTexCoord1d( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord1dv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glMultiTexCoord1f( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord1fv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glMultiTexCoord1i( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord1iv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort) def glMultiTexCoord1s( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord1sv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble) def glMultiTexCoord2d( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord2dv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat) def glMultiTexCoord2f( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord2fv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint) def glMultiTexCoord2i( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord2iv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort) def glMultiTexCoord2s( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord2sv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMultiTexCoord3d( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord3dv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glMultiTexCoord3f( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord3fv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint) def glMultiTexCoord3i( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord3iv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glMultiTexCoord3s( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord3sv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMultiTexCoord4d( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord4dv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glMultiTexCoord4f( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord4fv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glMultiTexCoord4i( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord4iv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glMultiTexCoord4s( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord4sv( target,v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glLoadTransposeMatrixf( m ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glLoadTransposeMatrixd( m ):pass @_f @_p.types(None,arrays.GLfloatArray) def glMultTransposeMatrixf( m ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glMultTransposeMatrixd( m ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_3_1.py0000644000175000001440000000323012031734330020771 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_3_1' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_3_1',False) _p.unpack_constants( """GL_SAMPLER_2D_RECT 0x8B63 GL_SAMPLER_2D_RECT_SHADOW 0x8B64 GL_SAMPLER_BUFFER 0x8DC2 GL_INT_SAMPLER_2D_RECT 0x8DCD GL_INT_SAMPLER_BUFFER 0x8DD0 GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 GL_TEXTURE_BUFFER 0x8C2A GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B GL_TEXTURE_BINDING_BUFFER 0x8C2C GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D GL_TEXTURE_RECTANGLE 0x84F5 GL_TEXTURE_BINDING_RECTANGLE 0x84F6 GL_PROXY_TEXTURE_RECTANGLE 0x84F7 GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 GL_RED_SNORM 0x8F90 GL_RG_SNORM 0x8F91 GL_RGB_SNORM 0x8F92 GL_RGBA_SNORM 0x8F93 GL_R8_SNORM 0x8F94 GL_RG8_SNORM 0x8F95 GL_RGB8_SNORM 0x8F96 GL_RGBA8_SNORM 0x8F97 GL_R16_SNORM 0x8F98 GL_RG16_SNORM 0x8F99 GL_RGB16_SNORM 0x8F9A GL_RGBA16_SNORM 0x8F9B GL_SIGNED_NORMALIZED 0x8F9C GL_PRIMITIVE_RESTART 0x8F9D GL_PRIMITIVE_RESTART_INDEX 0x8F9E""", globals()) glget.addGLGetConstant( GL_TEXTURE_BINDING_RECTANGLE, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLsizei,_cs.GLsizei) def glDrawArraysInstanced( mode,first,count,instancecount ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei,_cs.GLenum,ctypes.c_void_p,_cs.GLsizei) def glDrawElementsInstanced( mode,count,type,indices,instancecount ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint) def glTexBuffer( target,internalformat,buffer ):pass @_f @_p.types(None,_cs.GLuint) def glPrimitiveRestartIndex( index ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_1_3_DEPRECATED.py0000644000175000001440000001175012025001653022455 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_1_3' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_1_3',True) _p.unpack_constants( """GL_CLIENT_ACTIVE_TEXTURE 0x84E1 GL_MAX_TEXTURE_UNITS 0x84E2 GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 GL_TRANSPOSE_COLOR_MATRIX 0x84E6 GL_MULTISAMPLE_BIT 0x20000000 GL_NORMAL_MAP 0x8511 GL_REFLECTION_MAP 0x8512 GL_COMPRESSED_ALPHA 0x84E9 GL_COMPRESSED_LUMINANCE 0x84EA GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB GL_COMPRESSED_INTENSITY 0x84EC GL_COMBINE 0x8570 GL_COMBINE_RGB 0x8571 GL_COMBINE_ALPHA 0x8572 GL_SOURCE0_RGB 0x8580 GL_SOURCE1_RGB 0x8581 GL_SOURCE2_RGB 0x8582 GL_SOURCE0_ALPHA 0x8588 GL_SOURCE1_ALPHA 0x8589 GL_SOURCE2_ALPHA 0x858A GL_OPERAND0_RGB 0x8590 GL_OPERAND1_RGB 0x8591 GL_OPERAND2_RGB 0x8592 GL_OPERAND0_ALPHA 0x8598 GL_OPERAND1_ALPHA 0x8599 GL_OPERAND2_ALPHA 0x859A GL_RGB_SCALE 0x8573 GL_ADD_SIGNED 0x8574 GL_INTERPOLATE 0x8575 GL_SUBTRACT 0x84E7 GL_CONSTANT 0x8576 GL_PRIMARY_COLOR 0x8577 GL_PREVIOUS 0x8578 GL_DOT3_RGB 0x86AE GL_DOT3_RGBA 0x86AF""", globals()) glget.addGLGetConstant( GL_CLIENT_ACTIVE_TEXTURE, (1,) ) glget.addGLGetConstant( GL_MAX_TEXTURE_UNITS, (1,) ) glget.addGLGetConstant( GL_TRANSPOSE_MODELVIEW_MATRIX, (4,4) ) glget.addGLGetConstant( GL_TRANSPOSE_PROJECTION_MATRIX, (4,4) ) glget.addGLGetConstant( GL_TRANSPOSE_TEXTURE_MATRIX, (4,4) ) glget.addGLGetConstant( GL_TRANSPOSE_COLOR_MATRIX, (4,4) ) @_f @_p.types(None,_cs.GLenum) def glClientActiveTexture( texture ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble) def glMultiTexCoord1d( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord1dv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glMultiTexCoord1f( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord1fv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glMultiTexCoord1i( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord1iv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort) def glMultiTexCoord1s( target,s ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord1sv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble) def glMultiTexCoord2d( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord2dv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat) def glMultiTexCoord2f( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord2fv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint) def glMultiTexCoord2i( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord2iv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort) def glMultiTexCoord2s( target,s,t ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord2sv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMultiTexCoord3d( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord3dv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glMultiTexCoord3f( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord3fv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint) def glMultiTexCoord3i( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord3iv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glMultiTexCoord3s( target,s,t,r ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord3sv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glMultiTexCoord4d( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glMultiTexCoord4dv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glMultiTexCoord4f( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glMultiTexCoord4fv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glMultiTexCoord4i( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glMultiTexCoord4iv( target,v ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glMultiTexCoord4s( target,s,t,r,q ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glMultiTexCoord4sv( target,v ):pass @_f @_p.types(None,arrays.GLfloatArray) def glLoadTransposeMatrixf( m ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glLoadTransposeMatrixd( m ):pass @_f @_p.types(None,arrays.GLfloatArray) def glMultTransposeMatrixf( m ):pass @_f @_p.types(None,arrays.GLdoubleArray) def glMultTransposeMatrixd( m ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_4_1.py0000644000175000001440000000045012025001653020771 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_4_1' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_4_1',False) PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_4_0.py0000644000175000001440000000233512025001653020774 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_4_0' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_4_0',False) _p.unpack_constants( """GL_SAMPLE_SHADING 0x8C36 GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B GL_SAMPLER_CUBE_MAP_ARRAY 0x900C GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F""", globals()) @_f @_p.types(None,_cs.GLfloat) def glMinSampleShading( value ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glBlendEquationi( buf,mode ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum) def glBlendEquationSeparatei( buf,modeRGB,modeAlpha ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum) def glBlendFunci( buf,src,dst ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glBlendFuncSeparatei( buf,srcRGB,dstRGB,srcAlpha,dstAlpha ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/VERSION/GL_3_3.py0000644000175000001440000000071512025001653020776 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_VERSION_GL_3_3' def _f( function ): return _p.createFunction( function,_p.GL,'GL_VERSION_GL_3_3',False) _p.unpack_constants( """GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLuint) def glVertexAttribDivisor( index,divisor ):pass PyOpenGL-3.0.2/OpenGL/raw/GL/DFX/0000755000175000001440000000000012032640120016743 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/DFX/tbuffer.py0000644000175000001440000000103512025001653020755 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_DFX_tbuffer' def _f( function ): return _p.createFunction( function,_p.GL,'GL_DFX_tbuffer',False) @_f @_p.types(None,_cs.GLuint) def glTbufferMask3DFX( mask ):pass def glInitTbufferDFX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/DFX/__init__.py0000644000175000001440000000002712025001653021057 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/DFX/multisample.py0000644000175000001440000000122612025001653021656 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_DFX_multisample' _p.unpack_constants( """GL_MULTISAMPLE_3DFX 0x86B2 GL_SAMPLE_BUFFERS_3DFX 0x86B3 GL_SAMPLES_3DFX 0x86B4 GL_MULTISAMPLE_BIT_3DFX 0x20000000""", globals()) glget.addGLGetConstant( GL_MULTISAMPLE_3DFX, (1,) ) glget.addGLGetConstant( GL_SAMPLE_BUFFERS_3DFX, (1,) ) glget.addGLGetConstant( GL_SAMPLES_3DFX, (1,) ) def glInitMultisampleDFX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/DFX/texture_compression_FXT1.py0000644000175000001440000000074712025001653024254 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_DFX_texture_compression_FXT1' _p.unpack_constants( """GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1""", globals()) def glInitTextureCompressionFxt1DFX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/OES/0000755000175000001440000000000012032640120016750 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/OES/read_format.py0000644000175000001440000000074312025001653021615 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_OES_read_format' _p.unpack_constants( """GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B""", globals()) def glInitReadFormatOES(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/OES/__init__.py0000644000175000001440000000002712025001653021064 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/INGR/0000755000175000001440000000000012032640120017061 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/INGR/__init__.py0000644000175000001440000000002712025001653021175 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/INGR/blend_func_separate.py0000644000175000001440000000122412025001653023421 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_INGR_blend_func_separate' def _f( function ): return _p.createFunction( function,_p.GL,'GL_INGR_blend_func_separate',False) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glBlendFuncSeparateINGR( sfactorRGB,dfactorRGB,sfactorAlpha,dfactorAlpha ):pass def glInitBlendFuncSeparateINGR(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/INGR/interlace_read.py0000644000175000001440000000074412025001653022405 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_INGR_interlace_read' _p.unpack_constants( """GL_INTERLACE_READ_INGR 0x8568""", globals()) glget.addGLGetConstant( GL_INTERLACE_READ_INGR, (1,) ) def glInitInterlaceReadINGR(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/INGR/palette_buffer.py0000644000175000001440000000055112025001653022427 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_INGR_palette_buffer' def glInitPaletteBufferINGR(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/INGR/color_clamp.py0000644000175000001440000000206512025001653021734 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_INGR_color_clamp' _p.unpack_constants( """GL_RED_MIN_CLAMP_INGR 0x8560 GL_GREEN_MIN_CLAMP_INGR 0x8561 GL_BLUE_MIN_CLAMP_INGR 0x8562 GL_ALPHA_MIN_CLAMP_INGR 0x8563 GL_RED_MAX_CLAMP_INGR 0x8564 GL_GREEN_MAX_CLAMP_INGR 0x8565 GL_BLUE_MAX_CLAMP_INGR 0x8566 GL_ALPHA_MAX_CLAMP_INGR 0x8567""", globals()) glget.addGLGetConstant( GL_RED_MIN_CLAMP_INGR, (1,) ) glget.addGLGetConstant( GL_GREEN_MIN_CLAMP_INGR, (1,) ) glget.addGLGetConstant( GL_BLUE_MIN_CLAMP_INGR, (1,) ) glget.addGLGetConstant( GL_ALPHA_MIN_CLAMP_INGR, (1,) ) glget.addGLGetConstant( GL_RED_MAX_CLAMP_INGR, (1,) ) glget.addGLGetConstant( GL_GREEN_MAX_CLAMP_INGR, (1,) ) glget.addGLGetConstant( GL_BLUE_MAX_CLAMP_INGR, (1,) ) glget.addGLGetConstant( GL_ALPHA_MAX_CLAMP_INGR, (1,) ) def glInitColorClampINGR(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/0000755000175000001440000000000012032640120016723 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/multi_draw_indirect.py0000644000175000001440000000145512025001653023336 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_AMD_multi_draw_indirect' def _f( function ): return _p.createFunction( function,_p.GL,'GL_AMD_multi_draw_indirect',False) @_f @_p.types(None,_cs.GLenum,ctypes.c_void_p,_cs.GLsizei,_cs.GLsizei) def glMultiDrawArraysIndirectAMD( mode,indirect,primcount,stride ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,ctypes.c_void_p,_cs.GLsizei,_cs.GLsizei) def glMultiDrawElementsIndirectAMD( mode,type,indirect,primcount,stride ):pass def glInitMultiDrawIndirectAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/sample_positions.py0000644000175000001440000000125412025001653022673 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_AMD_sample_positions' def _f( function ): return _p.createFunction( function,_p.GL,'GL_AMD_sample_positions',False) _p.unpack_constants( """GL_SUBSAMPLE_DISTANCE_AMD 0x883F""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLfloatArray) def glSetMultisamplefvAMD( pname,index,val ):pass def glInitSamplePositionsAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/debug_output.py0000644000175000001440000000331212031734122022007 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_AMD_debug_output' def _f( function ): return _p.createFunction( function,_p.GL,'GL_AMD_debug_output',False) _p.unpack_constants( """GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 GL_DEBUG_SEVERITY_LOW_AMD 0x9148 GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F GL_DEBUG_CATEGORY_OTHER_AMD 0x9150""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray,_cs.GLboolean) def glDebugMessageEnableAMD( category,severity,count,ids,enabled ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLcharArray) def glDebugMessageInsertAMD( category,severity,id,length,buf ):pass @_f @_p.types(None,_cs.GLDEBUGPROCAMD,ctypes.c_void_p) def glDebugMessageCallbackAMD( callback,userParam ):pass @_f @_p.types(_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray,arrays.GLuintArray,arrays.GLuintArray,arrays.GLsizeiArray,arrays.GLcharArray) def glGetDebugMessageLogAMD( count,bufsize,categories,severities,ids,lengths,message ):pass def glInitDebugOutputAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/query_buffer_object.py0000644000175000001440000000076712025001653023337 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_query_buffer_object' _p.unpack_constants( """GL_QUERY_BUFFER_AMD 0x9192 GL_QUERY_BUFFER_BINDING_AMD 0x9193 GL_QUERY_RESULT_NO_WAIT_AMD 0x9194""", globals()) def glInitQueryBufferObjectAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/vertex_shader_viewport_index.py0000644000175000001440000000060112025001653025267 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_vertex_shader_viewport_index' def glInitVertexShaderViewportIndexAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/seamless_cubemap_per_texture.py0000644000175000001440000000060112025001653025234 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_seamless_cubemap_per_texture' def glInitSeamlessCubemapPerTextureAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/name_gen_delete.py0000644000175000001440000000174312025001653022401 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_AMD_name_gen_delete' def _f( function ): return _p.createFunction( function,_p.GL,'GL_AMD_name_gen_delete',False) _p.unpack_constants( """GL_DATA_BUFFER_AMD 0x9151 GL_PERFORMANCE_MONITOR_AMD 0x9152 GL_QUERY_OBJECT_AMD 0x9153 GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 GL_SAMPLER_OBJECT_AMD 0x9155""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLuintArray) def glGenNamesAMD( identifier,num,names ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,arrays.GLuintArray) def glDeleteNamesAMD( identifier,num,names ):pass @_f @_p.types(_cs.GLboolean,_cs.GLenum,_cs.GLuint) def glIsNameAMD( identifier,name ):pass def glInitNameGenDeleteAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/texture_texture4.py0000644000175000001440000000055312025001653022650 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_texture_texture4' def glInitTextureTexture4AMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/performance_monitor.py0000644000175000001440000000431212025001653023351 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_AMD_performance_monitor' def _f( function ): return _p.createFunction( function,_p.GL,'GL_AMD_performance_monitor',False) _p.unpack_constants( """GL_COUNTER_TYPE_AMD 0x8BC0 GL_COUNTER_RANGE_AMD 0x8BC1 GL_UNSIGNED_INT64_AMD 0x8BC2 GL_PERCENTAGE_AMD 0x8BC3 GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 GL_PERFMON_RESULT_AMD 0x8BC6""", globals()) @_f @_p.types(None,arrays.GLintArray,_cs.GLsizei,arrays.GLuintArray) def glGetPerfMonitorGroupsAMD( numGroups,groupsSize,groups ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLintArray,arrays.GLintArray,_cs.GLsizei,arrays.GLuintArray) def glGetPerfMonitorCountersAMD( group,numCounters,maxActiveCounters,counterSize,counters ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetPerfMonitorGroupStringAMD( group,bufSize,length,groupString ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetPerfMonitorCounterStringAMD( group,counter,bufSize,length,counterString ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum,ctypes.c_void_p) def glGetPerfMonitorCounterInfoAMD( group,counter,pname,data ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glGenPerfMonitorsAMD( n,monitors ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDeletePerfMonitorsAMD( n,monitors ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLboolean,_cs.GLuint,_cs.GLint,arrays.GLuintArray) def glSelectPerfMonitorCountersAMD( monitor,enable,group,numCounters,counterList ):pass @_f @_p.types(None,_cs.GLuint) def glBeginPerfMonitorAMD( monitor ):pass @_f @_p.types(None,_cs.GLuint) def glEndPerfMonitorAMD( monitor ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray,arrays.GLintArray) def glGetPerfMonitorCounterDataAMD( monitor,pname,dataSize,data,bytesWritten ):pass def glInitPerformanceMonitorAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/__init__.py0000644000175000001440000000002712025001653021037 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/shader_stencil_export.py0000644000175000001440000000056412025001653023676 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_shader_stencil_export' def glInitShaderStencilExportAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/vertex_shader_layer.py0000644000175000001440000000056012025001653023341 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_vertex_shader_layer' def glInitVertexShaderLayerAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/draw_buffers_blend.py0000644000175000001440000000171012025001653023115 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_AMD_draw_buffers_blend' def _f( function ): return _p.createFunction( function,_p.GL,'GL_AMD_draw_buffers_blend',False) @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum) def glBlendFuncIndexedAMD( buf,src,dst ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glBlendFuncSeparateIndexedAMD( buf,srcRGB,dstRGB,srcAlpha,dstAlpha ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum) def glBlendEquationIndexedAMD( buf,mode ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum) def glBlendEquationSeparateIndexedAMD( buf,modeRGB,modeAlpha ):pass def glInitDrawBuffersBlendAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/blend_minmax_factor.py0000644000175000001440000000071012025001653023272 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_blend_minmax_factor' _p.unpack_constants( """GL_FACTOR_MIN_AMD 0x901C GL_FACTOR_MAX_AMD 0x901D""", globals()) def glInitBlendMinmaxFactorAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/depth_clamp_separate.py0000644000175000001440000000072512025001653023451 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_depth_clamp_separate' _p.unpack_constants( """GL_DEPTH_CLAMP_NEAR_AMD 0x901E GL_DEPTH_CLAMP_FAR_AMD 0x901F""", globals()) def glInitDepthClampSeparateAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/transform_feedback3_lines_triangles.py0000644000175000001440000000061712025001653026451 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_transform_feedback3_lines_triangles' def glInitTransformFeedback3LinesTrianglesAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/stencil_operation_extended.py0000644000175000001440000000137612025001653024711 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_AMD_stencil_operation_extended' def _f( function ): return _p.createFunction( function,_p.GL,'GL_AMD_stencil_operation_extended',False) _p.unpack_constants( """GL_SET_AMD 0x874A GL_REPLACE_VALUE_AMD 0x874B GL_STENCIL_OP_VALUE_AMD 0x874C GL_STENCIL_BACK_OP_VALUE_AMD 0x874D""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLuint) def glStencilOpValueAMD( face,value ):pass def glInitStencilOperationExtendedAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/vertex_shader_tesselator.py0000644000175000001440000000163512025001653024416 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_AMD_vertex_shader_tesselator' def _f( function ): return _p.createFunction( function,_p.GL,'GL_AMD_vertex_shader_tesselator',False) _p.unpack_constants( """GL_SAMPLER_BUFFER_AMD 0x9001 GL_INT_SAMPLER_BUFFER_AMD 0x9002 GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 GL_TESSELLATION_MODE_AMD 0x9004 GL_TESSELLATION_FACTOR_AMD 0x9005 GL_DISCRETE_AMD 0x9006 GL_CONTINUOUS_AMD 0x9007""", globals()) @_f @_p.types(None,_cs.GLfloat) def glTessellationFactorAMD( factor ):pass @_f @_p.types(None,_cs.GLenum) def glTessellationModeAMD( mode ):pass def glInitVertexShaderTesselatorAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/pinned_memory.py0000644000175000001440000000067012025001653022151 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_pinned_memory' _p.unpack_constants( """GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160""", globals()) def glInitPinnedMemoryAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/conservative_depth.py0000644000175000001440000000055712025001653023204 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_AMD_conservative_depth' def glInitConservativeDepthAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/AMD/sparse_texture.py0000644000175000001440000000236012031734124022362 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_AMD_sparse_texture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_AMD_sparse_texture',False) _p.unpack_constants( """GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A GL_MIN_SPARSE_LEVEL_AMD 0x919B GL_MIN_LOD_WARNING_AMD 0x919C GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x1""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLbitfield) def glTexStorageSparseAMD( target,internalFormat,width,height,depth,layers,flags ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLsizei,_cs.GLbitfield) def glTextureStorageSparseAMD( texture,target,internalFormat,width,height,depth,layers,flags ):pass def glInitSparseTextureAMD(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/0000755000175000001440000000000012032640120016737 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/texture_env_combine3.py0000644000175000001440000000076512025001653023454 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ATI_texture_env_combine3' _p.unpack_constants( """GL_MODULATE_ADD_ATI 0x8744 GL_MODULATE_SIGNED_ADD_ATI 0x8745 GL_MODULATE_SUBTRACT_ATI 0x8746""", globals()) def glInitTextureEnvCombine3ATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/texture_float.py0000644000175000001440000000137112025001653022204 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ATI_texture_float' _p.unpack_constants( """GL_RGBA_FLOAT32_ATI 0x8814 GL_RGB_FLOAT32_ATI 0x8815 GL_ALPHA_FLOAT32_ATI 0x8816 GL_INTENSITY_FLOAT32_ATI 0x8817 GL_LUMINANCE_FLOAT32_ATI 0x8818 GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 GL_RGBA_FLOAT16_ATI 0x881A GL_RGB_FLOAT16_ATI 0x881B GL_ALPHA_FLOAT16_ATI 0x881C GL_INTENSITY_FLOAT16_ATI 0x881D GL_LUMINANCE_FLOAT16_ATI 0x881E GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F""", globals()) def glInitTextureFloatATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/pixel_format_float.py0000644000175000001440000000103712031734205023177 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ATI_pixel_format_float' _p.unpack_constants( """GL_RGBA_FLOAT_MODE_ATI 0x8820 GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835""", globals()) glget.addGLGetConstant( GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI, (4,) ) def glInitPixelFormatFloatATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/texture_mirror_once.py0000644000175000001440000000072412025001653023416 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ATI_texture_mirror_once' _p.unpack_constants( """GL_MIRROR_CLAMP_ATI 0x8742 GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743""", globals()) def glInitTextureMirrorOnceATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/element_array.py0000644000175000001440000000173612025001653022153 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_element_array' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_element_array',False) _p.unpack_constants( """GL_ELEMENT_ARRAY_ATI 0x8768 GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 GL_ELEMENT_ARRAY_POINTER_ATI 0x876A""", globals()) glget.addGLGetConstant( GL_ELEMENT_ARRAY_TYPE_ATI, (1,) ) @_f @_p.types(None,_cs.GLenum,ctypes.c_void_p) def glElementPointerATI( type,pointer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLsizei) def glDrawElementArrayATI( mode,count ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLsizei) def glDrawRangeElementArrayATI( mode,start,end,count ):pass def glInitElementArrayATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/__init__.py0000644000175000001440000000002712025001653021053 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/vertex_attrib_array_object.py0000644000175000001440000000171212025001653024724 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_vertex_attrib_array_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_vertex_attrib_array_object',False) @_f @_p.types(None,_cs.GLuint,_cs.GLint,_cs.GLenum,_cs.GLboolean,_cs.GLsizei,_cs.GLuint,_cs.GLuint) def glVertexAttribArrayObjectATI( index,size,type,normalized,stride,buffer,offset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetVertexAttribArrayObjectfvATI( index,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVertexAttribArrayObjectivATI( index,pname,params ):pass def glInitVertexAttribArrayObjectATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/draw_buffers.py0000644000175000001440000000367112025001653021775 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_draw_buffers' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_draw_buffers',False) _p.unpack_constants( """GL_MAX_DRAW_BUFFERS_ATI 0x8824 GL_DRAW_BUFFER0_ATI 0x8825 GL_DRAW_BUFFER1_ATI 0x8826 GL_DRAW_BUFFER2_ATI 0x8827 GL_DRAW_BUFFER3_ATI 0x8828 GL_DRAW_BUFFER4_ATI 0x8829 GL_DRAW_BUFFER5_ATI 0x882A GL_DRAW_BUFFER6_ATI 0x882B GL_DRAW_BUFFER7_ATI 0x882C GL_DRAW_BUFFER8_ATI 0x882D GL_DRAW_BUFFER9_ATI 0x882E GL_DRAW_BUFFER10_ATI 0x882F GL_DRAW_BUFFER11_ATI 0x8830 GL_DRAW_BUFFER12_ATI 0x8831 GL_DRAW_BUFFER13_ATI 0x8832 GL_DRAW_BUFFER14_ATI 0x8833 GL_DRAW_BUFFER15_ATI 0x8834""", globals()) glget.addGLGetConstant( GL_MAX_DRAW_BUFFERS_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER0_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER1_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER2_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER3_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER4_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER5_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER6_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER7_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER8_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER9_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER10_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER11_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER12_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER13_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER14_ATI, (1,) ) glget.addGLGetConstant( GL_DRAW_BUFFER15_ATI, (1,) ) @_f @_p.types(None,_cs.GLsizei,arrays.GLuintArray) def glDrawBuffersATI( n,bufs ):pass def glInitDrawBuffersATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/vertex_array_object.py0000644000175000001440000000420412025001653023356 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_vertex_array_object' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_vertex_array_object',False) _p.unpack_constants( """GL_STATIC_ATI 0x8760 GL_DYNAMIC_ATI 0x8761 GL_PRESERVE_ATI 0x8762 GL_DISCARD_ATI 0x8763 GL_OBJECT_BUFFER_SIZE_ATI 0x8764 GL_OBJECT_BUFFER_USAGE_ATI 0x8765 GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 GL_ARRAY_OBJECT_OFFSET_ATI 0x8767""", globals()) @_f @_p.types(_cs.GLuint,_cs.GLsizei,ctypes.c_void_p,_cs.GLenum) def glNewObjectBufferATI( size,pointer,usage ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsObjectBufferATI( buffer ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLsizei,ctypes.c_void_p,_cs.GLenum) def glUpdateObjectBufferATI( buffer,offset,size,pointer,preserve ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetObjectBufferfvATI( buffer,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetObjectBufferivATI( buffer,pname,params ):pass @_f @_p.types(None,_cs.GLuint) def glFreeObjectBufferATI( buffer ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLenum,_cs.GLsizei,_cs.GLuint,_cs.GLuint) def glArrayObjectATI( array,size,type,stride,buffer,offset ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetArrayObjectfvATI( array,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetArrayObjectivATI( array,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLsizei,_cs.GLuint,_cs.GLuint) def glVariantArrayObjectATI( id,type,stride,buffer,offset ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetVariantArrayObjectfvATI( id,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetVariantArrayObjectivATI( id,pname,params ):pass def glInitVertexArrayObjectATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/meminfo.py0000644000175000001440000000123112025001653020744 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ATI_meminfo' _p.unpack_constants( """GL_VBO_FREE_MEMORY_ATI 0x87FB GL_TEXTURE_FREE_MEMORY_ATI 0x87FC GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD""", globals()) glget.addGLGetConstant( GL_VBO_FREE_MEMORY_ATI, (1,) ) glget.addGLGetConstant( GL_TEXTURE_FREE_MEMORY_ATI, (1,) ) glget.addGLGetConstant( GL_RENDERBUFFER_FREE_MEMORY_ATI, (1,) ) def glInitMeminfoATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/pn_triangles.py0000644000175000001440000000250412025001653022003 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_pn_triangles' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_pn_triangles',False) _p.unpack_constants( """GL_PN_TRIANGLES_ATI 0x87F0 GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8""", globals()) glget.addGLGetConstant( GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI, (1,) ) glget.addGLGetConstant( GL_PN_TRIANGLES_POINT_MODE_ATI, (1,) ) glget.addGLGetConstant( GL_PN_TRIANGLES_NORMAL_MODE_ATI, (1,) ) glget.addGLGetConstant( GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glPNTrianglesiATI( pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glPNTrianglesfATI( pname,param ):pass def glInitPnTrianglesATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/vertex_streams.py0000644000175000001440000001246512025001653022400 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_vertex_streams' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_vertex_streams',False) _p.unpack_constants( """GL_MAX_VERTEX_STREAMS_ATI 0x876B GL_VERTEX_STREAM0_ATI 0x876C GL_VERTEX_STREAM1_ATI 0x876D GL_VERTEX_STREAM2_ATI 0x876E GL_VERTEX_STREAM3_ATI 0x876F GL_VERTEX_STREAM4_ATI 0x8770 GL_VERTEX_STREAM5_ATI 0x8771 GL_VERTEX_STREAM6_ATI 0x8772 GL_VERTEX_STREAM7_ATI 0x8773 GL_VERTEX_SOURCE_ATI 0x8774""", globals()) glget.addGLGetConstant( GL_MAX_VERTEX_STREAMS_ATI, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLshort) def glVertexStream1sATI( stream,x ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glVertexStream1svATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glVertexStream1iATI( stream,x ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glVertexStream1ivATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glVertexStream1fATI( stream,x ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glVertexStream1fvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble) def glVertexStream1dATI( stream,x ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glVertexStream1dvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort) def glVertexStream2sATI( stream,x,y ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glVertexStream2svATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint) def glVertexStream2iATI( stream,x,y ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glVertexStream2ivATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat) def glVertexStream2fATI( stream,x,y ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glVertexStream2fvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble) def glVertexStream2dATI( stream,x,y ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glVertexStream2dvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertexStream3sATI( stream,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glVertexStream3svATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint) def glVertexStream3iATI( stream,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glVertexStream3ivATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertexStream3fATI( stream,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glVertexStream3fvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexStream3dATI( stream,x,y,z ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glVertexStream3dvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glVertexStream4sATI( stream,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glVertexStream4svATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint,_cs.GLint) def glVertexStream4iATI( stream,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glVertexStream4ivATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glVertexStream4fATI( stream,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glVertexStream4fvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glVertexStream4dATI( stream,x,y,z,w ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glVertexStream4dvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLbyte,_cs.GLbyte,_cs.GLbyte) def glNormalStream3bATI( stream,nx,ny,nz ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLbyteArray) def glNormalStream3bvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLshort,_cs.GLshort,_cs.GLshort) def glNormalStream3sATI( stream,nx,ny,nz ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLshortArray) def glNormalStream3svATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLint) def glNormalStream3iATI( stream,nx,ny,nz ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glNormalStream3ivATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLfloat) def glNormalStream3fATI( stream,nx,ny,nz ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glNormalStream3fvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLdouble) def glNormalStream3dATI( stream,nx,ny,nz ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLdoubleArray) def glNormalStream3dvATI( stream,coords ):pass @_f @_p.types(None,_cs.GLenum) def glClientActiveVertexStreamATI( stream ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glVertexBlendEnviATI( pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glVertexBlendEnvfATI( pname,param ):pass def glInitVertexStreamsATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/map_object_buffer.py0000644000175000001440000000122212025001653022746 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_map_object_buffer' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_map_object_buffer',False) @_f @_p.types(ctypes.c_void_p,_cs.GLuint) def glMapObjectBufferATI( buffer ):pass @_f @_p.types(None,_cs.GLuint) def glUnmapObjectBufferATI( buffer ):pass def glInitMapObjectBufferATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/envmap_bumpmap.py0000644000175000001440000000217612025001653022332 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_envmap_bumpmap' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_envmap_bumpmap',False) _p.unpack_constants( """GL_BUMP_ROT_MATRIX_ATI 0x8775 GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 GL_BUMP_TEX_UNITS_ATI 0x8778 GL_DUDV_ATI 0x8779 GL_DU8DV8_ATI 0x877A GL_BUMP_ENVMAP_ATI 0x877B GL_BUMP_TARGET_ATI 0x877C""", globals()) @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glTexBumpParameterivATI( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glTexBumpParameterfvATI( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glGetTexBumpParameterivATI( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glGetTexBumpParameterfvATI( pname,param ):pass def glInitEnvmapBumpmapATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/fragment_shader.py0000644000175000001440000001237012025001653022451 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_fragment_shader' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_fragment_shader',False) _p.unpack_constants( """GL_FRAGMENT_SHADER_ATI 0x8920 GL_REG_0_ATI 0x8921 GL_REG_1_ATI 0x8922 GL_REG_2_ATI 0x8923 GL_REG_3_ATI 0x8924 GL_REG_4_ATI 0x8925 GL_REG_5_ATI 0x8926 GL_REG_6_ATI 0x8927 GL_REG_7_ATI 0x8928 GL_REG_8_ATI 0x8929 GL_REG_9_ATI 0x892A GL_REG_10_ATI 0x892B GL_REG_11_ATI 0x892C GL_REG_12_ATI 0x892D GL_REG_13_ATI 0x892E GL_REG_14_ATI 0x892F GL_REG_15_ATI 0x8930 GL_REG_16_ATI 0x8931 GL_REG_17_ATI 0x8932 GL_REG_18_ATI 0x8933 GL_REG_19_ATI 0x8934 GL_REG_20_ATI 0x8935 GL_REG_21_ATI 0x8936 GL_REG_22_ATI 0x8937 GL_REG_23_ATI 0x8938 GL_REG_24_ATI 0x8939 GL_REG_25_ATI 0x893A GL_REG_26_ATI 0x893B GL_REG_27_ATI 0x893C GL_REG_28_ATI 0x893D GL_REG_29_ATI 0x893E GL_REG_30_ATI 0x893F GL_REG_31_ATI 0x8940 GL_CON_0_ATI 0x8941 GL_CON_1_ATI 0x8942 GL_CON_2_ATI 0x8943 GL_CON_3_ATI 0x8944 GL_CON_4_ATI 0x8945 GL_CON_5_ATI 0x8946 GL_CON_6_ATI 0x8947 GL_CON_7_ATI 0x8948 GL_CON_8_ATI 0x8949 GL_CON_9_ATI 0x894A GL_CON_10_ATI 0x894B GL_CON_11_ATI 0x894C GL_CON_12_ATI 0x894D GL_CON_13_ATI 0x894E GL_CON_14_ATI 0x894F GL_CON_15_ATI 0x8950 GL_CON_16_ATI 0x8951 GL_CON_17_ATI 0x8952 GL_CON_18_ATI 0x8953 GL_CON_19_ATI 0x8954 GL_CON_20_ATI 0x8955 GL_CON_21_ATI 0x8956 GL_CON_22_ATI 0x8957 GL_CON_23_ATI 0x8958 GL_CON_24_ATI 0x8959 GL_CON_25_ATI 0x895A GL_CON_26_ATI 0x895B GL_CON_27_ATI 0x895C GL_CON_28_ATI 0x895D GL_CON_29_ATI 0x895E GL_CON_30_ATI 0x895F GL_CON_31_ATI 0x8960 GL_MOV_ATI 0x8961 GL_ADD_ATI 0x8963 GL_MUL_ATI 0x8964 GL_SUB_ATI 0x8965 GL_DOT3_ATI 0x8966 GL_DOT4_ATI 0x8967 GL_MAD_ATI 0x8968 GL_LERP_ATI 0x8969 GL_CND_ATI 0x896A GL_CND0_ATI 0x896B GL_DOT2_ADD_ATI 0x896C GL_SECONDARY_INTERPOLATOR_ATI 0x896D GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F GL_NUM_PASSES_ATI 0x8970 GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 GL_COLOR_ALPHA_PAIRING_ATI 0x8975 GL_SWIZZLE_STR_ATI 0x8976 GL_SWIZZLE_STQ_ATI 0x8977 GL_SWIZZLE_STR_DR_ATI 0x8978 GL_SWIZZLE_STQ_DQ_ATI 0x8979 GL_SWIZZLE_STRQ_ATI 0x897A GL_SWIZZLE_STRQ_DQ_ATI 0x897B GL_RED_BIT_ATI 0x1 GL_GREEN_BIT_ATI 0x2 GL_BLUE_BIT_ATI 0x4 GL_2X_BIT_ATI 0x1 GL_4X_BIT_ATI 0x2 GL_8X_BIT_ATI 0x4 GL_HALF_BIT_ATI 0x8 GL_QUARTER_BIT_ATI 0x10 GL_EIGHTH_BIT_ATI 0x20 GL_SATURATE_BIT_ATI 0x40 GL_COMP_BIT_ATI 0x2 GL_NEGATE_BIT_ATI 0x4 GL_BIAS_BIT_ATI 0x8""", globals()) glget.addGLGetConstant( GL_FRAGMENT_SHADER_ATI, (1,) ) glget.addGLGetConstant( GL_NUM_FRAGMENT_REGISTERS_ATI, (1,) ) glget.addGLGetConstant( GL_NUM_FRAGMENT_CONSTANTS_ATI, (1,) ) glget.addGLGetConstant( GL_NUM_PASSES_ATI, (1,) ) glget.addGLGetConstant( GL_NUM_INSTRUCTIONS_PER_PASS_ATI, (1,) ) glget.addGLGetConstant( GL_NUM_INSTRUCTIONS_TOTAL_ATI, (1,) ) glget.addGLGetConstant( GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI, (1,) ) glget.addGLGetConstant( GL_NUM_LOOPBACK_COMPONENTS_ATI, (1,) ) glget.addGLGetConstant( GL_COLOR_ALPHA_PAIRING_ATI, (1,) ) @_f @_p.types(_cs.GLuint,_cs.GLuint) def glGenFragmentShadersATI( range ):pass @_f @_p.types(None,_cs.GLuint) def glBindFragmentShaderATI( id ):pass @_f @_p.types(None,_cs.GLuint) def glDeleteFragmentShaderATI( id ):pass @_f @_p.types(None,) def glBeginFragmentShaderATI( ):pass @_f @_p.types(None,) def glEndFragmentShaderATI( ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum) def glPassTexCoordATI( dst,coord,swizzle ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLuint,_cs.GLenum) def glSampleMapATI( dst,interp,swizzle ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glColorFragmentOp1ATI( op,dst,dstMask,dstMod,arg1,arg1Rep,arg1Mod ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glColorFragmentOp2ATI( op,dst,dstMask,dstMod,arg1,arg1Rep,arg1Mod,arg2,arg2Rep,arg2Mod ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glColorFragmentOp3ATI( op,dst,dstMask,dstMod,arg1,arg1Rep,arg1Mod,arg2,arg2Rep,arg2Mod,arg3,arg3Rep,arg3Mod ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glAlphaFragmentOp1ATI( op,dst,dstMod,arg1,arg1Rep,arg1Mod ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glAlphaFragmentOp2ATI( op,dst,dstMod,arg1,arg1Rep,arg1Mod,arg2,arg2Rep,arg2Mod ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint,_cs.GLuint) def glAlphaFragmentOp3ATI( op,dst,dstMod,arg1,arg1Rep,arg1Mod,arg2,arg2Rep,arg2Mod,arg3,arg3Rep,arg3Mod ):pass @_f @_p.types(None,_cs.GLuint,arrays.GLfloatArray) def glSetFragmentShaderConstantATI( dst,value ):pass def glInitFragmentShaderATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/text_fragment_shader.py0000644000175000001440000000076712025001653023524 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_ATI_text_fragment_shader' _p.unpack_constants( """GL_TEXT_FRAGMENT_SHADER_ATI 0x8200""", globals()) glget.addGLGetConstant( GL_TEXT_FRAGMENT_SHADER_ATI, (1,) ) def glInitTextFragmentShaderATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/ATI/separate_stencil.py0000644000175000001440000000165512025001653022651 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_ATI_separate_stencil' def _f( function ): return _p.createFunction( function,_p.GL,'GL_ATI_separate_stencil',False) _p.unpack_constants( """GL_STENCIL_BACK_FUNC_ATI 0x8800 GL_STENCIL_BACK_FAIL_ATI 0x8801 GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLenum) def glStencilOpSeparateATI( face,sfail,dpfail,dppass ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLuint) def glStencilFuncSeparateATI( frontfunc,backfunc,ref,mask ):pass def glInitSeparateStencilATI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/GLEXT/0000755000175000001440000000000012032640120017205 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/GLEXT/__init__.py0000644000175000001440000000002712031734105021323 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/GLEXT/GL_64_TYPES_DEFINED.py0000644000175000001440000000056312031734105022506 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_GLEXT_GL_64_TYPES_DEFINED' def glInitGl64TypesDefinedGLEXT(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/MESAX/0000755000175000001440000000000012032640120017177 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/MESAX/__init__.py0000644000175000001440000000002712025001653021313 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/MESAX/texture_stack.py0000644000175000001440000000116112025001653022441 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_MESAX_texture_stack' _p.unpack_constants( """GL_TEXTURE_1D_STACK_MESAX 0x8759 GL_TEXTURE_2D_STACK_MESAX 0x875A GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E""", globals()) def glInitTextureStackMESAX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/0000755000175000001440000000000012032640120017074 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/ycrcb.py0000644000175000001440000000066012025001653020556 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_ycrcb' _p.unpack_constants( """GL_YCRCB_422_SGIX 0x81BB GL_YCRCB_444_SGIX 0x81BC""", globals()) def glInitYcrcbSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/shadow_ambient.py0000644000175000001440000000065512025001653022444 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_shadow_ambient' _p.unpack_constants( """GL_SHADOW_AMBIENT_SGIX 0x80BF""", globals()) def glInitShadowAmbientSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/convolution_accuracy.py0000644000175000001440000000067312025001653023711 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_convolution_accuracy' _p.unpack_constants( """GL_CONVOLUTION_HINT_SGIX 0x8316""", globals()) def glInitConvolutionAccuracySGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/ycrcba.py0000644000175000001440000000065312025001653020721 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_ycrcba' _p.unpack_constants( """GL_YCRCB_SGIX 0x8318 GL_YCRCBA_SGIX 0x8319""", globals()) def glInitYcrcbaSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/pixel_texture.py0000644000175000001440000000122612025001653022354 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_pixel_texture' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_pixel_texture',False) _p.unpack_constants( """GL_PIXEL_TEX_GEN_SGIX 0x8139 GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B""", globals()) @_f @_p.types(None,_cs.GLenum) def glPixelTexGenSGIX( mode ):pass def glInitPixelTextureSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/shadow.py0000644000175000001440000000100712025001653020735 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_shadow' _p.unpack_constants( """GL_TEXTURE_COMPARE_SGIX 0x819A GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B GL_TEXTURE_LEQUAL_R_SGIX 0x819C GL_TEXTURE_GEQUAL_R_SGIX 0x819D""", globals()) def glInitShadowSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/instruments.py0000644000175000001440000000203312025001653022043 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_instruments' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_instruments',False) _p.unpack_constants( """GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181""", globals()) @_f @_p.types(_cs.GLint,) def glGetInstrumentsSGIX( ):pass @_f @_p.types(None,_cs.GLsizei,arrays.GLintArray) def glInstrumentsBufferSGIX( size,buffer ):pass @_f @_p.types(_cs.GLint,arrays.GLintArray) def glPollInstrumentsSGIX( marker_p ):pass @_f @_p.types(None,_cs.GLint) def glReadInstrumentsSGIX( marker ):pass @_f @_p.types(None,) def glStartInstrumentsSGIX( ):pass @_f @_p.types(None,_cs.GLint) def glStopInstrumentsSGIX( marker ):pass def glInitInstrumentsSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/calligraphic_fragment.py0000644000175000001440000000070212025001653023756 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_calligraphic_fragment' _p.unpack_constants( """GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183""", globals()) def glInitCalligraphicFragmentSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/reference_plane.py0000644000175000001440000000126512025001653022573 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_reference_plane' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_reference_plane',False) _p.unpack_constants( """GL_REFERENCE_PLANE_SGIX 0x817D GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E""", globals()) @_f @_p.types(None,arrays.GLdoubleArray) def glReferencePlaneSGIX( equation ):pass def glInitReferencePlaneSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/fog_scale.py0000644000175000001440000000067512025001653021404 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_fog_scale' _p.unpack_constants( """GL_FOG_SCALE_SGIX 0x81FC GL_FOG_SCALE_VALUE_SGIX 0x81FD""", globals()) def glInitFogScaleSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/__init__.py0000644000175000001440000000002712025001653021210 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/framezoom.py0000644000175000001440000000125012025001653021447 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_framezoom' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_framezoom',False) _p.unpack_constants( """GL_FRAMEZOOM_SGIX 0x818B GL_FRAMEZOOM_FACTOR_SGIX 0x818C GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D""", globals()) @_f @_p.types(None,_cs.GLint) def glFrameZoomSGIX( factor ):pass def glInitFramezoomSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/subsample.py0000644000175000001440000000107212025001653021445 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_subsample' _p.unpack_constants( """GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4""", globals()) def glInitSubsampleSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/polynomial_ffd.py0000644000175000001440000000262012025001653022454 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_polynomial_ffd' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_polynomial_ffd',False) _p.unpack_constants( """GL_GEOMETRY_DEFORMATION_SGIX 0x8194 GL_TEXTURE_DEFORMATION_SGIX 0x8195 GL_DEFORMATIONS_MASK_SGIX 0x8196 GL_MAX_DEFORMATION_ORDER_SGIX 0x8197""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLint,_cs.GLdouble,_cs.GLdouble,_cs.GLint,_cs.GLint,arrays.GLdoubleArray) def glDeformationMap3dSGIX( target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,w1,w2,wstride,worder,points ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLint,_cs.GLfloat,_cs.GLfloat,_cs.GLint,_cs.GLint,arrays.GLfloatArray) def glDeformationMap3fSGIX( target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,w1,w2,wstride,worder,points ):pass @_f @_p.types(None,_cs.GLbitfield) def glDeformSGIX( mask ):pass @_f @_p.types(None,_cs.GLbitfield) def glLoadIdentityDeformationMapSGIX( mask ):pass def glInitPolynomialFfdSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/blend_alpha_minmax.py0000644000175000001440000000071012025001653023252 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_blend_alpha_minmax' _p.unpack_constants( """GL_ALPHA_MIN_SGIX 0x8320 GL_ALPHA_MAX_SGIX 0x8321""", globals()) def glInitBlendAlphaMinmaxSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/texture_select.py0000644000175000001440000000055112025001653022512 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_texture_select' def glInitTextureSelectSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/igloo_interface.py0000644000175000001440000000112212025001653022577 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_igloo_interface' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_igloo_interface',False) @_f @_p.types(None,_cs.GLenum,ctypes.c_void_p) def glIglooInterfaceSGIX( pname,params ):pass def glInitIglooInterfaceSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/fragment_lighting.py0000644000175000001440000000620112025001653023141 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_fragment_lighting' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_fragment_lighting',False) _p.unpack_constants( """GL_FRAGMENT_LIGHTING_SGIX 0x8400 GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 GL_LIGHT_ENV_MODE_SGIX 0x8407 GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B GL_FRAGMENT_LIGHT0_SGIX 0x840C GL_FRAGMENT_LIGHT1_SGIX 0x840D GL_FRAGMENT_LIGHT2_SGIX 0x840E GL_FRAGMENT_LIGHT3_SGIX 0x840F GL_FRAGMENT_LIGHT4_SGIX 0x8410 GL_FRAGMENT_LIGHT5_SGIX 0x8411 GL_FRAGMENT_LIGHT6_SGIX 0x8412 GL_FRAGMENT_LIGHT7_SGIX 0x8413""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum) def glFragmentColorMaterialSGIX( face,mode ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glFragmentLightfSGIX( light,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glFragmentLightfvSGIX( light,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glFragmentLightiSGIX( light,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glFragmentLightivSGIX( light,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glFragmentLightModelfSGIX( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glFragmentLightModelfvSGIX( pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glFragmentLightModeliSGIX( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glFragmentLightModelivSGIX( pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLfloat) def glFragmentMaterialfSGIX( face,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glFragmentMaterialfvSGIX( face,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint) def glFragmentMaterialiSGIX( face,pname,param ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glFragmentMaterialivSGIX( face,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetFragmentLightfvSGIX( light,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetFragmentLightivSGIX( light,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetFragmentMaterialfvSGIX( face,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetFragmentMaterialivSGIX( face,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glLightEnviSGIX( pname,param ):pass def glInitFragmentLightingSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/impact_pixel_texture.py0000644000175000001440000000126012025001653023707 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_impact_pixel_texture' _p.unpack_constants( """GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A""", globals()) def glInitImpactPixelTextureSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/tag_sample_buffer.py0000644000175000001440000000106212025001653023116 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_tag_sample_buffer' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_tag_sample_buffer',False) @_f @_p.types(None,) def glTagSampleBufferSGIX( ):pass def glInitTagSampleBufferSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/texture_lod_bias.py0000644000175000001440000000077012025001653023012 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_texture_lod_bias' _p.unpack_constants( """GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190""", globals()) def glInitTextureLodBiasSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/depth_texture.py0000644000175000001440000000076012025001653022341 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_depth_texture' _p.unpack_constants( """GL_DEPTH_COMPONENT16_SGIX 0x81A5 GL_DEPTH_COMPONENT24_SGIX 0x81A6 GL_DEPTH_COMPONENT32_SGIX 0x81A7""", globals()) def glInitDepthTextureSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/pixel_tiles.py0000644000175000001440000000126212025001653021774 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_pixel_tiles' _p.unpack_constants( """GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F GL_PIXEL_TILE_WIDTH_SGIX 0x8140 GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145""", globals()) def glInitPixelTilesSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/list_priority.py0000644000175000001440000000231212025001653022364 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_list_priority' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_list_priority',False) _p.unpack_constants( """GL_LIST_PRIORITY_SGIX 0x8182""", globals()) @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glGetListParameterfvSGIX( list,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glGetListParameterivSGIX( list,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLfloat) def glListParameterfSGIX( list,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLfloatArray) def glListParameterfvSGIX( list,pname,params ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,_cs.GLint) def glListParameteriSGIX( list,pname,param ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLenum,arrays.GLintArray) def glListParameterivSGIX( list,pname,params ):pass def glInitListPrioritySGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/async.py0000644000175000001440000000205712025001653020573 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_async' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_async',False) _p.unpack_constants( """GL_ASYNC_MARKER_SGIX 0x8329""", globals()) glget.addGLGetConstant( GL_ASYNC_MARKER_SGIX, (1,) ) @_f @_p.types(None,_cs.GLuint) def glAsyncMarkerSGIX( marker ):pass @_f @_p.types(_cs.GLint,arrays.GLuintArray) def glFinishAsyncSGIX( markerp ):pass @_f @_p.types(_cs.GLint,arrays.GLuintArray) def glPollAsyncSGIX( markerp ):pass @_f @_p.types(_cs.GLuint,_cs.GLsizei) def glGenAsyncMarkersSGIX( range ):pass @_f @_p.types(None,_cs.GLuint,_cs.GLsizei) def glDeleteAsyncMarkersSGIX( marker,range ):pass @_f @_p.types(_cs.GLboolean,_cs.GLuint) def glIsAsyncMarkerSGIX( marker ):pass def glInitAsyncSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/fog_offset.py0000644000175000001440000000070112025001653021571 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_fog_offset' _p.unpack_constants( """GL_FOG_OFFSET_SGIX 0x8198 GL_FOG_OFFSET_VALUE_SGIX 0x8199""", globals()) def glInitFogOffsetSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/scalebias_hint.py0000644000175000001440000000065512025001653022430 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_scalebias_hint' _p.unpack_constants( """GL_SCALEBIAS_HINT_SGIX 0x8322""", globals()) def glInitScalebiasHintSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/texture_multi_buffer.py0000644000175000001440000000070312025001653023715 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_texture_multi_buffer' _p.unpack_constants( """GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E""", globals()) def glInitTextureMultiBufferSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/vertex_preclip.py0000644000175000001440000000072012025001653022504 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_vertex_preclip' _p.unpack_constants( """GL_VERTEX_PRECLIP_SGIX 0x83EE GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF""", globals()) def glInitVertexPreclipSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/texture_scale_bias.py0000644000175000001440000000132312025001653023316 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_texture_scale_bias' _p.unpack_constants( """GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C""", globals()) glget.addGLGetConstant( GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX, (1,) ) glget.addGLGetConstant( GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX, (1,) ) def glInitTextureScaleBiasSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/texture_coordinate_clamp.py0000644000175000001440000000101312025001653024530 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_texture_coordinate_clamp' _p.unpack_constants( """GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B""", globals()) def glInitTextureCoordinateClampSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/sprite.py0000644000175000001440000000211212025001653020754 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_sprite' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_sprite',False) _p.unpack_constants( """GL_SPRITE_SGIX 0x8148 GL_SPRITE_MODE_SGIX 0x8149 GL_SPRITE_AXIS_SGIX 0x814A GL_SPRITE_TRANSLATION_SGIX 0x814B GL_SPRITE_AXIAL_SGIX 0x814C GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D GL_SPRITE_EYE_ALIGNED_SGIX 0x814E""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLfloat) def glSpriteParameterfSGIX( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLfloatArray) def glSpriteParameterfvSGIX( pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLint) def glSpriteParameteriSGIX( pname,param ):pass @_f @_p.types(None,_cs.GLenum,arrays.GLintArray) def glSpriteParameterivSGIX( pname,params ):pass def glInitSpriteSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/async_histogram.py0000644000175000001440000000110712025001653022643 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_async_histogram' _p.unpack_constants( """GL_ASYNC_HISTOGRAM_SGIX 0x832C GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D""", globals()) glget.addGLGetConstant( GL_ASYNC_HISTOGRAM_SGIX, (1,) ) glget.addGLGetConstant( GL_MAX_ASYNC_HISTOGRAM_SGIX, (1,) ) def glInitAsyncHistogramSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/async_pixel.py0000644000175000001440000000167312025001653021777 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_async_pixel' _p.unpack_constants( """GL_ASYNC_TEX_IMAGE_SGIX 0x835C GL_ASYNC_DRAW_PIXELS_SGIX 0x835D GL_ASYNC_READ_PIXELS_SGIX 0x835E GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361""", globals()) glget.addGLGetConstant( GL_ASYNC_TEX_IMAGE_SGIX, (1,) ) glget.addGLGetConstant( GL_ASYNC_DRAW_PIXELS_SGIX, (1,) ) glget.addGLGetConstant( GL_ASYNC_READ_PIXELS_SGIX, (1,) ) glget.addGLGetConstant( GL_MAX_ASYNC_TEX_IMAGE_SGIX, (1,) ) glget.addGLGetConstant( GL_MAX_ASYNC_DRAW_PIXELS_SGIX, (1,) ) glget.addGLGetConstant( GL_MAX_ASYNC_READ_PIXELS_SGIX, (1,) ) def glInitAsyncPixelSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/FfdMask.py0000644000175000001440000000071312025001653020766 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_FfdMask' _p.unpack_constants( """GL_TEXTURE_DEFORMATION_BIT_SGIX 0x1 GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x2""", globals()) def glInitFfdmaskSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/clipmap.py0000644000175000001440000000152112025001653021076 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_clipmap' _p.unpack_constants( """GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F""", globals()) def glInitClipmapSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/ycrcb_subsample.py0000644000175000001440000000055312025001653022632 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_ycrcb_subsample' def glInitYcrcbSubsampleSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/interlace.py0000644000175000001440000000072112025001653021420 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_interlace' _p.unpack_constants( """GL_INTERLACE_SGIX 0x8094""", globals()) glget.addGLGetConstant( GL_INTERLACE_SGIX, (1,) ) def glInitInterlaceSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/resample.py0000644000175000001440000000122312025001653021260 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_resample' _p.unpack_constants( """GL_PACK_RESAMPLE_SGIX 0x842C GL_UNPACK_RESAMPLE_SGIX 0x842D GL_RESAMPLE_REPLICATE_SGIX 0x842E GL_RESAMPLE_ZERO_FILL_SGIX 0x842F GL_RESAMPLE_DECIMATE_SGIX 0x8430""", globals()) glget.addGLGetConstant( GL_PACK_RESAMPLE_SGIX, (1,) ) glget.addGLGetConstant( GL_UNPACK_RESAMPLE_SGIX, (1,) ) def glInitResampleSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/depth_pass_instrument.py0000644000175000001440000000056612025001653024103 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_depth_pass_instrument' def glInitDepthPassInstrumentSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/flush_raster.py0000644000175000001440000000104012025001653022146 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGIX_flush_raster' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGIX_flush_raster',False) @_f @_p.types(None,) def glFlushRasterSGIX( ):pass def glInitFlushRasterSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/ir_instrument1.py0000644000175000001440000000065512025001653022443 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_ir_instrument1' _p.unpack_constants( """GL_IR_INSTRUMENT1_SGIX 0x817F""", globals()) def glInitIrInstrument1SGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGIX/texture_add_env.py0000644000175000001440000000066012025001653022634 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGIX_texture_add_env' _p.unpack_constants( """GL_TEXTURE_ENV_BIAS_SGIX 0x80BE""", globals()) def glInitTextureAddEnvSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGI/0000755000175000001440000000000012032640120016744 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/SGI/color_matrix.py0000644000175000001440000000304312025001653022024 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGI_color_matrix' _p.unpack_constants( """GL_COLOR_MATRIX_SGI 0x80B1 GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB""", globals()) glget.addGLGetConstant( GL_COLOR_MATRIX_SGI, (4,4) ) glget.addGLGetConstant( GL_COLOR_MATRIX_STACK_DEPTH_SGI, (1,) ) glget.addGLGetConstant( GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_RED_SCALE_SGI, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_RED_BIAS_SGI, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI, (1,) ) def glInitColorMatrixSGI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGI/__init__.py0000644000175000001440000000002712025001653021060 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/SGI/color_table.py0000644000175000001440000000426212025001653021613 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SGI_color_table' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SGI_color_table',False) _p.unpack_constants( """GL_COLOR_TABLE_SGI 0x80D0 GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 GL_PROXY_COLOR_TABLE_SGI 0x80D3 GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 GL_COLOR_TABLE_SCALE_SGI 0x80D6 GL_COLOR_TABLE_BIAS_SGI 0x80D7 GL_COLOR_TABLE_FORMAT_SGI 0x80D8 GL_COLOR_TABLE_WIDTH_SGI 0x80D9 GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF""", globals()) glget.addGLGetConstant( GL_COLOR_TABLE_SGI, (1,) ) glget.addGLGetConstant( GL_POST_CONVOLUTION_COLOR_TABLE_SGI, (1,) ) glget.addGLGetConstant( GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI, (1,) ) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLsizei,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glColorTableSGI( target,internalformat,width,format,type,table ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glColorTableParameterfvSGI( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glColorTableParameterivSGI( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLint,_cs.GLint,_cs.GLsizei) def glCopyColorTableSGI( target,internalformat,x,y,width ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,ctypes.c_void_p) def glGetColorTableSGI( target,format,type,table ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLfloatArray) def glGetColorTableParameterfvSGI( target,pname,params ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,arrays.GLintArray) def glGetColorTableParameterivSGI( target,pname,params ):pass def glInitColorTableSGI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGI/depth_pass_instrument.py0000644000175000001440000000102612025001653023743 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGI_depth_pass_instrument' _p.unpack_constants( """GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312""", globals()) def glInitDepthPassInstrumentSGI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SGI/texture_color_table.py0000644000175000001440000000103312025001653023364 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_SGI_texture_color_table' _p.unpack_constants( """GL_TEXTURE_COLOR_TABLE_SGI 0x80BC GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD""", globals()) glget.addGLGetConstant( GL_TEXTURE_COLOR_TABLE_SGI, (1,) ) def glInitTextureColorTableSGI(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/SUNX/0000755000175000001440000000000012032640120017117 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/SUNX/__init__.py0000644000175000001440000000002712025001653021233 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/SUNX/constant_data.py0000644000175000001440000000122412025001653022316 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_SUNX_constant_data' def _f( function ): return _p.createFunction( function,_p.GL,'GL_SUNX_constant_data',False) _p.unpack_constants( """GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6""", globals()) @_f @_p.types(None,) def glFinishTextureSUNX( ):pass def glInitConstantDataSUNX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/KHR/0000755000175000001440000000000012032640120016746 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GL/KHR/texture_compression_astc_ldr.py0000644000175000001440000000315512025001653025324 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = 'GL_KHR_texture_compression_astc_ldr' _p.unpack_constants( """GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD""", globals()) def glInitTextureCompressionAstcLdrKHR(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/GL/KHR/__init__.py0000644000175000001440000000002712025001653021062 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/raw/GL/KHR/debug.py0000644000175000001440000000605412025001653020417 0ustar mcfletchusers00000000000000'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = 'GL_KHR_debug' def _f( function ): return _p.createFunction( function,_p.GL,'GL_KHR_debug',False) _p.unpack_constants( """GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 GL_DEBUG_CALLBACK_FUNCTION 0x8244 GL_DEBUG_CALLBACK_USER_PARAM 0x8245 GL_DEBUG_SOURCE_API 0x8246 GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 GL_DEBUG_SOURCE_APPLICATION 0x824A GL_DEBUG_SOURCE_OTHER 0x824B GL_DEBUG_TYPE_ERROR 0x824C GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E GL_DEBUG_TYPE_PORTABILITY 0x824F GL_DEBUG_TYPE_PERFORMANCE 0x8250 GL_DEBUG_TYPE_OTHER 0x8251 GL_DEBUG_TYPE_MARKER 0x8268 GL_DEBUG_TYPE_PUSH_GROUP 0x8269 GL_DEBUG_TYPE_POP_GROUP 0x826A GL_DEBUG_SEVERITY_NOTIFICATION 0x826B GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C GL_DEBUG_GROUP_STACK_DEPTH 0x826D GL_BUFFER 0x82E0 GL_SHADER 0x82E1 GL_PROGRAM 0x82E2 GL_QUERY 0x82E3 GL_PROGRAM_PIPELINE 0x82E4 GL_SAMPLER 0x82E6 GL_DISPLAY_LIST 0x82E7 GL_MAX_LABEL_LENGTH 0x82E8 GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 GL_DEBUG_LOGGED_MESSAGES 0x9145 GL_DEBUG_SEVERITY_HIGH 0x9146 GL_DEBUG_SEVERITY_MEDIUM 0x9147 GL_DEBUG_SEVERITY_LOW 0x9148 GL_DEBUG_OUTPUT 0x92E0 GL_CONTEXT_FLAG_DEBUG_BIT 0x2""", globals()) @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLenum,_cs.GLsizei,arrays.GLuintArray,_cs.GLboolean) def glDebugMessageControl( source,type,severity,count,ids,enabled ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLenum,_cs.GLuint,_cs.GLenum,_cs.GLsizei,arrays.GLcharArray) def glDebugMessageInsert( source,type,id,severity,length,buf ):pass @_f @_p.types(None,_cs.GLDEBUGPROC,ctypes.POINTER(_cs.void)) def glDebugMessageCallback( callback,userParam ):pass @_f @_p.types(_cs.GLuint,_cs.GLuint,_cs.GLsizei,arrays.GLuintArray,arrays.GLuintArray,arrays.GLuintArray,arrays.GLuintArray,arrays.GLsizeiArray,arrays.GLcharArray) def glGetDebugMessageLog( count,bufsize,sources,types,ids,severities,lengths,messageLog ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLcharArray) def glPushDebugGroup( source,id,length,message ):pass @_f @_p.types(None,) def glPopDebugGroup( ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLcharArray) def glObjectLabel( identifier,name,length,label ):pass @_f @_p.types(None,_cs.GLenum,_cs.GLuint,_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetObjectLabel( identifier,name,bufSize,length,label ):pass @_f @_p.types(None,ctypes.POINTER(_cs.void),_cs.GLsizei,arrays.GLcharArray) def glObjectPtrLabel( ptr,length,label ):pass @_f @_p.types(None,ctypes.POINTER(_cs.void),_cs.GLsizei,arrays.GLsizeiArray,arrays.GLcharArray) def glGetObjectPtrLabel( ptr,bufSize,length,label ):pass def glInitDebugKHR(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) PyOpenGL-3.0.2/OpenGL/raw/_GLX_ARB.py0000644000175000001440000010771112025001653017662 0ustar mcfletchusers00000000000000# BEGIN GENERATED CONTENT (do not edit below this line) # This content is generated by ./gengl.py. # Wrapper for http://oss.sgi.com/projects/ogl-sample/ABI/glxext.h from OpenGL import platform, constant from ctypes import * c_void = None # H (/usr/include/GL/glx.h:26) # ARB_get_proc_address (/usr/include/GL/glx.h:327) # GLXEXT_LEGACY (/usr/include/GL/glx.h:344) GLX_GLXEXT_VERSION = constant.Constant( 'GLX_GLXEXT_VERSION', 11 ) # VERSION_1_3 (GL/glxext.h:59) # VERSION_1_4 (GL/glxext.h:118) # ARB_get_proc_address (GL/glxext.h:123) # ARB_multisample (GL/glxext.h:126) GLX_SAMPLE_BUFFERS_ARB = constant.Constant( 'GLX_SAMPLE_BUFFERS_ARB', 100000 ) GLX_SAMPLES_ARB = constant.Constant( 'GLX_SAMPLES_ARB', 100001 ) # ARB_fbconfig_float (GL/glxext.h:131) GLX_RGBA_FLOAT_TYPE_ARB = constant.Constant( 'GLX_RGBA_FLOAT_TYPE_ARB', 8377 ) GLX_RGBA_FLOAT_BIT_ARB = constant.Constant( 'GLX_RGBA_FLOAT_BIT_ARB', 4 ) # SGIS_multisample (GL/glxext.h:136) GLX_SAMPLE_BUFFERS_SGIS = constant.Constant( 'GLX_SAMPLE_BUFFERS_SGIS', 100000 ) GLX_SAMPLES_SGIS = constant.Constant( 'GLX_SAMPLES_SGIS', 100001 ) # EXT_visual_info (GL/glxext.h:141) GLX_X_VISUAL_TYPE_EXT = constant.Constant( 'GLX_X_VISUAL_TYPE_EXT', 34 ) GLX_TRANSPARENT_TYPE_EXT = constant.Constant( 'GLX_TRANSPARENT_TYPE_EXT', 35 ) GLX_TRANSPARENT_INDEX_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_INDEX_VALUE_EXT', 36 ) GLX_TRANSPARENT_RED_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_RED_VALUE_EXT', 37 ) GLX_TRANSPARENT_GREEN_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_GREEN_VALUE_EXT', 38 ) GLX_TRANSPARENT_BLUE_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_BLUE_VALUE_EXT', 39 ) GLX_TRANSPARENT_ALPHA_VALUE_EXT = constant.Constant( 'GLX_TRANSPARENT_ALPHA_VALUE_EXT', 40 ) GLX_NONE_EXT = constant.Constant( 'GLX_NONE_EXT', 32768 ) GLX_TRUE_COLOR_EXT = constant.Constant( 'GLX_TRUE_COLOR_EXT', 32770 ) GLX_DIRECT_COLOR_EXT = constant.Constant( 'GLX_DIRECT_COLOR_EXT', 32771 ) GLX_PSEUDO_COLOR_EXT = constant.Constant( 'GLX_PSEUDO_COLOR_EXT', 32772 ) GLX_STATIC_COLOR_EXT = constant.Constant( 'GLX_STATIC_COLOR_EXT', 32773 ) GLX_GRAY_SCALE_EXT = constant.Constant( 'GLX_GRAY_SCALE_EXT', 32774 ) GLX_STATIC_GRAY_EXT = constant.Constant( 'GLX_STATIC_GRAY_EXT', 32775 ) GLX_TRANSPARENT_RGB_EXT = constant.Constant( 'GLX_TRANSPARENT_RGB_EXT', 32776 ) GLX_TRANSPARENT_INDEX_EXT = constant.Constant( 'GLX_TRANSPARENT_INDEX_EXT', 32777 ) # SGI_swap_control (GL/glxext.h:160) # SGI_video_sync (GL/glxext.h:163) # SGI_make_current_read (GL/glxext.h:166) # SGIX_video_source (GL/glxext.h:169) # EXT_visual_rating (GL/glxext.h:172) GLX_VISUAL_CAVEAT_EXT = constant.Constant( 'GLX_VISUAL_CAVEAT_EXT', 32 ) GLX_SLOW_VISUAL_EXT = constant.Constant( 'GLX_SLOW_VISUAL_EXT', 32769 ) GLX_NON_CONFORMANT_VISUAL_EXT = constant.Constant( 'GLX_NON_CONFORMANT_VISUAL_EXT', 32781 ) # EXT_import_context (GL/glxext.h:179) GLX_SHARE_CONTEXT_EXT = constant.Constant( 'GLX_SHARE_CONTEXT_EXT', 32778 ) GLX_VISUAL_ID_EXT = constant.Constant( 'GLX_VISUAL_ID_EXT', 32779 ) GLX_SCREEN_EXT = constant.Constant( 'GLX_SCREEN_EXT', 32780 ) # SGIX_fbconfig (GL/glxext.h:185) GLX_WINDOW_BIT_SGIX = constant.Constant( 'GLX_WINDOW_BIT_SGIX', 1 ) GLX_PIXMAP_BIT_SGIX = constant.Constant( 'GLX_PIXMAP_BIT_SGIX', 2 ) GLX_RGBA_BIT_SGIX = constant.Constant( 'GLX_RGBA_BIT_SGIX', 1 ) GLX_COLOR_INDEX_BIT_SGIX = constant.Constant( 'GLX_COLOR_INDEX_BIT_SGIX', 2 ) GLX_DRAWABLE_TYPE_SGIX = constant.Constant( 'GLX_DRAWABLE_TYPE_SGIX', 32784 ) GLX_RENDER_TYPE_SGIX = constant.Constant( 'GLX_RENDER_TYPE_SGIX', 32785 ) GLX_X_RENDERABLE_SGIX = constant.Constant( 'GLX_X_RENDERABLE_SGIX', 32786 ) GLX_FBCONFIG_ID_SGIX = constant.Constant( 'GLX_FBCONFIG_ID_SGIX', 32787 ) GLX_RGBA_TYPE_SGIX = constant.Constant( 'GLX_RGBA_TYPE_SGIX', 32788 ) GLX_COLOR_INDEX_TYPE_SGIX = constant.Constant( 'GLX_COLOR_INDEX_TYPE_SGIX', 32789 ) # SGIX_pbuffer (GL/glxext.h:199) GLX_PBUFFER_BIT_SGIX = constant.Constant( 'GLX_PBUFFER_BIT_SGIX', 4 ) GLX_BUFFER_CLOBBER_MASK_SGIX = constant.Constant( 'GLX_BUFFER_CLOBBER_MASK_SGIX', 134217728 ) GLX_FRONT_LEFT_BUFFER_BIT_SGIX = constant.Constant( 'GLX_FRONT_LEFT_BUFFER_BIT_SGIX', 1 ) GLX_FRONT_RIGHT_BUFFER_BIT_SGIX = constant.Constant( 'GLX_FRONT_RIGHT_BUFFER_BIT_SGIX', 2 ) GLX_BACK_LEFT_BUFFER_BIT_SGIX = constant.Constant( 'GLX_BACK_LEFT_BUFFER_BIT_SGIX', 4 ) GLX_BACK_RIGHT_BUFFER_BIT_SGIX = constant.Constant( 'GLX_BACK_RIGHT_BUFFER_BIT_SGIX', 8 ) GLX_AUX_BUFFERS_BIT_SGIX = constant.Constant( 'GLX_AUX_BUFFERS_BIT_SGIX', 16 ) GLX_DEPTH_BUFFER_BIT_SGIX = constant.Constant( 'GLX_DEPTH_BUFFER_BIT_SGIX', 32 ) GLX_STENCIL_BUFFER_BIT_SGIX = constant.Constant( 'GLX_STENCIL_BUFFER_BIT_SGIX', 64 ) GLX_ACCUM_BUFFER_BIT_SGIX = constant.Constant( 'GLX_ACCUM_BUFFER_BIT_SGIX', 128 ) GLX_SAMPLE_BUFFERS_BIT_SGIX = constant.Constant( 'GLX_SAMPLE_BUFFERS_BIT_SGIX', 256 ) GLX_MAX_PBUFFER_WIDTH_SGIX = constant.Constant( 'GLX_MAX_PBUFFER_WIDTH_SGIX', 32790 ) GLX_MAX_PBUFFER_HEIGHT_SGIX = constant.Constant( 'GLX_MAX_PBUFFER_HEIGHT_SGIX', 32791 ) GLX_MAX_PBUFFER_PIXELS_SGIX = constant.Constant( 'GLX_MAX_PBUFFER_PIXELS_SGIX', 32792 ) GLX_OPTIMAL_PBUFFER_WIDTH_SGIX = constant.Constant( 'GLX_OPTIMAL_PBUFFER_WIDTH_SGIX', 32793 ) GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX = constant.Constant( 'GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX', 32794 ) GLX_PRESERVED_CONTENTS_SGIX = constant.Constant( 'GLX_PRESERVED_CONTENTS_SGIX', 32795 ) GLX_LARGEST_PBUFFER_SGIX = constant.Constant( 'GLX_LARGEST_PBUFFER_SGIX', 32796 ) GLX_WIDTH_SGIX = constant.Constant( 'GLX_WIDTH_SGIX', 32797 ) GLX_HEIGHT_SGIX = constant.Constant( 'GLX_HEIGHT_SGIX', 32798 ) GLX_EVENT_MASK_SGIX = constant.Constant( 'GLX_EVENT_MASK_SGIX', 32799 ) GLX_DAMAGED_SGIX = constant.Constant( 'GLX_DAMAGED_SGIX', 32800 ) GLX_SAVED_SGIX = constant.Constant( 'GLX_SAVED_SGIX', 32801 ) GLX_WINDOW_SGIX = constant.Constant( 'GLX_WINDOW_SGIX', 32802 ) GLX_PBUFFER_SGIX = constant.Constant( 'GLX_PBUFFER_SGIX', 32803 ) # SGI_cushion (GL/glxext.h:227) # SGIX_video_resize (GL/glxext.h:230) GLX_SYNC_FRAME_SGIX = constant.Constant( 'GLX_SYNC_FRAME_SGIX', 0 ) GLX_SYNC_SWAP_SGIX = constant.Constant( 'GLX_SYNC_SWAP_SGIX', 1 ) # SGIX_dmbuffer (GL/glxext.h:235) GLX_DIGITAL_MEDIA_PBUFFER_SGIX = constant.Constant( 'GLX_DIGITAL_MEDIA_PBUFFER_SGIX', 32804 ) # SGIX_swap_group (GL/glxext.h:239) # SGIX_swap_barrier (GL/glxext.h:242) # SGIS_blended_overlay (GL/glxext.h:245) GLX_BLENDED_RGBA_SGIS = constant.Constant( 'GLX_BLENDED_RGBA_SGIS', 32805 ) # SGIS_shared_multisample (GL/glxext.h:249) GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS = constant.Constant( 'GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS', 32806 ) GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS = constant.Constant( 'GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS', 32807 ) # SUN_get_transparent_index (GL/glxext.h:254) # 3DFX_multisample (GL/glxext.h:257) GLX_SAMPLE_BUFFERS_3DFX = constant.Constant( 'GLX_SAMPLE_BUFFERS_3DFX', 32848 ) GLX_SAMPLES_3DFX = constant.Constant( 'GLX_SAMPLES_3DFX', 32849 ) # MESA_copy_sub_buffer (GL/glxext.h:262) # MESA_pixmap_colormap (GL/glxext.h:265) # MESA_release_buffers (GL/glxext.h:268) # MESA_set_3dfx_mode (GL/glxext.h:271) GLX_3DFX_WINDOW_MODE_MESA = constant.Constant( 'GLX_3DFX_WINDOW_MODE_MESA', 1 ) GLX_3DFX_FULLSCREEN_MODE_MESA = constant.Constant( 'GLX_3DFX_FULLSCREEN_MODE_MESA', 2 ) # SGIX_visual_select_group (GL/glxext.h:276) GLX_VISUAL_SELECT_GROUP_SGIX = constant.Constant( 'GLX_VISUAL_SELECT_GROUP_SGIX', 32808 ) # OML_swap_method (GL/glxext.h:280) GLX_SWAP_METHOD_OML = constant.Constant( 'GLX_SWAP_METHOD_OML', 32864 ) GLX_SWAP_EXCHANGE_OML = constant.Constant( 'GLX_SWAP_EXCHANGE_OML', 32865 ) GLX_SWAP_COPY_OML = constant.Constant( 'GLX_SWAP_COPY_OML', 32866 ) GLX_SWAP_UNDEFINED_OML = constant.Constant( 'GLX_SWAP_UNDEFINED_OML', 32867 ) # OML_sync_control (GL/glxext.h:287) # NV_float_buffer (GL/glxext.h:290) GLX_FLOAT_COMPONENTS_NV = constant.Constant( 'GLX_FLOAT_COMPONENTS_NV', 8368 ) # SGIX_hyperpipe (GL/glxext.h:294) GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX = constant.Constant( 'GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX', 80 ) GLX_BAD_HYPERPIPE_CONFIG_SGIX = constant.Constant( 'GLX_BAD_HYPERPIPE_CONFIG_SGIX', 91 ) GLX_BAD_HYPERPIPE_SGIX = constant.Constant( 'GLX_BAD_HYPERPIPE_SGIX', 92 ) GLX_HYPERPIPE_DISPLAY_PIPE_SGIX = constant.Constant( 'GLX_HYPERPIPE_DISPLAY_PIPE_SGIX', 1 ) GLX_HYPERPIPE_RENDER_PIPE_SGIX = constant.Constant( 'GLX_HYPERPIPE_RENDER_PIPE_SGIX', 2 ) GLX_PIPE_RECT_SGIX = constant.Constant( 'GLX_PIPE_RECT_SGIX', 1 ) GLX_PIPE_RECT_LIMITS_SGIX = constant.Constant( 'GLX_PIPE_RECT_LIMITS_SGIX', 2 ) GLX_HYPERPIPE_STEREO_SGIX = constant.Constant( 'GLX_HYPERPIPE_STEREO_SGIX', 3 ) GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX = constant.Constant( 'GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX', 4 ) GLX_HYPERPIPE_ID_SGIX = constant.Constant( 'GLX_HYPERPIPE_ID_SGIX', 32816 ) # MESA_agp_offset (GL/glxext.h:307) # ARB_get_proc_address (GL/glxext.h:313) # SGIX_video_source (GL/glxext.h:317) # SGIX_fbconfig (GL/glxext.h:321) # SGIX_pbuffer (GL/glxext.h:326) # VERSION_1_3 (GL/glxext.h:358) # VERSION_1_4 (GL/glxext.h:400) # ARB_get_proc_address (GL/glxext.h:408) # ARB_multisample (GL/glxext.h:416) GLX_ARB_multisample = constant.Constant( 'GLX_ARB_multisample', 1 ) # ARB_fbconfig_float (GL/glxext.h:420) GLX_ARB_fbconfig_float = constant.Constant( 'GLX_ARB_fbconfig_float', 1 ) # SGIS_multisample (GL/glxext.h:424) GLX_SGIS_multisample = constant.Constant( 'GLX_SGIS_multisample', 1 ) # EXT_visual_info (GL/glxext.h:428) GLX_EXT_visual_info = constant.Constant( 'GLX_EXT_visual_info', 1 ) # SGI_swap_control (GL/glxext.h:432) GLX_SGI_swap_control = constant.Constant( 'GLX_SGI_swap_control', 1 ) glXSwapIntervalSGI = platform.createBaseFunction( 'glXSwapIntervalSGI', dll=platform.GL, resultType=c_int, argTypes=[c_int], doc='glXSwapIntervalSGI( c_int(None) ) -> c_int', argNames=['None'], ) # SGI_video_sync (GL/glxext.h:440) GLX_SGI_video_sync = constant.Constant( 'GLX_SGI_video_sync', 1 ) glXGetVideoSyncSGI = platform.createBaseFunction( 'glXGetVideoSyncSGI', dll=platform.GL, resultType=c_int, argTypes=[POINTER(c_uint)], doc='glXGetVideoSyncSGI( POINTER(c_uint)() ) -> c_int', argNames=[''], ) glXWaitVideoSyncSGI = platform.createBaseFunction( 'glXWaitVideoSyncSGI', dll=platform.GL, resultType=c_int, argTypes=[c_int, c_int, POINTER(c_uint)], doc='glXWaitVideoSyncSGI( c_int(None), c_int(None), POINTER(c_uint)() ) -> c_int', argNames=['None', 'None', ''], ) # SGI_make_current_read (GL/glxext.h:450) GLX_SGI_make_current_read = constant.Constant( 'GLX_SGI_make_current_read', 1 ) class struct__XDisplay(Structure): __slots__ = [ ] struct__XDisplay._fields_ = [ ('_opaque_struct', c_int) ] class struct__XDisplay(Structure): __slots__ = [ ] struct__XDisplay._fields_ = [ ('_opaque_struct', c_int) ] Display = struct__XDisplay # /usr/include/X11/Xlib.h:495 XID = c_ulong # /usr/include/X11/X.h:66 GLXDrawable = XID # /usr/include/GL/glx.h:180 class struct___GLXcontextRec(Structure): __slots__ = [ ] struct___GLXcontextRec._fields_ = [ ('_opaque_struct', c_int) ] class struct___GLXcontextRec(Structure): __slots__ = [ ] struct___GLXcontextRec._fields_ = [ ('_opaque_struct', c_int) ] GLXContext = POINTER(struct___GLXcontextRec) # /usr/include/GL/glx.h:178 glXMakeCurrentReadSGI = platform.createBaseFunction( 'glXMakeCurrentReadSGI', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, GLXDrawable, GLXContext], doc='glXMakeCurrentReadSGI( POINTER(Display)(), GLXDrawable(None), GLXDrawable(None), GLXContext(None) ) -> c_int', argNames=['', 'None', 'None', 'None'], ) glXGetCurrentReadDrawableSGI = platform.createBaseFunction( 'glXGetCurrentReadDrawableSGI', dll=platform.GL, resultType=GLXDrawable, argTypes=[], doc='glXGetCurrentReadDrawableSGI( ) -> GLXDrawable', argNames=[], ) # SGIX_video_source (GL/glxext.h:460) GLX_SGIX_video_source = constant.Constant( 'GLX_SGIX_video_source', 1 ) # EXT_visual_rating (GL/glxext.h:472) GLX_EXT_visual_rating = constant.Constant( 'GLX_EXT_visual_rating', 1 ) # EXT_import_context (GL/glxext.h:476) GLX_EXT_import_context = constant.Constant( 'GLX_EXT_import_context', 1 ) glXGetCurrentDisplayEXT = platform.createBaseFunction( 'glXGetCurrentDisplayEXT', dll=platform.GL, resultType=POINTER(Display), argTypes=[], doc='glXGetCurrentDisplayEXT( ) -> POINTER(Display)', argNames=[], ) glXQueryContextInfoEXT = platform.createBaseFunction( 'glXQueryContextInfoEXT', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXContext, c_int, POINTER(c_int)], doc='glXQueryContextInfoEXT( POINTER(Display)(), GLXContext(None), c_int(None), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', ''], ) GLXContextID = XID # /usr/include/GL/glx.h:184 glXGetContextIDEXT = platform.createBaseFunction( 'glXGetContextIDEXT', dll=platform.GL, resultType=GLXContextID, argTypes=[GLXContext], doc='glXGetContextIDEXT( GLXContext(None) ) -> GLXContextID', argNames=['None'], ) glXImportContextEXT = platform.createBaseFunction( 'glXImportContextEXT', dll=platform.GL, resultType=GLXContext, argTypes=[POINTER(Display), GLXContextID], doc='glXImportContextEXT( POINTER(Display)(), GLXContextID(None) ) -> GLXContext', argNames=['', 'None'], ) glXFreeContextEXT = platform.createBaseFunction( 'glXFreeContextEXT', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXContext], doc='glXFreeContextEXT( POINTER(Display)(), GLXContext(None) ) -> None', argNames=['', 'None'], ) # SGIX_fbconfig (GL/glxext.h:492) GLX_SGIX_fbconfig = constant.Constant( 'GLX_SGIX_fbconfig', 1 ) class struct___GLXFBConfigRec(Structure): __slots__ = [ ] struct___GLXFBConfigRec._fields_ = [ ('_opaque_struct', c_int) ] class struct___GLXFBConfigRec(Structure): __slots__ = [ ] struct___GLXFBConfigRec._fields_ = [ ('_opaque_struct', c_int) ] GLXFBConfigSGIX = POINTER(struct___GLXFBConfigRec) # GL/glxext.h:323 glXGetFBConfigAttribSGIX = platform.createBaseFunction( 'glXGetFBConfigAttribSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXFBConfigSGIX, c_int, POINTER(c_int)], doc='glXGetFBConfigAttribSGIX( POINTER(Display)(), GLXFBConfigSGIX(None), c_int(None), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', ''], ) glXChooseFBConfigSGIX = platform.createBaseFunction( 'glXChooseFBConfigSGIX', dll=platform.GL, resultType=POINTER(GLXFBConfigSGIX), argTypes=[POINTER(Display), c_int, POINTER(c_int), POINTER(c_int)], doc='glXChooseFBConfigSGIX( POINTER(Display)(), c_int(None), POINTER(c_int)(), POINTER(c_int)() ) -> POINTER(GLXFBConfigSGIX)', argNames=['', 'None', '', ''], ) GLXPixmap = XID # /usr/include/GL/glx.h:179 Pixmap = XID # /usr/include/X11/X.h:102 glXCreateGLXPixmapWithConfigSGIX = platform.createBaseFunction( 'glXCreateGLXPixmapWithConfigSGIX', dll=platform.GL, resultType=GLXPixmap, argTypes=[POINTER(Display), GLXFBConfigSGIX, Pixmap], doc='glXCreateGLXPixmapWithConfigSGIX( POINTER(Display)(), GLXFBConfigSGIX(None), Pixmap(None) ) -> GLXPixmap', argNames=['', 'None', 'None'], ) glXCreateContextWithConfigSGIX = platform.createBaseFunction( 'glXCreateContextWithConfigSGIX', dll=platform.GL, resultType=GLXContext, argTypes=[POINTER(Display), GLXFBConfigSGIX, c_int, GLXContext, c_int], doc='glXCreateContextWithConfigSGIX( POINTER(Display)(), GLXFBConfigSGIX(None), c_int(None), GLXContext(None), c_int(None) ) -> GLXContext', argNames=['', 'None', 'None', 'None', 'None'], ) class struct_anon_103(Structure): __slots__ = [ 'visual', 'visualid', 'screen', 'depth', 'class', 'red_mask', 'green_mask', 'blue_mask', 'colormap_size', 'bits_per_rgb', ] class struct_anon_18(Structure): __slots__ = [ 'ext_data', 'visualid', 'class', 'red_mask', 'green_mask', 'blue_mask', 'bits_per_rgb', 'map_entries', ] class struct__XExtData(Structure): __slots__ = [ 'number', 'next', 'free_private', 'private_data', ] XPointer = c_char_p # /usr/include/X11/Xlib.h:84 struct__XExtData._fields_ = [ ('number', c_int), ('next', POINTER(struct__XExtData)), ('free_private', POINTER(CFUNCTYPE(c_int, POINTER(struct__XExtData)))), ('private_data', XPointer), ] XExtData = struct__XExtData # /usr/include/X11/Xlib.h:163 VisualID = c_ulong # /usr/include/X11/X.h:76 struct_anon_18._fields_ = [ ('ext_data', POINTER(XExtData)), ('visualid', VisualID), ('class', c_int), ('red_mask', c_ulong), ('green_mask', c_ulong), ('blue_mask', c_ulong), ('bits_per_rgb', c_int), ('map_entries', c_int), ] Visual = struct_anon_18 # /usr/include/X11/Xlib.h:246 struct_anon_103._fields_ = [ ('visual', POINTER(Visual)), ('visualid', VisualID), ('screen', c_int), ('depth', c_int), ('class', c_int), ('red_mask', c_ulong), ('green_mask', c_ulong), ('blue_mask', c_ulong), ('colormap_size', c_int), ('bits_per_rgb', c_int), ] XVisualInfo = struct_anon_103 # /usr/include/X11/Xutil.h:294 glXGetVisualFromFBConfigSGIX = platform.createBaseFunction( 'glXGetVisualFromFBConfigSGIX', dll=platform.GL, resultType=POINTER(XVisualInfo), argTypes=[POINTER(Display), GLXFBConfigSGIX], doc='glXGetVisualFromFBConfigSGIX( POINTER(Display)(), GLXFBConfigSGIX(None) ) -> POINTER(XVisualInfo)', argNames=['', 'None'], ) glXGetFBConfigFromVisualSGIX = platform.createBaseFunction( 'glXGetFBConfigFromVisualSGIX', dll=platform.GL, resultType=GLXFBConfigSGIX, argTypes=[POINTER(Display), POINTER(XVisualInfo)], doc='glXGetFBConfigFromVisualSGIX( POINTER(Display)(), POINTER(XVisualInfo)() ) -> GLXFBConfigSGIX', argNames=['', ''], ) # SGIX_pbuffer (GL/glxext.h:510) GLX_SGIX_pbuffer = constant.Constant( 'GLX_SGIX_pbuffer', 1 ) GLXPbufferSGIX = XID # GL/glxext.h:327 glXCreateGLXPbufferSGIX = platform.createBaseFunction( 'glXCreateGLXPbufferSGIX', dll=platform.GL, resultType=GLXPbufferSGIX, argTypes=[POINTER(Display), GLXFBConfigSGIX, c_uint, c_uint, POINTER(c_int)], doc='glXCreateGLXPbufferSGIX( POINTER(Display)(), GLXFBConfigSGIX(None), c_uint(None), c_uint(None), POINTER(c_int)() ) -> GLXPbufferSGIX', argNames=['', 'None', 'None', 'None', ''], ) glXDestroyGLXPbufferSGIX = platform.createBaseFunction( 'glXDestroyGLXPbufferSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXPbufferSGIX], doc='glXDestroyGLXPbufferSGIX( POINTER(Display)(), GLXPbufferSGIX(None) ) -> None', argNames=['', 'None'], ) glXQueryGLXPbufferSGIX = platform.createBaseFunction( 'glXQueryGLXPbufferSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXPbufferSGIX, c_int, POINTER(c_uint)], doc='glXQueryGLXPbufferSGIX( POINTER(Display)(), GLXPbufferSGIX(None), c_int(None), POINTER(c_uint)() ) -> c_int', argNames=['', 'None', 'None', ''], ) glXSelectEventSGIX = platform.createBaseFunction( 'glXSelectEventSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_ulong], doc='glXSelectEventSGIX( POINTER(Display)(), GLXDrawable(None), c_ulong(None) ) -> None', argNames=['', 'None', 'None'], ) glXGetSelectedEventSGIX = platform.createBaseFunction( 'glXGetSelectedEventSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_ulong)], doc='glXGetSelectedEventSGIX( POINTER(Display)(), GLXDrawable(None), POINTER(c_ulong)() ) -> None', argNames=['', 'None', ''], ) # SGI_cushion (GL/glxext.h:526) GLX_SGI_cushion = constant.Constant( 'GLX_SGI_cushion', 1 ) Window = XID # /usr/include/X11/X.h:96 glXCushionSGI = platform.createBaseFunction( 'glXCushionSGI', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), Window, c_float], doc='glXCushionSGI( POINTER(Display)(), Window(None), c_float(None) ) -> None', argNames=['', 'None', 'None'], ) # SGIX_video_resize (GL/glxext.h:534) GLX_SGIX_video_resize = constant.Constant( 'GLX_SGIX_video_resize', 1 ) glXBindChannelToWindowSGIX = platform.createBaseFunction( 'glXBindChannelToWindowSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, Window], doc='glXBindChannelToWindowSGIX( POINTER(Display)(), c_int(None), c_int(None), Window(None) ) -> c_int', argNames=['', 'None', 'None', 'None'], ) glXChannelRectSGIX = platform.createBaseFunction( 'glXChannelRectSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, c_int, c_int, c_int, c_int], doc='glXChannelRectSGIX( POINTER(Display)(), c_int(None), c_int(None), c_int(None), c_int(None), c_int(None), c_int(None) ) -> c_int', argNames=['', 'None', 'None', 'None', 'None', 'None', 'None'], ) glXQueryChannelRectSGIX = platform.createBaseFunction( 'glXQueryChannelRectSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, POINTER(c_int), POINTER(c_int), POINTER(c_int), POINTER(c_int)], doc='glXQueryChannelRectSGIX( POINTER(Display)(), c_int(None), c_int(None), POINTER(c_int)(), POINTER(c_int)(), POINTER(c_int)(), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', '', '', '', ''], ) glXQueryChannelDeltasSGIX = platform.createBaseFunction( 'glXQueryChannelDeltasSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, POINTER(c_int), POINTER(c_int), POINTER(c_int), POINTER(c_int)], doc='glXQueryChannelDeltasSGIX( POINTER(Display)(), c_int(None), c_int(None), POINTER(c_int)(), POINTER(c_int)(), POINTER(c_int)(), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', '', '', '', ''], ) GLenum = c_uint # /usr/include/GL/gl.h:155 glXChannelRectSyncSGIX = platform.createBaseFunction( 'glXChannelRectSyncSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, GLenum], doc='glXChannelRectSyncSGIX( POINTER(Display)(), c_int(None), c_int(None), GLenum(None) ) -> c_int', argNames=['', 'None', 'None', 'None'], ) # SGIX_dmbuffer (GL/glxext.h:550) GLX_SGIX_dmbuffer = constant.Constant( 'GLX_SGIX_dmbuffer', 1 ) # SGIX_swap_group (GL/glxext.h:560) GLX_SGIX_swap_group = constant.Constant( 'GLX_SGIX_swap_group', 1 ) glXJoinSwapGroupSGIX = platform.createBaseFunction( 'glXJoinSwapGroupSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, GLXDrawable], doc='glXJoinSwapGroupSGIX( POINTER(Display)(), GLXDrawable(None), GLXDrawable(None) ) -> None', argNames=['', 'None', 'None'], ) # SGIX_swap_barrier (GL/glxext.h:568) GLX_SGIX_swap_barrier = constant.Constant( 'GLX_SGIX_swap_barrier', 1 ) glXBindSwapBarrierSGIX = platform.createBaseFunction( 'glXBindSwapBarrierSGIX', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_int], doc='glXBindSwapBarrierSGIX( POINTER(Display)(), GLXDrawable(None), c_int(None) ) -> None', argNames=['', 'None', 'None'], ) glXQueryMaxSwapBarriersSGIX = platform.createBaseFunction( 'glXQueryMaxSwapBarriersSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, POINTER(c_int)], doc='glXQueryMaxSwapBarriersSGIX( POINTER(Display)(), c_int(None), POINTER(c_int)() ) -> c_int', argNames=['', 'None', ''], ) # SUN_get_transparent_index (GL/glxext.h:578) GLX_SUN_get_transparent_index = constant.Constant( 'GLX_SUN_get_transparent_index', 1 ) glXGetTransparentIndexSUN = platform.createBaseFunction( 'glXGetTransparentIndexSUN', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), Window, Window, POINTER(c_long)], doc='glXGetTransparentIndexSUN( POINTER(Display)(), Window(None), Window(None), POINTER(c_long)() ) -> c_int', argNames=['', 'None', 'None', ''], ) # MESA_copy_sub_buffer (GL/glxext.h:586) GLX_MESA_copy_sub_buffer = constant.Constant( 'GLX_MESA_copy_sub_buffer', 1 ) glXCopySubBufferMESA = platform.createBaseFunction( 'glXCopySubBufferMESA', dll=platform.GL, resultType=None, argTypes=[POINTER(Display), GLXDrawable, c_int, c_int, c_int, c_int], doc='glXCopySubBufferMESA( POINTER(Display)(), GLXDrawable(None), c_int(None), c_int(None), c_int(None), c_int(None) ) -> None', argNames=['', 'None', 'None', 'None', 'None', 'None'], ) # MESA_pixmap_colormap (GL/glxext.h:594) GLX_MESA_pixmap_colormap = constant.Constant( 'GLX_MESA_pixmap_colormap', 1 ) Colormap = XID # /usr/include/X11/X.h:104 glXCreateGLXPixmapMESA = platform.createBaseFunction( 'glXCreateGLXPixmapMESA', dll=platform.GL, resultType=GLXPixmap, argTypes=[POINTER(Display), POINTER(XVisualInfo), Pixmap, Colormap], doc='glXCreateGLXPixmapMESA( POINTER(Display)(), POINTER(XVisualInfo)(), Pixmap(None), Colormap(None) ) -> GLXPixmap', argNames=['', '', 'None', 'None'], ) # MESA_release_buffers (GL/glxext.h:602) GLX_MESA_release_buffers = constant.Constant( 'GLX_MESA_release_buffers', 1 ) glXReleaseBuffersMESA = platform.createBaseFunction( 'glXReleaseBuffersMESA', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable], doc='glXReleaseBuffersMESA( POINTER(Display)(), GLXDrawable(None) ) -> c_int', argNames=['', 'None'], ) # MESA_set_3dfx_mode (GL/glxext.h:610) GLX_MESA_set_3dfx_mode = constant.Constant( 'GLX_MESA_set_3dfx_mode', 1 ) glXSet3DfxModeMESA = platform.createBaseFunction( 'glXSet3DfxModeMESA', dll=platform.GL, resultType=c_int, argTypes=[c_int], doc='glXSet3DfxModeMESA( c_int(None) ) -> c_int', argNames=['None'], ) # SGIX_visual_select_group (GL/glxext.h:618) GLX_SGIX_visual_select_group = constant.Constant( 'GLX_SGIX_visual_select_group', 1 ) # OML_swap_method (GL/glxext.h:622) GLX_OML_swap_method = constant.Constant( 'GLX_OML_swap_method', 1 ) # OML_sync_control (GL/glxext.h:626) GLX_OML_sync_control = constant.Constant( 'GLX_OML_sync_control', 1 ) glXGetSyncValuesOML = platform.createBaseFunction( 'glXGetSyncValuesOML', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_int64), POINTER(c_int64), POINTER(c_int64)], doc='glXGetSyncValuesOML( POINTER(Display)(), GLXDrawable(None), POINTER(c_int64)(), POINTER(c_int64)(), POINTER(c_int64)() ) -> c_int', argNames=['', 'None', '', '', ''], ) glXGetMscRateOML = platform.createBaseFunction( 'glXGetMscRateOML', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, POINTER(c_int32), POINTER(c_int32)], doc='glXGetMscRateOML( POINTER(Display)(), GLXDrawable(None), POINTER(c_int32)(), POINTER(c_int32)() ) -> c_int', argNames=['', 'None', '', ''], ) glXSwapBuffersMscOML = platform.createBaseFunction( 'glXSwapBuffersMscOML', dll=platform.GL, resultType=c_int64, argTypes=[POINTER(Display), GLXDrawable, c_int64, c_int64, c_int64], doc='glXSwapBuffersMscOML( POINTER(Display)(), GLXDrawable(None), c_int64(None), c_int64(None), c_int64(None) ) -> c_int64', argNames=['', 'None', 'None', 'None', 'None'], ) glXWaitForMscOML = platform.createBaseFunction( 'glXWaitForMscOML', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, c_int64, c_int64, c_int64, POINTER(c_int64), POINTER(c_int64), POINTER(c_int64)], doc='glXWaitForMscOML( POINTER(Display)(), GLXDrawable(None), c_int64(None), c_int64(None), c_int64(None), POINTER(c_int64)(), POINTER(c_int64)(), POINTER(c_int64)() ) -> c_int', argNames=['', 'None', 'None', 'None', 'None', '', '', ''], ) glXWaitForSbcOML = platform.createBaseFunction( 'glXWaitForSbcOML', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), GLXDrawable, c_int64, POINTER(c_int64), POINTER(c_int64), POINTER(c_int64)], doc='glXWaitForSbcOML( POINTER(Display)(), GLXDrawable(None), c_int64(None), POINTER(c_int64)(), POINTER(c_int64)(), POINTER(c_int64)() ) -> c_int', argNames=['', 'None', 'None', '', '', ''], ) # NV_float_buffer (GL/glxext.h:642) GLX_NV_float_buffer = constant.Constant( 'GLX_NV_float_buffer', 1 ) # SGIX_hyperpipe (GL/glxext.h:646) GLX_SGIX_hyperpipe = constant.Constant( 'GLX_SGIX_hyperpipe', 1 ) class struct_anon_107(Structure): __slots__ = [ 'pipeName', 'networkId', ] struct_anon_107._fields_ = [ ('pipeName', c_char * 80), ('networkId', c_int), ] GLXHyperpipeNetworkSGIX = struct_anon_107 # GL/glxext.h:652 glXQueryHyperpipeNetworkSGIX = platform.createBaseFunction( 'glXQueryHyperpipeNetworkSGIX', dll=platform.GL, resultType=POINTER(GLXHyperpipeNetworkSGIX), argTypes=[POINTER(Display), POINTER(c_int)], doc='glXQueryHyperpipeNetworkSGIX( POINTER(Display)(), POINTER(c_int)() ) -> POINTER(GLXHyperpipeNetworkSGIX)', argNames=['', ''], ) class struct_anon_108(Structure): __slots__ = [ 'pipeName', 'channel', 'participationType', 'timeSlice', ] struct_anon_108._fields_ = [ ('pipeName', c_char * 80), ('channel', c_int), ('participationType', c_uint), ('timeSlice', c_int), ] GLXHyperpipeConfigSGIX = struct_anon_108 # GL/glxext.h:660 glXHyperpipeConfigSGIX = platform.createBaseFunction( 'glXHyperpipeConfigSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, POINTER(GLXHyperpipeConfigSGIX), POINTER(c_int)], doc='glXHyperpipeConfigSGIX( POINTER(Display)(), c_int(None), c_int(None), POINTER(GLXHyperpipeConfigSGIX)(), POINTER(c_int)() ) -> c_int', argNames=['', 'None', 'None', '', ''], ) glXQueryHyperpipeConfigSGIX = platform.createBaseFunction( 'glXQueryHyperpipeConfigSGIX', dll=platform.GL, resultType=POINTER(GLXHyperpipeConfigSGIX), argTypes=[POINTER(Display), c_int, POINTER(c_int)], doc='glXQueryHyperpipeConfigSGIX( POINTER(Display)(), c_int(None), POINTER(c_int)() ) -> POINTER(GLXHyperpipeConfigSGIX)', argNames=['', 'None', ''], ) glXDestroyHyperpipeConfigSGIX = platform.createBaseFunction( 'glXDestroyHyperpipeConfigSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int], doc='glXDestroyHyperpipeConfigSGIX( POINTER(Display)(), c_int(None) ) -> c_int', argNames=['', 'None'], ) glXBindHyperpipeSGIX = platform.createBaseFunction( 'glXBindHyperpipeSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int], doc='glXBindHyperpipeSGIX( POINTER(Display)(), c_int(None) ) -> c_int', argNames=['', 'None'], ) glXQueryHyperpipeBestAttribSGIX = platform.createBaseFunction( 'glXQueryHyperpipeBestAttribSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, c_int, POINTER(None), POINTER(None)], doc='glXQueryHyperpipeBestAttribSGIX( POINTER(Display)(), c_int(None), c_int(None), c_int(None), POINTER(None)(), POINTER(None)() ) -> c_int', argNames=['', 'None', 'None', 'None', '', ''], ) glXHyperpipeAttribSGIX = platform.createBaseFunction( 'glXHyperpipeAttribSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, c_int, POINTER(None)], doc='glXHyperpipeAttribSGIX( POINTER(Display)(), c_int(None), c_int(None), c_int(None), POINTER(None)() ) -> c_int', argNames=['', 'None', 'None', 'None', ''], ) glXQueryHyperpipeAttribSGIX = platform.createBaseFunction( 'glXQueryHyperpipeAttribSGIX', dll=platform.GL, resultType=c_int, argTypes=[POINTER(Display), c_int, c_int, c_int, POINTER(None)], doc='glXQueryHyperpipeAttribSGIX( POINTER(Display)(), c_int(None), c_int(None), c_int(None), POINTER(None)() ) -> c_int', argNames=['', 'None', 'None', 'None', ''], ) # MESA_agp_offset (GL/glxext.h:693) GLX_MESA_agp_offset = constant.Constant( 'GLX_MESA_agp_offset', 1 ) glXGetAGPOffsetMESA = platform.createBaseFunction( 'glXGetAGPOffsetMESA', dll=platform.GL, resultType=c_uint, argTypes=[POINTER(None)], doc='glXGetAGPOffsetMESA( POINTER(None)() ) -> c_uint', argNames=[''], ) # NV_vertex_array_range (/usr/include/GL/glx.h:359) # ARB_render_texture (/usr/include/GL/glx.h:374) # NV_float_buffer (/usr/include/GL/glx.h:387) # MESA_swap_frame_usage (/usr/include/GL/glx.h:399) # MESA_swap_control (/usr/include/GL/glx.h:419) # EXT_texture_from_pixmap (/usr/include/GL/glx.h:436) __all__ = ['GLX_GLXEXT_VERSION', 'GLX_SAMPLE_BUFFERS_ARB', 'GLX_SAMPLES_ARB', 'GLX_RGBA_FLOAT_TYPE_ARB', 'GLX_RGBA_FLOAT_BIT_ARB', 'GLX_SAMPLE_BUFFERS_SGIS', 'GLX_SAMPLES_SGIS', 'GLX_X_VISUAL_TYPE_EXT', 'GLX_TRANSPARENT_TYPE_EXT', 'GLX_TRANSPARENT_INDEX_VALUE_EXT', 'GLX_TRANSPARENT_RED_VALUE_EXT', 'GLX_TRANSPARENT_GREEN_VALUE_EXT', 'GLX_TRANSPARENT_BLUE_VALUE_EXT', 'GLX_TRANSPARENT_ALPHA_VALUE_EXT', 'GLX_NONE_EXT', 'GLX_TRUE_COLOR_EXT', 'GLX_DIRECT_COLOR_EXT', 'GLX_PSEUDO_COLOR_EXT', 'GLX_STATIC_COLOR_EXT', 'GLX_GRAY_SCALE_EXT', 'GLX_STATIC_GRAY_EXT', 'GLX_TRANSPARENT_RGB_EXT', 'GLX_TRANSPARENT_INDEX_EXT', 'GLX_VISUAL_CAVEAT_EXT', 'GLX_SLOW_VISUAL_EXT', 'GLX_NON_CONFORMANT_VISUAL_EXT', 'GLX_SHARE_CONTEXT_EXT', 'GLX_VISUAL_ID_EXT', 'GLX_SCREEN_EXT', 'GLX_WINDOW_BIT_SGIX', 'GLX_PIXMAP_BIT_SGIX', 'GLX_RGBA_BIT_SGIX', 'GLX_COLOR_INDEX_BIT_SGIX', 'GLX_DRAWABLE_TYPE_SGIX', 'GLX_RENDER_TYPE_SGIX', 'GLX_X_RENDERABLE_SGIX', 'GLX_FBCONFIG_ID_SGIX', 'GLX_RGBA_TYPE_SGIX', 'GLX_COLOR_INDEX_TYPE_SGIX', 'GLX_PBUFFER_BIT_SGIX', 'GLX_BUFFER_CLOBBER_MASK_SGIX', 'GLX_FRONT_LEFT_BUFFER_BIT_SGIX', 'GLX_FRONT_RIGHT_BUFFER_BIT_SGIX', 'GLX_BACK_LEFT_BUFFER_BIT_SGIX', 'GLX_BACK_RIGHT_BUFFER_BIT_SGIX', 'GLX_AUX_BUFFERS_BIT_SGIX', 'GLX_DEPTH_BUFFER_BIT_SGIX', 'GLX_STENCIL_BUFFER_BIT_SGIX', 'GLX_ACCUM_BUFFER_BIT_SGIX', 'GLX_SAMPLE_BUFFERS_BIT_SGIX', 'GLX_MAX_PBUFFER_WIDTH_SGIX', 'GLX_MAX_PBUFFER_HEIGHT_SGIX', 'GLX_MAX_PBUFFER_PIXELS_SGIX', 'GLX_OPTIMAL_PBUFFER_WIDTH_SGIX', 'GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX', 'GLX_PRESERVED_CONTENTS_SGIX', 'GLX_LARGEST_PBUFFER_SGIX', 'GLX_WIDTH_SGIX', 'GLX_HEIGHT_SGIX', 'GLX_EVENT_MASK_SGIX', 'GLX_DAMAGED_SGIX', 'GLX_SAVED_SGIX', 'GLX_WINDOW_SGIX', 'GLX_PBUFFER_SGIX', 'GLX_SYNC_FRAME_SGIX', 'GLX_SYNC_SWAP_SGIX', 'GLX_DIGITAL_MEDIA_PBUFFER_SGIX', 'GLX_BLENDED_RGBA_SGIS', 'GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS', 'GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS', 'GLX_SAMPLE_BUFFERS_3DFX', 'GLX_SAMPLES_3DFX', 'GLX_3DFX_WINDOW_MODE_MESA', 'GLX_3DFX_FULLSCREEN_MODE_MESA', 'GLX_VISUAL_SELECT_GROUP_SGIX', 'GLX_SWAP_METHOD_OML', 'GLX_SWAP_EXCHANGE_OML', 'GLX_SWAP_COPY_OML', 'GLX_SWAP_UNDEFINED_OML', 'GLX_FLOAT_COMPONENTS_NV', 'GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX', 'GLX_BAD_HYPERPIPE_CONFIG_SGIX', 'GLX_BAD_HYPERPIPE_SGIX', 'GLX_HYPERPIPE_DISPLAY_PIPE_SGIX', 'GLX_HYPERPIPE_RENDER_PIPE_SGIX', 'GLX_PIPE_RECT_SGIX', 'GLX_PIPE_RECT_LIMITS_SGIX', 'GLX_HYPERPIPE_STEREO_SGIX', 'GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX', 'GLX_HYPERPIPE_ID_SGIX', 'GLX_ARB_multisample', 'GLX_ARB_fbconfig_float', 'GLX_SGIS_multisample', 'GLX_EXT_visual_info', 'GLX_SGI_swap_control', 'glXSwapIntervalSGI', 'GLX_SGI_video_sync', 'glXGetVideoSyncSGI', 'glXWaitVideoSyncSGI', 'GLX_SGI_make_current_read', 'glXMakeCurrentReadSGI', 'glXGetCurrentReadDrawableSGI', 'GLX_SGIX_video_source', 'GLX_EXT_visual_rating', 'GLX_EXT_import_context', 'glXGetCurrentDisplayEXT', 'glXQueryContextInfoEXT', 'glXGetContextIDEXT', 'glXImportContextEXT', 'glXFreeContextEXT', 'GLX_SGIX_fbconfig', 'glXGetFBConfigAttribSGIX', 'glXChooseFBConfigSGIX', 'glXCreateGLXPixmapWithConfigSGIX', 'glXCreateContextWithConfigSGIX', 'glXGetVisualFromFBConfigSGIX', 'glXGetFBConfigFromVisualSGIX', 'GLX_SGIX_pbuffer', 'glXCreateGLXPbufferSGIX', 'glXDestroyGLXPbufferSGIX', 'glXQueryGLXPbufferSGIX', 'glXSelectEventSGIX', 'glXGetSelectedEventSGIX', 'GLX_SGI_cushion', 'glXCushionSGI', 'GLX_SGIX_video_resize', 'glXBindChannelToWindowSGIX', 'glXChannelRectSGIX', 'glXQueryChannelRectSGIX', 'glXQueryChannelDeltasSGIX', 'glXChannelRectSyncSGIX', 'GLX_SGIX_dmbuffer', 'GLX_SGIX_swap_group', 'glXJoinSwapGroupSGIX', 'GLX_SGIX_swap_barrier', 'glXBindSwapBarrierSGIX', 'glXQueryMaxSwapBarriersSGIX', 'GLX_SUN_get_transparent_index', 'glXGetTransparentIndexSUN', 'GLX_MESA_copy_sub_buffer', 'glXCopySubBufferMESA', 'GLX_MESA_pixmap_colormap', 'glXCreateGLXPixmapMESA', 'GLX_MESA_release_buffers', 'glXReleaseBuffersMESA', 'GLX_MESA_set_3dfx_mode', 'glXSet3DfxModeMESA', 'GLX_SGIX_visual_select_group', 'GLX_OML_swap_method', 'GLX_OML_sync_control', 'glXGetSyncValuesOML', 'glXGetMscRateOML', 'glXSwapBuffersMscOML', 'glXWaitForMscOML', 'glXWaitForSbcOML', 'GLX_NV_float_buffer', 'GLX_SGIX_hyperpipe', 'glXQueryHyperpipeNetworkSGIX', 'glXHyperpipeConfigSGIX', 'glXQueryHyperpipeConfigSGIX', 'glXDestroyHyperpipeConfigSGIX', 'glXBindHyperpipeSGIX', 'glXQueryHyperpipeBestAttribSGIX', 'glXHyperpipeAttribSGIX', 'glXQueryHyperpipeAttribSGIX', 'GLX_MESA_agp_offset', 'glXGetAGPOffsetMESA'] # END GENERATED CONTENT (do not edit above this line) PyOpenGL-3.0.2/OpenGL/raw/GLE/0000755000175000001440000000000012032640120016427 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GLE/annotations.py0000644000175000001440000003115112025001653021343 0ustar mcfletchusers00000000000000"""Array-size annotations for OpenGL.raw.GLE Automatically generated by the generateraw script, do not edit! """ from OpenGL.raw import GLE as raw from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid STRING = c_char_p gleExtrusion = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gleExtrusion, None, # XXX Could not determine size of argument contour for gleExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'contour', ), None, # XXX Could not determine size of argument cont_normal for gleExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'cont_normal', ), None, # XXX Could not determine size of argument up for gleExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'up', ), None, # XXX Could not determine size of argument point_array for gleExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'point_array', ), None, # XXX Could not determine size of argument color_array for gleExtrusion arrays.GLfloatArray arrays.GLfloatArray, 'color_array', ) gleHelicoid = arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gleHelicoid, None, # XXX Could not determine size of argument startXform for gleHelicoid arrays.GLdoubleArray arrays.GLdoubleArray, 'startXform', ), None, # XXX Could not determine size of argument dXformdTheta for gleHelicoid arrays.GLdoubleArray arrays.GLdoubleArray, 'dXformdTheta', ) gleLathe = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gleLathe, None, # XXX Could not determine size of argument contour for gleLathe arrays.GLdoubleArray arrays.GLdoubleArray, 'contour', ), None, # XXX Could not determine size of argument cont_normal for gleLathe arrays.GLdoubleArray arrays.GLdoubleArray, 'cont_normal', ), None, # XXX Could not determine size of argument up for gleLathe arrays.GLdoubleArray arrays.GLdoubleArray, 'up', ), None, # XXX Could not determine size of argument startXform for gleLathe arrays.GLdoubleArray arrays.GLdoubleArray, 'startXform', ), None, # XXX Could not determine size of argument dXformdTheta for gleLathe arrays.GLdoubleArray arrays.GLdoubleArray, 'dXformdTheta', ) glePolyCone = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.glePolyCone, None, # XXX Could not determine size of argument point_array for glePolyCone arrays.GLdoubleArray arrays.GLdoubleArray, 'point_array', ), None, # XXX Could not determine size of argument color_array for glePolyCone arrays.GLfloatArray arrays.GLfloatArray, 'color_array', ), None, # XXX Could not determine size of argument radius_array for glePolyCone arrays.GLdoubleArray arrays.GLdoubleArray, 'radius_array', ) glePolyCylinder = arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.glePolyCylinder, None, # XXX Could not determine size of argument point_array for glePolyCylinder arrays.GLdoubleArray arrays.GLdoubleArray, 'point_array', ), None, # XXX Could not determine size of argument color_array for glePolyCylinder arrays.GLfloatArray arrays.GLfloatArray, 'color_array', ) gleScrew = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gleScrew, None, # XXX Could not determine size of argument contour for gleScrew arrays.GLdoubleArray arrays.GLdoubleArray, 'contour', ), None, # XXX Could not determine size of argument cont_normal for gleScrew arrays.GLdoubleArray arrays.GLdoubleArray, 'cont_normal', ), None, # XXX Could not determine size of argument up for gleScrew arrays.GLdoubleArray arrays.GLdoubleArray, 'up', ) gleSpiral = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gleSpiral, None, # XXX Could not determine size of argument contour for gleSpiral arrays.GLdoubleArray arrays.GLdoubleArray, 'contour', ), None, # XXX Could not determine size of argument cont_normal for gleSpiral arrays.GLdoubleArray arrays.GLdoubleArray, 'cont_normal', ), None, # XXX Could not determine size of argument up for gleSpiral arrays.GLdoubleArray arrays.GLdoubleArray, 'up', ), None, # XXX Could not determine size of argument startXform for gleSpiral arrays.GLdoubleArray arrays.GLdoubleArray, 'startXform', ), None, # XXX Could not determine size of argument dXformdTheta for gleSpiral arrays.GLdoubleArray arrays.GLdoubleArray, 'dXformdTheta', ) gleSuperExtrusion = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gleSuperExtrusion, None, # XXX Could not determine size of argument contour for gleSuperExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'contour', ), None, # XXX Could not determine size of argument cont_normal for gleSuperExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'cont_normal', ), None, # XXX Could not determine size of argument up for gleSuperExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'up', ), None, # XXX Could not determine size of argument point_array for gleSuperExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'point_array', ), None, # XXX Could not determine size of argument color_array for gleSuperExtrusion arrays.GLfloatArray arrays.GLfloatArray, 'color_array', ), None, # XXX Could not determine size of argument xform_array for gleSuperExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'xform_array', ) gleToroid = arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gleToroid, None, # XXX Could not determine size of argument startXform for gleToroid arrays.GLdoubleArray arrays.GLdoubleArray, 'startXform', ), None, # XXX Could not determine size of argument dXformdTheta for gleToroid arrays.GLdoubleArray arrays.GLdoubleArray, 'dXformdTheta', ) gleTwistExtrusion = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gleTwistExtrusion, None, # XXX Could not determine size of argument contour for gleTwistExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'contour', ), None, # XXX Could not determine size of argument cont_normal for gleTwistExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'cont_normal', ), None, # XXX Could not determine size of argument up for gleTwistExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'up', ), None, # XXX Could not determine size of argument point_array for gleTwistExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'point_array', ), None, # XXX Could not determine size of argument color_array for gleTwistExtrusion arrays.GLfloatArray arrays.GLfloatArray, 'color_array', ), None, # XXX Could not determine size of argument twist_array for gleTwistExtrusion arrays.GLdoubleArray arrays.GLdoubleArray, 'twist_array', ) rot_about_axis = arrays.setInputArraySizeType( raw.rot_about_axis, None, # XXX Could not determine size of argument axis for rot_about_axis arrays.GLdoubleArray arrays.GLdoubleArray, 'axis', ) rot_axis = arrays.setInputArraySizeType( raw.rot_axis, None, # XXX Could not determine size of argument axis for rot_axis arrays.GLdoubleArray arrays.GLdoubleArray, 'axis', ) rot_omega = arrays.setInputArraySizeType( raw.rot_omega, None, # XXX Could not determine size of argument axis for rot_omega arrays.GLdoubleArray arrays.GLdoubleArray, 'axis', ) urot_about_axis = arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.urot_about_axis, None, # XXX Could not determine size of argument m for urot_about_axis arrays.GLdoubleArray arrays.GLdoubleArray, 'm', ), None, # XXX Could not determine size of argument axis for urot_about_axis arrays.GLdoubleArray arrays.GLdoubleArray, 'axis', ) urot_axis = arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.urot_axis, None, # XXX Could not determine size of argument m for urot_axis arrays.GLdoubleArray arrays.GLdoubleArray, 'm', ), None, # XXX Could not determine size of argument axis for urot_axis arrays.GLdoubleArray arrays.GLdoubleArray, 'axis', ) urot_omega = arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.urot_omega, None, # XXX Could not determine size of argument m for urot_omega arrays.GLdoubleArray arrays.GLdoubleArray, 'm', ), None, # XXX Could not determine size of argument axis for urot_omega arrays.GLdoubleArray arrays.GLdoubleArray, 'axis', ) urot_prince = arrays.setInputArraySizeType( raw.urot_prince, None, # XXX Could not determine size of argument m for urot_prince arrays.GLdoubleArray arrays.GLdoubleArray, 'm', ) uview_direction = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.uview_direction, None, # XXX Could not determine size of argument m for uview_direction arrays.GLdoubleArray arrays.GLdoubleArray, 'm', ), None, # XXX Could not determine size of argument v21 for uview_direction arrays.GLdoubleArray arrays.GLdoubleArray, 'v21', ), None, # XXX Could not determine size of argument up for uview_direction arrays.GLdoubleArray arrays.GLdoubleArray, 'up', ) uviewpoint = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.uviewpoint, None, # XXX Could not determine size of argument m for uviewpoint arrays.GLdoubleArray arrays.GLdoubleArray, 'm', ), None, # XXX Could not determine size of argument v1 for uviewpoint arrays.GLdoubleArray arrays.GLdoubleArray, 'v1', ), None, # XXX Could not determine size of argument v2 for uviewpoint arrays.GLdoubleArray arrays.GLdoubleArray, 'v2', ), None, # XXX Could not determine size of argument up for uviewpoint arrays.GLdoubleArray arrays.GLdoubleArray, 'up', ) __all__ = [ 'gleExtrusion', 'gleHelicoid', 'gleLathe', 'glePolyCone', 'glePolyCylinder', 'gleScrew', 'gleSpiral', 'gleSuperExtrusion', 'gleToroid', 'gleTwistExtrusion', 'rot_about_axis', 'rot_axis', 'rot_omega', 'urot_about_axis', 'urot_axis', 'urot_omega', 'urot_prince', 'uview_direction', 'uviewpoint' ] PyOpenGL-3.0.2/OpenGL/raw/GLE/__init__.py0000644000175000001440000002757512025001653020564 0ustar mcfletchusers00000000000000# -*- coding: iso-8859-1 -*- """Raw (C-style) API for OpenGL.GLE Automatically generated by the generateraw script, do not edit! """ from OpenGL.raw.GLE.constants import * from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid gleDouble = c_double gleAffine = gleDouble * 3 * 2 # /usr/include/GL/gle.h 136 gleExtrusion = platform.createBaseFunction( 'gleExtrusion', dll=platform.GLE, resultType=None, argTypes=[c_int,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray,c_int,arrays.GLdoubleArray,arrays.GLfloatArray], doc='gleExtrusion( c_int(ncp), arrays.GLdoubleArray(contour), arrays.GLdoubleArray(cont_normal), arrays.GLdoubleArray(up), c_int(npoints), arrays.GLdoubleArray(point_array), arrays.GLfloatArray(color_array) ) -> None', argNames=('ncp', 'contour', 'cont_normal', 'up', 'npoints', 'point_array', 'color_array'), ) # /usr/include/GL/gle.h 110 gleGetJoinStyle = platform.createBaseFunction( 'gleGetJoinStyle', dll=platform.GLE, resultType=c_int, argTypes=[], doc='gleGetJoinStyle( ) -> c_int', argNames=(), ) # /usr/include/GL/gle.h 114 gleGetNumSides = platform.createBaseFunction( 'gleGetNumSides', dll=platform.GLE, resultType=c_int, argTypes=[], doc='gleGetNumSides( ) -> c_int', argNames=(), ) # /usr/include/GL/gle.h 195 gleHelicoid = platform.createBaseFunction( 'gleHelicoid', dll=platform.GLE, resultType=None, argTypes=[gleDouble,gleDouble,gleDouble,gleDouble,gleDouble,arrays.GLdoubleArray,arrays.GLdoubleArray,gleDouble,gleDouble], doc='gleHelicoid( gleDouble(rToroid), gleDouble(startRadius), gleDouble(drdTheta), gleDouble(startZ), gleDouble(dzdTheta), arrays.GLdoubleArray(startXform), arrays.GLdoubleArray(dXformdTheta), gleDouble(startTheta), gleDouble(sweepTheta) ) -> None', argNames=('rToroid', 'startRadius', 'drdTheta', 'startZ', 'dzdTheta', 'startXform', 'dXformdTheta', 'startTheta', 'sweepTheta'), ) # /usr/include/GL/gle.h 184 gleLathe = platform.createBaseFunction( 'gleLathe', dll=platform.GLE, resultType=None, argTypes=[c_int,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray,gleDouble,gleDouble,gleDouble,gleDouble,arrays.GLdoubleArray,arrays.GLdoubleArray,gleDouble,gleDouble], doc='gleLathe( c_int(ncp), arrays.GLdoubleArray(contour), arrays.GLdoubleArray(cont_normal), arrays.GLdoubleArray(up), gleDouble(startRadius), gleDouble(drdTheta), gleDouble(startZ), gleDouble(dzdTheta), arrays.GLdoubleArray(startXform), arrays.GLdoubleArray(dXformdTheta), gleDouble(startTheta), gleDouble(sweepTheta) ) -> None', argNames=('ncp', 'contour', 'cont_normal', 'up', 'startRadius', 'drdTheta', 'startZ', 'dzdTheta', 'startXform', 'dXformdTheta', 'startTheta', 'sweepTheta'), ) # /usr/include/GL/gle.h 127 glePolyCone = platform.createBaseFunction( 'glePolyCone', dll=platform.GLE, resultType=None, argTypes=[c_int,arrays.GLdoubleArray,arrays.GLfloatArray,arrays.GLdoubleArray], doc='glePolyCone( c_int(npoints), arrays.GLdoubleArray(point_array), arrays.GLfloatArray(color_array), arrays.GLdoubleArray(radius_array) ) -> None', argNames=('npoints', 'point_array', 'color_array', 'radius_array'), ) # /usr/include/GL/gle.h 121 glePolyCylinder = platform.createBaseFunction( 'glePolyCylinder', dll=platform.GLE, resultType=None, argTypes=[c_int,arrays.GLdoubleArray,arrays.GLfloatArray,gleDouble], doc='glePolyCylinder( c_int(npoints), arrays.GLdoubleArray(point_array), arrays.GLfloatArray(color_array), gleDouble(radius) ) -> None', argNames=('npoints', 'point_array', 'color_array', 'radius'), ) # /usr/include/GL/gle.h 215 gleScrew = platform.createBaseFunction( 'gleScrew', dll=platform.GLE, resultType=None, argTypes=[c_int,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray,gleDouble,gleDouble,gleDouble], doc='gleScrew( c_int(ncp), arrays.GLdoubleArray(contour), arrays.GLdoubleArray(cont_normal), arrays.GLdoubleArray(up), gleDouble(startz), gleDouble(endz), gleDouble(twist) ) -> None', argNames=('ncp', 'contour', 'cont_normal', 'up', 'startz', 'endz', 'twist'), ) # /usr/include/GL/gle.h 111 gleSetJoinStyle = platform.createBaseFunction( 'gleSetJoinStyle', dll=platform.GLE, resultType=None, argTypes=[c_int], doc='gleSetJoinStyle( c_int(style) ) -> None', argNames=('style',), ) # /usr/include/GL/gle.h 115 gleSetNumSides = platform.createBaseFunction( 'gleSetNumSides', dll=platform.GLE, resultType=None, argTypes=[c_int], doc='gleSetNumSides( c_int(slices) ) -> None', argNames=('slices',), ) # /usr/include/GL/gle.h 170 gleSpiral = platform.createBaseFunction( 'gleSpiral', dll=platform.GLE, resultType=None, argTypes=[c_int,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray,gleDouble,gleDouble,gleDouble,gleDouble,arrays.GLdoubleArray,arrays.GLdoubleArray,gleDouble,gleDouble], doc='gleSpiral( c_int(ncp), arrays.GLdoubleArray(contour), arrays.GLdoubleArray(cont_normal), arrays.GLdoubleArray(up), gleDouble(startRadius), gleDouble(drdTheta), gleDouble(startZ), gleDouble(dzdTheta), arrays.GLdoubleArray(startXform), arrays.GLdoubleArray(dXformdTheta), gleDouble(startTheta), gleDouble(sweepTheta) ) -> None', argNames=('ncp', 'contour', 'cont_normal', 'up', 'startRadius', 'drdTheta', 'startZ', 'dzdTheta', 'startXform', 'dXformdTheta', 'startTheta', 'sweepTheta'), ) # /usr/include/GL/gle.h 156 gleSuperExtrusion = platform.createBaseFunction( 'gleSuperExtrusion', dll=platform.GLE, resultType=None, argTypes=[c_int,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray,c_int,arrays.GLdoubleArray,arrays.GLfloatArray,arrays.GLdoubleArray], doc='gleSuperExtrusion( c_int(ncp), arrays.GLdoubleArray(contour), arrays.GLdoubleArray(cont_normal), arrays.GLdoubleArray(up), c_int(npoints), arrays.GLdoubleArray(point_array), arrays.GLfloatArray(color_array), arrays.GLdoubleArray(xform_array) ) -> None', argNames=('ncp', 'contour', 'cont_normal', 'up', 'npoints', 'point_array', 'color_array', 'xform_array'), ) # /usr/include/GL/gle.h 217 gleTextureMode = platform.createBaseFunction( 'gleTextureMode', dll=platform.GLE, resultType=None, argTypes=[c_int], doc='gleTextureMode( c_int(mode) ) -> None', argNames=('mode',), ) # /usr/include/GL/gle.h 206 gleToroid = platform.createBaseFunction( 'gleToroid', dll=platform.GLE, resultType=None, argTypes=[gleDouble,gleDouble,gleDouble,gleDouble,gleDouble,arrays.GLdoubleArray,arrays.GLdoubleArray,gleDouble,gleDouble], doc='gleToroid( gleDouble(rToroid), gleDouble(startRadius), gleDouble(drdTheta), gleDouble(startZ), gleDouble(dzdTheta), arrays.GLdoubleArray(startXform), arrays.GLdoubleArray(dXformdTheta), gleDouble(startTheta), gleDouble(sweepTheta) ) -> None', argNames=('rToroid', 'startRadius', 'drdTheta', 'startZ', 'dzdTheta', 'startXform', 'dXformdTheta', 'startTheta', 'sweepTheta'), ) # /usr/include/GL/gle.h 146 gleTwistExtrusion = platform.createBaseFunction( 'gleTwistExtrusion', dll=platform.GLE, resultType=None, argTypes=[c_int,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray,c_int,arrays.GLdoubleArray,arrays.GLfloatArray,arrays.GLdoubleArray], doc='gleTwistExtrusion( c_int(ncp), arrays.GLdoubleArray(contour), arrays.GLdoubleArray(cont_normal), arrays.GLdoubleArray(up), c_int(npoints), arrays.GLdoubleArray(point_array), arrays.GLfloatArray(color_array), arrays.GLdoubleArray(twist_array) ) -> None', argNames=('ncp', 'contour', 'cont_normal', 'up', 'npoints', 'point_array', 'color_array', 'twist_array'), ) # /usr/include/GL/gle.h 221 rot_about_axis = platform.createBaseFunction( 'rot_about_axis', dll=platform.GLE, resultType=None, argTypes=[gleDouble,arrays.GLdoubleArray], doc='rot_about_axis( gleDouble(angle), arrays.GLdoubleArray(axis) ) -> None', argNames=('angle', 'axis'), ) # /usr/include/GL/gle.h 220 rot_axis = platform.createBaseFunction( 'rot_axis', dll=platform.GLE, resultType=None, argTypes=[gleDouble,arrays.GLdoubleArray], doc='rot_axis( gleDouble(omega), arrays.GLdoubleArray(axis) ) -> None', argNames=('omega', 'axis'), ) # /usr/include/GL/gle.h 222 rot_omega = platform.createBaseFunction( 'rot_omega', dll=platform.GLE, resultType=None, argTypes=[arrays.GLdoubleArray], doc='rot_omega( arrays.GLdoubleArray(axis) ) -> None', argNames=('axis',), ) # /usr/include/GL/gle.h 223 rot_prince = platform.createBaseFunction( 'rot_prince', dll=platform.GLE, resultType=None, argTypes=[gleDouble,c_char], doc='rot_prince( gleDouble(omega), c_char(axis) ) -> None', argNames=('omega', 'axis'), ) # /usr/include/GL/gle.h 225 urot_about_axis = platform.createBaseFunction( 'urot_about_axis', dll=platform.GLE, resultType=None, argTypes=[arrays.GLdoubleArray,gleDouble,arrays.GLdoubleArray], doc='urot_about_axis( arrays.GLdoubleArray(m), gleDouble(angle), arrays.GLdoubleArray(axis) ) -> None', argNames=('m', 'angle', 'axis'), ) # /usr/include/GL/gle.h 224 urot_axis = platform.createBaseFunction( 'urot_axis', dll=platform.GLE, resultType=None, argTypes=[arrays.GLdoubleArray,gleDouble,arrays.GLdoubleArray], doc='urot_axis( arrays.GLdoubleArray(m), gleDouble(omega), arrays.GLdoubleArray(axis) ) -> None', argNames=('m', 'omega', 'axis'), ) # /usr/include/GL/gle.h 226 urot_omega = platform.createBaseFunction( 'urot_omega', dll=platform.GLE, resultType=None, argTypes=[arrays.GLdoubleArray,arrays.GLdoubleArray], doc='urot_omega( arrays.GLdoubleArray(m), arrays.GLdoubleArray(axis) ) -> None', argNames=('m', 'axis'), ) # /usr/include/GL/gle.h 227 urot_prince = platform.createBaseFunction( 'urot_prince', dll=platform.GLE, resultType=None, argTypes=[arrays.GLdoubleArray,gleDouble,c_char], doc='urot_prince( arrays.GLdoubleArray(m), gleDouble(omega), c_char(axis) ) -> None', argNames=('m', 'omega', 'axis'), ) # /usr/include/GL/gle.h 232 uview_direction = platform.createBaseFunction( 'uview_direction', dll=platform.GLE, resultType=None, argTypes=[arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray], doc='uview_direction( arrays.GLdoubleArray(m), arrays.GLdoubleArray(v21), arrays.GLdoubleArray(up) ) -> None', argNames=('m', 'v21', 'up'), ) # /usr/include/GL/gle.h 237 uviewpoint = platform.createBaseFunction( 'uviewpoint', dll=platform.GLE, resultType=None, argTypes=[arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray], doc='uviewpoint( arrays.GLdoubleArray(m), arrays.GLdoubleArray(v1), arrays.GLdoubleArray(v2), arrays.GLdoubleArray(up) ) -> None', argNames=('m', 'v1', 'v2', 'up'), ) __all__ = [ 'GLE_TEXTURE_ENABLE', 'GLE_TEXTURE_NORMAL_CYL', 'GLE_TEXTURE_NORMAL_FLAT', 'GLE_TEXTURE_NORMAL_MODEL_CYL', 'GLE_TEXTURE_NORMAL_MODEL_FLAT', 'GLE_TEXTURE_NORMAL_MODEL_SPH', 'GLE_TEXTURE_NORMAL_SPH', 'GLE_TEXTURE_STYLE_MASK', 'GLE_TEXTURE_VERTEX_CYL', 'GLE_TEXTURE_VERTEX_FLAT', 'GLE_TEXTURE_VERTEX_MODEL_CYL', 'GLE_TEXTURE_VERTEX_MODEL_FLAT', 'GLE_TEXTURE_VERTEX_MODEL_SPH', 'GLE_TEXTURE_VERTEX_SPH', 'TUBE_CONTOUR_CLOSED', 'TUBE_JN_ANGLE', 'TUBE_JN_CAP', 'TUBE_JN_CUT', 'TUBE_JN_MASK', 'TUBE_JN_RAW', 'TUBE_JN_ROUND', 'TUBE_NORM_EDGE', 'TUBE_NORM_FACET', 'TUBE_NORM_MASK', 'TUBE_NORM_PATH_EDGE', '__GLE_DOUBLE', 'gleAffine', 'gleDouble', 'gleExtrusion', 'gleGetJoinStyle', 'gleGetNumSides', 'gleHelicoid', 'gleLathe', 'glePolyCone', 'glePolyCylinder', 'gleScrew', 'gleSetJoinStyle', 'gleSetNumSides', 'gleSpiral', 'gleSuperExtrusion', 'gleTextureMode', 'gleToroid', 'gleTwistExtrusion', 'rot_about_axis', 'rot_axis', 'rot_omega', 'rot_prince', 'urot_about_axis', 'urot_axis', 'urot_omega', 'urot_prince', 'uview_direction', 'uviewpoint' ] PyOpenGL-3.0.2/OpenGL/raw/GLE/constants.py0000644000175000001440000000477412025001653021035 0ustar mcfletchusers00000000000000"""Constants for OpenGL.GLE Automatically generated by the generateraw script, do not edit! """ from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid GLE_TEXTURE_ENABLE = Constant( 'GLE_TEXTURE_ENABLE', 65536) GLE_TEXTURE_NORMAL_CYL = Constant( 'GLE_TEXTURE_NORMAL_CYL', 4) GLE_TEXTURE_NORMAL_FLAT = Constant( 'GLE_TEXTURE_NORMAL_FLAT', 2) GLE_TEXTURE_NORMAL_MODEL_CYL = Constant( 'GLE_TEXTURE_NORMAL_MODEL_CYL', 10) GLE_TEXTURE_NORMAL_MODEL_FLAT = Constant( 'GLE_TEXTURE_NORMAL_MODEL_FLAT', 8) GLE_TEXTURE_NORMAL_MODEL_SPH = Constant( 'GLE_TEXTURE_NORMAL_MODEL_SPH', 12) GLE_TEXTURE_NORMAL_SPH = Constant( 'GLE_TEXTURE_NORMAL_SPH', 6) GLE_TEXTURE_STYLE_MASK = Constant( 'GLE_TEXTURE_STYLE_MASK', 255) GLE_TEXTURE_VERTEX_CYL = Constant( 'GLE_TEXTURE_VERTEX_CYL', 3) GLE_TEXTURE_VERTEX_FLAT = Constant( 'GLE_TEXTURE_VERTEX_FLAT', 1) GLE_TEXTURE_VERTEX_MODEL_CYL = Constant( 'GLE_TEXTURE_VERTEX_MODEL_CYL', 9) GLE_TEXTURE_VERTEX_MODEL_FLAT = Constant( 'GLE_TEXTURE_VERTEX_MODEL_FLAT', 7) GLE_TEXTURE_VERTEX_MODEL_SPH = Constant( 'GLE_TEXTURE_VERTEX_MODEL_SPH', 11) GLE_TEXTURE_VERTEX_SPH = Constant( 'GLE_TEXTURE_VERTEX_SPH', 5) TUBE_CONTOUR_CLOSED = Constant( 'TUBE_CONTOUR_CLOSED', 4096) TUBE_JN_ANGLE = Constant( 'TUBE_JN_ANGLE', 2) TUBE_JN_CAP = Constant( 'TUBE_JN_CAP', 16) TUBE_JN_CUT = Constant( 'TUBE_JN_CUT', 3) TUBE_JN_MASK = Constant( 'TUBE_JN_MASK', 15) TUBE_JN_RAW = Constant( 'TUBE_JN_RAW', 1) TUBE_JN_ROUND = Constant( 'TUBE_JN_ROUND', 4) TUBE_NORM_EDGE = Constant( 'TUBE_NORM_EDGE', 512) TUBE_NORM_FACET = Constant( 'TUBE_NORM_FACET', 256) TUBE_NORM_MASK = Constant( 'TUBE_NORM_MASK', 3840) TUBE_NORM_PATH_EDGE = Constant( 'TUBE_NORM_PATH_EDGE', 1024) __GLE_DOUBLE = Constant( '__GLE_DOUBLE', 1) __all__ = [ 'GLE_TEXTURE_ENABLE', 'GLE_TEXTURE_NORMAL_CYL', 'GLE_TEXTURE_NORMAL_FLAT', 'GLE_TEXTURE_NORMAL_MODEL_CYL', 'GLE_TEXTURE_NORMAL_MODEL_FLAT', 'GLE_TEXTURE_NORMAL_MODEL_SPH', 'GLE_TEXTURE_NORMAL_SPH', 'GLE_TEXTURE_STYLE_MASK', 'GLE_TEXTURE_VERTEX_CYL', 'GLE_TEXTURE_VERTEX_FLAT', 'GLE_TEXTURE_VERTEX_MODEL_CYL', 'GLE_TEXTURE_VERTEX_MODEL_FLAT', 'GLE_TEXTURE_VERTEX_MODEL_SPH', 'GLE_TEXTURE_VERTEX_SPH', 'TUBE_CONTOUR_CLOSED', 'TUBE_JN_ANGLE', 'TUBE_JN_CAP', 'TUBE_JN_CUT', 'TUBE_JN_MASK', 'TUBE_JN_RAW', 'TUBE_JN_ROUND', 'TUBE_NORM_EDGE', 'TUBE_NORM_FACET', 'TUBE_NORM_MASK', 'TUBE_NORM_PATH_EDGE', '__GLE_DOUBLE' ] PyOpenGL-3.0.2/OpenGL/raw/WGL.py0000644000175000001440000000022312025001653017024 0ustar mcfletchusers00000000000000"""Collects the various WGL extensions together""" from OpenGL.raw._WGL import * from OpenGL.raw._WGL_ARB import * from OpenGL.raw._WGL_NV import *PyOpenGL-3.0.2/OpenGL/raw/_WGL_ARB.py0000644000175000001440000017574212025001653017672 0ustar mcfletchusers00000000000000# BEGIN GENERATED CONTENT (do not edit below this line) # This content is generated by gengl.py. # Wrapper for http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h from OpenGL import platform, constant from ctypes import * c_void = None # H (/home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:9) # H (/home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:9) GLAPI = constant.Constant( 'GLAPI', 0 ) WGL_WGLEXT_VERSION = constant.Constant( 'WGL_WGLEXT_VERSION', 6 ) # ARB_buffer_region (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:61) WGL_FRONT_COLOR_BUFFER_BIT_ARB = constant.Constant( 'WGL_FRONT_COLOR_BUFFER_BIT_ARB', 1 ) WGL_BACK_COLOR_BUFFER_BIT_ARB = constant.Constant( 'WGL_BACK_COLOR_BUFFER_BIT_ARB', 2 ) WGL_DEPTH_BUFFER_BIT_ARB = constant.Constant( 'WGL_DEPTH_BUFFER_BIT_ARB', 4 ) WGL_STENCIL_BUFFER_BIT_ARB = constant.Constant( 'WGL_STENCIL_BUFFER_BIT_ARB', 8 ) # ARB_multisample (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:68) WGL_SAMPLE_BUFFERS_ARB = constant.Constant( 'WGL_SAMPLE_BUFFERS_ARB', 8257 ) WGL_SAMPLES_ARB = constant.Constant( 'WGL_SAMPLES_ARB', 8258 ) # ARB_extensions_string (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:73) # ARB_pixel_format (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:76) WGL_NUMBER_PIXEL_FORMATS_ARB = constant.Constant( 'WGL_NUMBER_PIXEL_FORMATS_ARB', 8192 ) WGL_DRAW_TO_WINDOW_ARB = constant.Constant( 'WGL_DRAW_TO_WINDOW_ARB', 8193 ) WGL_DRAW_TO_BITMAP_ARB = constant.Constant( 'WGL_DRAW_TO_BITMAP_ARB', 8194 ) WGL_ACCELERATION_ARB = constant.Constant( 'WGL_ACCELERATION_ARB', 8195 ) WGL_NEED_PALETTE_ARB = constant.Constant( 'WGL_NEED_PALETTE_ARB', 8196 ) WGL_NEED_SYSTEM_PALETTE_ARB = constant.Constant( 'WGL_NEED_SYSTEM_PALETTE_ARB', 8197 ) WGL_SWAP_LAYER_BUFFERS_ARB = constant.Constant( 'WGL_SWAP_LAYER_BUFFERS_ARB', 8198 ) WGL_SWAP_METHOD_ARB = constant.Constant( 'WGL_SWAP_METHOD_ARB', 8199 ) WGL_NUMBER_OVERLAYS_ARB = constant.Constant( 'WGL_NUMBER_OVERLAYS_ARB', 8200 ) WGL_NUMBER_UNDERLAYS_ARB = constant.Constant( 'WGL_NUMBER_UNDERLAYS_ARB', 8201 ) WGL_TRANSPARENT_ARB = constant.Constant( 'WGL_TRANSPARENT_ARB', 8202 ) WGL_TRANSPARENT_RED_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_RED_VALUE_ARB', 8247 ) WGL_TRANSPARENT_GREEN_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_GREEN_VALUE_ARB', 8248 ) WGL_TRANSPARENT_BLUE_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_BLUE_VALUE_ARB', 8249 ) WGL_TRANSPARENT_ALPHA_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_ALPHA_VALUE_ARB', 8250 ) WGL_TRANSPARENT_INDEX_VALUE_ARB = constant.Constant( 'WGL_TRANSPARENT_INDEX_VALUE_ARB', 8251 ) WGL_SHARE_DEPTH_ARB = constant.Constant( 'WGL_SHARE_DEPTH_ARB', 8204 ) WGL_SHARE_STENCIL_ARB = constant.Constant( 'WGL_SHARE_STENCIL_ARB', 8205 ) WGL_SHARE_ACCUM_ARB = constant.Constant( 'WGL_SHARE_ACCUM_ARB', 8206 ) WGL_SUPPORT_GDI_ARB = constant.Constant( 'WGL_SUPPORT_GDI_ARB', 8207 ) WGL_SUPPORT_OPENGL_ARB = constant.Constant( 'WGL_SUPPORT_OPENGL_ARB', 8208 ) WGL_DOUBLE_BUFFER_ARB = constant.Constant( 'WGL_DOUBLE_BUFFER_ARB', 8209 ) WGL_STEREO_ARB = constant.Constant( 'WGL_STEREO_ARB', 8210 ) WGL_PIXEL_TYPE_ARB = constant.Constant( 'WGL_PIXEL_TYPE_ARB', 8211 ) WGL_COLOR_BITS_ARB = constant.Constant( 'WGL_COLOR_BITS_ARB', 8212 ) WGL_RED_BITS_ARB = constant.Constant( 'WGL_RED_BITS_ARB', 8213 ) WGL_RED_SHIFT_ARB = constant.Constant( 'WGL_RED_SHIFT_ARB', 8214 ) WGL_GREEN_BITS_ARB = constant.Constant( 'WGL_GREEN_BITS_ARB', 8215 ) WGL_GREEN_SHIFT_ARB = constant.Constant( 'WGL_GREEN_SHIFT_ARB', 8216 ) WGL_BLUE_BITS_ARB = constant.Constant( 'WGL_BLUE_BITS_ARB', 8217 ) WGL_BLUE_SHIFT_ARB = constant.Constant( 'WGL_BLUE_SHIFT_ARB', 8218 ) WGL_ALPHA_BITS_ARB = constant.Constant( 'WGL_ALPHA_BITS_ARB', 8219 ) WGL_ALPHA_SHIFT_ARB = constant.Constant( 'WGL_ALPHA_SHIFT_ARB', 8220 ) WGL_ACCUM_BITS_ARB = constant.Constant( 'WGL_ACCUM_BITS_ARB', 8221 ) WGL_ACCUM_RED_BITS_ARB = constant.Constant( 'WGL_ACCUM_RED_BITS_ARB', 8222 ) WGL_ACCUM_GREEN_BITS_ARB = constant.Constant( 'WGL_ACCUM_GREEN_BITS_ARB', 8223 ) WGL_ACCUM_BLUE_BITS_ARB = constant.Constant( 'WGL_ACCUM_BLUE_BITS_ARB', 8224 ) WGL_ACCUM_ALPHA_BITS_ARB = constant.Constant( 'WGL_ACCUM_ALPHA_BITS_ARB', 8225 ) WGL_DEPTH_BITS_ARB = constant.Constant( 'WGL_DEPTH_BITS_ARB', 8226 ) WGL_STENCIL_BITS_ARB = constant.Constant( 'WGL_STENCIL_BITS_ARB', 8227 ) WGL_AUX_BUFFERS_ARB = constant.Constant( 'WGL_AUX_BUFFERS_ARB', 8228 ) WGL_NO_ACCELERATION_ARB = constant.Constant( 'WGL_NO_ACCELERATION_ARB', 8229 ) WGL_GENERIC_ACCELERATION_ARB = constant.Constant( 'WGL_GENERIC_ACCELERATION_ARB', 8230 ) WGL_FULL_ACCELERATION_ARB = constant.Constant( 'WGL_FULL_ACCELERATION_ARB', 8231 ) WGL_SWAP_EXCHANGE_ARB = constant.Constant( 'WGL_SWAP_EXCHANGE_ARB', 8232 ) WGL_SWAP_COPY_ARB = constant.Constant( 'WGL_SWAP_COPY_ARB', 8233 ) WGL_SWAP_UNDEFINED_ARB = constant.Constant( 'WGL_SWAP_UNDEFINED_ARB', 8234 ) WGL_TYPE_RGBA_ARB = constant.Constant( 'WGL_TYPE_RGBA_ARB', 8235 ) WGL_TYPE_COLORINDEX_ARB = constant.Constant( 'WGL_TYPE_COLORINDEX_ARB', 8236 ) # ARB_make_current_read (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:128) ERROR_INVALID_PIXEL_TYPE_ARB = constant.Constant( 'ERROR_INVALID_PIXEL_TYPE_ARB', 8259 ) ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB = constant.Constant( 'ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB', 8276 ) # ARB_pbuffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:133) WGL_DRAW_TO_PBUFFER_ARB = constant.Constant( 'WGL_DRAW_TO_PBUFFER_ARB', 8237 ) WGL_MAX_PBUFFER_PIXELS_ARB = constant.Constant( 'WGL_MAX_PBUFFER_PIXELS_ARB', 8238 ) WGL_MAX_PBUFFER_WIDTH_ARB = constant.Constant( 'WGL_MAX_PBUFFER_WIDTH_ARB', 8239 ) WGL_MAX_PBUFFER_HEIGHT_ARB = constant.Constant( 'WGL_MAX_PBUFFER_HEIGHT_ARB', 8240 ) WGL_PBUFFER_LARGEST_ARB = constant.Constant( 'WGL_PBUFFER_LARGEST_ARB', 8243 ) WGL_PBUFFER_WIDTH_ARB = constant.Constant( 'WGL_PBUFFER_WIDTH_ARB', 8244 ) WGL_PBUFFER_HEIGHT_ARB = constant.Constant( 'WGL_PBUFFER_HEIGHT_ARB', 8245 ) WGL_PBUFFER_LOST_ARB = constant.Constant( 'WGL_PBUFFER_LOST_ARB', 8246 ) # ARB_render_texture (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:144) WGL_BIND_TO_TEXTURE_RGB_ARB = constant.Constant( 'WGL_BIND_TO_TEXTURE_RGB_ARB', 8304 ) WGL_BIND_TO_TEXTURE_RGBA_ARB = constant.Constant( 'WGL_BIND_TO_TEXTURE_RGBA_ARB', 8305 ) WGL_TEXTURE_FORMAT_ARB = constant.Constant( 'WGL_TEXTURE_FORMAT_ARB', 8306 ) WGL_TEXTURE_TARGET_ARB = constant.Constant( 'WGL_TEXTURE_TARGET_ARB', 8307 ) WGL_MIPMAP_TEXTURE_ARB = constant.Constant( 'WGL_MIPMAP_TEXTURE_ARB', 8308 ) WGL_TEXTURE_RGB_ARB = constant.Constant( 'WGL_TEXTURE_RGB_ARB', 8309 ) WGL_TEXTURE_RGBA_ARB = constant.Constant( 'WGL_TEXTURE_RGBA_ARB', 8310 ) WGL_NO_TEXTURE_ARB = constant.Constant( 'WGL_NO_TEXTURE_ARB', 8311 ) WGL_TEXTURE_CUBE_MAP_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_ARB', 8312 ) WGL_TEXTURE_1D_ARB = constant.Constant( 'WGL_TEXTURE_1D_ARB', 8313 ) WGL_TEXTURE_2D_ARB = constant.Constant( 'WGL_TEXTURE_2D_ARB', 8314 ) WGL_MIPMAP_LEVEL_ARB = constant.Constant( 'WGL_MIPMAP_LEVEL_ARB', 8315 ) WGL_CUBE_MAP_FACE_ARB = constant.Constant( 'WGL_CUBE_MAP_FACE_ARB', 8316 ) WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB', 8317 ) WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB', 8318 ) WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB', 8319 ) WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB', 8320 ) WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB', 8321 ) WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = constant.Constant( 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB', 8322 ) WGL_FRONT_LEFT_ARB = constant.Constant( 'WGL_FRONT_LEFT_ARB', 8323 ) WGL_FRONT_RIGHT_ARB = constant.Constant( 'WGL_FRONT_RIGHT_ARB', 8324 ) WGL_BACK_LEFT_ARB = constant.Constant( 'WGL_BACK_LEFT_ARB', 8325 ) WGL_BACK_RIGHT_ARB = constant.Constant( 'WGL_BACK_RIGHT_ARB', 8326 ) WGL_AUX0_ARB = constant.Constant( 'WGL_AUX0_ARB', 8327 ) WGL_AUX1_ARB = constant.Constant( 'WGL_AUX1_ARB', 8328 ) WGL_AUX2_ARB = constant.Constant( 'WGL_AUX2_ARB', 8329 ) WGL_AUX3_ARB = constant.Constant( 'WGL_AUX3_ARB', 8330 ) WGL_AUX4_ARB = constant.Constant( 'WGL_AUX4_ARB', 8331 ) WGL_AUX5_ARB = constant.Constant( 'WGL_AUX5_ARB', 8332 ) WGL_AUX6_ARB = constant.Constant( 'WGL_AUX6_ARB', 8333 ) WGL_AUX7_ARB = constant.Constant( 'WGL_AUX7_ARB', 8334 ) WGL_AUX8_ARB = constant.Constant( 'WGL_AUX8_ARB', 8335 ) WGL_AUX9_ARB = constant.Constant( 'WGL_AUX9_ARB', 8336 ) # ARB_pixel_format_float (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:180) WGL_TYPE_RGBA_FLOAT_ARB = constant.Constant( 'WGL_TYPE_RGBA_FLOAT_ARB', 8608 ) # EXT_make_current_read (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:184) ERROR_INVALID_PIXEL_TYPE_EXT = constant.Constant( 'ERROR_INVALID_PIXEL_TYPE_EXT', 8259 ) # EXT_pixel_format (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:188) WGL_NUMBER_PIXEL_FORMATS_EXT = constant.Constant( 'WGL_NUMBER_PIXEL_FORMATS_EXT', 8192 ) WGL_DRAW_TO_WINDOW_EXT = constant.Constant( 'WGL_DRAW_TO_WINDOW_EXT', 8193 ) WGL_DRAW_TO_BITMAP_EXT = constant.Constant( 'WGL_DRAW_TO_BITMAP_EXT', 8194 ) WGL_ACCELERATION_EXT = constant.Constant( 'WGL_ACCELERATION_EXT', 8195 ) WGL_NEED_PALETTE_EXT = constant.Constant( 'WGL_NEED_PALETTE_EXT', 8196 ) WGL_NEED_SYSTEM_PALETTE_EXT = constant.Constant( 'WGL_NEED_SYSTEM_PALETTE_EXT', 8197 ) WGL_SWAP_LAYER_BUFFERS_EXT = constant.Constant( 'WGL_SWAP_LAYER_BUFFERS_EXT', 8198 ) WGL_SWAP_METHOD_EXT = constant.Constant( 'WGL_SWAP_METHOD_EXT', 8199 ) WGL_NUMBER_OVERLAYS_EXT = constant.Constant( 'WGL_NUMBER_OVERLAYS_EXT', 8200 ) WGL_NUMBER_UNDERLAYS_EXT = constant.Constant( 'WGL_NUMBER_UNDERLAYS_EXT', 8201 ) WGL_TRANSPARENT_EXT = constant.Constant( 'WGL_TRANSPARENT_EXT', 8202 ) WGL_TRANSPARENT_VALUE_EXT = constant.Constant( 'WGL_TRANSPARENT_VALUE_EXT', 8203 ) WGL_SHARE_DEPTH_EXT = constant.Constant( 'WGL_SHARE_DEPTH_EXT', 8204 ) WGL_SHARE_STENCIL_EXT = constant.Constant( 'WGL_SHARE_STENCIL_EXT', 8205 ) WGL_SHARE_ACCUM_EXT = constant.Constant( 'WGL_SHARE_ACCUM_EXT', 8206 ) WGL_SUPPORT_GDI_EXT = constant.Constant( 'WGL_SUPPORT_GDI_EXT', 8207 ) WGL_SUPPORT_OPENGL_EXT = constant.Constant( 'WGL_SUPPORT_OPENGL_EXT', 8208 ) WGL_DOUBLE_BUFFER_EXT = constant.Constant( 'WGL_DOUBLE_BUFFER_EXT', 8209 ) WGL_STEREO_EXT = constant.Constant( 'WGL_STEREO_EXT', 8210 ) WGL_PIXEL_TYPE_EXT = constant.Constant( 'WGL_PIXEL_TYPE_EXT', 8211 ) WGL_COLOR_BITS_EXT = constant.Constant( 'WGL_COLOR_BITS_EXT', 8212 ) WGL_RED_BITS_EXT = constant.Constant( 'WGL_RED_BITS_EXT', 8213 ) WGL_RED_SHIFT_EXT = constant.Constant( 'WGL_RED_SHIFT_EXT', 8214 ) WGL_GREEN_BITS_EXT = constant.Constant( 'WGL_GREEN_BITS_EXT', 8215 ) WGL_GREEN_SHIFT_EXT = constant.Constant( 'WGL_GREEN_SHIFT_EXT', 8216 ) WGL_BLUE_BITS_EXT = constant.Constant( 'WGL_BLUE_BITS_EXT', 8217 ) WGL_BLUE_SHIFT_EXT = constant.Constant( 'WGL_BLUE_SHIFT_EXT', 8218 ) WGL_ALPHA_BITS_EXT = constant.Constant( 'WGL_ALPHA_BITS_EXT', 8219 ) WGL_ALPHA_SHIFT_EXT = constant.Constant( 'WGL_ALPHA_SHIFT_EXT', 8220 ) WGL_ACCUM_BITS_EXT = constant.Constant( 'WGL_ACCUM_BITS_EXT', 8221 ) WGL_ACCUM_RED_BITS_EXT = constant.Constant( 'WGL_ACCUM_RED_BITS_EXT', 8222 ) WGL_ACCUM_GREEN_BITS_EXT = constant.Constant( 'WGL_ACCUM_GREEN_BITS_EXT', 8223 ) WGL_ACCUM_BLUE_BITS_EXT = constant.Constant( 'WGL_ACCUM_BLUE_BITS_EXT', 8224 ) WGL_ACCUM_ALPHA_BITS_EXT = constant.Constant( 'WGL_ACCUM_ALPHA_BITS_EXT', 8225 ) WGL_DEPTH_BITS_EXT = constant.Constant( 'WGL_DEPTH_BITS_EXT', 8226 ) WGL_STENCIL_BITS_EXT = constant.Constant( 'WGL_STENCIL_BITS_EXT', 8227 ) WGL_AUX_BUFFERS_EXT = constant.Constant( 'WGL_AUX_BUFFERS_EXT', 8228 ) WGL_NO_ACCELERATION_EXT = constant.Constant( 'WGL_NO_ACCELERATION_EXT', 8229 ) WGL_GENERIC_ACCELERATION_EXT = constant.Constant( 'WGL_GENERIC_ACCELERATION_EXT', 8230 ) WGL_FULL_ACCELERATION_EXT = constant.Constant( 'WGL_FULL_ACCELERATION_EXT', 8231 ) WGL_SWAP_EXCHANGE_EXT = constant.Constant( 'WGL_SWAP_EXCHANGE_EXT', 8232 ) WGL_SWAP_COPY_EXT = constant.Constant( 'WGL_SWAP_COPY_EXT', 8233 ) WGL_SWAP_UNDEFINED_EXT = constant.Constant( 'WGL_SWAP_UNDEFINED_EXT', 8234 ) WGL_TYPE_RGBA_EXT = constant.Constant( 'WGL_TYPE_RGBA_EXT', 8235 ) WGL_TYPE_COLORINDEX_EXT = constant.Constant( 'WGL_TYPE_COLORINDEX_EXT', 8236 ) # EXT_pbuffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:236) WGL_DRAW_TO_PBUFFER_EXT = constant.Constant( 'WGL_DRAW_TO_PBUFFER_EXT', 8237 ) WGL_MAX_PBUFFER_PIXELS_EXT = constant.Constant( 'WGL_MAX_PBUFFER_PIXELS_EXT', 8238 ) WGL_MAX_PBUFFER_WIDTH_EXT = constant.Constant( 'WGL_MAX_PBUFFER_WIDTH_EXT', 8239 ) WGL_MAX_PBUFFER_HEIGHT_EXT = constant.Constant( 'WGL_MAX_PBUFFER_HEIGHT_EXT', 8240 ) WGL_OPTIMAL_PBUFFER_WIDTH_EXT = constant.Constant( 'WGL_OPTIMAL_PBUFFER_WIDTH_EXT', 8241 ) WGL_OPTIMAL_PBUFFER_HEIGHT_EXT = constant.Constant( 'WGL_OPTIMAL_PBUFFER_HEIGHT_EXT', 8242 ) WGL_PBUFFER_LARGEST_EXT = constant.Constant( 'WGL_PBUFFER_LARGEST_EXT', 8243 ) WGL_PBUFFER_WIDTH_EXT = constant.Constant( 'WGL_PBUFFER_WIDTH_EXT', 8244 ) WGL_PBUFFER_HEIGHT_EXT = constant.Constant( 'WGL_PBUFFER_HEIGHT_EXT', 8245 ) # EXT_depth_float (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:248) WGL_DEPTH_FLOAT_EXT = constant.Constant( 'WGL_DEPTH_FLOAT_EXT', 8256 ) # 3DFX_multisample (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:252) WGL_SAMPLE_BUFFERS_3DFX = constant.Constant( 'WGL_SAMPLE_BUFFERS_3DFX', 8288 ) WGL_SAMPLES_3DFX = constant.Constant( 'WGL_SAMPLES_3DFX', 8289 ) # EXT_multisample (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:257) WGL_SAMPLE_BUFFERS_EXT = constant.Constant( 'WGL_SAMPLE_BUFFERS_EXT', 8257 ) WGL_SAMPLES_EXT = constant.Constant( 'WGL_SAMPLES_EXT', 8258 ) # I3D_digital_video_control (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:262) WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D = constant.Constant( 'WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D', 8272 ) WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D = constant.Constant( 'WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D', 8273 ) WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D = constant.Constant( 'WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D', 8274 ) WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D = constant.Constant( 'WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D', 8275 ) # I3D_gamma (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:269) WGL_GAMMA_TABLE_SIZE_I3D = constant.Constant( 'WGL_GAMMA_TABLE_SIZE_I3D', 8270 ) WGL_GAMMA_EXCLUDE_DESKTOP_I3D = constant.Constant( 'WGL_GAMMA_EXCLUDE_DESKTOP_I3D', 8271 ) # I3D_genlock (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:274) WGL_GENLOCK_SOURCE_MULTIVIEW_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_MULTIVIEW_I3D', 8260 ) WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D', 8261 ) WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D', 8262 ) WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D', 8263 ) WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D', 8264 ) WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D', 8265 ) WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D', 8266 ) WGL_GENLOCK_SOURCE_EDGE_RISING_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EDGE_RISING_I3D', 8267 ) WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D = constant.Constant( 'WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D', 8268 ) # I3D_image_buffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:286) WGL_IMAGE_BUFFER_MIN_ACCESS_I3D = constant.Constant( 'WGL_IMAGE_BUFFER_MIN_ACCESS_I3D', 1 ) WGL_IMAGE_BUFFER_LOCK_I3D = constant.Constant( 'WGL_IMAGE_BUFFER_LOCK_I3D', 2 ) # I3D_swap_frame_lock (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:291) # NV_render_depth_texture (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:294) WGL_BIND_TO_TEXTURE_DEPTH_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_DEPTH_NV', 8355 ) WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV', 8356 ) WGL_DEPTH_TEXTURE_FORMAT_NV = constant.Constant( 'WGL_DEPTH_TEXTURE_FORMAT_NV', 8357 ) WGL_TEXTURE_DEPTH_COMPONENT_NV = constant.Constant( 'WGL_TEXTURE_DEPTH_COMPONENT_NV', 8358 ) WGL_DEPTH_COMPONENT_NV = constant.Constant( 'WGL_DEPTH_COMPONENT_NV', 8359 ) # NV_render_texture_rectangle (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:302) WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV', 8352 ) WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV', 8353 ) WGL_TEXTURE_RECTANGLE_NV = constant.Constant( 'WGL_TEXTURE_RECTANGLE_NV', 8354 ) # ATI_pixel_format_float (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:308) WGL_TYPE_RGBA_FLOAT_ATI = constant.Constant( 'WGL_TYPE_RGBA_FLOAT_ATI', 8608 ) # NV_float_buffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:312) WGL_FLOAT_COMPONENTS_NV = constant.Constant( 'WGL_FLOAT_COMPONENTS_NV', 8368 ) WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV', 8369 ) WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV', 8370 ) WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV', 8371 ) WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV = constant.Constant( 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV', 8372 ) WGL_TEXTURE_FLOAT_R_NV = constant.Constant( 'WGL_TEXTURE_FLOAT_R_NV', 8373 ) WGL_TEXTURE_FLOAT_RG_NV = constant.Constant( 'WGL_TEXTURE_FLOAT_RG_NV', 8374 ) WGL_TEXTURE_FLOAT_RGB_NV = constant.Constant( 'WGL_TEXTURE_FLOAT_RGB_NV', 8375 ) WGL_TEXTURE_FLOAT_RGBA_NV = constant.Constant( 'WGL_TEXTURE_FLOAT_RGBA_NV', 8376 ) # ARB_pbuffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:327) HANDLE = POINTER(None) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:60 HPBUFFERARB = HANDLE # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:328 # EXT_pbuffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:330) HPBUFFEREXT = HANDLE # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:331 # ARB_buffer_region (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:334) WGL_ARB_buffer_region = constant.Constant( 'WGL_ARB_buffer_region', 1 ) HDC = HANDLE # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:63 UINT = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:52 wglCreateBufferRegionARB = platform.createBaseFunction( 'wglCreateBufferRegionARB', dll=platform.GL, resultType=HANDLE, argTypes=[HDC, c_int, UINT], doc='wglCreateBufferRegionARB( HDC(None), c_int(None), UINT(None) ) -> HANDLE', argNames=['None', 'None', 'None'], ) VOID = None # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:47 wglDeleteBufferRegionARB = platform.createBaseFunction( 'wglDeleteBufferRegionARB', dll=platform.GL, resultType=VOID, argTypes=[HANDLE], doc='wglDeleteBufferRegionARB( HANDLE(None) ) -> VOID', argNames=['None'], ) BOOL = c_long # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:54 wglSaveBufferRegionARB = platform.createBaseFunction( 'wglSaveBufferRegionARB', dll=platform.GL, resultType=BOOL, argTypes=[HANDLE, c_int, c_int, c_int, c_int], doc='wglSaveBufferRegionARB( HANDLE(None), c_int(None), c_int(None), c_int(None), c_int(None) ) -> BOOL', argNames=['None', 'None', 'None', 'None', 'None'], ) wglRestoreBufferRegionARB = platform.createBaseFunction( 'wglRestoreBufferRegionARB', dll=platform.GL, resultType=BOOL, argTypes=[HANDLE, c_int, c_int, c_int, c_int, c_int, c_int], doc='wglRestoreBufferRegionARB( HANDLE(None), c_int(None), c_int(None), c_int(None), c_int(None), c_int(None), c_int(None) ) -> BOOL', argNames=['None', 'None', 'None', 'None', 'None', 'None', 'None'], ) PFNWGLCREATEBUFFERREGIONARBPROC = CFUNCTYPE(HANDLE, HDC, c_int, UINT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:342 PFNWGLDELETEBUFFERREGIONARBPROC = CFUNCTYPE(VOID, HANDLE) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:343 PFNWGLSAVEBUFFERREGIONARBPROC = CFUNCTYPE(BOOL, HANDLE, c_int, c_int, c_int, c_int) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:344 PFNWGLRESTOREBUFFERREGIONARBPROC = CFUNCTYPE(BOOL, HANDLE, c_int, c_int, c_int, c_int, c_int, c_int) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:345 # ARB_multisample (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:348) WGL_ARB_multisample = constant.Constant( 'WGL_ARB_multisample', 1 ) # ARB_extensions_string (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:352) WGL_ARB_extensions_string = constant.Constant( 'WGL_ARB_extensions_string', 1 ) wglGetExtensionsStringARB = platform.createBaseFunction( 'wglGetExtensionsStringARB', dll=platform.GL, resultType=c_char_p, argTypes=[HDC], doc='wglGetExtensionsStringARB( HDC(None) ) -> c_char_p', argNames=['None'], ) PFNWGLGETEXTENSIONSSTRINGARBPROC = CFUNCTYPE(c_char_p, HDC) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:357 # ARB_pixel_format (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:360) WGL_ARB_pixel_format = constant.Constant( 'WGL_ARB_pixel_format', 1 ) wglGetPixelFormatAttribivARB = platform.createBaseFunction( 'wglGetPixelFormatAttribivARB', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(c_int)], doc='wglGetPixelFormatAttribivARB( HDC(None), c_int(None), c_int(None), UINT(None), POINTER(c_int)(), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', ''], ) FLOAT = c_float # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:57 wglGetPixelFormatAttribfvARB = platform.createBaseFunction( 'wglGetPixelFormatAttribfvARB', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(FLOAT)], doc='wglGetPixelFormatAttribfvARB( HDC(None), c_int(None), c_int(None), UINT(None), POINTER(c_int)(), POINTER(FLOAT)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', ''], ) wglChoosePixelFormatARB = platform.createBaseFunction( 'wglChoosePixelFormatARB', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(c_int), POINTER(FLOAT), UINT, POINTER(c_int), POINTER(UINT)], doc='wglChoosePixelFormatARB( HDC(None), POINTER(c_int)(), POINTER(FLOAT)(), UINT(None), POINTER(c_int)(), POINTER(UINT)() ) -> BOOL', argNames=['None', '', '', 'None', '', ''], ) PFNWGLGETPIXELFORMATATTRIBIVARBPROC = CFUNCTYPE(BOOL, HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:367 PFNWGLGETPIXELFORMATATTRIBFVARBPROC = CFUNCTYPE(BOOL, HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(FLOAT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:368 PFNWGLCHOOSEPIXELFORMATARBPROC = CFUNCTYPE(BOOL, HDC, POINTER(c_int), POINTER(FLOAT), UINT, POINTER(c_int), POINTER(UINT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:369 # ARB_make_current_read (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:372) WGL_ARB_make_current_read = constant.Constant( 'WGL_ARB_make_current_read', 1 ) HGLRC = HANDLE # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:62 wglMakeContextCurrentARB = platform.createBaseFunction( 'wglMakeContextCurrentARB', dll=platform.GL, resultType=BOOL, argTypes=[HDC, HDC, HGLRC], doc='wglMakeContextCurrentARB( HDC(None), HDC(None), HGLRC(None) ) -> BOOL', argNames=['None', 'None', 'None'], ) wglGetCurrentReadDCARB = platform.createBaseFunction( 'wglGetCurrentReadDCARB', dll=platform.GL, resultType=HDC, argTypes=[], doc='wglGetCurrentReadDCARB( ) -> HDC', argNames=[], ) PFNWGLMAKECONTEXTCURRENTARBPROC = CFUNCTYPE(BOOL, HDC, HDC, HGLRC) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:378 PFNWGLGETCURRENTREADDCARBPROC = CFUNCTYPE(HDC) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:379 # ARB_pbuffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:382) WGL_ARB_pbuffer = constant.Constant( 'WGL_ARB_pbuffer', 1 ) wglCreatePbufferARB = platform.createBaseFunction( 'wglCreatePbufferARB', dll=platform.GL, resultType=HPBUFFERARB, argTypes=[HDC, c_int, c_int, c_int, POINTER(c_int)], doc='wglCreatePbufferARB( HDC(None), c_int(None), c_int(None), c_int(None), POINTER(c_int)() ) -> HPBUFFERARB', argNames=['None', 'None', 'None', 'None', ''], ) wglGetPbufferDCARB = platform.createBaseFunction( 'wglGetPbufferDCARB', dll=platform.GL, resultType=HDC, argTypes=[HPBUFFERARB], doc='wglGetPbufferDCARB( HPBUFFERARB(None) ) -> HDC', argNames=['None'], ) wglReleasePbufferDCARB = platform.createBaseFunction( 'wglReleasePbufferDCARB', dll=platform.GL, resultType=c_int, argTypes=[HPBUFFERARB, HDC], doc='wglReleasePbufferDCARB( HPBUFFERARB(None), HDC(None) ) -> c_int', argNames=['None', 'None'], ) wglDestroyPbufferARB = platform.createBaseFunction( 'wglDestroyPbufferARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB], doc='wglDestroyPbufferARB( HPBUFFERARB(None) ) -> BOOL', argNames=['None'], ) wglQueryPbufferARB = platform.createBaseFunction( 'wglQueryPbufferARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB, c_int, POINTER(c_int)], doc='wglQueryPbufferARB( HPBUFFERARB(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) PFNWGLCREATEPBUFFERARBPROC = CFUNCTYPE(HPBUFFERARB, HDC, c_int, c_int, c_int, POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:391 PFNWGLGETPBUFFERDCARBPROC = CFUNCTYPE(HDC, HPBUFFERARB) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:392 PFNWGLRELEASEPBUFFERDCARBPROC = CFUNCTYPE(c_int, HPBUFFERARB, HDC) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:393 PFNWGLDESTROYPBUFFERARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:394 PFNWGLQUERYPBUFFERARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB, c_int, POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:395 # ARB_render_texture (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:398) WGL_ARB_render_texture = constant.Constant( 'WGL_ARB_render_texture', 1 ) wglBindTexImageARB = platform.createBaseFunction( 'wglBindTexImageARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB, c_int], doc='wglBindTexImageARB( HPBUFFERARB(None), c_int(None) ) -> BOOL', argNames=['None', 'None'], ) wglReleaseTexImageARB = platform.createBaseFunction( 'wglReleaseTexImageARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB, c_int], doc='wglReleaseTexImageARB( HPBUFFERARB(None), c_int(None) ) -> BOOL', argNames=['None', 'None'], ) wglSetPbufferAttribARB = platform.createBaseFunction( 'wglSetPbufferAttribARB', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFERARB, POINTER(c_int)], doc='wglSetPbufferAttribARB( HPBUFFERARB(None), POINTER(c_int)() ) -> BOOL', argNames=['None', ''], ) PFNWGLBINDTEXIMAGEARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB, c_int) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:405 PFNWGLRELEASETEXIMAGEARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB, c_int) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:406 PFNWGLSETPBUFFERATTRIBARBPROC = CFUNCTYPE(BOOL, HPBUFFERARB, POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:407 # ARB_pixel_format_float (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:410) WGL_ARB_pixel_format_float = constant.Constant( 'WGL_ARB_pixel_format_float', 1 ) # EXT_display_color_table (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:414) WGL_EXT_display_color_table = constant.Constant( 'WGL_EXT_display_color_table', 1 ) GLboolean = c_ubyte # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:20 GLushort = c_ushort # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:27 wglCreateDisplayColorTableEXT = platform.createBaseFunction( 'wglCreateDisplayColorTableEXT', dll=platform.GL, resultType=GLboolean, argTypes=[GLushort], doc='wglCreateDisplayColorTableEXT( GLushort(None) ) -> GLboolean', argNames=['None'], ) GLuint = c_uint # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:28 wglLoadDisplayColorTableEXT = platform.createBaseFunction( 'wglLoadDisplayColorTableEXT', dll=platform.GL, resultType=GLboolean, argTypes=[POINTER(GLushort), GLuint], doc='wglLoadDisplayColorTableEXT( POINTER(GLushort)(), GLuint(None) ) -> GLboolean', argNames=['', 'None'], ) wglBindDisplayColorTableEXT = platform.createBaseFunction( 'wglBindDisplayColorTableEXT', dll=platform.GL, resultType=GLboolean, argTypes=[GLushort], doc='wglBindDisplayColorTableEXT( GLushort(None) ) -> GLboolean', argNames=['None'], ) wglDestroyDisplayColorTableEXT = platform.createBaseFunction( 'wglDestroyDisplayColorTableEXT', dll=platform.GL, resultType=VOID, argTypes=[GLushort], doc='wglDestroyDisplayColorTableEXT( GLushort(None) ) -> VOID', argNames=['None'], ) PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC = CFUNCTYPE(GLboolean, GLushort) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:422 PFNWGLLOADDISPLAYCOLORTABLEEXTPROC = CFUNCTYPE(GLboolean, POINTER(GLushort), GLuint) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:423 PFNWGLBINDDISPLAYCOLORTABLEEXTPROC = CFUNCTYPE(GLboolean, GLushort) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:424 PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC = CFUNCTYPE(VOID, GLushort) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:425 # EXT_extensions_string (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:428) WGL_EXT_extensions_string = constant.Constant( 'WGL_EXT_extensions_string', 1 ) wglGetExtensionsStringEXT = platform.createBaseFunction( 'wglGetExtensionsStringEXT', dll=platform.GL, resultType=c_char_p, argTypes=[], doc='wglGetExtensionsStringEXT( ) -> c_char_p', argNames=[], ) PFNWGLGETEXTENSIONSSTRINGEXTPROC = CFUNCTYPE(c_char_p) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:433 # EXT_make_current_read (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:436) WGL_EXT_make_current_read = constant.Constant( 'WGL_EXT_make_current_read', 1 ) wglMakeContextCurrentEXT = platform.createBaseFunction( 'wglMakeContextCurrentEXT', dll=platform.GL, resultType=BOOL, argTypes=[HDC, HDC, HGLRC], doc='wglMakeContextCurrentEXT( HDC(None), HDC(None), HGLRC(None) ) -> BOOL', argNames=['None', 'None', 'None'], ) wglGetCurrentReadDCEXT = platform.createBaseFunction( 'wglGetCurrentReadDCEXT', dll=platform.GL, resultType=HDC, argTypes=[], doc='wglGetCurrentReadDCEXT( ) -> HDC', argNames=[], ) PFNWGLMAKECONTEXTCURRENTEXTPROC = CFUNCTYPE(BOOL, HDC, HDC, HGLRC) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:442 PFNWGLGETCURRENTREADDCEXTPROC = CFUNCTYPE(HDC) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:443 # EXT_pbuffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:446) WGL_EXT_pbuffer = constant.Constant( 'WGL_EXT_pbuffer', 1 ) wglCreatePbufferEXT = platform.createBaseFunction( 'wglCreatePbufferEXT', dll=platform.GL, resultType=HPBUFFEREXT, argTypes=[HDC, c_int, c_int, c_int, POINTER(c_int)], doc='wglCreatePbufferEXT( HDC(None), c_int(None), c_int(None), c_int(None), POINTER(c_int)() ) -> HPBUFFEREXT', argNames=['None', 'None', 'None', 'None', ''], ) wglGetPbufferDCEXT = platform.createBaseFunction( 'wglGetPbufferDCEXT', dll=platform.GL, resultType=HDC, argTypes=[HPBUFFEREXT], doc='wglGetPbufferDCEXT( HPBUFFEREXT(None) ) -> HDC', argNames=['None'], ) wglReleasePbufferDCEXT = platform.createBaseFunction( 'wglReleasePbufferDCEXT', dll=platform.GL, resultType=c_int, argTypes=[HPBUFFEREXT, HDC], doc='wglReleasePbufferDCEXT( HPBUFFEREXT(None), HDC(None) ) -> c_int', argNames=['None', 'None'], ) wglDestroyPbufferEXT = platform.createBaseFunction( 'wglDestroyPbufferEXT', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFEREXT], doc='wglDestroyPbufferEXT( HPBUFFEREXT(None) ) -> BOOL', argNames=['None'], ) wglQueryPbufferEXT = platform.createBaseFunction( 'wglQueryPbufferEXT', dll=platform.GL, resultType=BOOL, argTypes=[HPBUFFEREXT, c_int, POINTER(c_int)], doc='wglQueryPbufferEXT( HPBUFFEREXT(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) PFNWGLCREATEPBUFFEREXTPROC = CFUNCTYPE(HPBUFFEREXT, HDC, c_int, c_int, c_int, POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:455 PFNWGLGETPBUFFERDCEXTPROC = CFUNCTYPE(HDC, HPBUFFEREXT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:456 PFNWGLRELEASEPBUFFERDCEXTPROC = CFUNCTYPE(c_int, HPBUFFEREXT, HDC) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:457 PFNWGLDESTROYPBUFFEREXTPROC = CFUNCTYPE(BOOL, HPBUFFEREXT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:458 PFNWGLQUERYPBUFFEREXTPROC = CFUNCTYPE(BOOL, HPBUFFEREXT, c_int, POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:459 # EXT_pixel_format (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:462) WGL_EXT_pixel_format = constant.Constant( 'WGL_EXT_pixel_format', 1 ) wglGetPixelFormatAttribivEXT = platform.createBaseFunction( 'wglGetPixelFormatAttribivEXT', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(c_int)], doc='wglGetPixelFormatAttribivEXT( HDC(None), c_int(None), c_int(None), UINT(None), POINTER(c_int)(), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', ''], ) wglGetPixelFormatAttribfvEXT = platform.createBaseFunction( 'wglGetPixelFormatAttribfvEXT', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(FLOAT)], doc='wglGetPixelFormatAttribfvEXT( HDC(None), c_int(None), c_int(None), UINT(None), POINTER(c_int)(), POINTER(FLOAT)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', ''], ) wglChoosePixelFormatEXT = platform.createBaseFunction( 'wglChoosePixelFormatEXT', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(c_int), POINTER(FLOAT), UINT, POINTER(c_int), POINTER(UINT)], doc='wglChoosePixelFormatEXT( HDC(None), POINTER(c_int)(), POINTER(FLOAT)(), UINT(None), POINTER(c_int)(), POINTER(UINT)() ) -> BOOL', argNames=['None', '', '', 'None', '', ''], ) PFNWGLGETPIXELFORMATATTRIBIVEXTPROC = CFUNCTYPE(BOOL, HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:469 PFNWGLGETPIXELFORMATATTRIBFVEXTPROC = CFUNCTYPE(BOOL, HDC, c_int, c_int, UINT, POINTER(c_int), POINTER(FLOAT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:470 PFNWGLCHOOSEPIXELFORMATEXTPROC = CFUNCTYPE(BOOL, HDC, POINTER(c_int), POINTER(FLOAT), UINT, POINTER(c_int), POINTER(UINT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:471 # EXT_swap_control (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:474) WGL_EXT_swap_control = constant.Constant( 'WGL_EXT_swap_control', 1 ) wglSwapIntervalEXT = platform.createBaseFunction( 'wglSwapIntervalEXT', dll=platform.GL, resultType=BOOL, argTypes=[c_int], doc='wglSwapIntervalEXT( c_int(None) ) -> BOOL', argNames=['None'], ) wglGetSwapIntervalEXT = platform.createBaseFunction( 'wglGetSwapIntervalEXT', dll=platform.GL, resultType=c_int, argTypes=[], doc='wglGetSwapIntervalEXT( ) -> c_int', argNames=[], ) PFNWGLSWAPINTERVALEXTPROC = CFUNCTYPE(BOOL, c_int) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:480 PFNWGLGETSWAPINTERVALEXTPROC = CFUNCTYPE(c_int) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:481 # EXT_depth_float (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:484) WGL_EXT_depth_float = constant.Constant( 'WGL_EXT_depth_float', 1 ) # NV_vertex_array_range (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:488) WGL_NV_vertex_array_range = constant.Constant( 'WGL_NV_vertex_array_range', 1 ) GLsizei = c_int # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:25 GLfloat = c_float # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:29 wglAllocateMemoryNV = platform.createBaseFunction( 'wglAllocateMemoryNV', dll=platform.GL, resultType=POINTER(c_void), argTypes=[GLsizei, GLfloat, GLfloat, GLfloat], doc='wglAllocateMemoryNV( GLsizei(None), GLfloat(None), GLfloat(None), GLfloat(None) ) -> POINTER(c_void)', argNames=['None', 'None', 'None', 'None'], ) wglFreeMemoryNV = platform.createBaseFunction( 'wglFreeMemoryNV', dll=platform.GL, resultType=None, argTypes=[POINTER(None)], doc='wglFreeMemoryNV( POINTER(None)() ) -> None', argNames=[''], ) PFNWGLALLOCATEMEMORYNVPROC = CFUNCTYPE(POINTER(c_void), GLsizei, GLfloat, GLfloat, GLfloat) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:494 PFNWGLFREEMEMORYNVPROC = CFUNCTYPE(None, POINTER(None)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:495 # 3DFX_multisample (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:498) WGL_3DFX_multisample = constant.Constant( 'WGL_3DFX_multisample', 1 ) # EXT_multisample (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:502) WGL_EXT_multisample = constant.Constant( 'WGL_EXT_multisample', 1 ) # OML_sync_control (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:506) WGL_OML_sync_control = constant.Constant( 'WGL_OML_sync_control', 1 ) INT64 = c_longlong # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:44 wglGetSyncValuesOML = platform.createBaseFunction( 'wglGetSyncValuesOML', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(INT64), POINTER(INT64), POINTER(INT64)], doc='wglGetSyncValuesOML( HDC(None), POINTER(INT64)(), POINTER(INT64)(), POINTER(INT64)() ) -> BOOL', argNames=['None', '', '', ''], ) INT32 = c_int # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:37 wglGetMscRateOML = platform.createBaseFunction( 'wglGetMscRateOML', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(INT32), POINTER(INT32)], doc='wglGetMscRateOML( HDC(None), POINTER(INT32)(), POINTER(INT32)() ) -> BOOL', argNames=['None', '', ''], ) wglSwapBuffersMscOML = platform.createBaseFunction( 'wglSwapBuffersMscOML', dll=platform.GL, resultType=INT64, argTypes=[HDC, INT64, INT64, INT64], doc='wglSwapBuffersMscOML( HDC(None), INT64(None), INT64(None), INT64(None) ) -> INT64', argNames=['None', 'None', 'None', 'None'], ) wglSwapLayerBuffersMscOML = platform.createBaseFunction( 'wglSwapLayerBuffersMscOML', dll=platform.GL, resultType=INT64, argTypes=[HDC, c_int, INT64, INT64, INT64], doc='wglSwapLayerBuffersMscOML( HDC(None), c_int(None), INT64(None), INT64(None), INT64(None) ) -> INT64', argNames=['None', 'None', 'None', 'None', 'None'], ) wglWaitForMscOML = platform.createBaseFunction( 'wglWaitForMscOML', dll=platform.GL, resultType=BOOL, argTypes=[HDC, INT64, INT64, INT64, POINTER(INT64), POINTER(INT64), POINTER(INT64)], doc='wglWaitForMscOML( HDC(None), INT64(None), INT64(None), INT64(None), POINTER(INT64)(), POINTER(INT64)(), POINTER(INT64)() ) -> BOOL', argNames=['None', 'None', 'None', 'None', '', '', ''], ) wglWaitForSbcOML = platform.createBaseFunction( 'wglWaitForSbcOML', dll=platform.GL, resultType=BOOL, argTypes=[HDC, INT64, POINTER(INT64), POINTER(INT64), POINTER(INT64)], doc='wglWaitForSbcOML( HDC(None), INT64(None), POINTER(INT64)(), POINTER(INT64)(), POINTER(INT64)() ) -> BOOL', argNames=['None', 'None', '', '', ''], ) PFNWGLGETSYNCVALUESOMLPROC = CFUNCTYPE(BOOL, HDC, POINTER(INT64), POINTER(INT64), POINTER(INT64)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:516 PFNWGLGETMSCRATEOMLPROC = CFUNCTYPE(BOOL, HDC, POINTER(INT32), POINTER(INT32)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:517 PFNWGLSWAPBUFFERSMSCOMLPROC = CFUNCTYPE(INT64, HDC, INT64, INT64, INT64) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:518 PFNWGLSWAPLAYERBUFFERSMSCOMLPROC = CFUNCTYPE(INT64, HDC, c_int, INT64, INT64, INT64) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:519 PFNWGLWAITFORMSCOMLPROC = CFUNCTYPE(BOOL, HDC, INT64, INT64, INT64, POINTER(INT64), POINTER(INT64), POINTER(INT64)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:520 PFNWGLWAITFORSBCOMLPROC = CFUNCTYPE(BOOL, HDC, INT64, POINTER(INT64), POINTER(INT64), POINTER(INT64)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:521 # I3D_digital_video_control (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:524) WGL_I3D_digital_video_control = constant.Constant( 'WGL_I3D_digital_video_control', 1 ) wglGetDigitalVideoParametersI3D = platform.createBaseFunction( 'wglGetDigitalVideoParametersI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(c_int)], doc='wglGetDigitalVideoParametersI3D( HDC(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) wglSetDigitalVideoParametersI3D = platform.createBaseFunction( 'wglSetDigitalVideoParametersI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(c_int)], doc='wglSetDigitalVideoParametersI3D( HDC(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:530 PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:531 # I3D_gamma (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:534) WGL_I3D_gamma = constant.Constant( 'WGL_I3D_gamma', 1 ) wglGetGammaTableParametersI3D = platform.createBaseFunction( 'wglGetGammaTableParametersI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(c_int)], doc='wglGetGammaTableParametersI3D( HDC(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) wglSetGammaTableParametersI3D = platform.createBaseFunction( 'wglSetGammaTableParametersI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(c_int)], doc='wglSetGammaTableParametersI3D( HDC(None), c_int(None), POINTER(c_int)() ) -> BOOL', argNames=['None', 'None', ''], ) USHORT = c_ushort # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:51 wglGetGammaTableI3D = platform.createBaseFunction( 'wglGetGammaTableI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(USHORT), POINTER(USHORT), POINTER(USHORT)], doc='wglGetGammaTableI3D( HDC(None), c_int(None), POINTER(USHORT)(), POINTER(USHORT)(), POINTER(USHORT)() ) -> BOOL', argNames=['None', 'None', '', '', ''], ) wglSetGammaTableI3D = platform.createBaseFunction( 'wglSetGammaTableI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, c_int, POINTER(USHORT), POINTER(USHORT), POINTER(USHORT)], doc='wglSetGammaTableI3D( HDC(None), c_int(None), POINTER(USHORT)(), POINTER(USHORT)(), POINTER(USHORT)() ) -> BOOL', argNames=['None', 'None', '', '', ''], ) PFNWGLGETGAMMATABLEPARAMETERSI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:542 PFNWGLSETGAMMATABLEPARAMETERSI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(c_int)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:543 PFNWGLGETGAMMATABLEI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(USHORT), POINTER(USHORT), POINTER(USHORT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:544 PFNWGLSETGAMMATABLEI3DPROC = CFUNCTYPE(BOOL, HDC, c_int, POINTER(USHORT), POINTER(USHORT), POINTER(USHORT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:545 # I3D_genlock (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:548) WGL_I3D_genlock = constant.Constant( 'WGL_I3D_genlock', 1 ) wglEnableGenlockI3D = platform.createBaseFunction( 'wglEnableGenlockI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC], doc='wglEnableGenlockI3D( HDC(None) ) -> BOOL', argNames=['None'], ) wglDisableGenlockI3D = platform.createBaseFunction( 'wglDisableGenlockI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC], doc='wglDisableGenlockI3D( HDC(None) ) -> BOOL', argNames=['None'], ) wglIsEnabledGenlockI3D = platform.createBaseFunction( 'wglIsEnabledGenlockI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(BOOL)], doc='wglIsEnabledGenlockI3D( HDC(None), POINTER(BOOL)() ) -> BOOL', argNames=['None', ''], ) wglGenlockSourceI3D = platform.createBaseFunction( 'wglGenlockSourceI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT], doc='wglGenlockSourceI3D( HDC(None), UINT(None) ) -> BOOL', argNames=['None', 'None'], ) wglGetGenlockSourceI3D = platform.createBaseFunction( 'wglGetGenlockSourceI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT)], doc='wglGetGenlockSourceI3D( HDC(None), POINTER(UINT)() ) -> BOOL', argNames=['None', ''], ) wglGenlockSourceEdgeI3D = platform.createBaseFunction( 'wglGenlockSourceEdgeI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT], doc='wglGenlockSourceEdgeI3D( HDC(None), UINT(None) ) -> BOOL', argNames=['None', 'None'], ) wglGetGenlockSourceEdgeI3D = platform.createBaseFunction( 'wglGetGenlockSourceEdgeI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT)], doc='wglGetGenlockSourceEdgeI3D( HDC(None), POINTER(UINT)() ) -> BOOL', argNames=['None', ''], ) wglGenlockSampleRateI3D = platform.createBaseFunction( 'wglGenlockSampleRateI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT], doc='wglGenlockSampleRateI3D( HDC(None), UINT(None) ) -> BOOL', argNames=['None', 'None'], ) wglGetGenlockSampleRateI3D = platform.createBaseFunction( 'wglGetGenlockSampleRateI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT)], doc='wglGetGenlockSampleRateI3D( HDC(None), POINTER(UINT)() ) -> BOOL', argNames=['None', ''], ) wglGenlockSourceDelayI3D = platform.createBaseFunction( 'wglGenlockSourceDelayI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, UINT], doc='wglGenlockSourceDelayI3D( HDC(None), UINT(None) ) -> BOOL', argNames=['None', 'None'], ) wglGetGenlockSourceDelayI3D = platform.createBaseFunction( 'wglGetGenlockSourceDelayI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT)], doc='wglGetGenlockSourceDelayI3D( HDC(None), POINTER(UINT)() ) -> BOOL', argNames=['None', ''], ) wglQueryGenlockMaxSourceDelayI3D = platform.createBaseFunction( 'wglQueryGenlockMaxSourceDelayI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(UINT), POINTER(UINT)], doc='wglQueryGenlockMaxSourceDelayI3D( HDC(None), POINTER(UINT)(), POINTER(UINT)() ) -> BOOL', argNames=['None', '', ''], ) PFNWGLENABLEGENLOCKI3DPROC = CFUNCTYPE(BOOL, HDC) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:564 PFNWGLDISABLEGENLOCKI3DPROC = CFUNCTYPE(BOOL, HDC) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:565 PFNWGLISENABLEDGENLOCKI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(BOOL)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:566 PFNWGLGENLOCKSOURCEI3DPROC = CFUNCTYPE(BOOL, HDC, UINT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:567 PFNWGLGETGENLOCKSOURCEI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:568 PFNWGLGENLOCKSOURCEEDGEI3DPROC = CFUNCTYPE(BOOL, HDC, UINT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:569 PFNWGLGETGENLOCKSOURCEEDGEI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:570 PFNWGLGENLOCKSAMPLERATEI3DPROC = CFUNCTYPE(BOOL, HDC, UINT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:571 PFNWGLGETGENLOCKSAMPLERATEI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:572 PFNWGLGENLOCKSOURCEDELAYI3DPROC = CFUNCTYPE(BOOL, HDC, UINT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:573 PFNWGLGETGENLOCKSOURCEDELAYI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:574 PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(UINT), POINTER(UINT)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:575 # I3D_image_buffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:578) WGL_I3D_image_buffer = constant.Constant( 'WGL_I3D_image_buffer', 1 ) LPVOID = POINTER(None) # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:47 DWORD = c_ulong # /home/mcfletch/pylive/OpenGL-ctypes/src/wgl.h:56 wglCreateImageBufferI3D = platform.createBaseFunction( 'wglCreateImageBufferI3D', dll=platform.GL, resultType=LPVOID, argTypes=[HDC, DWORD, UINT], doc='wglCreateImageBufferI3D( HDC(None), DWORD(None), UINT(None) ) -> LPVOID', argNames=['None', 'None', 'None'], ) wglDestroyImageBufferI3D = platform.createBaseFunction( 'wglDestroyImageBufferI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, LPVOID], doc='wglDestroyImageBufferI3D( HDC(None), LPVOID(None) ) -> BOOL', argNames=['None', 'None'], ) wglAssociateImageBufferEventsI3D = platform.createBaseFunction( 'wglAssociateImageBufferEventsI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(HANDLE), POINTER(LPVOID), POINTER(DWORD), UINT], doc='wglAssociateImageBufferEventsI3D( HDC(None), POINTER(HANDLE)(), POINTER(LPVOID)(), POINTER(DWORD)(), UINT(None) ) -> BOOL', argNames=['None', '', '', '', 'None'], ) wglReleaseImageBufferEventsI3D = platform.createBaseFunction( 'wglReleaseImageBufferEventsI3D', dll=platform.GL, resultType=BOOL, argTypes=[HDC, POINTER(LPVOID), UINT], doc='wglReleaseImageBufferEventsI3D( HDC(None), POINTER(LPVOID)(), UINT(None) ) -> BOOL', argNames=['None', '', 'None'], ) PFNWGLCREATEIMAGEBUFFERI3DPROC = CFUNCTYPE(LPVOID, HDC, DWORD, UINT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:586 PFNWGLDESTROYIMAGEBUFFERI3DPROC = CFUNCTYPE(BOOL, HDC, LPVOID) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:587 PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(HANDLE), POINTER(LPVOID), POINTER(DWORD), UINT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:588 PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC = CFUNCTYPE(BOOL, HDC, POINTER(LPVOID), UINT) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:589 # I3D_swap_frame_lock (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:592) WGL_I3D_swap_frame_lock = constant.Constant( 'WGL_I3D_swap_frame_lock', 1 ) wglEnableFrameLockI3D = platform.createBaseFunction( 'wglEnableFrameLockI3D', dll=platform.GL, resultType=BOOL, argTypes=[], doc='wglEnableFrameLockI3D( ) -> BOOL', argNames=[], ) wglDisableFrameLockI3D = platform.createBaseFunction( 'wglDisableFrameLockI3D', dll=platform.GL, resultType=BOOL, argTypes=[], doc='wglDisableFrameLockI3D( ) -> BOOL', argNames=[], ) wglIsEnabledFrameLockI3D = platform.createBaseFunction( 'wglIsEnabledFrameLockI3D', dll=platform.GL, resultType=BOOL, argTypes=[POINTER(BOOL)], doc='wglIsEnabledFrameLockI3D( POINTER(BOOL)() ) -> BOOL', argNames=[''], ) wglQueryFrameLockMasterI3D = platform.createBaseFunction( 'wglQueryFrameLockMasterI3D', dll=platform.GL, resultType=BOOL, argTypes=[POINTER(BOOL)], doc='wglQueryFrameLockMasterI3D( POINTER(BOOL)() ) -> BOOL', argNames=[''], ) PFNWGLENABLEFRAMELOCKI3DPROC = CFUNCTYPE(BOOL) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:600 PFNWGLDISABLEFRAMELOCKI3DPROC = CFUNCTYPE(BOOL) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:601 PFNWGLISENABLEDFRAMELOCKI3DPROC = CFUNCTYPE(BOOL, POINTER(BOOL)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:602 PFNWGLQUERYFRAMELOCKMASTERI3DPROC = CFUNCTYPE(BOOL, POINTER(BOOL)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:603 # I3D_swap_frame_usage (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:606) WGL_I3D_swap_frame_usage = constant.Constant( 'WGL_I3D_swap_frame_usage', 1 ) wglGetFrameUsageI3D = platform.createBaseFunction( 'wglGetFrameUsageI3D', dll=platform.GL, resultType=BOOL, argTypes=[POINTER(c_float)], doc='wglGetFrameUsageI3D( POINTER(c_float)() ) -> BOOL', argNames=[''], ) wglBeginFrameTrackingI3D = platform.createBaseFunction( 'wglBeginFrameTrackingI3D', dll=platform.GL, resultType=BOOL, argTypes=[], doc='wglBeginFrameTrackingI3D( ) -> BOOL', argNames=[], ) wglEndFrameTrackingI3D = platform.createBaseFunction( 'wglEndFrameTrackingI3D', dll=platform.GL, resultType=BOOL, argTypes=[], doc='wglEndFrameTrackingI3D( ) -> BOOL', argNames=[], ) wglQueryFrameTrackingI3D = platform.createBaseFunction( 'wglQueryFrameTrackingI3D', dll=platform.GL, resultType=BOOL, argTypes=[POINTER(DWORD), POINTER(DWORD), POINTER(c_float)], doc='wglQueryFrameTrackingI3D( POINTER(DWORD)(), POINTER(DWORD)(), POINTER(c_float)() ) -> BOOL', argNames=['', '', ''], ) PFNWGLGETFRAMEUSAGEI3DPROC = CFUNCTYPE(BOOL, POINTER(c_float)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:614 PFNWGLBEGINFRAMETRACKINGI3DPROC = CFUNCTYPE(BOOL) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:615 PFNWGLENDFRAMETRACKINGI3DPROC = CFUNCTYPE(BOOL) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:616 PFNWGLQUERYFRAMETRACKINGI3DPROC = CFUNCTYPE(BOOL, POINTER(DWORD), POINTER(DWORD), POINTER(c_float)) # http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:617 # ATI_pixel_format_float (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:620) WGL_ATI_pixel_format_float = constant.Constant( 'WGL_ATI_pixel_format_float', 1 ) # NV_float_buffer (http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h:624) WGL_NV_float_buffer = constant.Constant( 'WGL_NV_float_buffer', 1 ) __all__ = ['GLAPI', 'WGL_WGLEXT_VERSION', 'WGL_FRONT_COLOR_BUFFER_BIT_ARB', 'WGL_BACK_COLOR_BUFFER_BIT_ARB', 'WGL_DEPTH_BUFFER_BIT_ARB', 'WGL_STENCIL_BUFFER_BIT_ARB', 'WGL_SAMPLE_BUFFERS_ARB', 'WGL_SAMPLES_ARB', 'WGL_NUMBER_PIXEL_FORMATS_ARB', 'WGL_DRAW_TO_WINDOW_ARB', 'WGL_DRAW_TO_BITMAP_ARB', 'WGL_ACCELERATION_ARB', 'WGL_NEED_PALETTE_ARB', 'WGL_NEED_SYSTEM_PALETTE_ARB', 'WGL_SWAP_LAYER_BUFFERS_ARB', 'WGL_SWAP_METHOD_ARB', 'WGL_NUMBER_OVERLAYS_ARB', 'WGL_NUMBER_UNDERLAYS_ARB', 'WGL_TRANSPARENT_ARB', 'WGL_TRANSPARENT_RED_VALUE_ARB', 'WGL_TRANSPARENT_GREEN_VALUE_ARB', 'WGL_TRANSPARENT_BLUE_VALUE_ARB', 'WGL_TRANSPARENT_ALPHA_VALUE_ARB', 'WGL_TRANSPARENT_INDEX_VALUE_ARB', 'WGL_SHARE_DEPTH_ARB', 'WGL_SHARE_STENCIL_ARB', 'WGL_SHARE_ACCUM_ARB', 'WGL_SUPPORT_GDI_ARB', 'WGL_SUPPORT_OPENGL_ARB', 'WGL_DOUBLE_BUFFER_ARB', 'WGL_STEREO_ARB', 'WGL_PIXEL_TYPE_ARB', 'WGL_COLOR_BITS_ARB', 'WGL_RED_BITS_ARB', 'WGL_RED_SHIFT_ARB', 'WGL_GREEN_BITS_ARB', 'WGL_GREEN_SHIFT_ARB', 'WGL_BLUE_BITS_ARB', 'WGL_BLUE_SHIFT_ARB', 'WGL_ALPHA_BITS_ARB', 'WGL_ALPHA_SHIFT_ARB', 'WGL_ACCUM_BITS_ARB', 'WGL_ACCUM_RED_BITS_ARB', 'WGL_ACCUM_GREEN_BITS_ARB', 'WGL_ACCUM_BLUE_BITS_ARB', 'WGL_ACCUM_ALPHA_BITS_ARB', 'WGL_DEPTH_BITS_ARB', 'WGL_STENCIL_BITS_ARB', 'WGL_AUX_BUFFERS_ARB', 'WGL_NO_ACCELERATION_ARB', 'WGL_GENERIC_ACCELERATION_ARB', 'WGL_FULL_ACCELERATION_ARB', 'WGL_SWAP_EXCHANGE_ARB', 'WGL_SWAP_COPY_ARB', 'WGL_SWAP_UNDEFINED_ARB', 'WGL_TYPE_RGBA_ARB', 'WGL_TYPE_COLORINDEX_ARB', 'ERROR_INVALID_PIXEL_TYPE_ARB', 'ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB', 'WGL_DRAW_TO_PBUFFER_ARB', 'WGL_MAX_PBUFFER_PIXELS_ARB', 'WGL_MAX_PBUFFER_WIDTH_ARB', 'WGL_MAX_PBUFFER_HEIGHT_ARB', 'WGL_PBUFFER_LARGEST_ARB', 'WGL_PBUFFER_WIDTH_ARB', 'WGL_PBUFFER_HEIGHT_ARB', 'WGL_PBUFFER_LOST_ARB', 'WGL_BIND_TO_TEXTURE_RGB_ARB', 'WGL_BIND_TO_TEXTURE_RGBA_ARB', 'WGL_TEXTURE_FORMAT_ARB', 'WGL_TEXTURE_TARGET_ARB', 'WGL_MIPMAP_TEXTURE_ARB', 'WGL_TEXTURE_RGB_ARB', 'WGL_TEXTURE_RGBA_ARB', 'WGL_NO_TEXTURE_ARB', 'WGL_TEXTURE_CUBE_MAP_ARB', 'WGL_TEXTURE_1D_ARB', 'WGL_TEXTURE_2D_ARB', 'WGL_MIPMAP_LEVEL_ARB', 'WGL_CUBE_MAP_FACE_ARB', 'WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB', 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB', 'WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB', 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB', 'WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB', 'WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB', 'WGL_FRONT_LEFT_ARB', 'WGL_FRONT_RIGHT_ARB', 'WGL_BACK_LEFT_ARB', 'WGL_BACK_RIGHT_ARB', 'WGL_AUX0_ARB', 'WGL_AUX1_ARB', 'WGL_AUX2_ARB', 'WGL_AUX3_ARB', 'WGL_AUX4_ARB', 'WGL_AUX5_ARB', 'WGL_AUX6_ARB', 'WGL_AUX7_ARB', 'WGL_AUX8_ARB', 'WGL_AUX9_ARB', 'WGL_TYPE_RGBA_FLOAT_ARB', 'ERROR_INVALID_PIXEL_TYPE_EXT', 'WGL_NUMBER_PIXEL_FORMATS_EXT', 'WGL_DRAW_TO_WINDOW_EXT', 'WGL_DRAW_TO_BITMAP_EXT', 'WGL_ACCELERATION_EXT', 'WGL_NEED_PALETTE_EXT', 'WGL_NEED_SYSTEM_PALETTE_EXT', 'WGL_SWAP_LAYER_BUFFERS_EXT', 'WGL_SWAP_METHOD_EXT', 'WGL_NUMBER_OVERLAYS_EXT', 'WGL_NUMBER_UNDERLAYS_EXT', 'WGL_TRANSPARENT_EXT', 'WGL_TRANSPARENT_VALUE_EXT', 'WGL_SHARE_DEPTH_EXT', 'WGL_SHARE_STENCIL_EXT', 'WGL_SHARE_ACCUM_EXT', 'WGL_SUPPORT_GDI_EXT', 'WGL_SUPPORT_OPENGL_EXT', 'WGL_DOUBLE_BUFFER_EXT', 'WGL_STEREO_EXT', 'WGL_PIXEL_TYPE_EXT', 'WGL_COLOR_BITS_EXT', 'WGL_RED_BITS_EXT', 'WGL_RED_SHIFT_EXT', 'WGL_GREEN_BITS_EXT', 'WGL_GREEN_SHIFT_EXT', 'WGL_BLUE_BITS_EXT', 'WGL_BLUE_SHIFT_EXT', 'WGL_ALPHA_BITS_EXT', 'WGL_ALPHA_SHIFT_EXT', 'WGL_ACCUM_BITS_EXT', 'WGL_ACCUM_RED_BITS_EXT', 'WGL_ACCUM_GREEN_BITS_EXT', 'WGL_ACCUM_BLUE_BITS_EXT', 'WGL_ACCUM_ALPHA_BITS_EXT', 'WGL_DEPTH_BITS_EXT', 'WGL_STENCIL_BITS_EXT', 'WGL_AUX_BUFFERS_EXT', 'WGL_NO_ACCELERATION_EXT', 'WGL_GENERIC_ACCELERATION_EXT', 'WGL_FULL_ACCELERATION_EXT', 'WGL_SWAP_EXCHANGE_EXT', 'WGL_SWAP_COPY_EXT', 'WGL_SWAP_UNDEFINED_EXT', 'WGL_TYPE_RGBA_EXT', 'WGL_TYPE_COLORINDEX_EXT', 'WGL_DRAW_TO_PBUFFER_EXT', 'WGL_MAX_PBUFFER_PIXELS_EXT', 'WGL_MAX_PBUFFER_WIDTH_EXT', 'WGL_MAX_PBUFFER_HEIGHT_EXT', 'WGL_OPTIMAL_PBUFFER_WIDTH_EXT', 'WGL_OPTIMAL_PBUFFER_HEIGHT_EXT', 'WGL_PBUFFER_LARGEST_EXT', 'WGL_PBUFFER_WIDTH_EXT', 'WGL_PBUFFER_HEIGHT_EXT', 'WGL_DEPTH_FLOAT_EXT', 'WGL_SAMPLE_BUFFERS_3DFX', 'WGL_SAMPLES_3DFX', 'WGL_SAMPLE_BUFFERS_EXT', 'WGL_SAMPLES_EXT', 'WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D', 'WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D', 'WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D', 'WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D', 'WGL_GAMMA_TABLE_SIZE_I3D', 'WGL_GAMMA_EXCLUDE_DESKTOP_I3D', 'WGL_GENLOCK_SOURCE_MULTIVIEW_I3D', 'WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D', 'WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D', 'WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D', 'WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D', 'WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D', 'WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D', 'WGL_GENLOCK_SOURCE_EDGE_RISING_I3D', 'WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D', 'WGL_IMAGE_BUFFER_MIN_ACCESS_I3D', 'WGL_IMAGE_BUFFER_LOCK_I3D', 'WGL_BIND_TO_TEXTURE_DEPTH_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV', 'WGL_DEPTH_TEXTURE_FORMAT_NV', 'WGL_TEXTURE_DEPTH_COMPONENT_NV', 'WGL_DEPTH_COMPONENT_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV', 'WGL_TEXTURE_RECTANGLE_NV', 'WGL_TYPE_RGBA_FLOAT_ATI', 'WGL_FLOAT_COMPONENTS_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV', 'WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV', 'WGL_TEXTURE_FLOAT_R_NV', 'WGL_TEXTURE_FLOAT_RG_NV', 'WGL_TEXTURE_FLOAT_RGB_NV', 'WGL_TEXTURE_FLOAT_RGBA_NV', 'HPBUFFERARB', 'HPBUFFEREXT', 'WGL_ARB_buffer_region', 'wglCreateBufferRegionARB', 'wglDeleteBufferRegionARB', 'wglSaveBufferRegionARB', 'wglRestoreBufferRegionARB', 'PFNWGLCREATEBUFFERREGIONARBPROC', 'PFNWGLDELETEBUFFERREGIONARBPROC', 'PFNWGLSAVEBUFFERREGIONARBPROC', 'PFNWGLRESTOREBUFFERREGIONARBPROC', 'WGL_ARB_multisample', 'WGL_ARB_extensions_string', 'wglGetExtensionsStringARB', 'PFNWGLGETEXTENSIONSSTRINGARBPROC', 'WGL_ARB_pixel_format', 'wglGetPixelFormatAttribivARB', 'wglGetPixelFormatAttribfvARB', 'wglChoosePixelFormatARB', 'PFNWGLGETPIXELFORMATATTRIBIVARBPROC', 'PFNWGLGETPIXELFORMATATTRIBFVARBPROC', 'PFNWGLCHOOSEPIXELFORMATARBPROC', 'WGL_ARB_make_current_read', 'wglMakeContextCurrentARB', 'wglGetCurrentReadDCARB', 'PFNWGLMAKECONTEXTCURRENTARBPROC', 'PFNWGLGETCURRENTREADDCARBPROC', 'WGL_ARB_pbuffer', 'wglCreatePbufferARB', 'wglGetPbufferDCARB', 'wglReleasePbufferDCARB', 'wglDestroyPbufferARB', 'wglQueryPbufferARB', 'PFNWGLCREATEPBUFFERARBPROC', 'PFNWGLGETPBUFFERDCARBPROC', 'PFNWGLRELEASEPBUFFERDCARBPROC', 'PFNWGLDESTROYPBUFFERARBPROC', 'PFNWGLQUERYPBUFFERARBPROC', 'WGL_ARB_render_texture', 'wglBindTexImageARB', 'wglReleaseTexImageARB', 'wglSetPbufferAttribARB', 'PFNWGLBINDTEXIMAGEARBPROC', 'PFNWGLRELEASETEXIMAGEARBPROC', 'PFNWGLSETPBUFFERATTRIBARBPROC', 'WGL_ARB_pixel_format_float', 'WGL_EXT_display_color_table', 'wglCreateDisplayColorTableEXT', 'wglLoadDisplayColorTableEXT', 'wglBindDisplayColorTableEXT', 'wglDestroyDisplayColorTableEXT', 'PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC', 'PFNWGLLOADDISPLAYCOLORTABLEEXTPROC', 'PFNWGLBINDDISPLAYCOLORTABLEEXTPROC', 'PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC', 'WGL_EXT_extensions_string', 'wglGetExtensionsStringEXT', 'PFNWGLGETEXTENSIONSSTRINGEXTPROC', 'WGL_EXT_make_current_read', 'wglMakeContextCurrentEXT', 'wglGetCurrentReadDCEXT', 'PFNWGLMAKECONTEXTCURRENTEXTPROC', 'PFNWGLGETCURRENTREADDCEXTPROC', 'WGL_EXT_pbuffer', 'wglCreatePbufferEXT', 'wglGetPbufferDCEXT', 'wglReleasePbufferDCEXT', 'wglDestroyPbufferEXT', 'wglQueryPbufferEXT', 'PFNWGLCREATEPBUFFEREXTPROC', 'PFNWGLGETPBUFFERDCEXTPROC', 'PFNWGLRELEASEPBUFFERDCEXTPROC', 'PFNWGLDESTROYPBUFFEREXTPROC', 'PFNWGLQUERYPBUFFEREXTPROC', 'WGL_EXT_pixel_format', 'wglGetPixelFormatAttribivEXT', 'wglGetPixelFormatAttribfvEXT', 'wglChoosePixelFormatEXT', 'PFNWGLGETPIXELFORMATATTRIBIVEXTPROC', 'PFNWGLGETPIXELFORMATATTRIBFVEXTPROC', 'PFNWGLCHOOSEPIXELFORMATEXTPROC', 'WGL_EXT_swap_control', 'wglSwapIntervalEXT', 'wglGetSwapIntervalEXT', 'PFNWGLSWAPINTERVALEXTPROC', 'PFNWGLGETSWAPINTERVALEXTPROC', 'WGL_EXT_depth_float', 'WGL_NV_vertex_array_range', 'wglAllocateMemoryNV', 'wglFreeMemoryNV', 'PFNWGLALLOCATEMEMORYNVPROC', 'PFNWGLFREEMEMORYNVPROC', 'WGL_3DFX_multisample', 'WGL_EXT_multisample', 'WGL_OML_sync_control', 'wglGetSyncValuesOML', 'wglGetMscRateOML', 'wglSwapBuffersMscOML', 'wglSwapLayerBuffersMscOML', 'wglWaitForMscOML', 'wglWaitForSbcOML', 'PFNWGLGETSYNCVALUESOMLPROC', 'PFNWGLGETMSCRATEOMLPROC', 'PFNWGLSWAPBUFFERSMSCOMLPROC', 'PFNWGLSWAPLAYERBUFFERSMSCOMLPROC', 'PFNWGLWAITFORMSCOMLPROC', 'PFNWGLWAITFORSBCOMLPROC', 'WGL_I3D_digital_video_control', 'wglGetDigitalVideoParametersI3D', 'wglSetDigitalVideoParametersI3D', 'PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC', 'PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC', 'WGL_I3D_gamma', 'wglGetGammaTableParametersI3D', 'wglSetGammaTableParametersI3D', 'wglGetGammaTableI3D', 'wglSetGammaTableI3D', 'PFNWGLGETGAMMATABLEPARAMETERSI3DPROC', 'PFNWGLSETGAMMATABLEPARAMETERSI3DPROC', 'PFNWGLGETGAMMATABLEI3DPROC', 'PFNWGLSETGAMMATABLEI3DPROC', 'WGL_I3D_genlock', 'wglEnableGenlockI3D', 'wglDisableGenlockI3D', 'wglIsEnabledGenlockI3D', 'wglGenlockSourceI3D', 'wglGetGenlockSourceI3D', 'wglGenlockSourceEdgeI3D', 'wglGetGenlockSourceEdgeI3D', 'wglGenlockSampleRateI3D', 'wglGetGenlockSampleRateI3D', 'wglGenlockSourceDelayI3D', 'wglGetGenlockSourceDelayI3D', 'wglQueryGenlockMaxSourceDelayI3D', 'PFNWGLENABLEGENLOCKI3DPROC', 'PFNWGLDISABLEGENLOCKI3DPROC', 'PFNWGLISENABLEDGENLOCKI3DPROC', 'PFNWGLGENLOCKSOURCEI3DPROC', 'PFNWGLGETGENLOCKSOURCEI3DPROC', 'PFNWGLGENLOCKSOURCEEDGEI3DPROC', 'PFNWGLGETGENLOCKSOURCEEDGEI3DPROC', 'PFNWGLGENLOCKSAMPLERATEI3DPROC', 'PFNWGLGETGENLOCKSAMPLERATEI3DPROC', 'PFNWGLGENLOCKSOURCEDELAYI3DPROC', 'PFNWGLGETGENLOCKSOURCEDELAYI3DPROC', 'PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC', 'WGL_I3D_image_buffer', 'wglCreateImageBufferI3D', 'wglDestroyImageBufferI3D', 'wglAssociateImageBufferEventsI3D', 'wglReleaseImageBufferEventsI3D', 'PFNWGLCREATEIMAGEBUFFERI3DPROC', 'PFNWGLDESTROYIMAGEBUFFERI3DPROC', 'PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC', 'PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC', 'WGL_I3D_swap_frame_lock', 'wglEnableFrameLockI3D', 'wglDisableFrameLockI3D', 'wglIsEnabledFrameLockI3D', 'wglQueryFrameLockMasterI3D', 'PFNWGLENABLEFRAMELOCKI3DPROC', 'PFNWGLDISABLEFRAMELOCKI3DPROC', 'PFNWGLISENABLEDFRAMELOCKI3DPROC', 'PFNWGLQUERYFRAMELOCKMASTERI3DPROC', 'WGL_I3D_swap_frame_usage', 'wglGetFrameUsageI3D', 'wglBeginFrameTrackingI3D', 'wglEndFrameTrackingI3D', 'wglQueryFrameTrackingI3D', 'PFNWGLGETFRAMEUSAGEI3DPROC', 'PFNWGLBEGINFRAMETRACKINGI3DPROC', 'PFNWGLENDFRAMETRACKINGI3DPROC', 'PFNWGLQUERYFRAMETRACKINGI3DPROC', 'WGL_ATI_pixel_format_float', 'WGL_NV_float_buffer'] # END GENERATED CONTENT (do not edit above this line) PyOpenGL-3.0.2/OpenGL/raw/GLU/0000755000175000001440000000000012032640120016447 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/raw/GLU/annotations.py0000644000175000001440000001776512025001653021402 0ustar mcfletchusers00000000000000"""Array-size annotations for OpenGL.raw.GLU Automatically generated by the generateraw script, do not edit! """ from OpenGL.raw import GLU as raw from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid gluCheckExtension = arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gluCheckExtension, None, # XXX Could not determine size of argument extName for gluCheckExtension arrays.GLubyteArray arrays.GLubyteArray, 'extName', ), None, # XXX Could not determine size of argument extString for gluCheckExtension arrays.GLubyteArray arrays.GLubyteArray, 'extString', ) gluGetNurbsProperty = arrays.setInputArraySizeType( raw.gluGetNurbsProperty, None, # XXX Could not determine size of argument data for gluGetNurbsProperty arrays.GLfloatArray arrays.GLfloatArray, 'data', ) gluGetTessProperty = arrays.setInputArraySizeType( raw.gluGetTessProperty, None, # XXX Could not determine size of argument data for gluGetTessProperty arrays.GLdoubleArray arrays.GLdoubleArray, 'data', ) gluLoadSamplingMatrices = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gluLoadSamplingMatrices, None, # XXX Could not determine size of argument model for gluLoadSamplingMatrices arrays.GLfloatArray arrays.GLfloatArray, 'model', ), None, # XXX Could not determine size of argument perspective for gluLoadSamplingMatrices arrays.GLfloatArray arrays.GLfloatArray, 'perspective', ), None, # XXX Could not determine size of argument view for gluLoadSamplingMatrices arrays.GLintArray arrays.GLintArray, 'view', ) gluNurbsCurve = arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gluNurbsCurve, None, # XXX Could not determine size of argument knots for gluNurbsCurve arrays.GLfloatArray arrays.GLfloatArray, 'knots', ), None, # XXX Could not determine size of argument control for gluNurbsCurve arrays.GLfloatArray arrays.GLfloatArray, 'control', ) gluNurbsSurface = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gluNurbsSurface, None, # XXX Could not determine size of argument sKnots for gluNurbsSurface arrays.GLfloatArray arrays.GLfloatArray, 'sKnots', ), None, # XXX Could not determine size of argument tKnots for gluNurbsSurface arrays.GLfloatArray arrays.GLfloatArray, 'tKnots', ), None, # XXX Could not determine size of argument control for gluNurbsSurface arrays.GLfloatArray arrays.GLfloatArray, 'control', ) gluPickMatrix = arrays.setInputArraySizeType( raw.gluPickMatrix, None, # XXX Could not determine size of argument viewport for gluPickMatrix arrays.GLintArray arrays.GLintArray, 'viewport', ) gluProject = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gluProject, None, # XXX Could not determine size of argument model for gluProject arrays.GLdoubleArray arrays.GLdoubleArray, 'model', ), None, # XXX Could not determine size of argument proj for gluProject arrays.GLdoubleArray arrays.GLdoubleArray, 'proj', ), None, # XXX Could not determine size of argument view for gluProject arrays.GLintArray arrays.GLintArray, 'view', ), None, # XXX Could not determine size of argument winX for gluProject arrays.GLdoubleArray arrays.GLdoubleArray, 'winX', ), None, # XXX Could not determine size of argument winY for gluProject arrays.GLdoubleArray arrays.GLdoubleArray, 'winY', ), None, # XXX Could not determine size of argument winZ for gluProject arrays.GLdoubleArray arrays.GLdoubleArray, 'winZ', ) gluPwlCurve = arrays.setInputArraySizeType( raw.gluPwlCurve, None, # XXX Could not determine size of argument data for gluPwlCurve arrays.GLfloatArray arrays.GLfloatArray, 'data', ) gluTessVertex = arrays.setInputArraySizeType( raw.gluTessVertex, None, # XXX Could not determine size of argument location for gluTessVertex arrays.GLdoubleArray arrays.GLdoubleArray, 'location', ) gluUnProject = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gluUnProject, None, # XXX Could not determine size of argument model for gluUnProject arrays.GLdoubleArray arrays.GLdoubleArray, 'model', ), None, # XXX Could not determine size of argument proj for gluUnProject arrays.GLdoubleArray arrays.GLdoubleArray, 'proj', ), None, # XXX Could not determine size of argument view for gluUnProject arrays.GLintArray arrays.GLintArray, 'view', ), None, # XXX Could not determine size of argument objX for gluUnProject arrays.GLdoubleArray arrays.GLdoubleArray, 'objX', ), None, # XXX Could not determine size of argument objY for gluUnProject arrays.GLdoubleArray arrays.GLdoubleArray, 'objY', ), None, # XXX Could not determine size of argument objZ for gluUnProject arrays.GLdoubleArray arrays.GLdoubleArray, 'objZ', ) gluUnProject4 = arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( arrays.setInputArraySizeType( raw.gluUnProject4, None, # XXX Could not determine size of argument model for gluUnProject4 arrays.GLdoubleArray arrays.GLdoubleArray, 'model', ), None, # XXX Could not determine size of argument proj for gluUnProject4 arrays.GLdoubleArray arrays.GLdoubleArray, 'proj', ), None, # XXX Could not determine size of argument view for gluUnProject4 arrays.GLintArray arrays.GLintArray, 'view', ), None, # XXX Could not determine size of argument objX for gluUnProject4 arrays.GLdoubleArray arrays.GLdoubleArray, 'objX', ), None, # XXX Could not determine size of argument objY for gluUnProject4 arrays.GLdoubleArray arrays.GLdoubleArray, 'objY', ), None, # XXX Could not determine size of argument objZ for gluUnProject4 arrays.GLdoubleArray arrays.GLdoubleArray, 'objZ', ), None, # XXX Could not determine size of argument objW for gluUnProject4 arrays.GLdoubleArray arrays.GLdoubleArray, 'objW', ) __all__ = [ 'gluCheckExtension', 'gluGetNurbsProperty', 'gluGetTessProperty', 'gluLoadSamplingMatrices', 'gluNurbsCurve', 'gluNurbsSurface', 'gluPickMatrix', 'gluProject', 'gluPwlCurve', 'gluTessVertex', 'gluUnProject', 'gluUnProject4' ] PyOpenGL-3.0.2/OpenGL/raw/GLU/__init__.py0000644000175000001440000006750712025001653020603 0ustar mcfletchusers00000000000000# -*- coding: iso-8859-1 -*- """Raw (C-style) API for OpenGL.GLU Automatically generated by the generateraw script, do not edit! """ from OpenGL.raw.GLU.constants import * from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid FUNCTION_TYPE = platform.PLATFORM.functionTypeFor( platform.GLU ) from OpenGL.constants import GLint from OpenGL.constants import GLenum from OpenGL.constants import GLsizei from OpenGL.constants import GLboolean from OpenGL.constants import GLubyte from OpenGL.constants import GLdouble from OpenGL.constants import GLfloat class GLUnurbs(Structure): pass GLUnurbs._fields_ = [ # /usr/include/GL/glu.h 257 ] GLUnurbsObj = GLUnurbs class GLUquadric(Structure): pass GLUquadric._fields_ = [ # /usr/include/GL/glu.h 258 ] GLUquadricObj = GLUquadric class GLUtesselator(Structure): pass GLUtesselator._fields_ = [ # /usr/include/GL/glu.h 259 ] GLUtesselatorObj = GLUtesselator GLUtriangulatorObj = GLUtesselator # /usr/include/GL/glu.h 276 gluBeginCurve = platform.createBaseFunction( 'gluBeginCurve', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs)], doc='gluBeginCurve( POINTER(GLUnurbs)(nurb) ) -> None', argNames=('nurb',), ) # /usr/include/GL/glu.h 277 gluBeginPolygon = platform.createBaseFunction( 'gluBeginPolygon', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator)], doc='gluBeginPolygon( POINTER(GLUtesselator)(tess) ) -> None', argNames=('tess',), ) # /usr/include/GL/glu.h 278 gluBeginSurface = platform.createBaseFunction( 'gluBeginSurface', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs)], doc='gluBeginSurface( POINTER(GLUnurbs)(nurb) ) -> None', argNames=('nurb',), ) # /usr/include/GL/glu.h 279 gluBeginTrim = platform.createBaseFunction( 'gluBeginTrim', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs)], doc='gluBeginTrim( POINTER(GLUnurbs)(nurb) ) -> None', argNames=('nurb',), ) # /usr/include/GL/glu.h 280 gluBuild1DMipmapLevels = platform.createBaseFunction( 'gluBuild1DMipmapLevels', dll=platform.GLU, resultType=GLint, argTypes=[GLenum,GLint,GLsizei,GLenum,GLenum,GLint,GLint,GLint,c_void_p], doc='gluBuild1DMipmapLevels( GLenum(target), GLint(internalFormat), GLsizei(width), GLenum(format), GLenum(type), GLint(level), GLint(base), GLint(max), c_void_p(data) ) -> GLint', argNames=('target', 'internalFormat', 'width', 'format', 'type', 'level', 'base', 'max', 'data'), ) # /usr/include/GL/glu.h 281 gluBuild1DMipmaps = platform.createBaseFunction( 'gluBuild1DMipmaps', dll=platform.GLU, resultType=GLint, argTypes=[GLenum,GLint,GLsizei,GLenum,GLenum,c_void_p], doc='gluBuild1DMipmaps( GLenum(target), GLint(internalFormat), GLsizei(width), GLenum(format), GLenum(type), c_void_p(data) ) -> GLint', argNames=('target', 'internalFormat', 'width', 'format', 'type', 'data'), ) # /usr/include/GL/glu.h 282 gluBuild2DMipmapLevels = platform.createBaseFunction( 'gluBuild2DMipmapLevels', dll=platform.GLU, resultType=GLint, argTypes=[GLenum,GLint,GLsizei,GLsizei,GLenum,GLenum,GLint,GLint,GLint,c_void_p], doc='gluBuild2DMipmapLevels( GLenum(target), GLint(internalFormat), GLsizei(width), GLsizei(height), GLenum(format), GLenum(type), GLint(level), GLint(base), GLint(max), c_void_p(data) ) -> GLint', argNames=('target', 'internalFormat', 'width', 'height', 'format', 'type', 'level', 'base', 'max', 'data'), ) # /usr/include/GL/glu.h 283 gluBuild2DMipmaps = platform.createBaseFunction( 'gluBuild2DMipmaps', dll=platform.GLU, resultType=GLint, argTypes=[GLenum,GLint,GLsizei,GLsizei,GLenum,GLenum,c_void_p], doc='gluBuild2DMipmaps( GLenum(target), GLint(internalFormat), GLsizei(width), GLsizei(height), GLenum(format), GLenum(type), c_void_p(data) ) -> GLint', argNames=('target', 'internalFormat', 'width', 'height', 'format', 'type', 'data'), ) # /usr/include/GL/glu.h 284 gluBuild3DMipmapLevels = platform.createBaseFunction( 'gluBuild3DMipmapLevels', dll=platform.GLU, resultType=GLint, argTypes=[GLenum,GLint,GLsizei,GLsizei,GLsizei,GLenum,GLenum,GLint,GLint,GLint,c_void_p], doc='gluBuild3DMipmapLevels( GLenum(target), GLint(internalFormat), GLsizei(width), GLsizei(height), GLsizei(depth), GLenum(format), GLenum(type), GLint(level), GLint(base), GLint(max), c_void_p(data) ) -> GLint', argNames=('target', 'internalFormat', 'width', 'height', 'depth', 'format', 'type', 'level', 'base', 'max', 'data'), ) # /usr/include/GL/glu.h 285 gluBuild3DMipmaps = platform.createBaseFunction( 'gluBuild3DMipmaps', dll=platform.GLU, resultType=GLint, argTypes=[GLenum,GLint,GLsizei,GLsizei,GLsizei,GLenum,GLenum,c_void_p], doc='gluBuild3DMipmaps( GLenum(target), GLint(internalFormat), GLsizei(width), GLsizei(height), GLsizei(depth), GLenum(format), GLenum(type), c_void_p(data) ) -> GLint', argNames=('target', 'internalFormat', 'width', 'height', 'depth', 'format', 'type', 'data'), ) # /usr/include/GL/glu.h 286 gluCheckExtension = platform.createBaseFunction( 'gluCheckExtension', dll=platform.GLU, resultType=GLboolean, argTypes=[arrays.GLubyteArray,arrays.GLubyteArray], doc='gluCheckExtension( arrays.GLubyteArray(extName), arrays.GLubyteArray(extString) ) -> GLboolean', argNames=('extName', 'extString'), ) # /usr/include/GL/glu.h 287 gluCylinder = platform.createBaseFunction( 'gluCylinder', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric),GLdouble,GLdouble,GLdouble,GLint,GLint], doc='gluCylinder( POINTER(GLUquadric)(quad), GLdouble(base), GLdouble(top), GLdouble(height), GLint(slices), GLint(stacks) ) -> None', argNames=('quad', 'base', 'top', 'height', 'slices', 'stacks'), ) # /usr/include/GL/glu.h 288 gluDeleteNurbsRenderer = platform.createBaseFunction( 'gluDeleteNurbsRenderer', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs)], doc='gluDeleteNurbsRenderer( POINTER(GLUnurbs)(nurb) ) -> None', argNames=('nurb',), ) # /usr/include/GL/glu.h 289 gluDeleteQuadric = platform.createBaseFunction( 'gluDeleteQuadric', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric)], doc='gluDeleteQuadric( POINTER(GLUquadric)(quad) ) -> None', argNames=('quad',), ) # /usr/include/GL/glu.h 290 gluDeleteTess = platform.createBaseFunction( 'gluDeleteTess', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator)], doc='gluDeleteTess( POINTER(GLUtesselator)(tess) ) -> None', argNames=('tess',), ) # /usr/include/GL/glu.h 291 gluDisk = platform.createBaseFunction( 'gluDisk', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric),GLdouble,GLdouble,GLint,GLint], doc='gluDisk( POINTER(GLUquadric)(quad), GLdouble(inner), GLdouble(outer), GLint(slices), GLint(loops) ) -> None', argNames=('quad', 'inner', 'outer', 'slices', 'loops'), ) # /usr/include/GL/glu.h 292 gluEndCurve = platform.createBaseFunction( 'gluEndCurve', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs)], doc='gluEndCurve( POINTER(GLUnurbs)(nurb) ) -> None', argNames=('nurb',), ) # /usr/include/GL/glu.h 293 gluEndPolygon = platform.createBaseFunction( 'gluEndPolygon', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator)], doc='gluEndPolygon( POINTER(GLUtesselator)(tess) ) -> None', argNames=('tess',), ) # /usr/include/GL/glu.h 294 gluEndSurface = platform.createBaseFunction( 'gluEndSurface', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs)], doc='gluEndSurface( POINTER(GLUnurbs)(nurb) ) -> None', argNames=('nurb',), ) # /usr/include/GL/glu.h 295 gluEndTrim = platform.createBaseFunction( 'gluEndTrim', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs)], doc='gluEndTrim( POINTER(GLUnurbs)(nurb) ) -> None', argNames=('nurb',), ) # /usr/include/GL/glu.h 296 gluErrorString = platform.createBaseFunction( 'gluErrorString', dll=platform.GLU, resultType=POINTER(GLubyte), argTypes=[GLenum], doc='gluErrorString( GLenum(error) ) -> POINTER(GLubyte)', argNames=('error',), ) # /usr/include/GL/glu.h 297 gluGetNurbsProperty = platform.createBaseFunction( 'gluGetNurbsProperty', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs),GLenum,arrays.GLfloatArray], doc='gluGetNurbsProperty( POINTER(GLUnurbs)(nurb), GLenum(property), arrays.GLfloatArray(data) ) -> None', argNames=('nurb', 'property', 'data'), ) # /usr/include/GL/glu.h 298 gluGetString = platform.createBaseFunction( 'gluGetString', dll=platform.GLU, resultType=POINTER(GLubyte), argTypes=[GLenum], doc='gluGetString( GLenum(name) ) -> POINTER(GLubyte)', argNames=('name',), ) # /usr/include/GL/glu.h 299 gluGetTessProperty = platform.createBaseFunction( 'gluGetTessProperty', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator),GLenum,arrays.GLdoubleArray], doc='gluGetTessProperty( POINTER(GLUtesselator)(tess), GLenum(which), arrays.GLdoubleArray(data) ) -> None', argNames=('tess', 'which', 'data'), ) # /usr/include/GL/glu.h 300 gluLoadSamplingMatrices = platform.createBaseFunction( 'gluLoadSamplingMatrices', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs),arrays.GLfloatArray,arrays.GLfloatArray,arrays.GLintArray], doc='gluLoadSamplingMatrices( POINTER(GLUnurbs)(nurb), arrays.GLfloatArray(model), arrays.GLfloatArray(perspective), arrays.GLintArray(view) ) -> None', argNames=('nurb', 'model', 'perspective', 'view'), ) # /usr/include/GL/glu.h 301 gluLookAt = platform.createBaseFunction( 'gluLookAt', dll=platform.GLU, resultType=None, argTypes=[GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble], doc='gluLookAt( GLdouble(eyeX), GLdouble(eyeY), GLdouble(eyeZ), GLdouble(centerX), GLdouble(centerY), GLdouble(centerZ), GLdouble(upX), GLdouble(upY), GLdouble(upZ) ) -> None', argNames=('eyeX', 'eyeY', 'eyeZ', 'centerX', 'centerY', 'centerZ', 'upX', 'upY', 'upZ'), ) # /usr/include/GL/glu.h 302 gluNewNurbsRenderer = platform.createBaseFunction( 'gluNewNurbsRenderer', dll=platform.GLU, resultType=POINTER(GLUnurbs), argTypes=[], doc='gluNewNurbsRenderer( ) -> POINTER(GLUnurbs)', argNames=(), ) # /usr/include/GL/glu.h 303 gluNewQuadric = platform.createBaseFunction( 'gluNewQuadric', dll=platform.GLU, resultType=POINTER(GLUquadric), argTypes=[], doc='gluNewQuadric( ) -> POINTER(GLUquadric)', argNames=(), ) # /usr/include/GL/glu.h 304 gluNewTess = platform.createBaseFunction( 'gluNewTess', dll=platform.GLU, resultType=POINTER(GLUtesselator), argTypes=[], doc='gluNewTess( ) -> POINTER(GLUtesselator)', argNames=(), ) # /usr/include/GL/glu.h 305 gluNextContour = platform.createBaseFunction( 'gluNextContour', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator),GLenum], doc='gluNextContour( POINTER(GLUtesselator)(tess), GLenum(type) ) -> None', argNames=('tess', 'type'), ) _GLUfuncptr = FUNCTION_TYPE(None) # /usr/include/GL/glu.h 306 gluNurbsCallback = platform.createBaseFunction( 'gluNurbsCallback', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs),GLenum,_GLUfuncptr], doc='gluNurbsCallback( POINTER(GLUnurbs)(nurb), GLenum(which), _GLUfuncptr(CallBackFunc) ) -> None', argNames=('nurb', 'which', 'CallBackFunc'), ) GLvoid = None # /usr/include/GL/glu.h 307 gluNurbsCallbackData = platform.createBaseFunction( 'gluNurbsCallbackData', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs),POINTER(GLvoid)], doc='gluNurbsCallbackData( POINTER(GLUnurbs)(nurb), POINTER(GLvoid)(userData) ) -> None', argNames=('nurb', 'userData'), ) # /usr/include/GL/glu.h 308 gluNurbsCallbackDataEXT = platform.createBaseFunction( 'gluNurbsCallbackDataEXT', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs),POINTER(GLvoid)], doc='gluNurbsCallbackDataEXT( POINTER(GLUnurbs)(nurb), POINTER(GLvoid)(userData) ) -> None', argNames=('nurb', 'userData'), ) # /usr/include/GL/glu.h 309 gluNurbsCurve = platform.createBaseFunction( 'gluNurbsCurve', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs),GLint,arrays.GLfloatArray,GLint,arrays.GLfloatArray,GLint,GLenum], doc='gluNurbsCurve( POINTER(GLUnurbs)(nurb), GLint(knotCount), arrays.GLfloatArray(knots), GLint(stride), arrays.GLfloatArray(control), GLint(order), GLenum(type) ) -> None', argNames=('nurb', 'knotCount', 'knots', 'stride', 'control', 'order', 'type'), ) # /usr/include/GL/glu.h 310 gluNurbsProperty = platform.createBaseFunction( 'gluNurbsProperty', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs),GLenum,GLfloat], doc='gluNurbsProperty( POINTER(GLUnurbs)(nurb), GLenum(property), GLfloat(value) ) -> None', argNames=('nurb', 'property', 'value'), ) # /usr/include/GL/glu.h 311 gluNurbsSurface = platform.createBaseFunction( 'gluNurbsSurface', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs),GLint,arrays.GLfloatArray,GLint,arrays.GLfloatArray,GLint,GLint,arrays.GLfloatArray,GLint,GLint,GLenum], doc='gluNurbsSurface( POINTER(GLUnurbs)(nurb), GLint(sKnotCount), arrays.GLfloatArray(sKnots), GLint(tKnotCount), arrays.GLfloatArray(tKnots), GLint(sStride), GLint(tStride), arrays.GLfloatArray(control), GLint(sOrder), GLint(tOrder), GLenum(type) ) -> None', argNames=('nurb', 'sKnotCount', 'sKnots', 'tKnotCount', 'tKnots', 'sStride', 'tStride', 'control', 'sOrder', 'tOrder', 'type'), ) # /usr/include/GL/glu.h 312 gluOrtho2D = platform.createBaseFunction( 'gluOrtho2D', dll=platform.GLU, resultType=None, argTypes=[GLdouble,GLdouble,GLdouble,GLdouble], doc='gluOrtho2D( GLdouble(left), GLdouble(right), GLdouble(bottom), GLdouble(top) ) -> None', argNames=('left', 'right', 'bottom', 'top'), ) # /usr/include/GL/glu.h 313 gluPartialDisk = platform.createBaseFunction( 'gluPartialDisk', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric),GLdouble,GLdouble,GLint,GLint,GLdouble,GLdouble], doc='gluPartialDisk( POINTER(GLUquadric)(quad), GLdouble(inner), GLdouble(outer), GLint(slices), GLint(loops), GLdouble(start), GLdouble(sweep) ) -> None', argNames=('quad', 'inner', 'outer', 'slices', 'loops', 'start', 'sweep'), ) # /usr/include/GL/glu.h 314 gluPerspective = platform.createBaseFunction( 'gluPerspective', dll=platform.GLU, resultType=None, argTypes=[GLdouble,GLdouble,GLdouble,GLdouble], doc='gluPerspective( GLdouble(fovy), GLdouble(aspect), GLdouble(zNear), GLdouble(zFar) ) -> None', argNames=('fovy', 'aspect', 'zNear', 'zFar'), ) # /usr/include/GL/glu.h 315 gluPickMatrix = platform.createBaseFunction( 'gluPickMatrix', dll=platform.GLU, resultType=None, argTypes=[GLdouble,GLdouble,GLdouble,GLdouble,arrays.GLintArray], doc='gluPickMatrix( GLdouble(x), GLdouble(y), GLdouble(delX), GLdouble(delY), arrays.GLintArray(viewport) ) -> None', argNames=('x', 'y', 'delX', 'delY', 'viewport'), ) # /usr/include/GL/glu.h 316 gluProject = platform.createBaseFunction( 'gluProject', dll=platform.GLU, resultType=GLint, argTypes=[GLdouble,GLdouble,GLdouble,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLintArray,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray], doc='gluProject( GLdouble(objX), GLdouble(objY), GLdouble(objZ), arrays.GLdoubleArray(model), arrays.GLdoubleArray(proj), arrays.GLintArray(view), arrays.GLdoubleArray(winX), arrays.GLdoubleArray(winY), arrays.GLdoubleArray(winZ) ) -> GLint', argNames=('objX', 'objY', 'objZ', 'model', 'proj', 'view', 'winX', 'winY', 'winZ'), ) # /usr/include/GL/glu.h 317 gluPwlCurve = platform.createBaseFunction( 'gluPwlCurve', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUnurbs),GLint,arrays.GLfloatArray,GLint,GLenum], doc='gluPwlCurve( POINTER(GLUnurbs)(nurb), GLint(count), arrays.GLfloatArray(data), GLint(stride), GLenum(type) ) -> None', argNames=('nurb', 'count', 'data', 'stride', 'type'), ) # /usr/include/GL/glu.h 318 gluQuadricCallback = platform.createBaseFunction( 'gluQuadricCallback', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric),GLenum,_GLUfuncptr], doc='gluQuadricCallback( POINTER(GLUquadric)(quad), GLenum(which), _GLUfuncptr(CallBackFunc) ) -> None', argNames=('quad', 'which', 'CallBackFunc'), ) # /usr/include/GL/glu.h 319 gluQuadricDrawStyle = platform.createBaseFunction( 'gluQuadricDrawStyle', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric),GLenum], doc='gluQuadricDrawStyle( POINTER(GLUquadric)(quad), GLenum(draw) ) -> None', argNames=('quad', 'draw'), ) # /usr/include/GL/glu.h 320 gluQuadricNormals = platform.createBaseFunction( 'gluQuadricNormals', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric),GLenum], doc='gluQuadricNormals( POINTER(GLUquadric)(quad), GLenum(normal) ) -> None', argNames=('quad', 'normal'), ) # /usr/include/GL/glu.h 321 gluQuadricOrientation = platform.createBaseFunction( 'gluQuadricOrientation', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric),GLenum], doc='gluQuadricOrientation( POINTER(GLUquadric)(quad), GLenum(orientation) ) -> None', argNames=('quad', 'orientation'), ) # /usr/include/GL/glu.h 322 gluQuadricTexture = platform.createBaseFunction( 'gluQuadricTexture', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric),GLboolean], doc='gluQuadricTexture( POINTER(GLUquadric)(quad), GLboolean(texture) ) -> None', argNames=('quad', 'texture'), ) # /usr/include/GL/glu.h 323 gluScaleImage = platform.createBaseFunction( 'gluScaleImage', dll=platform.GLU, resultType=GLint, argTypes=[GLenum,GLsizei,GLsizei,GLenum,c_void_p,GLsizei,GLsizei,GLenum,POINTER(GLvoid)], doc='gluScaleImage( GLenum(format), GLsizei(wIn), GLsizei(hIn), GLenum(typeIn), c_void_p(dataIn), GLsizei(wOut), GLsizei(hOut), GLenum(typeOut), POINTER(GLvoid)(dataOut) ) -> GLint', argNames=('format', 'wIn', 'hIn', 'typeIn', 'dataIn', 'wOut', 'hOut', 'typeOut', 'dataOut'), ) # /usr/include/GL/glu.h 324 gluSphere = platform.createBaseFunction( 'gluSphere', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUquadric),GLdouble,GLint,GLint], doc='gluSphere( POINTER(GLUquadric)(quad), GLdouble(radius), GLint(slices), GLint(stacks) ) -> None', argNames=('quad', 'radius', 'slices', 'stacks'), ) # /usr/include/GL/glu.h 325 gluTessBeginContour = platform.createBaseFunction( 'gluTessBeginContour', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator)], doc='gluTessBeginContour( POINTER(GLUtesselator)(tess) ) -> None', argNames=('tess',), ) # /usr/include/GL/glu.h 326 gluTessBeginPolygon = platform.createBaseFunction( 'gluTessBeginPolygon', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator),POINTER(GLvoid)], doc='gluTessBeginPolygon( POINTER(GLUtesselator)(tess), POINTER(GLvoid)(data) ) -> None', argNames=('tess', 'data'), ) # /usr/include/GL/glu.h 327 gluTessCallback = platform.createBaseFunction( 'gluTessCallback', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator),GLenum,_GLUfuncptr], doc='gluTessCallback( POINTER(GLUtesselator)(tess), GLenum(which), _GLUfuncptr(CallBackFunc) ) -> None', argNames=('tess', 'which', 'CallBackFunc'), ) # /usr/include/GL/glu.h 328 gluTessEndContour = platform.createBaseFunction( 'gluTessEndContour', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator)], doc='gluTessEndContour( POINTER(GLUtesselator)(tess) ) -> None', argNames=('tess',), ) # /usr/include/GL/glu.h 329 gluTessEndPolygon = platform.createBaseFunction( 'gluTessEndPolygon', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator)], doc='gluTessEndPolygon( POINTER(GLUtesselator)(tess) ) -> None', argNames=('tess',), ) # /usr/include/GL/glu.h 330 gluTessNormal = platform.createBaseFunction( 'gluTessNormal', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator),GLdouble,GLdouble,GLdouble], doc='gluTessNormal( POINTER(GLUtesselator)(tess), GLdouble(valueX), GLdouble(valueY), GLdouble(valueZ) ) -> None', argNames=('tess', 'valueX', 'valueY', 'valueZ'), ) # /usr/include/GL/glu.h 331 gluTessProperty = platform.createBaseFunction( 'gluTessProperty', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator),GLenum,GLdouble], doc='gluTessProperty( POINTER(GLUtesselator)(tess), GLenum(which), GLdouble(data) ) -> None', argNames=('tess', 'which', 'data'), ) # /usr/include/GL/glu.h 332 gluTessVertex = platform.createBaseFunction( 'gluTessVertex', dll=platform.GLU, resultType=None, argTypes=[POINTER(GLUtesselator),arrays.GLdoubleArray,POINTER(GLvoid)], doc='gluTessVertex( POINTER(GLUtesselator)(tess), arrays.GLdoubleArray(location), POINTER(GLvoid)(data) ) -> None', argNames=('tess', 'location', 'data'), ) # /usr/include/GL/glu.h 333 gluUnProject = platform.createBaseFunction( 'gluUnProject', dll=platform.GLU, resultType=GLint, argTypes=[GLdouble,GLdouble,GLdouble,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLintArray,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray], doc='gluUnProject( GLdouble(winX), GLdouble(winY), GLdouble(winZ), arrays.GLdoubleArray(model), arrays.GLdoubleArray(proj), arrays.GLintArray(view), arrays.GLdoubleArray(objX), arrays.GLdoubleArray(objY), arrays.GLdoubleArray(objZ) ) -> GLint', argNames=('winX', 'winY', 'winZ', 'model', 'proj', 'view', 'objX', 'objY', 'objZ'), ) # /usr/include/GL/glu.h 334 gluUnProject4 = platform.createBaseFunction( 'gluUnProject4', dll=platform.GLU, resultType=GLint, argTypes=[GLdouble,GLdouble,GLdouble,GLdouble,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLintArray,GLdouble,GLdouble,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray,arrays.GLdoubleArray], doc='gluUnProject4( GLdouble(winX), GLdouble(winY), GLdouble(winZ), GLdouble(clipW), arrays.GLdoubleArray(model), arrays.GLdoubleArray(proj), arrays.GLintArray(view), GLdouble(nearVal), GLdouble(farVal), arrays.GLdoubleArray(objX), arrays.GLdoubleArray(objY), arrays.GLdoubleArray(objZ), arrays.GLdoubleArray(objW) ) -> GLint', argNames=('winX', 'winY', 'winZ', 'clipW', 'model', 'proj', 'view', 'nearVal', 'farVal', 'objX', 'objY', 'objZ', 'objW'), ) __all__ = [ 'GLU_AUTO_LOAD_MATRIX', 'GLU_BEGIN', 'GLU_CCW', 'GLU_CULLING', 'GLU_CW', 'GLU_DISPLAY_MODE', 'GLU_DOMAIN_DISTANCE', 'GLU_EDGE_FLAG', 'GLU_END', 'GLU_ERROR', 'GLU_EXTENSIONS', 'GLU_EXTERIOR', 'GLU_FALSE', 'GLU_FILL', 'GLU_FLAT', 'GLU_INCOMPATIBLE_GL_VERSION', 'GLU_INSIDE', 'GLU_INTERIOR', 'GLU_INVALID_ENUM', 'GLU_INVALID_OPERATION', 'GLU_INVALID_VALUE', 'GLU_LINE', 'GLU_MAP1_TRIM_2', 'GLU_MAP1_TRIM_3', 'GLU_NONE', 'GLU_NURBS_BEGIN', 'GLU_NURBS_BEGIN_DATA', 'GLU_NURBS_BEGIN_DATA_EXT', 'GLU_NURBS_BEGIN_EXT', 'GLU_NURBS_COLOR', 'GLU_NURBS_COLOR_DATA', 'GLU_NURBS_COLOR_DATA_EXT', 'GLU_NURBS_COLOR_EXT', 'GLU_NURBS_END', 'GLU_NURBS_END_DATA', 'GLU_NURBS_END_DATA_EXT', 'GLU_NURBS_END_EXT', 'GLU_NURBS_ERROR', 'GLU_NURBS_ERROR1', 'GLU_NURBS_ERROR10', 'GLU_NURBS_ERROR11', 'GLU_NURBS_ERROR12', 'GLU_NURBS_ERROR13', 'GLU_NURBS_ERROR14', 'GLU_NURBS_ERROR15', 'GLU_NURBS_ERROR16', 'GLU_NURBS_ERROR17', 'GLU_NURBS_ERROR18', 'GLU_NURBS_ERROR19', 'GLU_NURBS_ERROR2', 'GLU_NURBS_ERROR20', 'GLU_NURBS_ERROR21', 'GLU_NURBS_ERROR22', 'GLU_NURBS_ERROR23', 'GLU_NURBS_ERROR24', 'GLU_NURBS_ERROR25', 'GLU_NURBS_ERROR26', 'GLU_NURBS_ERROR27', 'GLU_NURBS_ERROR28', 'GLU_NURBS_ERROR29', 'GLU_NURBS_ERROR3', 'GLU_NURBS_ERROR30', 'GLU_NURBS_ERROR31', 'GLU_NURBS_ERROR32', 'GLU_NURBS_ERROR33', 'GLU_NURBS_ERROR34', 'GLU_NURBS_ERROR35', 'GLU_NURBS_ERROR36', 'GLU_NURBS_ERROR37', 'GLU_NURBS_ERROR4', 'GLU_NURBS_ERROR5', 'GLU_NURBS_ERROR6', 'GLU_NURBS_ERROR7', 'GLU_NURBS_ERROR8', 'GLU_NURBS_ERROR9', 'GLU_NURBS_MODE', 'GLU_NURBS_MODE_EXT', 'GLU_NURBS_NORMAL', 'GLU_NURBS_NORMAL_DATA', 'GLU_NURBS_NORMAL_DATA_EXT', 'GLU_NURBS_NORMAL_EXT', 'GLU_NURBS_RENDERER', 'GLU_NURBS_RENDERER_EXT', 'GLU_NURBS_TESSELLATOR', 'GLU_NURBS_TESSELLATOR_EXT', 'GLU_NURBS_TEXTURE_COORD', 'GLU_NURBS_TEXTURE_COORD_DATA', 'GLU_NURBS_TEX_COORD_DATA_EXT', 'GLU_NURBS_TEX_COORD_EXT', 'GLU_NURBS_VERTEX', 'GLU_NURBS_VERTEX_DATA', 'GLU_NURBS_VERTEX_DATA_EXT', 'GLU_NURBS_VERTEX_EXT', 'GLU_OBJECT_PARAMETRIC_ERROR', 'GLU_OBJECT_PARAMETRIC_ERROR_EXT', 'GLU_OBJECT_PATH_LENGTH', 'GLU_OBJECT_PATH_LENGTH_EXT', 'GLU_OUTLINE_PATCH', 'GLU_OUTLINE_POLYGON', 'GLU_OUTSIDE', 'GLU_OUT_OF_MEMORY', 'GLU_PARAMETRIC_ERROR', 'GLU_PARAMETRIC_TOLERANCE', 'GLU_PATH_LENGTH', 'GLU_POINT', 'GLU_SAMPLING_METHOD', 'GLU_SAMPLING_TOLERANCE', 'GLU_SILHOUETTE', 'GLU_SMOOTH', 'GLU_TESS_BEGIN', 'GLU_TESS_BEGIN_DATA', 'GLU_TESS_BOUNDARY_ONLY', 'GLU_TESS_COMBINE', 'GLU_TESS_COMBINE_DATA', 'GLU_TESS_COORD_TOO_LARGE', 'GLU_TESS_EDGE_FLAG', 'GLU_TESS_EDGE_FLAG_DATA', 'GLU_TESS_END', 'GLU_TESS_END_DATA', 'GLU_TESS_ERROR', 'GLU_TESS_ERROR1', 'GLU_TESS_ERROR2', 'GLU_TESS_ERROR3', 'GLU_TESS_ERROR4', 'GLU_TESS_ERROR5', 'GLU_TESS_ERROR6', 'GLU_TESS_ERROR7', 'GLU_TESS_ERROR8', 'GLU_TESS_ERROR_DATA', 'GLU_TESS_MAX_COORD', 'GLU_TESS_MISSING_BEGIN_CONTOUR', 'GLU_TESS_MISSING_BEGIN_POLYGON', 'GLU_TESS_MISSING_END_CONTOUR', 'GLU_TESS_MISSING_END_POLYGON', 'GLU_TESS_NEED_COMBINE_CALLBACK', 'GLU_TESS_TOLERANCE', 'GLU_TESS_VERTEX', 'GLU_TESS_VERTEX_DATA', 'GLU_TESS_WINDING_ABS_GEQ_TWO', 'GLU_TESS_WINDING_NEGATIVE', 'GLU_TESS_WINDING_NONZERO', 'GLU_TESS_WINDING_ODD', 'GLU_TESS_WINDING_POSITIVE', 'GLU_TESS_WINDING_RULE', 'GLU_TRUE', 'GLU_UNKNOWN', 'GLU_U_STEP', 'GLU_VERSION', 'GLU_VERSION_1_1', 'GLU_VERSION_1_2', 'GLU_VERSION_1_3', 'GLU_VERTEX', 'GLU_V_STEP', 'GLUnurbs', 'GLUnurbsObj', 'GLUquadric', 'GLUquadricObj', 'GLUtesselator', 'GLUtesselatorObj', 'GLUtriangulatorObj', 'GLboolean', 'GLdouble', 'GLenum', 'GLfloat', 'GLint', 'GLsizei', 'GLubyte', 'GLvoid', '_GLUfuncptr', 'gluBeginCurve', 'gluBeginPolygon', 'gluBeginSurface', 'gluBeginTrim', 'gluBuild1DMipmapLevels', 'gluBuild1DMipmaps', 'gluBuild2DMipmapLevels', 'gluBuild2DMipmaps', 'gluBuild3DMipmapLevels', 'gluBuild3DMipmaps', 'gluCheckExtension', 'gluCylinder', 'gluDeleteNurbsRenderer', 'gluDeleteQuadric', 'gluDeleteTess', 'gluDisk', 'gluEndCurve', 'gluEndPolygon', 'gluEndSurface', 'gluEndTrim', 'gluErrorString', 'gluGetNurbsProperty', 'gluGetString', 'gluGetTessProperty', 'gluLoadSamplingMatrices', 'gluLookAt', 'gluNewNurbsRenderer', 'gluNewQuadric', 'gluNewTess', 'gluNextContour', 'gluNurbsCallback', 'gluNurbsCallbackData', 'gluNurbsCallbackDataEXT', 'gluNurbsCurve', 'gluNurbsProperty', 'gluNurbsSurface', 'gluOrtho2D', 'gluPartialDisk', 'gluPerspective', 'gluPickMatrix', 'gluProject', 'gluPwlCurve', 'gluQuadricCallback', 'gluQuadricDrawStyle', 'gluQuadricNormals', 'gluQuadricOrientation', 'gluQuadricTexture', 'gluScaleImage', 'gluSphere', 'gluTessBeginContour', 'gluTessBeginPolygon', 'gluTessCallback', 'gluTessEndContour', 'gluTessEndPolygon', 'gluTessNormal', 'gluTessProperty', 'gluTessVertex', 'gluUnProject', 'gluUnProject4' ] PyOpenGL-3.0.2/OpenGL/raw/GLU/constants.py0000644000175000001440000003202012025001653021036 0ustar mcfletchusers00000000000000"""Constants for OpenGL.GLU Automatically generated by the generateraw script, do not edit! """ from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid GLU_AUTO_LOAD_MATRIX = Constant( 'GLU_AUTO_LOAD_MATRIX', 100200) GLU_BEGIN = Constant( 'GLU_BEGIN', 100100) GLU_CCW = Constant( 'GLU_CCW', 100121) GLU_CULLING = Constant( 'GLU_CULLING', 100201) GLU_CW = Constant( 'GLU_CW', 100120) GLU_DISPLAY_MODE = Constant( 'GLU_DISPLAY_MODE', 100204) GLU_DOMAIN_DISTANCE = Constant( 'GLU_DOMAIN_DISTANCE', 100217) GLU_EDGE_FLAG = Constant( 'GLU_EDGE_FLAG', 100104) GLU_END = Constant( 'GLU_END', 100102) GLU_ERROR = Constant( 'GLU_ERROR', 100103) GLU_EXTENSIONS = Constant( 'GLU_EXTENSIONS', 100801) GLU_EXTERIOR = Constant( 'GLU_EXTERIOR', 100123) GLU_FALSE = Constant( 'GLU_FALSE', 0) GLU_FILL = Constant( 'GLU_FILL', 100012) GLU_FLAT = Constant( 'GLU_FLAT', 100001) GLU_INCOMPATIBLE_GL_VERSION = Constant( 'GLU_INCOMPATIBLE_GL_VERSION', 100903) GLU_INSIDE = Constant( 'GLU_INSIDE', 100021) GLU_INTERIOR = Constant( 'GLU_INTERIOR', 100122) GLU_INVALID_ENUM = Constant( 'GLU_INVALID_ENUM', 100900) GLU_INVALID_OPERATION = Constant( 'GLU_INVALID_OPERATION', 100904) GLU_INVALID_VALUE = Constant( 'GLU_INVALID_VALUE', 100901) GLU_LINE = Constant( 'GLU_LINE', 100011) GLU_MAP1_TRIM_2 = Constant( 'GLU_MAP1_TRIM_2', 100210) GLU_MAP1_TRIM_3 = Constant( 'GLU_MAP1_TRIM_3', 100211) GLU_NONE = Constant( 'GLU_NONE', 100002) GLU_NURBS_BEGIN = Constant( 'GLU_NURBS_BEGIN', 100164) GLU_NURBS_BEGIN_DATA = Constant( 'GLU_NURBS_BEGIN_DATA', 100170) GLU_NURBS_BEGIN_DATA_EXT = Constant( 'GLU_NURBS_BEGIN_DATA_EXT', 100170) GLU_NURBS_BEGIN_EXT = Constant( 'GLU_NURBS_BEGIN_EXT', 100164) GLU_NURBS_COLOR = Constant( 'GLU_NURBS_COLOR', 100167) GLU_NURBS_COLOR_DATA = Constant( 'GLU_NURBS_COLOR_DATA', 100173) GLU_NURBS_COLOR_DATA_EXT = Constant( 'GLU_NURBS_COLOR_DATA_EXT', 100173) GLU_NURBS_COLOR_EXT = Constant( 'GLU_NURBS_COLOR_EXT', 100167) GLU_NURBS_END = Constant( 'GLU_NURBS_END', 100169) GLU_NURBS_END_DATA = Constant( 'GLU_NURBS_END_DATA', 100175) GLU_NURBS_END_DATA_EXT = Constant( 'GLU_NURBS_END_DATA_EXT', 100175) GLU_NURBS_END_EXT = Constant( 'GLU_NURBS_END_EXT', 100169) GLU_NURBS_ERROR = Constant( 'GLU_NURBS_ERROR', 100103) GLU_NURBS_ERROR1 = Constant( 'GLU_NURBS_ERROR1', 100251) GLU_NURBS_ERROR10 = Constant( 'GLU_NURBS_ERROR10', 100260) GLU_NURBS_ERROR11 = Constant( 'GLU_NURBS_ERROR11', 100261) GLU_NURBS_ERROR12 = Constant( 'GLU_NURBS_ERROR12', 100262) GLU_NURBS_ERROR13 = Constant( 'GLU_NURBS_ERROR13', 100263) GLU_NURBS_ERROR14 = Constant( 'GLU_NURBS_ERROR14', 100264) GLU_NURBS_ERROR15 = Constant( 'GLU_NURBS_ERROR15', 100265) GLU_NURBS_ERROR16 = Constant( 'GLU_NURBS_ERROR16', 100266) GLU_NURBS_ERROR17 = Constant( 'GLU_NURBS_ERROR17', 100267) GLU_NURBS_ERROR18 = Constant( 'GLU_NURBS_ERROR18', 100268) GLU_NURBS_ERROR19 = Constant( 'GLU_NURBS_ERROR19', 100269) GLU_NURBS_ERROR2 = Constant( 'GLU_NURBS_ERROR2', 100252) GLU_NURBS_ERROR20 = Constant( 'GLU_NURBS_ERROR20', 100270) GLU_NURBS_ERROR21 = Constant( 'GLU_NURBS_ERROR21', 100271) GLU_NURBS_ERROR22 = Constant( 'GLU_NURBS_ERROR22', 100272) GLU_NURBS_ERROR23 = Constant( 'GLU_NURBS_ERROR23', 100273) GLU_NURBS_ERROR24 = Constant( 'GLU_NURBS_ERROR24', 100274) GLU_NURBS_ERROR25 = Constant( 'GLU_NURBS_ERROR25', 100275) GLU_NURBS_ERROR26 = Constant( 'GLU_NURBS_ERROR26', 100276) GLU_NURBS_ERROR27 = Constant( 'GLU_NURBS_ERROR27', 100277) GLU_NURBS_ERROR28 = Constant( 'GLU_NURBS_ERROR28', 100278) GLU_NURBS_ERROR29 = Constant( 'GLU_NURBS_ERROR29', 100279) GLU_NURBS_ERROR3 = Constant( 'GLU_NURBS_ERROR3', 100253) GLU_NURBS_ERROR30 = Constant( 'GLU_NURBS_ERROR30', 100280) GLU_NURBS_ERROR31 = Constant( 'GLU_NURBS_ERROR31', 100281) GLU_NURBS_ERROR32 = Constant( 'GLU_NURBS_ERROR32', 100282) GLU_NURBS_ERROR33 = Constant( 'GLU_NURBS_ERROR33', 100283) GLU_NURBS_ERROR34 = Constant( 'GLU_NURBS_ERROR34', 100284) GLU_NURBS_ERROR35 = Constant( 'GLU_NURBS_ERROR35', 100285) GLU_NURBS_ERROR36 = Constant( 'GLU_NURBS_ERROR36', 100286) GLU_NURBS_ERROR37 = Constant( 'GLU_NURBS_ERROR37', 100287) GLU_NURBS_ERROR4 = Constant( 'GLU_NURBS_ERROR4', 100254) GLU_NURBS_ERROR5 = Constant( 'GLU_NURBS_ERROR5', 100255) GLU_NURBS_ERROR6 = Constant( 'GLU_NURBS_ERROR6', 100256) GLU_NURBS_ERROR7 = Constant( 'GLU_NURBS_ERROR7', 100257) GLU_NURBS_ERROR8 = Constant( 'GLU_NURBS_ERROR8', 100258) GLU_NURBS_ERROR9 = Constant( 'GLU_NURBS_ERROR9', 100259) GLU_NURBS_MODE = Constant( 'GLU_NURBS_MODE', 100160) GLU_NURBS_MODE_EXT = Constant( 'GLU_NURBS_MODE_EXT', 100160) GLU_NURBS_NORMAL = Constant( 'GLU_NURBS_NORMAL', 100166) GLU_NURBS_NORMAL_DATA = Constant( 'GLU_NURBS_NORMAL_DATA', 100172) GLU_NURBS_NORMAL_DATA_EXT = Constant( 'GLU_NURBS_NORMAL_DATA_EXT', 100172) GLU_NURBS_NORMAL_EXT = Constant( 'GLU_NURBS_NORMAL_EXT', 100166) GLU_NURBS_RENDERER = Constant( 'GLU_NURBS_RENDERER', 100162) GLU_NURBS_RENDERER_EXT = Constant( 'GLU_NURBS_RENDERER_EXT', 100162) GLU_NURBS_TESSELLATOR = Constant( 'GLU_NURBS_TESSELLATOR', 100161) GLU_NURBS_TESSELLATOR_EXT = Constant( 'GLU_NURBS_TESSELLATOR_EXT', 100161) GLU_NURBS_TEXTURE_COORD = Constant( 'GLU_NURBS_TEXTURE_COORD', 100168) GLU_NURBS_TEXTURE_COORD_DATA = Constant( 'GLU_NURBS_TEXTURE_COORD_DATA', 100174) GLU_NURBS_TEX_COORD_DATA_EXT = Constant( 'GLU_NURBS_TEX_COORD_DATA_EXT', 100174) GLU_NURBS_TEX_COORD_EXT = Constant( 'GLU_NURBS_TEX_COORD_EXT', 100168) GLU_NURBS_VERTEX = Constant( 'GLU_NURBS_VERTEX', 100165) GLU_NURBS_VERTEX_DATA = Constant( 'GLU_NURBS_VERTEX_DATA', 100171) GLU_NURBS_VERTEX_DATA_EXT = Constant( 'GLU_NURBS_VERTEX_DATA_EXT', 100171) GLU_NURBS_VERTEX_EXT = Constant( 'GLU_NURBS_VERTEX_EXT', 100165) GLU_OBJECT_PARAMETRIC_ERROR = Constant( 'GLU_OBJECT_PARAMETRIC_ERROR', 100208) GLU_OBJECT_PARAMETRIC_ERROR_EXT = Constant( 'GLU_OBJECT_PARAMETRIC_ERROR_EXT', 100208) GLU_OBJECT_PATH_LENGTH = Constant( 'GLU_OBJECT_PATH_LENGTH', 100209) GLU_OBJECT_PATH_LENGTH_EXT = Constant( 'GLU_OBJECT_PATH_LENGTH_EXT', 100209) GLU_OUTLINE_PATCH = Constant( 'GLU_OUTLINE_PATCH', 100241) GLU_OUTLINE_POLYGON = Constant( 'GLU_OUTLINE_POLYGON', 100240) GLU_OUTSIDE = Constant( 'GLU_OUTSIDE', 100020) GLU_OUT_OF_MEMORY = Constant( 'GLU_OUT_OF_MEMORY', 100902) GLU_PARAMETRIC_ERROR = Constant( 'GLU_PARAMETRIC_ERROR', 100216) GLU_PARAMETRIC_TOLERANCE = Constant( 'GLU_PARAMETRIC_TOLERANCE', 100202) GLU_PATH_LENGTH = Constant( 'GLU_PATH_LENGTH', 100215) GLU_POINT = Constant( 'GLU_POINT', 100010) GLU_SAMPLING_METHOD = Constant( 'GLU_SAMPLING_METHOD', 100205) GLU_SAMPLING_TOLERANCE = Constant( 'GLU_SAMPLING_TOLERANCE', 100203) GLU_SILHOUETTE = Constant( 'GLU_SILHOUETTE', 100013) GLU_SMOOTH = Constant( 'GLU_SMOOTH', 100000) GLU_TESS_BEGIN = Constant( 'GLU_TESS_BEGIN', 100100) GLU_TESS_BEGIN_DATA = Constant( 'GLU_TESS_BEGIN_DATA', 100106) GLU_TESS_BOUNDARY_ONLY = Constant( 'GLU_TESS_BOUNDARY_ONLY', 100141) GLU_TESS_COMBINE = Constant( 'GLU_TESS_COMBINE', 100105) GLU_TESS_COMBINE_DATA = Constant( 'GLU_TESS_COMBINE_DATA', 100111) GLU_TESS_COORD_TOO_LARGE = Constant( 'GLU_TESS_COORD_TOO_LARGE', 100155) GLU_TESS_EDGE_FLAG = Constant( 'GLU_TESS_EDGE_FLAG', 100104) GLU_TESS_EDGE_FLAG_DATA = Constant( 'GLU_TESS_EDGE_FLAG_DATA', 100110) GLU_TESS_END = Constant( 'GLU_TESS_END', 100102) GLU_TESS_END_DATA = Constant( 'GLU_TESS_END_DATA', 100108) GLU_TESS_ERROR = Constant( 'GLU_TESS_ERROR', 100103) GLU_TESS_ERROR1 = Constant( 'GLU_TESS_ERROR1', 100151) GLU_TESS_ERROR2 = Constant( 'GLU_TESS_ERROR2', 100152) GLU_TESS_ERROR3 = Constant( 'GLU_TESS_ERROR3', 100153) GLU_TESS_ERROR4 = Constant( 'GLU_TESS_ERROR4', 100154) GLU_TESS_ERROR5 = Constant( 'GLU_TESS_ERROR5', 100155) GLU_TESS_ERROR6 = Constant( 'GLU_TESS_ERROR6', 100156) GLU_TESS_ERROR7 = Constant( 'GLU_TESS_ERROR7', 100157) GLU_TESS_ERROR8 = Constant( 'GLU_TESS_ERROR8', 100158) GLU_TESS_ERROR_DATA = Constant( 'GLU_TESS_ERROR_DATA', 100109) GLU_TESS_MAX_COORD = Constant( 'GLU_TESS_MAX_COORD', 9.9999999999999998e+149) GLU_TESS_MISSING_BEGIN_CONTOUR = Constant( 'GLU_TESS_MISSING_BEGIN_CONTOUR', 100152) GLU_TESS_MISSING_BEGIN_POLYGON = Constant( 'GLU_TESS_MISSING_BEGIN_POLYGON', 100151) GLU_TESS_MISSING_END_CONTOUR = Constant( 'GLU_TESS_MISSING_END_CONTOUR', 100154) GLU_TESS_MISSING_END_POLYGON = Constant( 'GLU_TESS_MISSING_END_POLYGON', 100153) GLU_TESS_NEED_COMBINE_CALLBACK = Constant( 'GLU_TESS_NEED_COMBINE_CALLBACK', 100156) GLU_TESS_TOLERANCE = Constant( 'GLU_TESS_TOLERANCE', 100142) GLU_TESS_VERTEX = Constant( 'GLU_TESS_VERTEX', 100101) GLU_TESS_VERTEX_DATA = Constant( 'GLU_TESS_VERTEX_DATA', 100107) GLU_TESS_WINDING_ABS_GEQ_TWO = Constant( 'GLU_TESS_WINDING_ABS_GEQ_TWO', 100134) GLU_TESS_WINDING_NEGATIVE = Constant( 'GLU_TESS_WINDING_NEGATIVE', 100133) GLU_TESS_WINDING_NONZERO = Constant( 'GLU_TESS_WINDING_NONZERO', 100131) GLU_TESS_WINDING_ODD = Constant( 'GLU_TESS_WINDING_ODD', 100130) GLU_TESS_WINDING_POSITIVE = Constant( 'GLU_TESS_WINDING_POSITIVE', 100132) GLU_TESS_WINDING_RULE = Constant( 'GLU_TESS_WINDING_RULE', 100140) GLU_TRUE = Constant( 'GLU_TRUE', 1) GLU_UNKNOWN = Constant( 'GLU_UNKNOWN', 100124) GLU_U_STEP = Constant( 'GLU_U_STEP', 100206) GLU_VERSION = Constant( 'GLU_VERSION', 100800) GLU_VERSION_1_1 = Constant( 'GLU_VERSION_1_1', 1) GLU_VERSION_1_2 = Constant( 'GLU_VERSION_1_2', 1) GLU_VERSION_1_3 = Constant( 'GLU_VERSION_1_3', 1) GLU_VERTEX = Constant( 'GLU_VERTEX', 100101) GLU_V_STEP = Constant( 'GLU_V_STEP', 100207) __all__ = [ 'GLU_AUTO_LOAD_MATRIX', 'GLU_BEGIN', 'GLU_CCW', 'GLU_CULLING', 'GLU_CW', 'GLU_DISPLAY_MODE', 'GLU_DOMAIN_DISTANCE', 'GLU_EDGE_FLAG', 'GLU_END', 'GLU_ERROR', 'GLU_EXTENSIONS', 'GLU_EXTERIOR', 'GLU_FALSE', 'GLU_FILL', 'GLU_FLAT', 'GLU_INCOMPATIBLE_GL_VERSION', 'GLU_INSIDE', 'GLU_INTERIOR', 'GLU_INVALID_ENUM', 'GLU_INVALID_OPERATION', 'GLU_INVALID_VALUE', 'GLU_LINE', 'GLU_MAP1_TRIM_2', 'GLU_MAP1_TRIM_3', 'GLU_NONE', 'GLU_NURBS_BEGIN', 'GLU_NURBS_BEGIN_DATA', 'GLU_NURBS_BEGIN_DATA_EXT', 'GLU_NURBS_BEGIN_EXT', 'GLU_NURBS_COLOR', 'GLU_NURBS_COLOR_DATA', 'GLU_NURBS_COLOR_DATA_EXT', 'GLU_NURBS_COLOR_EXT', 'GLU_NURBS_END', 'GLU_NURBS_END_DATA', 'GLU_NURBS_END_DATA_EXT', 'GLU_NURBS_END_EXT', 'GLU_NURBS_ERROR', 'GLU_NURBS_ERROR1', 'GLU_NURBS_ERROR10', 'GLU_NURBS_ERROR11', 'GLU_NURBS_ERROR12', 'GLU_NURBS_ERROR13', 'GLU_NURBS_ERROR14', 'GLU_NURBS_ERROR15', 'GLU_NURBS_ERROR16', 'GLU_NURBS_ERROR17', 'GLU_NURBS_ERROR18', 'GLU_NURBS_ERROR19', 'GLU_NURBS_ERROR2', 'GLU_NURBS_ERROR20', 'GLU_NURBS_ERROR21', 'GLU_NURBS_ERROR22', 'GLU_NURBS_ERROR23', 'GLU_NURBS_ERROR24', 'GLU_NURBS_ERROR25', 'GLU_NURBS_ERROR26', 'GLU_NURBS_ERROR27', 'GLU_NURBS_ERROR28', 'GLU_NURBS_ERROR29', 'GLU_NURBS_ERROR3', 'GLU_NURBS_ERROR30', 'GLU_NURBS_ERROR31', 'GLU_NURBS_ERROR32', 'GLU_NURBS_ERROR33', 'GLU_NURBS_ERROR34', 'GLU_NURBS_ERROR35', 'GLU_NURBS_ERROR36', 'GLU_NURBS_ERROR37', 'GLU_NURBS_ERROR4', 'GLU_NURBS_ERROR5', 'GLU_NURBS_ERROR6', 'GLU_NURBS_ERROR7', 'GLU_NURBS_ERROR8', 'GLU_NURBS_ERROR9', 'GLU_NURBS_MODE', 'GLU_NURBS_MODE_EXT', 'GLU_NURBS_NORMAL', 'GLU_NURBS_NORMAL_DATA', 'GLU_NURBS_NORMAL_DATA_EXT', 'GLU_NURBS_NORMAL_EXT', 'GLU_NURBS_RENDERER', 'GLU_NURBS_RENDERER_EXT', 'GLU_NURBS_TESSELLATOR', 'GLU_NURBS_TESSELLATOR_EXT', 'GLU_NURBS_TEXTURE_COORD', 'GLU_NURBS_TEXTURE_COORD_DATA', 'GLU_NURBS_TEX_COORD_DATA_EXT', 'GLU_NURBS_TEX_COORD_EXT', 'GLU_NURBS_VERTEX', 'GLU_NURBS_VERTEX_DATA', 'GLU_NURBS_VERTEX_DATA_EXT', 'GLU_NURBS_VERTEX_EXT', 'GLU_OBJECT_PARAMETRIC_ERROR', 'GLU_OBJECT_PARAMETRIC_ERROR_EXT', 'GLU_OBJECT_PATH_LENGTH', 'GLU_OBJECT_PATH_LENGTH_EXT', 'GLU_OUTLINE_PATCH', 'GLU_OUTLINE_POLYGON', 'GLU_OUTSIDE', 'GLU_OUT_OF_MEMORY', 'GLU_PARAMETRIC_ERROR', 'GLU_PARAMETRIC_TOLERANCE', 'GLU_PATH_LENGTH', 'GLU_POINT', 'GLU_SAMPLING_METHOD', 'GLU_SAMPLING_TOLERANCE', 'GLU_SILHOUETTE', 'GLU_SMOOTH', 'GLU_TESS_BEGIN', 'GLU_TESS_BEGIN_DATA', 'GLU_TESS_BOUNDARY_ONLY', 'GLU_TESS_COMBINE', 'GLU_TESS_COMBINE_DATA', 'GLU_TESS_COORD_TOO_LARGE', 'GLU_TESS_EDGE_FLAG', 'GLU_TESS_EDGE_FLAG_DATA', 'GLU_TESS_END', 'GLU_TESS_END_DATA', 'GLU_TESS_ERROR', 'GLU_TESS_ERROR1', 'GLU_TESS_ERROR2', 'GLU_TESS_ERROR3', 'GLU_TESS_ERROR4', 'GLU_TESS_ERROR5', 'GLU_TESS_ERROR6', 'GLU_TESS_ERROR7', 'GLU_TESS_ERROR8', 'GLU_TESS_ERROR_DATA', 'GLU_TESS_MAX_COORD', 'GLU_TESS_MISSING_BEGIN_CONTOUR', 'GLU_TESS_MISSING_BEGIN_POLYGON', 'GLU_TESS_MISSING_END_CONTOUR', 'GLU_TESS_MISSING_END_POLYGON', 'GLU_TESS_NEED_COMBINE_CALLBACK', 'GLU_TESS_TOLERANCE', 'GLU_TESS_VERTEX', 'GLU_TESS_VERTEX_DATA', 'GLU_TESS_WINDING_ABS_GEQ_TWO', 'GLU_TESS_WINDING_NEGATIVE', 'GLU_TESS_WINDING_NONZERO', 'GLU_TESS_WINDING_ODD', 'GLU_TESS_WINDING_POSITIVE', 'GLU_TESS_WINDING_RULE', 'GLU_TRUE', 'GLU_UNKNOWN', 'GLU_U_STEP', 'GLU_VERSION', 'GLU_VERSION_1_1', 'GLU_VERSION_1_2', 'GLU_VERSION_1_3', 'GLU_VERTEX', 'GLU_V_STEP' ] PyOpenGL-3.0.2/OpenGL/raw/GLX.py0000644000175000001440000000022312025001653017025 0ustar mcfletchusers00000000000000"""Collects the various WGL extensions together""" from OpenGL.raw._GLX import * from OpenGL.raw._GLX_ARB import * from OpenGL.raw._GLX_NV import *PyOpenGL-3.0.2/OpenGL/GLUT/0000755000175000001440000000000012032640120016002 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GLUT/fonts.py0000644000175000001440000000166212025001653017516 0ustar mcfletchusers00000000000000"""Load font "constants" (actually void *s) from the GLUT DLL""" from OpenGL import platform import logging log = logging.getLogger( 'OpenGL.GLUT.fonts' ) for name in [ 'GLUT_STROKE_ROMAN', 'GLUT_STROKE_MONO_ROMAN', 'GLUT_BITMAP_9_BY_15', 'GLUT_BITMAP_8_BY_13', 'GLUT_BITMAP_TIMES_ROMAN_10', 'GLUT_BITMAP_TIMES_ROMAN_24', 'GLUT_BITMAP_HELVETICA_10', 'GLUT_BITMAP_HELVETICA_12', 'GLUT_BITMAP_HELVETICA_18', ]: try: # Win32 just has pointers to values 1,2,3,etc # GLX has pointers to font structures... p = platform.getGLUTFontPointer( name ) except (ValueError,AttributeError), err: if platform.GLUT: log.warn( '''Unable to load font: %s''', name ) globals()[name] = None else: globals()[name] = p try: del p except NameError, err: pass try: del platform, name except NameError, err: pass PyOpenGL-3.0.2/OpenGL/GLUT/__init__.py0000644000175000001440000000044512025001653020122 0ustar mcfletchusers00000000000000"""The GLUT library implementation via ctypes""" from OpenGL.raw.GLUT import * from OpenGL.GLUT.special import * from OpenGL.GLUT.fonts import * from OpenGL.GLUT.freeglut import * from OpenGL.GLUT.osx import * if glutLeaveMainLoop: HAVE_FREEGLUT = True else: HAVE_FREEGLUT = False PyOpenGL-3.0.2/OpenGL/GLUT/special.py0000644000175000001440000003243312025001653020005 0ustar mcfletchusers00000000000000"""GLUT functions requiring special handling to provide Pythonic wrappers Note: GLUT callbacks are controlled by a flag in the platform module. The GLUT_GUARD_CALLBACKS flag controls whether to wrap passed functions with error-checking and context-validity checking code so that the callbacks will only trigger if there is a valid context. This is done so that systems such as Win32 will not continue running GLUT callbacks after the system has exited. Note: This is not a problem with FreeGLUT on Linux, so Linux does not add the extra overhead of the wrapper function. Note: This hack does *not* prevent hanging if there is no GLUT callback being triggered. I.e. if you create a GLUT program that doesn't explicitly call exit and doesn't call display or the like in a timer then your app will hang on exit on Win32. XXX the platform-specific stuff should be getting done in the platform module *not* in the module here! """ from OpenGL.platform import GLUT, CurrentContextIsValid, GLUT_GUARD_CALLBACKS from OpenGL import contextdata, error, platform, logs from OpenGL.raw import GLUT as simple from OpenGL._bytes import bytes, _NULL_8_BYTE, as_8_bit import ctypes, os, sys, traceback PLATFORM = platform.PLATFORM FUNCTION_TYPE = simple.CALLBACK_FUNCTION_TYPE log = logs.getLog( 'OpenGL.GLUT.special' ) if os.name == "nt": log.info( """Using NT-specific GLUT calls with exit callbacks""" ) _exitfunctype = FUNCTION_TYPE( None, ctypes.c_int ) __glutInitWithExit = platform.createBaseFunction( '__glutInitWithExit', dll=platform.GLUT, resultType=None, argTypes=[ctypes.POINTER(ctypes.c_int),ctypes.POINTER(ctypes.c_char_p),_exitfunctype], doc='glutInit( POINTER(c_int)(pargc), POINTER(STRING)(argv) ) -> None', argNames=('pargc', 'argv'), ) __glutCreateWindowWithExit = platform.createBaseFunction( '__glutCreateWindowWithExit', dll=platform.GLUT, resultType=ctypes.c_int, argTypes=[ctypes.c_char_p,_exitfunctype], doc='glutCreateWindow( STRING(title) ) -> c_int', argNames=('title',), ) __glutCreateMenuWithExit = platform.createBaseFunction( '__glutCreateMenuWithExit', dll=platform.GLUT, resultType=ctypes.c_int, argTypes=[FUNCTION_TYPE(None, ctypes.c_int),_exitfunctype], doc='glutCreateMenu( FUNCTION_TYPE(None, c_int)(callback) ) -> c_int', argNames=('callback',), ) else: # Linux, OSX, etceteras __glutInitWithExit = None if __glutInitWithExit: # Normal platforms + Win32 w/ FreeGLUT (SF#2813722) import sys _exitfunc = _exitfunctype(sys.exit) def _base_glutInit(pargc, argv): """Overrides base glut init with exit-function-aware version""" return __glutInitWithExit(pargc, argv, _exitfunc) def glutCreateWindow(title): """Create window with given title This is the Win32-specific version that handles registration of an exit-function handler """ return __glutCreateWindowWithExit(title, _exitfunc) def glutCreateMenu(callback): """Create menu with given callback This is the Win32-specific version that handles registration of an exit-function callback. """ return __glutCreateMenuWithExit(callback, _exitfunc) else: _base_glutInit = getattr(GLUT, 'glutInit', None) ##_base_glutDisplayFunc = GLUT.glutDisplayFunc ##_base_glutIdleFunc = GLUT.glutIdleFunc ##_base_glutEntryFunc = GLUT.glutEntryFunc ##_base_glutReshapeFunc = GLUT.glutReshapeFunc _base_glutDestroyWindow = getattr(GLUT, 'glutDestroyWindow', None) class GLUTCallback( object ): """Class implementing GLUT Callback registration functions""" def __init__( self, typeName, parameterTypes, parameterNames ): """Initialise the glut callback instance""" self.typeName = typeName def describe( typ, name ): return '(int) %s'%(name) self.__doc__ = """Specify handler for GLUT %r events def handler( %s ): return None"""%( typeName, ", ".join([ describe( typ,name ) for (typ,name) in zip( parameterTypes, parameterNames ) ])) try: self.wrappedOperation = getattr( GLUT, 'glut%sFunc'%(typeName) ) except AttributeError, err: def failFunction( *args, **named ): from OpenGL import error raise error.NullFunctionError( """Undefined GLUT callback function %s, check for bool(%s) before calling"""%( typeName, 'glut%sFunc'%(typeName), ) ) self.wrappedOperation = failFunction self.callbackType = FUNCTION_TYPE( None, *parameterTypes ) self.CONTEXT_DATA_KEY = 'glut%sFunc'%(typeName, ) argNames = ('function',) def __call__( self, function, *args ): if GLUT_GUARD_CALLBACKS and hasattr( function,'__call__' ): def safeCall( *args, **named ): """Safe calling of GUI callbacks, exits on failures""" try: if not CurrentContextIsValid(): raise RuntimeError( """No valid context!""" ) return function( *args, **named ) except Exception, err: traceback.print_exc() sys.stderr.write( """GLUT %s callback %s with %s,%s failed: returning None %s\n"""%( self.typeName, function, args, named, err, )) os._exit(1) #return None finalFunction = safeCall else: finalFunction = function if hasattr( finalFunction,'__call__' ): cCallback = self.callbackType( finalFunction ) else: cCallback = function # keep the function alive as long as the cCallback is... #cCallback.function = function contextdata.setValue( self.CONTEXT_DATA_KEY, cCallback ) self.wrappedOperation( cCallback, *args ) return cCallback class GLUTTimerCallback( GLUTCallback ): """GLUT timer callbacks (completely nonstandard wrt other GLUT callbacks)""" def __call__( self, milliseconds, function, value ): cCallback = self.callbackType( function ) # timers should de-register as soon as they are called... # Note: there's no good key to use! we want to allow for # multiple instances of the same function with the same value # which means we have nothing that can store it properly... callbacks = contextdata.getValue( self.CONTEXT_DATA_KEY ) if callbacks is None: callbacks = [] contextdata.setValue( self.CONTEXT_DATA_KEY, callbacks ) def deregister( value ): try: function( value ) finally: for item in callbacks: if item.function is deregister: callbacks.remove( item ) item.function = None break if not callbacks: contextdata.delValue( self.CONTEXT_DATA_KEY ) cCallback = self.callbackType( deregister ) cCallback.function = deregister callbacks.append( cCallback ) self.wrappedOperation( milliseconds, cCallback, value ) return cCallback class GLUTMenuCallback( object ): """Place to collect the GLUT Menu manipulation special code""" callbackType = FUNCTION_TYPE( ctypes.c_int, ctypes.c_int ) def glutCreateMenu( cls, func ): """Create a new (current) menu, return small integer identifier func( int ) -- Function taking a single integer reflecting the user's choice, the value passed to glutAddMenuEntry return menuID (small integer) """ cCallback = cls.callbackType( func ) menu = simple.glutCreateMenu( cCallback ) contextdata.setValue( ('menucallback',menu), (cCallback,func) ) return menu glutCreateMenu.argNames = [ 'func' ] glutCreateMenu = classmethod( glutCreateMenu ) def glutDestroyMenu( cls, menu ): """Destroy (cleanup) the given menu Deregister's the interal pointer to the menu callback returns None """ result = simple.glutDestroyMenu( menu ) contextdata.delValue( ('menucallback',menu) ) return result glutDestroyMenu.argNames = [ 'menu' ] glutDestroyMenu = classmethod( glutDestroyMenu ) glutCreateMenu = GLUTMenuCallback.glutCreateMenu #glutCreateMenu.wrappedOperation = simple.glutCreateMenu glutDestroyMenu = GLUTMenuCallback.glutDestroyMenu #glutDestroyMenu.wrappedOperation = simple.glutDestroyMenu glutButtonBoxFunc = GLUTCallback( 'ButtonBox', (ctypes.c_int,ctypes.c_int), ('button','state'), ) glutDialsFunc = GLUTCallback( 'Dials', (ctypes.c_int,ctypes.c_int), ('dial','value'), ) glutDisplayFunc = GLUTCallback( 'Display', (), (), ) glutEntryFunc = GLUTCallback( 'Entry', (ctypes.c_int,), ('state',), ) glutIdleFunc = GLUTCallback( 'Idle', (), (), ) glutJoystickFunc = GLUTCallback( 'Joystick', (ctypes.c_uint,ctypes.c_int,ctypes.c_int,ctypes.c_int), ('buttonMask','x','y','z'), ) glutKeyboardFunc = GLUTCallback( 'Keyboard', (ctypes.c_char,ctypes.c_int,ctypes.c_int), ('key','x','y'), ) glutKeyboardUpFunc = GLUTCallback( 'KeyboardUp', (ctypes.c_char,ctypes.c_int,ctypes.c_int), ('key','x','y'), ) glutMenuStatusFunc = GLUTCallback( 'MenuStatus', (ctypes.c_int,ctypes.c_int,ctypes.c_int), ('status','x','y'), ) glutMenuStateFunc = GLUTCallback( 'MenuState', (ctypes.c_int,), ('status',), ) glutMotionFunc = GLUTCallback( 'Motion', (ctypes.c_int,ctypes.c_int), ('x','y'), ) glutMouseFunc = GLUTCallback( 'Mouse', (ctypes.c_int,ctypes.c_int,ctypes.c_int,ctypes.c_int), ('button','state','x','y'), ) glutOverlayDisplayFunc = GLUTCallback( 'OverlayDisplay', (), (), ) glutPassiveMotionFunc = GLUTCallback( 'PassiveMotion', (ctypes.c_int,ctypes.c_int), ('x','y'), ) glutReshapeFunc = GLUTCallback( 'Reshape', (ctypes.c_int,ctypes.c_int), ('width','height'), ) glutSpaceballButtonFunc = GLUTCallback( 'SpaceballButton', (ctypes.c_int,ctypes.c_int), ('button','state'), ) glutSpaceballMotionFunc = GLUTCallback( 'SpaceballMotion', (ctypes.c_int,ctypes.c_int,ctypes.c_int), ('x','y','z'), ) glutSpaceballRotateFunc = GLUTCallback( 'SpaceballRotate', (ctypes.c_int,ctypes.c_int,ctypes.c_int), ('x','y','z'), ) glutSpecialFunc = GLUTCallback( 'Special', (ctypes.c_int,ctypes.c_int,ctypes.c_int), ('key','x','y'), ) glutSpecialUpFunc = GLUTCallback( 'SpecialUp', (ctypes.c_int,ctypes.c_int,ctypes.c_int), ('key','x','y'), ) glutTabletButtonFunc = GLUTCallback( 'TabletButton', (ctypes.c_int,ctypes.c_int,ctypes.c_int,ctypes.c_int), ('button','state','x','y',), ) glutTabletButtonFunc = GLUTCallback( 'TabletButton', (ctypes.c_int,ctypes.c_int,ctypes.c_int,ctypes.c_int), ('button','state','x','y',), ) glutTabletMotionFunc = GLUTCallback( 'TabletMotion', (ctypes.c_int,ctypes.c_int), ('x','y',), ) glutVisibilityFunc = GLUTCallback( 'Visibility', (ctypes.c_int,), ('state',), ) glutWindowStatusFunc = GLUTCallback( 'WindowStatus', (ctypes.c_int,), ('state',), ) # glutTimerFunc is unlike any other GLUT callback-registration... glutTimerFunc = GLUTTimerCallback( 'Timer', (ctypes.c_int,), ('value',), ) INITIALIZED = False def glutInit( *args ): """Initialise the GLUT library""" global INITIALIZED if INITIALIZED: return args INITIALIZED = True if args: arg,args = args[0],args[1:] count = None if isinstance(arg, (int,long)): # raw API style, (count, values) count = arg if count != len(args): raise ValueError( """Specified count of %s does not match length (%s) of argument list %s"""%( count, len(args), args, )) elif isinstance( arg, (str,unicode)): # passing in a sequence of strings as individual arguments args = (arg,)+args count = len(args) else: args = arg count = len(args) else: count=0 args = [] args = [as_8_bit(x) for x in args] if not count: count, args = 1, ['foo'] holder = (ctypes.c_char_p * len(args))() for i,arg in enumerate(args): holder[i] = arg count = ctypes.c_int( count ) import os currentDirectory = os.getcwd() try: # XXX need to check for error condition here... _base_glutInit( ctypes.byref(count), holder ) finally: os.chdir( currentDirectory ) return [ str(holder[i]) for i in range( count.value ) ] glutInit.wrappedOperation = simple.glutInit def glutDestroyWindow( window ): """Want to destroy the window, we need to do some cleanup...""" context = 0 try: GLUT.glutSetWindow(window) context = contextdata.getContext() result = contextdata.cleanupContext( context ) log.info( """Cleaning up context data for window %s: %s""", window, result ) except Exception, err: log.error( """Error attempting to clean up context data for GLUT window %s: %s""", window, result ) return _base_glutDestroyWindow( window ) glutDestroyWindow.wrappedOperation = simple.glutDestroyWindow PyOpenGL-3.0.2/OpenGL/GLUT/osx.py0000644000175000001440000000036512025001653017175 0ustar mcfletchusers00000000000000"""OSX specific extensions to GLUT""" from OpenGL import platform glutCheckLoop = platform.createBaseFunction( 'glutCheckLoop', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutCheckLoop( ) -> None', argNames=(), ) PyOpenGL-3.0.2/OpenGL/GLUT/freeglut.py0000644000175000001440000002646312025001653020210 0ustar mcfletchusers00000000000000"""FreeGLUT extensions to the GLUT API This module will provide the FreeGLUT extensions if they are available from the GLUT module. Note that any other implementation that also provides these entry points will also retrieve the entry points with this module. """ # flags 'freeglut_ext.xml -l /usr/lib64/libglut.so -o freeglut_ext.py -v -kf' from OpenGL import platform, arrays from OpenGL.constants import * from OpenGL import constant FUNCTION_TYPE = platform.PLATFORM.functionTypeFor( platform.GLUT ) from OpenGL.GLUT import special import ctypes c_int = ctypes.c_int c_char_p = ctypes.c_char_p c_ubyte = ctypes.c_ubyte c_void_p = ctypes.c_void_p GLUT_DEBUG = constant.Constant( 'GLUT_DEBUG', 0x0001 ) GLUT_FORWARD_COMPATIBLE = constant.Constant( 'GLUT_FORWARD_COMPATIBLE', 0x0002) GLUT_ACTION_EXIT = constant.Constant( 'GLUT_ACTION_EXIT', 0 ) GLUT_ACTION_GLUTMAINLOOP_RETURNS = constant.Constant( 'GLUT_ACTION_GLUTMAINLOOP_RETURNS', 1 ) GLUT_ACTION_CONTINUE_EXECUTION = constant.Constant( 'GLUT_ACTION_CONTINUE_EXECUTION', 2 ) GLUT_INIT_MAJOR_VERSION = constant.Constant( 'GLUT_INIT_MAJOR_VERSION', 0x0200 ) GLUT_INIT_MINOR_VERSION = constant.Constant( 'GLUT_INIT_MINOR_VERSION', 0x0201 ) GLUT_INIT_FLAGS = constant.Constant( 'GLUT_INIT_FLAGS', 0x0202 ) GLUT_CREATE_NEW_CONTEXT = constant.Constant( 'GLUT_CREATE_NEW_CONTEXT', 0 ) GLUT_USE_CURRENT_CONTEXT = constant.Constant( 'GLUT_USE_CURRENT_CONTEXT', 1 ) GLUT_ACTION_ON_WINDOW_CLOSE = constant.Constant( 'GLUT_ACTION_ON_WINDOW_CLOSE', 0x01F9 ) GLUT_WINDOW_BORDER_WIDTH = constant.Constant( 'GLUT_WINDOW_BORDER_WIDTH', 0x01FA ) GLUT_WINDOW_HEADER_HEIGHT = constant.Constant( 'GLUT_USE_CURRENT_CONTEXT', 0x01FB ) #GLUT_VERSION = constant.Constant( 'GLUT_VERSION', 0x01FC ) GLUT_RENDERING_CONTEXT = constant.Constant( 'GLUT_RENDERING_CONTEXT', 0x01FD ) GLUT_ALLOW_DIRECT_CONTEXT=1 GLUT_AUX=0x1000 GLUT_AUX1=0x1000 GLUT_AUX2=0x2000 GLUT_AUX3=0x4000 GLUT_AUX4=0x8000 GLUT_BORDERLESS=0x0800 GLUT_CAPTIONLESS=0x0400 GLUT_COMPATIBILITY_PROFILE=0x0002 GLUT_CORE_PROFILE=0x0001 GLUT_DIRECT_RENDERING=0x01 GLUT_FORCE_DIRECT_CONTEXT=3 GLUT_FORCE_INDIRECT_CONTEXT=0 GLUT_FULL_SCREEN=0x01 GLUT_INIT_PROFILE=0x0203 GLUT_KEY_BEGIN=0x006 GLUT_KEY_DELETE=0x006 GLUT_KEY_NUM_LOCK=0x006 GLUT_SRGB=0x1000 GLUT_TRY_DIRECT_CONTEXT=2 # /usr/include/GL/freeglut_ext.h 63 glutMainLoopEvent = platform.createBaseFunction( 'glutMainLoopEvent', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutMainLoopEvent( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_ext.h 64 glutLeaveMainLoop = platform.createBaseFunction( 'glutLeaveMainLoop', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutLeaveMainLoop( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_ext.h 69 ##glutMouseWheelFunc = platform.createBaseFunction( ## 'glutMouseWheelFunc', dll=platform.GLUT, resultType=None, ## argTypes=[FUNCTION_TYPE(None, c_int, c_int, c_int, c_int)], ## doc='glutMouseWheelFunc( FUNCTION_TYPE(None, c_int, c_int, c_int, c_int)(callback) ) -> None', ## argNames=('callback',), ##) glutMouseWheelFunc = special.GLUTCallback( 'MouseWheel', (c_int, c_int, c_int, c_int,), ('wheel','direction','x','y'), ) # /usr/include/GL/freeglut_ext.h 70 ##glutCloseFunc = platform.createBaseFunction( ## 'glutCloseFunc', dll=platform.GLUT, resultType=None, ## argTypes=[FUNCTION_TYPE(None)], ## doc='glutCloseFunc( FUNCTION_TYPE(None)(callback) ) -> None', ## argNames=('callback',), ##) glutCloseFunc = special.GLUTCallback( 'Close', (), (), ) # /usr/include/GL/freeglut_ext.h 71 ##glutWMCloseFunc = platform.createBaseFunction( ## 'glutWMCloseFunc', dll=platform.GLUT, resultType=None, ## argTypes=[FUNCTION_TYPE(None)], ## doc='glutWMCloseFunc( FUNCTION_TYPE(None)(callback) ) -> None', ## argNames=('callback',), ##) glutWMCloseFunc = special.GLUTCallback( 'WMClose', (), (), ) # /usr/include/GL/freeglut_ext.h 73 ##glutMenuDestroyFunc = platform.createBaseFunction( ## 'glutMenuDestroyFunc', dll=platform.GLUT, resultType=None, ## argTypes=[FUNCTION_TYPE(None)], ## doc='glutMenuDestroyFunc( FUNCTION_TYPE(None)(callback) ) -> None', ## argNames=('callback',), ##) glutMenuDestroyFunc = special.GLUTCallback( 'MenuDestroy', (), (), ) # /usr/include/GL/freeglut_ext.h 78 glutSetOption = platform.createBaseFunction( 'glutSetOption', dll=platform.GLUT, resultType=None, argTypes=[GLenum, c_int], doc='glutSetOption( GLenum(option_flag), c_int(value) ) -> None', argNames=('option_flag', 'value'), ) # /usr/include/GL/freeglut_ext.h 80 glutGetWindowData = platform.createBaseFunction( 'glutGetWindowData', dll=platform.GLUT, resultType=c_void_p, argTypes=[], doc='glutGetWindowData( ) -> c_void_p', argNames=(), ) # /usr/include/GL/freeglut_ext.h 81 glutSetWindowData = platform.createBaseFunction( 'glutSetWindowData', dll=platform.GLUT, resultType=None, argTypes=[c_void_p], doc='glutSetWindowData( c_void_p(data) ) -> None', argNames=('data',), ) # /usr/include/GL/freeglut_ext.h 82 glutGetMenuData = platform.createBaseFunction( 'glutGetMenuData', dll=platform.GLUT, resultType=c_void_p, argTypes=[], doc='glutGetMenuData( ) -> c_void_p', argNames=(), ) # /usr/include/GL/freeglut_ext.h 83 glutSetMenuData = platform.createBaseFunction( 'glutSetMenuData', dll=platform.GLUT, resultType=None, argTypes=[c_void_p], doc='glutSetMenuData( c_void_p(data) ) -> None', argNames=('data',), ) # /usr/include/GL/freeglut_ext.h 88 glutBitmapHeight = platform.createBaseFunction( 'glutBitmapHeight', dll=platform.GLUT, resultType=c_int, argTypes=[c_void_p], doc='glutBitmapHeight( c_void_p(font) ) -> c_int', argNames=('font',), ) # /usr/include/GL/freeglut_ext.h 89 glutStrokeHeight = platform.createBaseFunction( 'glutStrokeHeight', dll=platform.GLUT, resultType=GLfloat, argTypes=[c_void_p], doc='glutStrokeHeight( c_void_p(font) ) -> GLfloat', argNames=('font',), ) # /usr/include/GL/freeglut_ext.h 90 glutBitmapString = platform.createBaseFunction( 'glutBitmapString', dll=platform.GLUT, resultType=None, argTypes=[c_void_p, c_char_p], doc='glutBitmapString( c_void_p(font), POINTER(c_ubyte)(string) ) -> None', argNames=('font', 'string'), ) ##glutBitmapString = platform.createBaseFunction( ## 'glutBitmapString', dll=platform.GLUT, resultType=None, ## argTypes=[c_void_p, arrays.GLubyteArray], ## doc='glutBitmapString( c_void_p(font), POINTER(c_ubyte)(string) ) -> None', ## argNames=('font', 'string'), ##) ##glutBitmapString = arrays.setInputArraySizeType( ## glutBitmapString, ## None, ## arrays.GLubyteArray, ## 'string', ##) # /usr/include/GL/freeglut_ext.h 91 glutStrokeString = platform.createBaseFunction( 'glutStrokeString', dll=platform.GLUT, resultType=None, argTypes=[c_void_p, c_char_p], doc='glutStrokeString( c_void_p(font), POINTER(c_ubyte)(string) ) -> None', argNames=('font', 'string'), ) ##glutStrokeString = platform.createBaseFunction( ## 'glutStrokeString', dll=platform.GLUT, resultType=None, ## argTypes=[c_void_p, arrays.GLubyteArray], ## doc='glutStrokeString( c_void_p(font), POINTER(c_ubyte)(string) ) -> None', ## argNames=('font', 'string'), ##) ##glutStrokeString = arrays.setInputArraySizeType( ## glutStrokeString, ## None, ## arrays.GLubyteArray, ## 'string', ##) # /usr/include/GL/freeglut_ext.h 96 glutWireRhombicDodecahedron = platform.createBaseFunction( 'glutWireRhombicDodecahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutWireRhombicDodecahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_ext.h 97 glutSolidRhombicDodecahedron = platform.createBaseFunction( 'glutSolidRhombicDodecahedron', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutSolidRhombicDodecahedron( ) -> None', argNames=(), ) # /usr/include/GL/freeglut_ext.h 98 glutWireSierpinskiSponge = platform.createBaseFunction( 'glutWireSierpinskiSponge', dll=platform.GLUT, resultType=None, argTypes=[c_int, arrays.GLdoubleArray, GLdouble], doc='glutWireSierpinskiSponge( c_int(num_levels), arrays.GLdoubleArray(offset), GLdouble(scale) ) -> None', argNames=('num_levels', 'offset', 'scale'), ) glutWireSierpinskiSponge = arrays.setInputArraySizeType( glutWireSierpinskiSponge, None, # XXX Could not determine size of argument offset for glutWireSierpinskiSponge arrays.GLdoubleArray arrays.GLdoubleArray, 'offset', ) # /usr/include/GL/freeglut_ext.h 99 glutSolidSierpinskiSponge = platform.createBaseFunction( 'glutSolidSierpinskiSponge', dll=platform.GLUT, resultType=None, argTypes=[c_int, arrays.GLdoubleArray, GLdouble], doc='glutSolidSierpinskiSponge( c_int(num_levels), arrays.GLdoubleArray(offset), GLdouble(scale) ) -> None', argNames=('num_levels', 'offset', 'scale'), ) glutSolidSierpinskiSponge = arrays.setInputArraySizeType( glutSolidSierpinskiSponge, None, # XXX Could not determine size of argument offset for glutSolidSierpinskiSponge arrays.GLdoubleArray arrays.GLdoubleArray, 'offset', ) # /usr/include/GL/freeglut_ext.h 100 glutWireCylinder = platform.createBaseFunction( 'glutWireCylinder', dll=platform.GLUT, resultType=None, argTypes=[GLdouble, GLdouble, GLint, GLint], doc='glutWireCylinder( GLdouble(radius), GLdouble(height), GLint(slices), GLint(stacks) ) -> None', argNames=('radius', 'height', 'slices', 'stacks'), ) # /usr/include/GL/freeglut_ext.h 101 glutSolidCylinder = platform.createBaseFunction( 'glutSolidCylinder', dll=platform.GLUT, resultType=None, argTypes=[GLdouble, GLdouble, GLint, GLint], doc='glutSolidCylinder( GLdouble(radius), GLdouble(height), GLint(slices), GLint(stacks) ) -> None', argNames=('radius', 'height', 'slices', 'stacks'), ) # /usr/include/GL/freeglut_ext.h 106 glutGetProcAddress = platform.createBaseFunction( 'glutGetProcAddress', dll=platform.GLUT, resultType=c_void_p, argTypes=[c_char_p], doc='glutGetProcAddress( STRING(procName) ) -> c_void_p', argNames=('procName',), ) glutInitContextFlags = platform.createBaseFunction( 'glutInitContextFlags', dll=platform.GLUT, resultType=None, argTypes=[GLint], doc='glutInitContextFlags( GLint(flags) ) -> None', argNames = ('flags',), ) glutInitContextProfile = platform.createBaseFunction( 'glutInitContextProfile', dll=platform.GLUT, resultType=None, argTypes=[GLint], doc='glutInitContextProfile( GLint(profile) ) -> None', argNames = ('profile',), ) glutInitContextVersion = platform.createBaseFunction( 'glutInitContextVersion', dll=platform.GLUT, resultType=None, argTypes=[GLint,GLint], doc='glutInitContextVersion( GLint(majorVersion), GLint(minorVersion) ) -> None', argNames = ('majorVersion','minorVersion'), ) glutFullScreenToggle = platform.createBaseFunction( 'glutFullScreenToggle', dll=platform.GLUT, resultType=None, argTypes=[], doc='glutFullScreenToggle( ) -> None', argNames = (), ) # TODO: this entry point is quite messy, needs a wrapper that creates size, then makes a result # object that will de-allocate the memory for the result when finished. Bleh. glutGetModeValues = platform.createBaseFunction( 'glutGetModeValues', dll=platform.GLUT, resultType=ctypes.POINTER(GLint), argTypes=[GLint,ctypes.POINTER(GLint)], doc='glutInitContextVersion( GLenum(mode), POINTER(GLint)(size) ) -> POINTER(GLint)', argNames = ('mode','size'), ) PyOpenGL-3.0.2/OpenGL/lazywrapper.py0000644000175000001440000000405312025001653020167 0ustar mcfletchusers00000000000000"""Simplistic wrapper decorator for Python-coded wrappers""" from OpenGL.latebind import Curry from OpenGL import MODULE_ANNOTATIONS class _LazyWrapper( Curry ): """Marker to tell us that an object is a lazy wrapper""" def lazy( baseFunction ): """Produce a lazy-binding decorator that uses baseFunction Allows simple implementation of wrappers where the whole of the wrapper can be summed up as do 1 thing then call base function with the cleaned up result. Passes baseFunction in as the first argument of the wrapped function, all other parameters are passed unchanged. The wrapper class created has __nonzero__ and similar common wrapper entry points defined. """ def wrap( wrapper ): """Wrap wrapper with baseFunction""" def __nonzero__( self ): return bool( baseFunction ) def __repr__( self ): return '%s( %r )'%( 'OpenGL.lazywrapper.lazy', baseFunction.__name__, ) _with_wrapper = type( wrapper.__name__, (_LazyWrapper,), { '__repr__': __repr__, '__doc__': wrapper.__doc__, '__nonzero__': __nonzero__, 'wrappedOperation': baseFunction, 'restype': getattr(wrapper, 'restype',getattr(baseFunction,'restype',None)), } ) with_wrapper = _with_wrapper(wrapper,baseFunction) with_wrapper.__name__ = wrapper.__name__ if hasattr( baseFunction, '__module__' ): with_wrapper.__module__ = baseFunction.__module__ return with_wrapper return wrap if __name__ == "__main__": from OpenGL.raw import GLU func = GLU.gluNurbsCallbackData output = [] def testwrap( base ): "Testing" output.append( base ) testlazy = lazy( func )( testwrap ) testlazy( ) assert testlazy.__doc__ == "Testing" assert testlazy.__class__.__name__ == 'testwrap' assert testlazy.__name__ == 'testwrap' assert testlazy.baseFunction is func assert testlazy.wrapperFunction is testwrap assert output PyOpenGL-3.0.2/OpenGL/arrays/0000755000175000001440000000000012032640120016530 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/arrays/_buffers.py0000644000175000001440000000516012025001653020703 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Python 3.x buffer-handling (currently just for bytes/bytearray types) """ import ctypes,sys _fields_ = [ ('buf',ctypes.c_void_p), ('obj',ctypes.py_object), ('len',ctypes.c_size_t), ('itemsize',ctypes.c_size_t), ('readonly',ctypes.c_int), ('ndim',ctypes.c_int), ('format',ctypes.c_char_p), ('shape',ctypes.POINTER(ctypes.c_size_t)), ('strides',ctypes.POINTER(ctypes.c_size_t)), ('suboffsets',ctypes.POINTER(ctypes.c_size_t)), ] if sys.version_info[0] < 3: _fields_.extend( [ ('internal',ctypes.c_void_p), ] ) else: # Sigh, this structure seems to have changed with Python 3.x... _fields_.extend( [ ('smalltable',ctypes.c_size_t*2), ('internal',ctypes.c_void_p), ] ) class Py_buffer(ctypes.Structure): """Wrapper around the Python buffer structure...""" _fields_ = _fields_ @property def dims( self ): return self.shape[:self.ndim] def __del__( self ): # TODO: use a weakref ReleaseBuffer( self ) BUFFER_POINTER = ctypes.POINTER( Py_buffer ) PyBUF_SIMPLE = 0 PyBUF_WRITABLE = PyBUF_WRITEABLE = 0x0001 PyBUF_ND = 0x0008 PyBUF_STRIDES = (0x0010 | PyBUF_ND) PyBUF_CONTIG = (PyBUF_ND | PyBUF_WRITABLE) PyBUF_CONTIG_RO = (PyBUF_ND) try: CheckBuffer = ctypes.pythonapi.PyObject_CheckBuffer CheckBuffer.argtypes = [ctypes.py_object] CheckBuffer.restype = ctypes.c_int except AttributeError as err: # Python 2.6 doesn't appear to have CheckBuffer support... CheckBuffer = lambda x: True GetBuffer = ctypes.pythonapi.PyObject_GetBuffer GetBuffer.argtypes = [ ctypes.py_object, BUFFER_POINTER, ctypes.c_int ] GetBuffer.restype = ctypes.c_int ReleaseBuffer = ctypes.pythonapi.PyBuffer_Release ReleaseBuffer.argtypes = [ BUFFER_POINTER ] ReleaseBuffer.restype = None def test(): for x in [ b'this and that', # sigh, 2to3 converts this to unicode... I *mean* an 8-bit buffer # These are the things you'd have thought might support it... #(ctypes.c_int * 3)( 1,2,3 ), #numpy.arange(0,3,dtype='b'), ]: buf = Py_buffer() assert CheckBuffer( x ) result = GetBuffer( x, buf, PyBUF_CONTIG_RO ) assert result == 0, "Retrieval of buffer failed" print('length:', buf.len) print('readonly', buf.readonly) print('format', buf.format) print('ndim', buf.ndim) print('shape', buf.shape[:buf.ndim]) print('dims', buf.dims ) print('c data pointer',buf.buf) assert buf.len == len(x), "Mismatch in size of buffer (%s, expected %s)"%(buf.len,len(x)) if __name__ == "__main__": test() PyOpenGL-3.0.2/OpenGL/arrays/numpymodule.py0000644000175000001440000002234412025001653021471 0ustar mcfletchusers00000000000000"""Numpy (new version) module implementation of the OpenGL-ctypes array interfaces XXX Need to register handlers for all of the scalar types that numpy returns, would like to have all return values be int/float if they are of compatible type as well. """ REGISTRY_NAME = 'numpy' try: import numpy except ImportError, err: raise ImportError( """No numpy module present: %s"""%(err)) import operator,logging from OpenGL import _configflags import OpenGL import ctypes c_void_p = ctypes.c_void_p from OpenGL import constants, constant, error from OpenGL.arrays import formathandler log = logging.getLogger( 'OpenGL.arrays.numpymodule' ) from OpenGL import acceleratesupport NumpyHandler = None if acceleratesupport.ACCELERATE_AVAILABLE: try: from OpenGL_accelerate.numpy_formathandler import NumpyHandler except ImportError, err: log.warn( "Unable to load numpy_formathandler accelerator from OpenGL_accelerate" ) if NumpyHandler is None: # numpy's array interface has changed over time :( testArray = numpy.array( [1,2,3,4],'i' ) # Numpy's "ctypes" interface actually creates a new ctypes object # in python for every access of the .ctypes attribute... which can take # ridiculously large periods when you multiply it by millions of iterations if hasattr(testArray,'__array_interface__'): def dataPointer( cls, instance ): """Convert given instance to a data-pointer value (integer)""" try: return long(instance.__array_interface__['data'][0]) except AttributeError, err: instance = cls.asArray( instance ) try: return long(instance.__array_interface__['data'][0]) except AttributeError, err: return long(instance.__array_data__[0],0) else: def dataPointer( cls, instance ): """Convert given instance to a data-pointer value (integer)""" try: return long(instance.__array_data__[0],0) except AttributeError, err: instance = cls.asArray( instance ) try: return long(instance.__array_interface__['data'][0]) except AttributeError, err: return long(instance.__array_data__[0],0) try: del testArray except NameError, err: pass dataPointer = classmethod( dataPointer ) class NumpyHandler( formathandler.FormatHandler ): """Numpy-specific data-type handler for OpenGL Attributes: ERROR_ON_COPY -- if True, will raise errors if we have to copy an array object in order to produce a contiguous array of the correct type. """ HANDLED_TYPES = (numpy.ndarray,)# list, tuple ) dataPointer = dataPointer isOutput = True ERROR_ON_COPY = _configflags.ERROR_ON_COPY @classmethod def zeros( cls, dims, typeCode ): """Return Numpy array of zeros in given size""" return numpy.zeros( dims, GL_TYPE_TO_ARRAY_MAPPING[typeCode]) @classmethod def arrayToGLType( cls, value ): """Given a value, guess OpenGL type of the corresponding pointer""" typeCode = value.dtype constant = ARRAY_TO_GL_TYPE_MAPPING.get( typeCode ) if constant is None: raise TypeError( """Don't know GL type for array of type %r, known types: %s\nvalue:%s"""%( typeCode, ARRAY_TO_GL_TYPE_MAPPING.keys(), value, ) ) return constant @classmethod def arraySize( cls, value, typeCode = None ): """Given a data-value, calculate dimensions for the array""" return value.size @classmethod def arrayByteCount( cls, value, typeCode = None ): """Given a data-value, calculate number of bytes required to represent""" try: return value.nbytes except AttributeError, err: if cls.ERROR_ON_COPY: raise error.CopyError( """Non-numpy array passed to numpy arrayByteCount: %s""", type(value), ) value = cls.asArray( value, typeCode ) return value.nbytes @classmethod def asArray( cls, value, typeCode=None ): """Convert given value to an array value of given typeCode""" if value is None: return value else: return cls.contiguous( value, typeCode ) @classmethod def contiguous( cls, source, typeCode=None ): """Get contiguous array from source source -- numpy Python array (or compatible object) for use as the data source. If this is not a contiguous array of the given typeCode, a copy will be made, otherwise will just be returned unchanged. typeCode -- optional 1-character typeCode specifier for the numpy.array function. All gl*Pointer calls should use contiguous arrays, as non- contiguous arrays will be re-copied on every rendering pass. Although this doesn't raise an error, it does tend to slow down rendering. """ typeCode = GL_TYPE_TO_ARRAY_MAPPING[ typeCode ] try: contiguous = source.flags.contiguous except AttributeError, err: if typeCode: return numpy.ascontiguousarray( source, typeCode ) else: return numpy.ascontiguousarray( source ) else: if contiguous and (typeCode is None or typeCode==source.dtype.char): return source elif (contiguous and cls.ERROR_ON_COPY): from OpenGL import error raise error.CopyError( """Array of type %r passed, required array of type %r""", source.dtype.char, typeCode, ) else: # We have to do astype to avoid errors about unsafe conversions # XXX Confirm that this will *always* create a new contiguous array # XXX Guard against wacky conversion types like uint to float, where # we really don't want to have the C-level conversion occur. # XXX ascontiguousarray is apparently now available in numpy! if cls.ERROR_ON_COPY: from OpenGL import error raise error.CopyError( """Non-contiguous array passed""", source, ) if typeCode is None: typeCode = source.dtype.char return numpy.ascontiguousarray( source, typeCode ) @classmethod def unitSize( cls, value, typeCode=None ): """Determine unit size of an array (if possible)""" return value.shape[-1] @classmethod def dimensions( cls, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" return value.shape @classmethod def from_param( cls, instance, typeCode=None ): try: pointer = cls.dataPointer( instance ) except TypeError, err: array = cls.asArray( instance, typeCode ) pp = cls.dataPointer( array ) pp._temporary_array_ = (array,) return pp else: if typeCode and instance.dtype != GL_TYPE_TO_ARRAY_MAPPING[ typeCode ]: raise error.CopyError( """Array of type %r passed, required array of type %r""", instance.dtype.char, typeCode, ) return c_void_p( pointer ) try: numpy.array( [1], 's' ) SHORT_TYPE = 's' except TypeError, err: SHORT_TYPE = 'h' USHORT_TYPE = 'H' def lookupDtype( char ): return numpy.zeros( (1,), dtype=char ).dtype ARRAY_TO_GL_TYPE_MAPPING = { lookupDtype('d'): constants.GL_DOUBLE, lookupDtype('f'): constants.GL_FLOAT, lookupDtype('i'): constants.GL_INT, lookupDtype(SHORT_TYPE): constants.GL_SHORT, lookupDtype(USHORT_TYPE): constants.GL_UNSIGNED_SHORT, lookupDtype('B'): constants.GL_UNSIGNED_BYTE, lookupDtype('c'): constants.GL_UNSIGNED_BYTE, lookupDtype('b'): constants.GL_BYTE, lookupDtype('I'): constants.GL_UNSIGNED_INT, #lookupDtype('P'), constants.GL_VOID_P, # normally duplicates another type (e.g. 'I') None: None, } GL_TYPE_TO_ARRAY_MAPPING = { constants.GL_DOUBLE: lookupDtype('d'), constants.GL_FLOAT:lookupDtype('f'), constants.GL_INT: lookupDtype('i'), constants.GL_BYTE: lookupDtype('b'), constants.GL_SHORT: lookupDtype(SHORT_TYPE), constants.GL_UNSIGNED_INT: lookupDtype('I'), constants.GL_UNSIGNED_BYTE: lookupDtype('B'), constants.GL_UNSIGNED_SHORT: lookupDtype(USHORT_TYPE), constants.GL_VOID_P: lookupDtype('P'), None: None, } PyOpenGL-3.0.2/OpenGL/arrays/numeric.py0000644000175000001440000001214212025001653020550 0ustar mcfletchusers00000000000000"""Original Numeric module implementation of the OpenGL-ctypes array interfaces Eventual Goals: * Be able to register handlers for a given data-storage mechanism at run-time * Be able to choose what data-type to use for any given operation where we are getting return values and/or register a default format for return values (i.e. tell OpenGL to return ctypes pointers or Numeric arrays or Numarray arrays for glGet* calls) """ REGISTRY_NAME = 'numeric' try: import Numeric except ImportError, err: raise ImportError( """No Numeric module present: %s"""%(err)) import operator from OpenGL.arrays import _numeric dataPointer = _numeric.dataPointer from OpenGL import constants, constant from OpenGL.arrays import formathandler class NumericHandler( formathandler.FormatHandler ): """Numeric-specific data-type handler for OpenGL""" HANDLED_TYPES = (Numeric.ArrayType, ) isOutput = True @classmethod def from_param( cls, value, typeCode=None ): return dataPointer( value ) dataPointer = staticmethod( dataPointer ) def voidDataPointer( cls, value ): """Given value in a known data-pointer type, return void_p for pointer""" return ctypes.c_void_p( self.dataPointer( value )) def zeros( self, dims, typeCode ): """Return Numeric array of zeros in given size""" return Numeric.zeros( dims, GL_TYPE_TO_ARRAY_MAPPING.get(typeCode) or typeCode ) def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" typeCode = value.typecode() constant = ARRAY_TO_GL_TYPE_MAPPING.get( typeCode ) if constant is None: raise TypeError( """Don't know GL type for array of type %r, known types: %s\nvalue:%s"""%( typeCode, ARRAY_TO_GL_TYPE_MAPPING.keys(), value, ) ) return constant def arraySize( self, value, typeCode = None ): """Given a data-value, calculate dimensions for the array""" try: dimValue = value.shape except AttributeError, err: # XXX it's a list or a tuple, how do we determine dimensions there??? # for now we'll just punt and convert to an array first... value = self.asArray( value, typeCode ) dimValue = value.shape dims = 1 for dim in dimValue: dims *= dim return dims def asArray( self, value, typeCode=None ): """Convert given value to an array value of given typeCode""" if value is None: return value else: return self.contiguous( value, typeCode ) def contiguous( self, source, typeCode=None ): """Get contiguous array from source source -- Numeric Python array (or compatible object) for use as the data source. If this is not a contiguous array of the given typeCode, a copy will be made, otherwise will just be returned unchanged. typeCode -- optional 1-character typeCode specifier for the Numeric.array function. All gl*Pointer calls should use contiguous arrays, as non- contiguous arrays will be re-copied on every rendering pass. Although this doesn't raise an error, it does tend to slow down rendering. """ typeCode = GL_TYPE_TO_ARRAY_MAPPING.get( typeCode ) if isinstance( source, Numeric.ArrayType): if source.iscontiguous() and (typeCode is None or typeCode==source.typecode()): return source else: if typeCode is None: typeCode = source.typecode() # We have to do astype to avoid errors about unsafe conversions # XXX Confirm that this will *always* create a new contiguous array # XXX Allow a way to make this raise an error for performance reasons # XXX Guard against wacky conversion types like uint to float, where # we really don't want to have the C-level conversion occur. return Numeric.array( source.astype( typeCode ), typeCode ) elif typeCode: return Numeric.array( source, typeCode ) else: return Numeric.array( source ) def unitSize( self, value, typeCode=None ): """Determine unit size of an array (if possible)""" return value.shape[-1] def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" return value.shape ARRAY_TO_GL_TYPE_MAPPING = { 'd': constants.GL_DOUBLE, 'f': constants.GL_FLOAT, 'i': constants.GL_INT, 's': constants.GL_SHORT, 'c': constants.GL_UNSIGNED_BYTE, 'b': constants.GL_BYTE, 'I': constants.GL_UNSIGNED_INT, } GL_TYPE_TO_ARRAY_MAPPING = { constants.GL_DOUBLE: 'd', constants.GL_FLOAT:'f', constants.GL_INT: 'i', constants.GL_UNSIGNED_INT: 'i', constants.GL_UNSIGNED_BYTE: 'c', constants.GL_SHORT: 's', constants.GL_UNSIGNED_SHORT: 's', constants.GL_BYTE: 'b', } PyOpenGL-3.0.2/OpenGL/arrays/ctypesparameters.py0000644000175000001440000001227312025001653022506 0ustar mcfletchusers00000000000000"""ctypes single-value "parameter" arguments (e.g. byref) """ REGISTRY_NAME = 'ctypeparameter' import ctypes, _ctypes from OpenGL import constants, constant from OpenGL.arrays import formathandler import operator c = ctypes.c_float(0) ParamaterType = ctypes.byref(c).__class__ DIRECT_RETURN_TYPES = ( ParamaterType, # these pointer types are implemented as _SimpleCData # despite being pointers... ctypes.c_void_p, ctypes.c_char_p, ctypes.c_wchar_p, ) try: del c except NameError, err: pass class CtypesParameterHandler( formathandler.FormatHandler ): """Ctypes Paramater-type-specific data-type handler for OpenGL""" isOutput = True HANDLED_TYPES = (ParamaterType, _ctypes._SimpleCData) def from_param( cls, value, typeCode=None ): if isinstance( value, DIRECT_RETURN_TYPES ): return value else: return ctypes.byref( value ) from_param = voidDataPointer = classmethod( from_param ) def dataPointer( cls, value ): if isinstance( value, DIRECT_RETURN_TYPES ): return value else: return ctypes.addressof( value ) dataPointer = classmethod( dataPointer ) def zeros( self, dims, typeCode ): """Return Numpy array of zeros in given size""" type = GL_TYPE_TO_ARRAY_MAPPING[ typeCode ] for dim in dims: type *= dim return type() # should expicitly set to 0s def ones( self, dims, typeCode='d' ): """Return numpy array of ones in given size""" raise NotImplementedError( """Haven't got a good ones implementation yet""" ) ## type = GL_TYPE_TO_ARRAY_MAPPING[ typeCode ] ## for dim in dims: ## type *= dim ## return type() # should expicitly set to 0s def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" if isinstance( value, ParamaterType ): value = value._obj result = ARRAY_TO_GL_TYPE_MAPPING.get( value._type_ ) if result is not None: return result raise TypeError( """Don't know GL type for array of type %r, known types: %s\nvalue:%s"""%( value._type_, ARRAY_TO_GL_TYPE_MAPPING.keys(), value, ) ) def arraySize( self, value, typeCode = None ): """Given a data-value, calculate dimensions for the array""" if isinstance( value, ParamaterType ): value = value._obj dims = 1 for base in self.types( value ): length = getattr( base, '_length_', None) if length is not None: dims *= length return dims def arrayByteCount( self, value, typeCode = None ): """Given a data-value, calculate number of bytes required to represent""" if isinstance( value, ParamaterType ): value = value._obj return ctypes.sizeof( value ) def types( self, value ): """Produce iterable producing all composite types""" if isinstance( value, ParamaterType ): value = value._obj dimObject = value while dimObject is not None: yield dimObject dimObject = getattr( dimObject, '_type_', None ) if isinstance( dimObject, (str,unicode)): dimObject = None def dims( self, value ): """Produce iterable of all dimensions""" if isinstance( value, ParamaterType ): value = value._obj for base in self.types( value ): length = getattr( base, '_length_', None) if length is not None: yield length def asArray( self, value, typeCode=None ): """Convert given value to an array value of given typeCode""" if isinstance( value, DIRECT_RETURN_TYPES ): return value if isinstance( value, ParamaterType ): value = value._obj return ctypes.byref( value ) def unitSize( self, value, typeCode=None ): """Determine unit size of an array (if possible)""" if isinstance( value, ParamaterType ): value = value._obj return tuple(self.dims(value))[-1] def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" if isinstance( value, ParamaterType ): value = value._obj return tuple( self.dims(value) ) ARRAY_TO_GL_TYPE_MAPPING = { constants.GLdouble: constants.GL_DOUBLE, constants.GLfloat: constants.GL_FLOAT, constants.GLint: constants.GL_INT, constants.GLuint: constants.GL_UNSIGNED_INT, constants.GLshort: constants.GL_SHORT, constants.GLushort: constants.GL_UNSIGNED_SHORT, constants.GLchar: constants.GL_CHAR, constants.GLbyte: constants.GL_BYTE, constants.GLubyte: constants.GL_UNSIGNED_BYTE, } GL_TYPE_TO_ARRAY_MAPPING = { constants.GL_DOUBLE: constants.GLdouble, constants.GL_FLOAT: constants.GLfloat, constants.GL_INT: constants.GLint, constants.GL_UNSIGNED_INT: constants.GLuint, constants.GL_SHORT: constants.GLshort, constants.GL_UNSIGNED_SHORT: constants.GLushort, constants.GL_CHAR: constants.GLchar, constants.GL_BYTE: constants.GLbyte, constants.GL_UNSIGNED_BYTE: constants.GLubyte, } PyOpenGL-3.0.2/OpenGL/arrays/numericnames.py0000644000175000001440000000071312025001653021575 0ustar mcfletchusers00000000000000"""Module to provide numeric-module name for current version""" def moduleName( module ): """Given a numpy, numeric or numarray module, calculate helper module name""" name = module.__name__.lower() version = '_'.join( module.__version__.split('.')) return 'OpenGL.arrays._%(name)s_%(version)s'%locals() def loadModule( name ): """Load the current C module for our numeric version""" return __import__( name, {}, {}, name.split( '.' ))PyOpenGL-3.0.2/OpenGL/arrays/__init__.py0000644000175000001440000000124212025001653020644 0ustar mcfletchusers00000000000000"""Abstraction point for handling of data-pointers in OpenGL The purpose of this package is to allow for the registration and dispatch of handlers for different data-types in such a way that you can add new data-types to the set of types which PyOpenGL will handle as arguments to functions requiring typed pointers. Possible data types: Numpy arrays Numarray arrays PyGame surfaces PyMedia buffers Python buffer-objects Memory-mapped files PIL images """ import ctypes import OpenGL from OpenGL.arrays.arraydatatype import * from OpenGL.arrays.arrayhelpers import * from OpenGL.arrays import formathandler formathandler.FormatHandler.loadAll()PyOpenGL-3.0.2/OpenGL/arrays/numbers.py0000644000175000001440000000674312025001653020573 0ustar mcfletchusers00000000000000"""Numbers passed as array handling code for PyOpenGL """ REGISTRY_NAME = 'numbers' from OpenGL import constants from OpenGL.arrays import formathandler import ctypes class NumberHandler( formathandler.FormatHandler ): """Allows the user to pass a bald Python float,int, etceteras as an array-of-1""" HANDLED_TYPES = ( int,long,float, constants.GLdouble, constants.GLfloat, constants.GLint, constants.GLshort, constants.GLuint, constants.GLushort, constants.GLclampf, constants.GLclampd, ) def from_param( self, value, typeCode=None ): """If it's a ctypes value, pass on, otherwise do asArray""" try: return ctypes.byref(value) except TypeError, err: err.args += (' If you have ERROR_ON_COPY enabled, remember to pass in an array to array-requiring functions.', ) raise dataPointer = from_param def zeros( self, dims, typeCode=None ): """Currently don't allow Number as output types!""" raise NotImplemented( """Number data-type not allowed as an output array format""" ) def ones( self, dims, typeCode=None ): """Currently don't allow Number as output types!""" raise NotImplemented( """Number data-type not allowed as an output array format""" ) def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" if value.__class__ in TARGET_TYPES: return TARGET_TYPES[ value.__class__ ] else: guess = DEFAULT_TYPES.get( value.__class__ ) if guess is not None: return guess[1] raise TypeError( """Can't guess array data-type for %r types"""%(type(value))) def arraySize( self, value, typeCode = None ): """Given a data-value, calculate ravelled size for the array""" return 1 def asArray( self, value, typeCode=None ): """Convert given value to an array value of given typeCode""" if value.__class__ in TARGET_TYPES: return value targetType = CONSTANT_TO_TYPE.get( typeCode ) if targetType is not None: return targetType( value ) raise TypeError( """Don't know how to convert %r to an array type"""%( typeCode, )) def unitSize( self, value, typeCode=None ): """Determine unit size of an array (if possible)""" return 1 # there's only 1 possible value in the set... def registerEquivalent( self, typ, base ): """Register a sub-class for handling as the base-type""" global TARGET_TYPE_TUPLE for source in (DEFAULT_TYPES, TARGET_TYPES, BYTE_SIZES): if base in source: source[typ] = source[base] if base in TARGET_TYPES: TARGET_TYPE_TUPLE = TARGET_TYPE_TUPLE + (base,) DEFAULT_TYPES = { float: (constants.GLdouble,constants.GL_DOUBLE), int: (constants.GLint,constants.GL_INT), long: (constants.GLint,constants.GL_INT), } TARGET_TYPES = dict([ (getattr( constants,n),c) for (n,c) in constants.ARRAY_TYPE_TO_CONSTANT ]) TARGET_TYPE_TUPLE = tuple([ getattr(constants,n) for (n,c) in constants.ARRAY_TYPE_TO_CONSTANT ]) CONSTANT_TO_TYPE = dict([ (c,getattr( constants, n)) for (n,c) in constants.ARRAY_TYPE_TO_CONSTANT ]) BYTE_SIZES = dict([ ( c, ctypes.sizeof( getattr( constants, n) ) ) for (n,c) in constants.ARRAY_TYPE_TO_CONSTANT ]) try: del n,c except NameError, err: pass PyOpenGL-3.0.2/OpenGL/arrays/lists.py0000644000175000001440000001572712025001653020260 0ustar mcfletchusers00000000000000"""Lists/tuples as data-format for storage Note: This implementation is *far* less efficient than using Numpy to support lists/tuples, as the code here is all available in C-level code there. This implementation is required to allow for usage without numpy installed. """ REGISTRY_NAME = 'ctypesarrays' import ctypes, _ctypes from OpenGL import constants, constant, error from OpenGL._configflags import ERROR_ON_COPY from OpenGL.arrays import formathandler HANDLED_TYPES = (list,tuple) import operator def err_on_copy( func ): """Decorator which raises informative error if we try to copy while ERROR_ON_COPY""" if not ERROR_ON_COPY: return func else: def raiseErrorOnCopy( self, value, *args, **named ): raise error.CopyError( """%s passed, cannot copy with ERROR_ON_COPY set, please use an array type which has native data-pointer support (e.g. numpy or ctypes arrays)"""%( value.__class__.__name__, ) ) raiseErrorOnCopy.__name__ = func.__name__ return raiseErrorOnCopy class ListHandler( formathandler.FormatHandler ): """Storage of array data in Python lists/arrays This mechanism, unlike multi-dimensional arrays, is not necessarily uniform in type or dimension, so we have to do a lot of extra checks to make sure that we get a correctly-structured array. That, as well as the need to copy the arrays in Python code, makes this a far less efficient implementation than the numpy implementation, which does all the same things, but does them all in C code. Note: as an *output* format, this format handler produces ctypes arrays, not Python lists, this is done for convenience in coding the implementation, mostly. """ @err_on_copy def from_param( self, instance, typeCode=None ): try: return ctypes.byref( instance ) except TypeError, err: array = self.asArray( instance, typeCode ) pp = ctypes.c_void_p( ctypes.addressof( array ) ) pp._temporary_array_ = (array,) return pp dataPointer = staticmethod( ctypes.addressof ) HANDLED_TYPES = HANDLED_TYPES isOutput = True @err_on_copy def voidDataPointer( cls, value ): """Given value in a known data-pointer type, return void_p for pointer""" return ctypes.byref( value ) def zeros( self, dims, typeCode ): """Return array of zeros in given size""" type = GL_TYPE_TO_ARRAY_MAPPING[ typeCode ] for dim in dims: type *= dim return type() # should expicitly set to 0s def dimsOf( cls, x ): """Calculate total dimension-set of the elements in x This is *extremely* messy, as it has to track nested arrays where the arrays could be different sizes on all sorts of levels... """ try: dimensions = [ len(x) ] except (TypeError,AttributeError,ValueError), err: return [] else: childDimension = None for child in x: newDimension = cls.dimsOf( child ) if childDimension is not None: if newDimension != childDimension: raise ValueError( """Non-uniform array encountered: %s versus %s"""%( newDimension, childDimension, ), x ) dimsOf = classmethod( dimsOf ) def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" result = ARRAY_TO_GL_TYPE_MAPPING.get( value._type_ ) if result is not None: return result raise TypeError( """Don't know GL type for array of type %r, known types: %s\nvalue:%s"""%( value._type_, ARRAY_TO_GL_TYPE_MAPPING.keys(), value, ) ) def arraySize( self, value, typeCode = None ): """Given a data-value, calculate dimensions for the array""" dims = 1 for base in self.types( value ): length = getattr( base, '_length_', None) if length is not None: dims *= length return dims def types( self, value ): """Produce iterable producing all composite types""" dimObject = value while dimObject is not None: yield dimObject dimObject = getattr( dimObject, '_type_', None ) if isinstance( dimObject, (str,unicode)): dimObject = None def dims( self, value ): """Produce iterable of all dimensions""" for base in self.types( value ): length = getattr( base, '_length_', None) if length is not None: yield length @err_on_copy def asArray( self, value, typeCode=None ): """Convert given value to a ctypes array value of given typeCode This does a *lot* of work just to get the data into the correct format. It's not going to be anywhere near as fast as a numpy or similar approach! """ if typeCode is None: raise NotImplementedError( """Haven't implemented type-inference for lists yet""" ) arrayType = GL_TYPE_TO_ARRAY_MAPPING[ typeCode ] if isinstance( value, (list,tuple)): subItems = [ self.asArray( item, typeCode ) for item in value ] if subItems: for dim in self.dimensions( subItems[0] )[::-1]: arrayType *= dim arrayType *= len( subItems ) result = arrayType() result[:] = subItems return result else: return arrayType( value ) @err_on_copy def unitSize( self, value, typeCode=None ): """Determine unit size of an array (if possible)""" return tuple(self.dims(value))[-1] @err_on_copy def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" return tuple( self.dims(value) ) ARRAY_TO_GL_TYPE_MAPPING = { constants.GLdouble: constants.GL_DOUBLE, constants.GLfloat: constants.GL_FLOAT, constants.GLint: constants.GL_INT, constants.GLuint: constants.GL_UNSIGNED_INT, constants.GLshort: constants.GL_SHORT, constants.GLushort: constants.GL_UNSIGNED_SHORT, constants.GLchar: constants.GL_CHAR, constants.GLbyte: constants.GL_BYTE, constants.GLubyte: constants.GL_UNSIGNED_BYTE, } GL_TYPE_TO_ARRAY_MAPPING = { constants.GL_DOUBLE: constants.GLdouble, constants.GL_FLOAT: constants.GLfloat, constants.GL_INT: constants.GLint, constants.GL_UNSIGNED_INT: constants.GLuint, constants.GL_SHORT: constants.GLshort, constants.GL_UNSIGNED_SHORT: constants.GLushort, constants.GL_CHAR: constants.GLchar, constants.GL_BYTE: constants.GLbyte, constants.GL_UNSIGNED_BYTE: constants.GLubyte, } PyOpenGL-3.0.2/OpenGL/arrays/vbo.py0000644000175000001440000004553112025001653017704 0ustar mcfletchusers00000000000000"""VertexBufferObject helper class Basic usage: my_data = numpy.array( data, 'f') my_vbo = vbo.VBO( my_data ) ... my_vbo.bind() try: ... glVertexPointer( my_vbo, ... ) ... glNormalPointer( my_vbo + 12, ... ) finally: my_vbo.unbind() or with my_vbo: ... glVertexPointer( my_vbo, ... ) ... glNormalPointer( my_vbo + 12, ... ) See the OpenGLContext shader tutorials for a gentle introduction on the usage of VBO objects: http://pyopengl.sourceforge.net/context/tutorials/shader_intro.xhtml This implementation will choose either the ARB or Core (OpenGL 1.5) implementation of the VBO functions. """ from OpenGL import GL from OpenGL.arrays.arraydatatype import ArrayDatatype from OpenGL.arrays.formathandler import FormatHandler from OpenGL.GL.ARB import vertex_buffer_object from OpenGL import constants, error import ctypes,logging log = logging.getLogger( 'OpenGL.arrays.vbo' ) import weakref __all__ = ('VBO','VBOHandler','mapVBO') class Implementation( object ): """Abstraction point for the various implementations that can be used """ available = False def _arbname( self, name ): return ( (name.startswith( 'gl' ) and name.endswith( 'ARB' )) or (name.startswith( 'GL_' ) and name.endswith( 'ARB' )) ) and (name != 'glInitVertexBufferObjectARB') def basename( self, name ): if name.endswith( '_ARB' ): return name[:-4] elif name.endswith( 'ARB' ): return name[:-3] else: return name def __init__( self ): names = [name for name in dir(vertex_buffer_object) if self._arbname( name )] if GL.glBufferData: for name in names: setattr( self, self.basename(name), getattr( GL, self.basename(name) )) self.available = True elif vertex_buffer_object.glBufferDataARB: for name in names: setattr( self, self.basename(name), getattr( vertex_buffer_object, name )) self.available = True def __nonzero__( self ): return self.available def deleter( self, buffers, key): """Produce a deleter callback to delete the given buffer""" # these values are stored here to avoid them being cleaned up # to non during module deletion and causing errors to be raised nfe = error.NullFunctionError gluint = constants.GLuint def doBufferDeletion( *args, **named ): while buffers: try: buffer = buffers.pop() except IndexError, err: break else: try: # Note that to avoid ERROR_ON_COPY issues # we have to pass an array-compatible type here... buf = gluint( buffer ) self.glDeleteBuffers(1, buf) except (AttributeError, nfe), err: pass try: self._DELETERS_.pop( key ) except KeyError, err: pass return doBufferDeletion _DELETERS_ = {} IMPLEMENTATION = None def get_implementation( *args ): """Retrieve the appropriate implementation for this machine Note that this should be considered an internal API and not used by external code, as the whole "implementation" approach is likely to be revisited. """ global IMPLEMENTATION if IMPLEMENTATION is None: IMPLEMENTATION = Implementation() return IMPLEMENTATION from OpenGL import acceleratesupport VBO = None if acceleratesupport.ACCELERATE_AVAILABLE: try: from OpenGL_accelerate.vbo import ( VBO,VBOOffset,VBOHandler,VBOOffsetHandler, ) except ImportError, err: log.warn( "Unable to load VBO accelerator from OpenGL_accelerate" ) if VBO is None: class VBO( object ): """Instances can be passed into array-handling routines You can check for whether VBOs are supported by accessing the implementation: if bool(vbo.get_implementation()): # vbo version of code else: # fallback version of code """ copied = False _no_cache_ = True # do not cache in context data arrays def __init__( self, data, usage='GL_DYNAMIC_DRAW', target='GL_ARRAY_BUFFER', size=None, ): """Initialize the VBO object data -- PyOpenGL-compatible array-data structure, numpy arrays, ctypes arrays, etc. usage -- OpenGL usage constant describing expected data-flow patterns (this is a hint to the GL about where/how to cache the data) GL_STATIC_DRAW_ARB GL_STATIC_READ_ARB GL_STATIC_COPY_ARB GL_DYNAMIC_DRAW_ARB GL_DYNAMIC_READ_ARB GL_DYNAMIC_COPY_ARB GL_STREAM_DRAW_ARB GL_STREAM_READ_ARB GL_STREAM_COPY_ARB DRAW constants suggest to the card that the data will be primarily used to draw on the card. READ that the data will be read back into the GL. COPY means that the data will be used both for DRAW and READ operations. STATIC suggests that the data will only be written once (or a small number of times). DYNAMIC suggests that the data will be used a small number of times before being discarded. STREAM suggests that the data will be updated approximately every time that it is used (that is, it will likely only be used once). target -- VBO target to which to bind (array or indices) GL_ARRAY_BUFFER -- array-data binding GL_ELEMENT_ARRAY_BUFFER -- index-data binding GL_UNIFORM_BUFFER -- used to pass mid-size arrays of data packed into a buffer GL_TEXTURE_BUFFER -- used to pass large arrays of data as a pseudo-texture GL_TRANSFORM_FEEDBACK_BUFFER -- used to receive transformed vertices for processing size -- if not provided, will use arrayByteCount to determine the size of the data-array, thus this value (number of bytes) is required when using opaque data-structures, (such as ctypes pointers) as the array data-source. """ self.usage = usage self.set_array( data, size ) self.target = target self.buffers = [] self._copy_segments = [] _I_ = None implementation = property( get_implementation, ) def resolve( self, value ): """Resolve string constant to constant""" if isinstance( value, (str,unicode)): return getattr( self.implementation, self.implementation.basename( value ) ) return value def set_array( self, data, size=None ): """Update our entire array with new data data -- PyOpenGL-compatible array-data structure, numpy arrays, ctypes arrays, etc. size -- if not provided, will use arrayByteCount to determine the size of the data-array, thus this value (number of bytes) is required when using opaque data-structures, (such as ctypes pointers) as the array data-source. """ self.data = data self.copied = False if size is not None: self.size = size elif self.data is not None: self.size = ArrayDatatype.arrayByteCount( self.data ) def __setitem__( self, slice, array): """Set slice of data on the array and vbo (if copied already) slice -- the Python slice object determining how the data should be copied into the vbo/array array -- something array-compatible that will be used as the source of the data, note that the data-format will have to be the same as the internal data-array to work properly, if not, the amount of data copied will be wrong. This is a reasonably complex operation, it has to have all sorts of state-aware changes to correctly map the source into the low-level OpenGL view of the buffer (which is just bytes as far as the GL is concerned). """ if slice.step and not slice.step == 1: raise NotImplemented( """Don't know how to map stepped arrays yet""" ) # TODO: handle e.g. mapping character data into an integer data-set data = ArrayDatatype.asArray( array ) start = (slice.start or 0) stop = (slice.stop or len(self.data)) if start < 0: start += len(self.data) start = max((start,0)) if stop < 0: stop += len(self.data) stop = max((stop,0)) self.data[ slice ] = data if self.copied and self.buffers: if start-stop != len(data): self.copied = False elif start-stop == len(self.data): # re-copy the whole data-set self.copied = False elif len(data): # now the fun part, we need to make the array match the # structure of the array we're going to copy into and make # the "size" parameter match the value we're going to copy in, # note that a 2D array (rather than a 1D array) may require # multiple mappings to copy into the memory area... # find the step size from the dimensions and base size... size = ArrayDatatype.arrayByteCount( data ) / len(array) #baseSize = ArrayDatatype.unitSize( data ) # now create the start and distance values... start *= size stop *= size # wait until the last moment (bind) to copy the data... self._copy_segments.append( (start,(stop-start), data) ) def __len__( self ): """Delegate length/truth checks to our data-array""" return len( self.data ) def __getattr__( self, key ): """Delegate failing attribute lookups to our data-array""" if key not in ('data','usage','target','buffers', 'copied','_I_','implementation','_copy_segments' ): return getattr( self.data, key ) else: raise AttributeError( key ) def create_buffers( self ): """Create the internal buffer(s)""" assert not self.buffers, """Already created the buffer""" self.buffers = [ long(self.implementation.glGenBuffers(1)) ] self.target = self.resolve( self.target ) self.usage = self.resolve( self.usage ) self.implementation._DELETERS_[ id(self) ] = weakref.ref( self, self.implementation.deleter( self.buffers, id(self) )) return self.buffers def copy_data( self ): """Copy our data into the buffer on the GL side (if required) Ensures that the GL's version of the data in the VBO matches our internal view of the data, either by copying the entire data-set over with glBufferData or by updating the already-transferred data with glBufferSubData. """ assert self.buffers, """Should do create_buffers before copy_data""" if self.copied: if self._copy_segments: while self._copy_segments: start,size,data = self._copy_segments.pop(0) dataptr = ArrayDatatype.voidDataPointer( data ) self.implementation.glBufferSubData(self.target, start, size, dataptr) else: if self.data is not None and self.size is None: self.size = ArrayDatatype.arrayByteCount( self.data ) self.implementation.glBufferData( self.target, self.size, self.data, self.usage, ) self.copied = True def delete( self ): """Delete this buffer explicitly""" if self.buffers: while self.buffers: try: self.implementation.glDeleteBuffers(1, self.buffers.pop(0)) except (AttributeError,error.NullFunctionError), err: pass def __int__( self ): """Get our VBO id""" if not self.buffers: self.create_buffers() return self.buffers[0] def bind( self ): """Bind this buffer for use in vertex calls If we have not yet created our implementation-level VBO, then we will create it before binding. Once bound, calls self.copy_data() """ if not self.buffers: buffers = self.create_buffers() self.implementation.glBindBuffer( self.target, self.buffers[0]) self.copy_data() def unbind( self ): """Unbind the buffer (make normal array operations active)""" self.implementation.glBindBuffer( self.target,0 ) def __add__( self, other ): """Add an integer to this VBO (create a VBOOffset)""" if hasattr( other, 'offset' ): other = other.offset assert isinstance( other, (int,long) ), """Only know how to add integer/long offsets""" return VBOOffset( self, other ) __enter__ = bind def __exit__( self, exc_type=None, exc_val=None, exc_tb=None ): """Context manager exit""" self.unbind() return False # do not supress exceptions... class VBOOffset( object ): """Offset into a VBO instance This class is normally instantiated by doing a my_vbo + int operation, it can be passed to VBO requiring operations and will generate the appropriate integer offset value to be passed in. """ def __init__( self, vbo, offset ): """Initialize the offset with vbo and offset (unsigned integer)""" self.vbo = vbo self.offset = offset def __getattr__( self, key ): """Delegate any undefined attribute save vbo to our vbo""" if key != 'vbo': return getattr( self.vbo, key ) raise AttributeError( 'No %r key in VBOOffset'%(key,)) def __add__( self, other ): """Allow adding integers or other VBOOffset instances returns a VBOOffset to the this VBO with other.offset + self.offset or, if other has no offset, returns VBOOffset with self.offset + other """ if hasattr( other, 'offset' ): other = other.offset return VBOOffset( self.vbo, self.offset + other ) class VBOHandler( FormatHandler ): """Handles VBO instances passed in as array data This FormatHandler is registered with PyOpenGL on import of this module to provide handling of VBO objects as array data-sources """ vp0 = ctypes.c_void_p( 0 ) def dataPointer( self, instance ): """Retrieve data-pointer from the instance's data Is always NULL, to indicate use of the bound pointer """ return 0 def from_param( self, instance, typeCode=None ): """Always returns c_void_p(0)""" return self.vp0 def zeros( self, dims, typeCode ): """Not implemented""" raise NotImplemented( """Don't have VBO output support yet""" ) ones = zeros def asArray( self, value, typeCode=None ): """Given a value, convert to array representation""" return value def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" return ArrayDatatype.arrayToGLType( value.data ) def arrayByteCount( self, value ): return ArrayDatatype.arrayByteCount( value.data ) def arraySize( self, value, typeCode = None ): """Given a data-value, calculate dimensions for the array""" return ArrayDatatype.arraySize( value.data ) def unitSize( self, value, typeCode=None ): """Determine unit size of an array (if possible)""" return ArrayDatatype.unitSize( value.data ) def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" return ArrayDatatype.dimensions( value.data ) class VBOOffsetHandler( VBOHandler ): """Handles VBOOffset instances passed in as array data Registered on module import to provide support for VBOOffset instances as sources for array data. """ def dataPointer( self, instance ): """Retrieve data-pointer from the instance's data returns instance' offset """ return instance.offset def from_param( self, instance, typeCode=None ): """Returns a c_void_p( instance.offset )""" return ctypes.c_void_p( instance.offset ) _cleaners = {} def _cleaner( vbo ): """Construct a mapped-array cleaner function to unmap vbo.target""" def clean( ref ): try: _cleaners.pop( vbo ) except Exception, err: pass else: vbo.implementation.glUnmapBuffer( vbo.target ) return clean def mapVBO( vbo, access=GL.GL_READ_WRITE ): """Map the given buffer into a numpy array... Method taken from: http://www.mail-archive.com/numpy-discussion@lists.sourceforge.net/msg01161.html This should be considered an *experimental* API, it is not guaranteed to be available in future revisions of this library! Simplification to use ctypes cast from comment by 'sashimi' on my blog... """ from numpy import frombuffer vp = vbo.implementation.glMapBuffer( vbo.target, access ) # TODO: obviously this is not the right way to do this should allow each format # handler to convert the pointer in their own way... vp_array = ctypes.cast(vp, ctypes.POINTER(ctypes.c_byte*vbo.size) ) # Note: we could have returned the raw ctypes.c_byte array instead... array = frombuffer( vp_array, 'B' ) _cleaners[vbo] = weakref.ref( array, _cleaner( vbo )) return array PyOpenGL-3.0.2/OpenGL/arrays/_strings.py0000644000175000001440000000426612025001653020746 0ustar mcfletchusers00000000000000"""Run-time calculation of offset into Python string structure Does a scan to find the digits of pi in a string structure in order to produce an offset that can be used to produce data-pointers from Python strings. Porting note: Currently this uses id( str a ) to get the base address of the Python string. Python implementations where id( a ) is *not* the memory address of the string will not work! """ import ctypes PI_DIGITS = '31415926535897931' def calculateOffset( ): """Calculates the data-pointer offset for strings This does a sequential scan for 100 bytes from the id of a string to find special data-value stored in the string (the digits of PI). It produces a dataPointer function which adds that offset to the id of the passed strings. """ finalOffset = None a = PI_DIGITS # XXX NOT portable across Python implmentations!!! initial = id(a) targetType = ctypes.POINTER( ctypes.c_char ) for offset in range( 100 ): vector = ctypes.cast( initial+offset,targetType ) allMatched = True for index,digit in enumerate( a ): if vector[index] != digit: allMatched = False break if allMatched: finalOffset = offset break if finalOffset is not None: def dataPointer( data ): """Return the data-pointer from the array using calculated offset data -- a Python string Returns the raw data-pointer to the internal buffer of the passed string """ if not isinstance( data, str ): raise TypeError( """This function can only handle Python strings! Got %s"""%( type(data), ) ) return id(data) + finalOffset # just for later reference... dataPointer.offset = finalOffset return dataPointer raise RuntimeError( """Unable to determine dataPointer offset for strings!""" ) dataPointer = calculateOffset() if __name__ == "__main__": a = 'this' print id(a), dataPointer( a ), dataPointer(a) - id(a) PyOpenGL-3.0.2/OpenGL/arrays/ctypesarrays.py0000644000175000001440000001125612025001653021644 0ustar mcfletchusers00000000000000"""ctypes sized data-arrays as a data-formatmechanism XXX we have to use _ctypes.Array as the type descriminator, would be nice to have it available from the public module """ REGISTRY_NAME = 'ctypesarrays' import ctypes, _ctypes from OpenGL import constants, constant from OpenGL.arrays import formathandler import operator class CtypesArrayHandler( formathandler.FormatHandler ): """Ctypes Array-type-specific data-type handler for OpenGL""" @classmethod def from_param( cls, value, typeCode=None ): return ctypes.byref( value ) dataPointer = staticmethod( ctypes.addressof ) HANDLED_TYPES = (_ctypes.Array, ) isOutput = True def voidDataPointer( cls, value ): """Given value in a known data-pointer type, return void_p for pointer""" return ctypes.byref( value ) def zeros( self, dims, typeCode ): """Return Numpy array of zeros in given size""" type = GL_TYPE_TO_ARRAY_MAPPING[ typeCode ] for dim in dims: type *= dim return type() # should expicitly set to 0s def ones( self, dims, typeCode='d' ): """Return numpy array of ones in given size""" raise NotImplementedError( """Haven't got a good ones implementation yet""" ) ## type = GL_TYPE_TO_ARRAY_MAPPING[ typeCode ] ## for dim in dims: ## type *= dim ## return type() # should expicitly set to 0s def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" result = ARRAY_TO_GL_TYPE_MAPPING.get( value._type_ ) if result is not None: return result raise TypeError( """Don't know GL type for array of type %r, known types: %s\nvalue:%s"""%( value._type_, ARRAY_TO_GL_TYPE_MAPPING.keys(), value, ) ) def arraySize( self, value, typeCode = None ): """Given a data-value, calculate dimensions for the array""" try: return value.__class__.__component_count__ except AttributeError, err: dims = 1 for length in self.dims( value ): dims *= length value.__class__.__component_count__ = dims return dims def arrayByteCount( self, value, typeCode = None ): """Given a data-value, calculate number of bytes required to represent""" return ctypes.sizeof( value ) def types( self, value ): """Produce iterable producing all composite types""" dimObject = value while dimObject is not None: yield dimObject dimObject = getattr( dimObject, '_type_', None ) if isinstance( dimObject, (str,unicode)): dimObject = None def dims( self, value ): """Produce iterable of all dimensions""" try: return value.__class__.__dimensions__ except AttributeError, err: dimensions = [] for base in self.types( value ): length = getattr( base, '_length_', None) if length is not None: dimensions.append( length ) dimensions = tuple( dimensions ) value.__class__.__dimensions__ = dimensions return dimensions def asArray( self, value, typeCode=None ): """Convert given value to an array value of given typeCode""" return value def unitSize( self, value, typeCode=None ): """Determine unit size of an array (if possible)""" try: return value.__class__.__min_dimension__ except AttributeError, err: dim = self.dims( value )[-1] value.__class__.__min_dimension__ = dim return dim def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" return tuple( self.dims(value) ) ARRAY_TO_GL_TYPE_MAPPING = { constants.GLdouble: constants.GL_DOUBLE, constants.GLfloat: constants.GL_FLOAT, constants.GLint: constants.GL_INT, constants.GLuint: constants.GL_UNSIGNED_INT, constants.GLshort: constants.GL_SHORT, constants.GLushort: constants.GL_UNSIGNED_SHORT, constants.GLchar: constants.GL_CHAR, constants.GLbyte: constants.GL_BYTE, constants.GLubyte: constants.GL_UNSIGNED_BYTE, } GL_TYPE_TO_ARRAY_MAPPING = { constants.GL_DOUBLE: constants.GLdouble, constants.GL_FLOAT: constants.GLfloat, constants.GL_INT: constants.GLint, constants.GL_UNSIGNED_INT: constants.GLuint, constants.GL_SHORT: constants.GLshort, constants.GL_UNSIGNED_SHORT: constants.GLushort, constants.GL_CHAR: constants.GLchar, constants.GL_BYTE: constants.GLbyte, constants.GL_UNSIGNED_BYTE: constants.GLubyte, }PyOpenGL-3.0.2/OpenGL/arrays/formathandler.py0000644000175000001440000000733612025001653021745 0ustar mcfletchusers00000000000000"""Base class for the various Python data-format storage type APIs Data-type handlers are specified using OpenGL.plugins module """ import ctypes from OpenGL import plugins class FormatHandler( object ): """Abstract class describing the handler interface Each data-type handler is responsible for providing a number of methods which allow it to manipulate (and create) instances of the data-type it represents. """ LAZY_TYPE_REGISTRY = {} # more registrations HANDLER_REGISTRY = {} baseType = None typeConstant = None HANDLED_TYPES = () preferredOutput = None isOutput = False GENERIC_OUTPUT_PREFERENCES = ['numpy','numeric','ctypesarrays'] ALL_OUTPUT_HANDLERS = [] def loadAll( cls ): """Load all OpenGL.plugins-registered FormatHandler classes """ for entrypoint in plugins.FormatHandler.all(): cls.loadPlugin( entrypoint ) @classmethod def loadPlugin( cls, entrypoint ): """Load a single entry-point via plugins module""" if not entrypoint.loaded: from OpenGL.arrays.arraydatatype import ArrayDatatype try: plugin_class = entrypoint.load() except ImportError, err: from OpenGL import logs from OpenGL._configflags import WARN_ON_FORMAT_UNAVAILABLE log = logs.getLog( 'OpenGL.formathandler' ) if WARN_ON_FORMAT_UNAVAILABLE: logFunc = log.warn else: logFunc = log.info logFunc( 'Unable to load registered array format handler %s:\n%s', entrypoint.name, log.getException( err ) ) else: handler = plugin_class() handler.register( handler.HANDLED_TYPES ) ArrayDatatype.getRegistry()[ entrypoint.name ] = handler entrypoint.loaded = True @classmethod def typeLookup( cls, type ): """Lookup handler by data-type""" registry = ArrayDatatype.getRegistry() try: return registry[ type ] except KeyError, err: key = '%s.%s'%(type.__module__,type.__name__) plugin = cls.LAZY_TYPE_REGISTRY.get( key ) if plugin: cls.loadPlugin( plugin ) return registry[ type ] raise KeyError( """Unable to find data-format handler for %s"""%( type,)) loadAll = classmethod( loadAll ) def register( self, types=None ): """Register this class as handler for given set of types""" from OpenGL.arrays.arraydatatype import ArrayDatatype ArrayDatatype.getRegistry().register( self, types ) def registerReturn( self ): """Register this handler as the default return-type handler""" from OpenGL.arrays.arraydatatype import ArrayDatatype ArrayDatatype.getRegistry().registerReturn( self ) def from_param( self, value, typeCode=None ): """Convert to a ctypes pointer value""" def dataPointer( self, value ): """return long for pointer value""" def asArray( self, value, typeCode=None ): """Given a value, convert to array representation""" def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" def arraySize( self, value, typeCode = None ): """Given a data-value, calculate dimensions for the array""" def unitSize( self, value, typeCode=None ): """Determine unit size of an array (if possible)""" if self.baseType is not None: return def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" PyOpenGL-3.0.2/OpenGL/arrays/arraydatatype.py0000644000175000001440000003222112025001653021760 0ustar mcfletchusers00000000000000"""Array data-type implementations (abstraction points for GL array types""" import ctypes import OpenGL from OpenGL import constants, plugins from OpenGL.arrays import formathandler from OpenGL import logs log = logs.getLog( 'OpenGL.arrays.arraydatatype' ) from OpenGL import acceleratesupport ADT = None if acceleratesupport.ACCELERATE_AVAILABLE: try: from OpenGL_accelerate.arraydatatype import ArrayDatatype as ADT except ImportError, err: log.warn( "Unable to load ArrayDatatype accelerator from OpenGL_accelerate" ) if ADT is None: # Python-coded version class HandlerRegistry( dict ): GENERIC_OUTPUT_PREFERENCES = ['numpy','numeric','ctypesarrays'] def __init__( self, plugin_match ): self.match = plugin_match self.output_handler = None self.preferredOutput = None self.all_output_handlers = [] def __call__( self, value ): """Lookup of handler for given value""" try: typ = value.__class__ except AttributeError, err: typ = type(value) handler = self.get( typ ) if not handler: if hasattr( typ, '__mro__' ): for base in typ.__mro__: handler = self.get( base ) if not handler: handler = self.match( base ) if handler: handler = handler.load() if handler: handler = handler() if handler: self[ typ ] = handler if hasattr( handler, 'registerEquivalent' ): handler.registerEquivalent( typ, base ) return handler raise TypeError( """No array-type handler for type %r (value: %s) registered"""%( typ, repr(value)[:50] ) ) return handler def get_output_handler( self ): """Fast-path lookup for output handler object""" if self.output_handler is None: if not self: formathandler.FormatHandler.loadAll() if self.preferredOutput is not None: self.output_handler = self.get( self.preferredOutput ) if not self.output_handler: for preferred in self.GENERIC_OUTPUT_PREFERENCES: self.output_handler = self.get( preferred ) if self.output_handler: break if not self.output_handler: # look for anything that can do output... for handler in self.all_output_handlers: self.output_handler = handler break if not self.output_handler: raise RuntimeError( """Unable to find any output handler at all (not even ctypes/numpy ones!)""" ) return self.output_handler def register( self, handler, types=None ): """Register this class as handler for given set of types""" if not isinstance( types, (list,tuple)): types = [ types ] for type in types: self[ type ] = handler if handler.isOutput: self.all_output_handlers.append( handler ) def registerReturn( self, handler ): """Register this handler as the default return-type handler""" self.preferredOutput = handler self.output_handler = None GLOBAL_REGISTRY = HandlerRegistry( plugins.FormatHandler.match) formathandler.FormatHandler.TYPE_REGISTRY = GLOBAL_REGISTRY class ArrayDatatype( object ): """Mix-in for array datatype classes The ArrayDatatype marker essentially is used to mark a particular argument as having an "array" type, which means that it is eligible for handling via the arrays sub-package and its registered handlers. """ typeConstant = None handler = GLOBAL_REGISTRY getHandler = GLOBAL_REGISTRY.__call__ returnHandler = GLOBAL_REGISTRY.get_output_handler isAccelerated = False @classmethod def getRegistry( cls ): """Get our handler registry""" return cls.handler def from_param( cls, value ): """Given a value in a known data-pointer type, convert to a ctypes pointer""" return cls.getHandler(value).from_param( value, cls.typeConstant ) from_param = classmethod( logs.logOnFail( from_param, log ) ) def dataPointer( cls, value ): """Given a value in a known data-pointer type, return long for pointer""" try: return cls.getHandler(value).dataPointer( value ) except Exception, err: log.warn( """Failure in dataPointer for %s instance %s""", type(value), value, ) raise dataPointer = classmethod( logs.logOnFail( dataPointer, log ) ) def voidDataPointer( cls, value ): """Given value in a known data-pointer type, return void_p for pointer""" pointer = cls.dataPointer( value ) try: return ctypes.c_void_p(pointer) except TypeError, err: return pointer voidDataPointer = classmethod( logs.logOnFail( voidDataPointer, log ) ) def typedPointer( cls, value ): """Return a pointer-to-base-type pointer for given value""" return ctypes.cast( cls.dataPointer(value), ctypes.POINTER( cls.baseType )) typedPointer = classmethod( typedPointer ) def asArray( cls, value, typeCode=None ): """Given a value, convert to preferred array representation""" return cls.getHandler(value).asArray( value, typeCode or cls.typeConstant ) asArray = classmethod( logs.logOnFail( asArray, log ) ) def arrayToGLType( cls, value ): """Given a data-value, guess the OpenGL type of the corresponding pointer Note: this is not currently used in PyOpenGL and may be removed eventually. """ return cls.getHandler(value).arrayToGLType( value ) arrayToGLType = classmethod( logs.logOnFail( arrayToGLType, log ) ) def arraySize( cls, value, typeCode = None ): """Given a data-value, calculate dimensions for the array (number-of-units)""" return cls.getHandler(value).arraySize( value, typeCode or cls.typeConstant ) arraySize = classmethod( logs.logOnFail( arraySize, log ) ) def unitSize( cls, value, typeCode=None ): """Determine unit size of an array (if possible) Uses our local type if defined, otherwise asks the handler to guess... """ return cls.getHandler(value).unitSize( value, typeCode or cls.typeConstant ) unitSize = classmethod( logs.logOnFail( unitSize, log ) ) def zeros( cls, dims, typeCode=None ): """Allocate a return array of the given dimensions filled with zeros""" return cls.returnHandler().zeros( dims, typeCode or cls.typeConstant ) zeros = classmethod( logs.logOnFail( zeros, log ) ) def dimensions( cls, value ): """Given a data-value, get the dimensions (assumes full structure info)""" return cls.getHandler(value).dimensions( value ) dimensions = classmethod( logs.logOnFail( dimensions, log ) ) def arrayByteCount( cls, value ): """Given a data-value, try to determine number of bytes it's final form occupies For most data-types this is arraySize() * atomic-unit-size """ return cls.getHandler(value).arrayByteCount( value ) arrayByteCount = classmethod( logs.logOnFail( arrayByteCount, log ) ) # the final array data-type classes... class GLclampdArray( ArrayDatatype, ctypes.POINTER(constants.GLclampd )): """Array datatype for GLclampd types""" baseType = constants.GLclampd typeConstant = constants.GL_DOUBLE class GLclampfArray( ArrayDatatype, ctypes.POINTER(constants.GLclampf )): """Array datatype for GLclampf types""" baseType = constants.GLclampf typeConstant = constants.GL_FLOAT class GLfloatArray( ArrayDatatype, ctypes.POINTER(constants.GLfloat )): """Array datatype for GLfloat types""" baseType = constants.GLfloat typeConstant = constants.GL_FLOAT class GLdoubleArray( ArrayDatatype, ctypes.POINTER(constants.GLdouble )): """Array datatype for GLdouble types""" baseType = constants.GLdouble typeConstant = constants.GL_DOUBLE class GLbyteArray( ArrayDatatype, ctypes.POINTER(constants.GLbyte )): """Array datatype for GLbyte types""" baseType = constants.GLbyte typeConstant = constants.GL_BYTE class GLcharArray( ArrayDatatype, ctypes.c_char_p): """Array datatype for ARB extension pointers-to-arrays""" baseType = constants.GLchar typeConstant = constants.GL_BYTE GLcharARBArray = GLcharArray class GLshortArray( ArrayDatatype, ctypes.POINTER(constants.GLshort )): """Array datatype for GLshort types""" baseType = constants.GLshort typeConstant = constants.GL_SHORT class GLintArray( ArrayDatatype, ctypes.POINTER(constants.GLint )): """Array datatype for GLint types""" baseType = constants.GLint typeConstant = constants.GL_INT class GLubyteArray( ArrayDatatype, ctypes.POINTER(constants.GLubyte )): """Array datatype for GLubyte types""" baseType = constants.GLubyte typeConstant = constants.GL_UNSIGNED_BYTE GLbooleanArray = GLubyteArray class GLushortArray( ArrayDatatype, ctypes.POINTER(constants.GLushort )): """Array datatype for GLushort types""" baseType = constants.GLushort typeConstant = constants.GL_UNSIGNED_SHORT class GLuintArray( ArrayDatatype, ctypes.POINTER(constants.GLuint )): """Array datatype for GLuint types""" baseType = constants.GLuint typeConstant = constants.GL_UNSIGNED_INT class GLint64Array( ArrayDatatype, ctypes.POINTER(constants.GLint64 )): """Array datatype for GLuint types""" baseType = constants.GLint64 typeConstant = None # TODO: find out what this should be! class GLuint64Array( ArrayDatatype, ctypes.POINTER(constants.GLuint64 )): """Array datatype for GLuint types""" baseType = constants.GLuint64 typeConstant = constants.GL_UNSIGNED_INT64 class GLenumArray( ArrayDatatype, ctypes.POINTER(constants.GLenum )): """Array datatype for GLenum types""" baseType = constants.GLenum typeConstant = constants.GL_UNSIGNED_INT class GLsizeiArray( ArrayDatatype, ctypes.POINTER(constants.GLsizei )): """Array datatype for GLenum types""" baseType = constants.GLsizei typeConstant = constants.GL_INT class GLvoidpArray( ArrayDatatype, ctypes.POINTER(constants.GLvoid )): """Array datatype for GLenum types""" baseType = constants.GLvoidp typeConstant = constants.GL_VOID_P else: # Cython-coded array handler log.info( 'Using accelerated ArrayDatatype' ) ArrayDatatype = ADT( None, None ) GLclampdArray = ADT( constants.GL_DOUBLE, constants.GLclampd ) GLclampfArray = ADT( constants.GL_FLOAT, constants.GLclampf ) GLdoubleArray = ADT( constants.GL_DOUBLE, constants.GLdouble ) GLfloatArray = ADT( constants.GL_FLOAT, constants.GLfloat ) GLbyteArray = ADT( constants.GL_BYTE, constants.GLbyte ) GLcharArray = GLcharARBArray = ADT( constants.GL_BYTE, constants.GLchar ) GLshortArray = ADT( constants.GL_SHORT, constants.GLshort ) GLintArray = ADT( constants.GL_INT, constants.GLint ) GLubyteArray = GLbooleanArray = ADT( constants.GL_UNSIGNED_BYTE, constants.GLubyte ) GLushortArray = ADT( constants.GL_UNSIGNED_SHORT, constants.GLushort ) GLuintArray = ADT( constants.GL_UNSIGNED_INT, constants.GLuint ) GLint64Array = ADT( None, constants.GLint64 ) GLuint64Array = ADT( constants.GL_UNSIGNED_INT64, constants.GLuint64 ) GLenumArray = ADT( constants.GL_UNSIGNED_INT, constants.GLenum ) GLsizeiArray = ADT( constants.GL_INT, constants.GLsizei ) GLvoidpArray = ADT( constants.GL_VOID_P, constants.GLvoidp ) GL_CONSTANT_TO_ARRAY_TYPE = { constants.GL_DOUBLE : GLclampdArray, constants.GL_FLOAT : GLclampfArray, constants.GL_FLOAT : GLfloatArray, constants.GL_DOUBLE : GLdoubleArray, constants.GL_BYTE : GLbyteArray, constants.GL_SHORT : GLshortArray, constants.GL_INT : GLintArray, constants.GL_UNSIGNED_BYTE : GLubyteArray, constants.GL_UNSIGNED_SHORT : GLushortArray, constants.GL_UNSIGNED_INT : GLuintArray, #constants.GL_UNSIGNED_INT : GLenumArray, } PyOpenGL-3.0.2/OpenGL/arrays/nones.py0000644000175000001440000000465012025001653020235 0ustar mcfletchusers00000000000000"""Passing of None as an array data-type """ REGISTRY_NAME = 'nones' import logging log = logging.getLogger( 'OpenGL.arrays.nones' ) from OpenGL import acceleratesupport NoneHandler = None if acceleratesupport.ACCELERATE_AVAILABLE: try: from OpenGL_accelerate.nones_formathandler import NoneHandler except ImportError, err: log.warn( "Unable to load nones_formathandler accelerator from OpenGL_accelerate" ) if NoneHandler is None: from OpenGL.arrays import formathandler class NoneHandler( formathandler.FormatHandler ): """Numpy-specific data-type handler for OpenGL""" HANDLED_TYPES = (type(None), ) def from_param( self, value, typeCode=None ): """Convert to a ctypes pointer value""" return None def dataPointer( self, value ): """return long for pointer value""" return None def voidDataPointer( cls, value ): """Given value in a known data-pointer type, return void_p for pointer""" return None def asArray( self, value, typeCode=None ): """Given a value, convert to array representation""" return None def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" raise TypeError( """Can't guess type of a NULL pointer""" ) def arraySize( self, value, typeCode = None ): """Given a data-value, calculate dimensions for the array""" return 0 def arrayByteCount( self, value, typeCode = None ): """Given a data-value, calculate number of bytes required to represent""" return 0 def zeros( self, shape, typeCode= None ): """Create an array of given shape with given typeCode""" raise TypeError( """Can't create NULL pointer filled with values""" ) def ones( self, shape, typeCode= None ): """Create an array of given shape with given typeCode""" raise TypeError( """Can't create NULL pointer filled with values""" ) def unitSize( self, value, typeCode=None ): """Determine unit size of an array (if possible)""" raise TypeError( """Can't determine unit size of a null pointer""" ) def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" return (0,)PyOpenGL-3.0.2/OpenGL/arrays/buffers.py0000644000175000001440000000536512025001653020553 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Test for a buffer-protocol-based access mechanism Will *only* work for Python 2.6+, and pretty much just works for strings under 2.6 (in terms of the common object types). """ import ctypes,sys from OpenGL.arrays import _buffers from OpenGL import constants from OpenGL.arrays import formathandler class BufferHandler( formathandler.FormatHandler ): """Buffer-protocol data-type handler for OpenGL""" HANDLED_TYPES = (bytes,bytearray) @classmethod def from_param( cls, value, typeCode=None ): if not isinstance( value, _buffers.Py_buffer ): raise TypeError( """Can't convert value to py-buffer in from_param""" ) return value.buf dataPointer = staticmethod( dataPointer ) def zeros( self, dims, typeCode=None ): """Currently don't allow strings as output types!""" return self.asArray( bytearray( b'\000'*reduce(operator.mul,dims)*BYTE_SIZES[typeCode] ) ) def ones( self, dims, typeCode=None ): """Currently don't allow strings as output types!""" raise NotImplemented( """Have not implemented ones for buffer type""" ) def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" raise NotImplemented( """Can't guess data-type from a string-type argument""" ) def arraySize( self, value, typeCode = None ): """Given a data-value, calculate ravelled size for the array""" # need to get bits-per-element... # TODO: verify that multi-dim gives ravelled for buffer API return value.len def arrayByteCount( self, value, typeCode = None ): """Given a data-value, calculate number of bytes required to represent""" return value.len * value.itemsize def asArray( self, value, typeCode=None ): """Convert given value to an array value of given typeCode""" if not CheckBuffer( value ): raise TypeError( """Require a type which supports the buffer protocol, %s doesn't"""%( type(value))) buf = Py_buffer() GetBuffer( value, buf, PyBUF_CONTIG_RO ) return buf def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" return value.dims BYTE_SIZES = { constants.GL_DOUBLE: ctypes.sizeof( constants.GLdouble ), constants.GL_FLOAT: ctypes.sizeof( constants.GLfloat ), constants.GL_INT: ctypes.sizeof( constants.GLint ), constants.GL_SHORT: ctypes.sizeof( constants.GLshort ), constants.GL_UNSIGNED_BYTE: ctypes.sizeof( constants.GLubyte ), constants.GL_UNSIGNED_SHORT: ctypes.sizeof( constants.GLshort ), constants.GL_BYTE: ctypes.sizeof( constants.GLbyte ), constants.GL_UNSIGNED_INT: ctypes.sizeof( constants.GLuint ), } PyOpenGL-3.0.2/OpenGL/arrays/arrayhelpers.py0000644000175000001440000002076412025001653021620 0ustar mcfletchusers00000000000000"""Helper functions for wrapping array-using operations These are functions intended to be used in wrapping GL functions that deal with OpenGL array data-types. """ import OpenGL from OpenGL import _configflags from OpenGL import contextdata, error, wrapper, constants, converters from OpenGL.arrays import arraydatatype import logging log = logging.getLogger( 'OpenGL.arrays.arrayhelpers' ) from OpenGL import acceleratesupport AsArrayTypedSizeChecked = None if acceleratesupport.ACCELERATE_AVAILABLE: try: from OpenGL_accelerate.arraydatatype import AsArrayTypedSizeChecked from OpenGL_accelerate.wrapper import returnPyArgumentIndex from OpenGL_accelerate.arraydatatype import ( AsArrayOfType,AsArrayTyped,AsArrayTypedSize ) except ImportError, err: log.warn( "Unable to load arrayhelpers accelerator from OpenGL_accelerate" ) if AsArrayTypedSizeChecked is None: def returnPointer( result,baseOperation,pyArgs,cArgs, ): """Return the converted object as result of function Note: this is a hack that always returns pyArgs[0]! """ return pyArgs[0] class AsArrayOfType( converters.PyConverter ): """Given arrayName and typeName coerce arrayName to array of type typeName TODO: It should be possible to drop this if ERROR_ON_COPY, as array inputs always have to be the final objects in that case. """ argNames = ( 'arrayName','typeName' ) indexLookups = ( ('arrayIndex', 'arrayName','pyArgIndex'), ('typeIndex', 'typeName','pyArgIndex'), ) def __init__( self, arrayName='pointer', typeName='type' ): self.arrayName = arrayName self.typeName = typeName def __call__( self, arg, wrappedOperation, args): """Get the arg as an array of the appropriate type""" type = args[ self.typeIndex ] arrayType = arraydatatype.GL_CONSTANT_TO_ARRAY_TYPE[ type ] return arrayType.asArray( arg ) class AsArrayTyped( converters.PyConverter ): """Given arrayName and arrayType, convert arrayName to array of type TODO: It should be possible to drop this if ERROR_ON_COPY, as array inputs always have to be the final objects in that case. """ argNames = ( 'arrayName','arrayType' ) indexLookups = ( ('arrayIndex', 'arrayName','pyArgIndex'), ) def __init__( self, arrayName='pointer', arrayType=None ): self.arrayName = arrayName self.arrayType = arrayType def __call__( self, arg, wrappedOperation, args): """Get the arg as an array of the appropriate type""" return self.arrayType.asArray( arg ) class AsArrayTypedSize( converters.CConverter ): """Given arrayName and arrayType, determine size of arrayName """ argNames = ( 'arrayName','arrayType' ) indexLookups = ( ('arrayIndex', 'arrayName','pyArgIndex'), ) def __init__( self, arrayName='pointer', arrayType=None ): self.arrayName = arrayName self.arrayType = arrayType def __call__( self, pyArgs, index, wrappedOperation ): """Get the arg as an array of the appropriate type""" return self.arrayType.arraySize( pyArgs[self.arrayIndex ] ) else: returnPointer = returnPyArgumentIndex( 0 ) if not _configflags.ERROR_ON_COPY: def asArrayType( typ, size=None ): """Create PyConverter to get first argument as array of type""" return converters.CallFuncPyConverter( typ.asArray ) else: def asArrayType( typ, size=None ): """No converter required""" return None if not _configflags.ARRAY_SIZE_CHECKING: asArrayTypeSize = asArrayType else: if AsArrayTypedSizeChecked: asArrayTypeSize = AsArrayTypedSizeChecked else: def asArrayTypeSize( typ, size ): """Create PyConverter function to get array as type and check size Produces a raw function, not a PyConverter instance """ asArray = typ.asArray dataType = typ.typeConstant arraySize = typ.arraySize def asArraySize( incoming, function, args ): handler = typ.getHandler( incoming ) result = handler.asArray( incoming, dataType ) actualSize = handler.arraySize(result, dataType) if actualSize != size: raise ValueError( """Expected %r item array, got %r item array"""%( size, actualSize, ), incoming, ) return result return asArraySize if not _configflags.ERROR_ON_COPY: def asVoidArray( ): """Create PyConverter returning incoming as an array of any type""" from OpenGL.arrays import ArrayDatatype return converters.CallFuncPyConverter( ArrayDatatype.asArray ) else: def asVoidArray( ): """If there's no copying allowed, we can use default passing""" return None class storePointerType( object ): """Store named pointer value in context indexed by constant pointerName -- named pointer argument constant -- constant used to index in the context storage Note: OpenGL.STORE_POINTERS can be set with ERROR_ON_COPY to ignore this storage operation. Stores the pyArgs (i.e. result of pyConverters) for the named pointer argument... """ def __init__( self, pointerName, constant ): self.pointerName = pointerName self.constant = constant def finalise( self, wrapper ): self.pointerIndex = wrapper.pyArgIndex( self.pointerName ) def __call__( self, result, baseOperation, pyArgs, cArgs ): contextdata.setValue( self.constant, pyArgs[self.pointerIndex] ) if not _configflags.ERROR_ON_COPY: def setInputArraySizeType( baseOperation, size, type, argName=0 ): """Decorate function with vector-handling code for a single argument if OpenGL.ERROR_ON_COPY is False, then we return the named argument, converting to the passed array type, optionally checking that the array matches size. if OpenGL.ERROR_ON_COPY is True, then we will dramatically simplify this function, only wrapping if size is True, i.e. only wrapping if we intend to do a size check on the array. """ function = wrapper.wrapper( baseOperation ) if not hasattr( function, 'returnValues' ): if isinstance( argName, (str,unicode)): function.setReturnValues( converters.returnPyArgument(argName) ) else: raise TypeError( """Argname should be a string/unicode: %s"""%(type(argName)) ) if size is not None: function.setPyConverter( argName, asArrayTypeSize(type, size) ) else: function.setPyConverter( argName, asArrayType(type) ) function.setCConverter( argName, converters.getPyArgsName( argName ) ) return function else: def setInputArraySizeType( baseOperation, size, type, argName=0 ): """Decorate function with vector-handling code for a single argument if OpenGL.ERROR_ON_COPY is False, then we return the named argument, converting to the passed array type, optionally checking that the array matches size. if OpenGL.ERROR_ON_COPY is True, then we will dramatically simplify this function, only wrapping if size is True, i.e. only wrapping if we intend to do a size check on the array. """ if size is not None: function = wrapper.wrapper( baseOperation ) # return value is always the source array... function.setPyConverter( argName, asArrayTypeSize(type, size) ) function.setCConverter( argName, converters.getPyArgsName( argName ) ) else: function = baseOperation return function def arraySizeOfFirstType( typ, default ): unitSize = typ.unitSize def arraySizeOfFirst( pyArgs, index, baseOperation ): """Return the array size of the first argument""" array = pyArgs[0] if array is None: return default else: return unitSize( array ) return arraySizeOfFirst PyOpenGL-3.0.2/OpenGL/arrays/ctypespointers.py0000644000175000001440000000620312025001653022202 0ustar mcfletchusers00000000000000"""ctypes data-pointers as a data-format mechanism """ REGISTRY_NAME = 'ctypespointers' import ctypes, _ctypes from OpenGL import constants, constant from OpenGL.arrays import formathandler import operator class CtypesPointerHandler( formathandler.FormatHandler ): """Ctypes Pointer-type-specific data-type handler for OpenGL Because pointers do not have size information we can't use them for output of data, but they can be used for certain types of input... """ @classmethod def from_param( cls, value, typeCode=None ): return value dataPointer = staticmethod( ctypes.addressof ) HANDLED_TYPES = (ctypes._Pointer, ) def voidDataPointer( cls, value ): """Given value in a known data-pointer type, return void_p for pointer""" return ctypes.cast( value, ctypes.c_void_p ) def zeros( self, dims, typeCode ): """Return Numpy array of zeros in given size""" raise NotImplementedError( """Sized output doesn't yet work...""" ) def ones( self, dims, typeCode='d' ): """Return numpy array of ones in given size""" raise NotImplementedError( """Haven't got a good ones implementation yet""" ) def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" result = ARRAY_TO_GL_TYPE_MAPPING.get( value._type_ ) if result is not None: return result raise TypeError( """Don't know GL type for array of type %r, known types: %s\nvalue:%s"""%( value._type_, ARRAY_TO_GL_TYPE_MAPPING.keys(), value, ) ) def arraySize( self, value, typeCode = None ): """Given a data-value, calculate dimensions for the array""" raise NotImplementedError( """Haven't got an arraySize implementation""" ) def asArray( self, value, typeCode=None ): """Convert given value to an array value of given typeCode""" return value def unitSize( self, value, typeCode=None ): """Determine unit size of an array (if possible)""" return 1 def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" raise NotImplementedError( """Haven't got a dimensions implementation""" ) ARRAY_TO_GL_TYPE_MAPPING = { constants.GLdouble: constants.GL_DOUBLE, constants.GLfloat: constants.GL_FLOAT, constants.GLint: constants.GL_INT, constants.GLuint: constants.GL_UNSIGNED_INT, constants.GLshort: constants.GL_SHORT, constants.GLushort: constants.GL_UNSIGNED_SHORT, constants.GLchar: constants.GL_CHAR, constants.GLbyte: constants.GL_BYTE, constants.GLubyte: constants.GL_UNSIGNED_BYTE, } GL_TYPE_TO_ARRAY_MAPPING = { constants.GL_DOUBLE: constants.GLdouble, constants.GL_FLOAT: constants.GLfloat, constants.GL_INT: constants.GLint, constants.GL_UNSIGNED_INT: constants.GLuint, constants.GL_SHORT: constants.GLshort, constants.GL_UNSIGNED_SHORT: constants.GLushort, constants.GL_CHAR: constants.GLchar, constants.GL_BYTE: constants.GLbyte, constants.GL_UNSIGNED_BYTE: constants.GLubyte, }PyOpenGL-3.0.2/OpenGL/arrays/strings.py0000644000175000001440000000665312025001653020611 0ustar mcfletchusers00000000000000"""String-array-handling code for PyOpenGL """ from OpenGL import constants from OpenGL.arrays import formathandler import ctypes from OpenGL import _bytes from OpenGL._configflags import ERROR_ON_COPY def dataPointer( value, typeCode=None ): return ctypes.cast(ctypes.c_char_p(value), ctypes.c_void_p).value class StringHandler( formathandler.FormatHandler ): """String-specific data-type handler for OpenGL""" HANDLED_TYPES = (_bytes.bytes, ) @classmethod def from_param( cls, value, typeCode=None ): return ctypes.c_void_p( dataPointer( value ) ) dataPointer = staticmethod( dataPointer ) def zeros( self, dims, typeCode=None ): """Currently don't allow strings as output types!""" raise NotImplemented( """Don't currently support strings as output arrays""" ) def ones( self, dims, typeCode=None ): """Currently don't allow strings as output types!""" raise NotImplemented( """Don't currently support strings as output arrays""" ) def arrayToGLType( self, value ): """Given a value, guess OpenGL type of the corresponding pointer""" raise NotImplemented( """Can't guess data-type from a string-type argument""" ) def arraySize( self, value, typeCode = None ): """Given a data-value, calculate ravelled size for the array""" # need to get bits-per-element... byteCount = BYTE_SIZES[ typeCode ] return len(value)//byteCount def arrayByteCount( self, value, typeCode = None ): """Given a data-value, calculate number of bytes required to represent""" return len(value) def asArray( self, value, typeCode=None ): """Convert given value to an array value of given typeCode""" if isinstance( value, bytes ): return value elif hasattr( value, 'tostring' ): return value.tostring() elif hasattr( value, 'raw' ): return value.raw # could convert types to string here, but we're not registered for # anything save string types... raise TypeError( """String handler got non-string object: %r"""%(type(value))) def dimensions( self, value, typeCode=None ): """Determine dimensions of the passed array value (if possible)""" raise TypeError( """Cannot calculate dimensions for a String data-type""" ) class UnicodeHandler( StringHandler ): HANDLED_TYPES = (_bytes.unicode,) @classmethod def from_param( cls, value ): # TODO: raise CopyError if the flag is set! converted = _bytes.as_8_bit( value ) result = StringHandler.from_param( ) if converted is not value: if ERROR_ON_COPY: raise error.CopyError( """Unicode string passed, cannot copy with ERROR_ON_COPY set, please use 8-bit strings""" ) result._temporary_array_ = converted return result BYTE_SIZES = { constants.GL_DOUBLE: ctypes.sizeof( constants.GLdouble ), constants.GL_FLOAT: ctypes.sizeof( constants.GLfloat ), constants.GL_INT: ctypes.sizeof( constants.GLint ), constants.GL_SHORT: ctypes.sizeof( constants.GLshort ), constants.GL_UNSIGNED_BYTE: ctypes.sizeof( constants.GLubyte ), constants.GL_UNSIGNED_SHORT: ctypes.sizeof( constants.GLshort ), constants.GL_BYTE: ctypes.sizeof( constants.GLbyte ), constants.GL_UNSIGNED_INT: ctypes.sizeof( constants.GLuint ), } PyOpenGL-3.0.2/OpenGL/arrays/_numeric.py0000644000175000001440000000160112025001653020705 0ustar mcfletchusers00000000000000"""Run-time calculation of offset into Python Numeric (old) structures Numeric Python, by fortuitous chance, puts the one thing we need precisely as the first value in the structure beyond the PyObject * header, so that it's exactly that many bytes from the pointer value for the object... """ import ctypes def dataPointerFunction( ): """Calculate the data-pointer offset in the Numeric object header""" offset = object.__basicsize__ from_address = ctypes.c_void_p.from_address def dataPointer( data): """Return pointer-to-data + offset""" return from_address( id( data ) + offset ).value return dataPointer dataPointer = dataPointerFunction() if __name__ == "__main__": import Numeric test = Numeric.arange( 0,200, 1,'i' ) aType = ctypes.c_int * 200 test2 = aType.from_address( dataPointer( test ) ) assert test == test2, (test,test2)PyOpenGL-3.0.2/OpenGL/images.py0000644000175000001440000001453312025001653017060 0ustar mcfletchusers00000000000000"""Image/texture implementation code This module provides the Pan-OpenGL operations required to support OpenGL image handling. Most of this code is simply boilerplate code that sets OpenGL parameters such that normal Pythonic assumptions about data-ordering are met to allow easier interaction with other projects (such as PIL or Numpy). Generally speaking, there are 3 pieces of information which control how an image is processed in the system: format -- this is the pixel format, such as GL_RGB/GL_RED/GL_ABGR_EXT dims -- tuple of dimensions for the image, (width,height,depth) order type -- the storage data-type for the image, normally GL_UNSIGNED_BYTE when working in Python, but all of the standard OpenGL types for images can be used if you happen to have your data in some exotic format. OpenGL.UNSIGNED_BYTE_IMAGES_AS_STRING -- if this global value is set, then read of unsigned byte images using glReadPixels and glGetTexImage produces a string instead of the default array format. Attributes of Note: COMPONENT_COUNTS -- used to lookup how many units of a given storage type are required to store a unit in a given format TYPE_TO_ARRAYTYPE -- maps Image storage types to their array data-type constants, i.e. maps GL_UNSIGNED_SHORT_4_4_4_4 to GL_UNSIGNED_SHORT so that we can use the standard array types for manipulating image arrays. RANK_PACKINGS -- commands required to set up default array-transfer operations for an array of the specified rank. New image formats and types will need to be registered here to be supported, this means that extension modules which add image types/formats need to alter the tables described above! XXX Should be an API to handle that instead of direct modification. """ from OpenGL.raw.GL.VERSION import GL_1_1 as simple from OpenGL import arrays import OpenGL from OpenGL import _configflags import ctypes def SetupPixelRead( format, dims, type): """Setup transfer mode for a read into a numpy array return the array Calls setupDefaultTransferMode, sets rankPacking and then returns a createTargetArray for the parameters. """ setupDefaultTransferMode() # XXX this is wrong? dims may grow or it may not, depends on whether # the format can fit in the type or not, but rank is a property of the # image itself? Don't know, should test. rankPacking( len(dims)+1 ) return createTargetArray( format, dims, type ) def setupDefaultTransferMode( ): """Set pixel transfer mode to assumed internal structure of arrays Basically OpenGL-ctypes (and PyOpenGL) assume that your image data is in non-byte-swapped order, with big-endian ordering of bytes (though that seldom matters in image data). These assumptions are normally correct when dealing with Python libraries which expose byte-arrays. """ simple.glPixelStorei(simple.GL_PACK_SWAP_BYTES, 0) simple.glPixelStorei(simple.GL_PACK_LSB_FIRST, 0) def rankPacking( rank ): """Set the pixel-transfer modes for a given image "rank" (# of dims) Uses RANK_PACKINGS table to issue calls to glPixelStorei """ for func,which,arg in RANK_PACKINGS[rank]: try: func(which,arg) except Exception, err: # XXX should be logging a warning! pass def createTargetArray( format, dims, type ): """Create storage array for given parameters If storage type requires > 1 unit per format pixel, then dims will be extended by 1, so in the common case of RGB and GL_UNSIGNED_BYTE you will wind up with an array of dims + (3,) dimensions. See COMPONENT_COUNTS for table which controls which formats produce larger dimensions. The secondary table TIGHT_PACK_FORMATS overrides this case, so that image formats registered as TIGHT_PACK_FORMATS only ever return a dims-shaped value. TIGHT_PACK_FORMATS will raise ValueErrors if they are used with a format that does not have the same number of components as they define. Note that the base storage type must provide a zeros method. The zeros method relies on their being a registered default array-implementation for the storage type. The default installation of OpenGL-ctypes will use Numpy arrays for returning the result. """ # calculate the number of storage elements required to store # a single pixel of format, that's the dimension of the resulting array componentCount = formatToComponentCount( format ) if componentCount > 1: if type not in TIGHT_PACK_FORMATS: # requires multiple elements to store a single pixel (common) # e.g. byte array (typeBits = 8) with RGB (24) or RGBA (32) dims += (componentCount, ) elif TIGHT_PACK_FORMATS[ type ] < componentCount: raise ValueError( """Image type: %s supports %s components, but format %s requires %s components"""%( type, TIGHT_PACK_FORMATS[ type ], format, componentCount, ) ) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ TYPE_TO_ARRAYTYPE.get(type,type) ] return arrayType.zeros( dims ) def formatToComponentCount( format ): """Given an OpenGL image format specification, get components/pixel""" size = COMPONENT_COUNTS.get( format ) if size is None: raise ValueError( """Unrecognised image format: %r"""%(format,)) return size def returnFormat( data, type ): """Perform compatibility conversion for PyOpenGL 2.x image-as string results Uses OpenGL.UNSIGNED_BYTE_IMAGES_AS_STRING to control whether to perform the conversions. """ if _configflags.UNSIGNED_BYTE_IMAGES_AS_STRING: if type == simple.GL_UNSIGNED_BYTE: if hasattr( data, 'tostring' ): return data.tostring() elif hasattr( data, 'raw' ): return data.raw return data COMPONENT_COUNTS = { # Image-format-constant: number-of-components (integer) } TYPE_TO_BITS = { # GL-image-storage-type-constant: number-of-bits (integer) } TYPE_TO_ARRAYTYPE = { # GL-image-storage-type-constant: GL-datatype (constant) } TIGHT_PACK_FORMATS = { } RANK_PACKINGS = { # rank (integer): list of (function,**arg) to setup for that rank } PyOpenGL-3.0.2/OpenGL/GL/0000755000175000001440000000000012032640120015531 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/MESA/0000755000175000001440000000000012032640120016256 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/MESA/ycbcr_texture.py0000644000175000001440000000243212025001653021517 0ustar mcfletchusers00000000000000'''OpenGL extension MESA.ycbcr_texture This module customises the behaviour of the OpenGL.raw.GL.MESA.ycbcr_texture to provide a more Python-friendly API Overview (from the spec) This extension supports texture images stored in the YCbCr format. There is no support for converting YCbCr images to RGB or vice versa during pixel transfer. The texture's YCbCr colors are converted to RGB during texture sampling, after-which, all the usual per-fragment operations take place. Only 2D texture images are supported (not glDrawPixels, glReadPixels, etc). A YCbCr pixel (texel) is a 16-bit unsigned short with two components. The first component is luminance (Y). For pixels in even-numbered image columns, the second component is Cb. For pixels in odd-numbered image columns, the second component is Cr. If one were to convert the data to RGB one would need to examine two pixels from columns N and N+1 (where N is even) to deduce the RGB color. The official definition of this extension is available here: http://www.opengl.org/registry/specs/MESA/ycbcr_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.MESA.ycbcr_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/MESA/__init__.py0000644000175000001440000000002712025001653020372 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/MESA/pack_invert.py0000644000175000001440000000214512025001653021143 0ustar mcfletchusers00000000000000'''OpenGL extension MESA.pack_invert This module customises the behaviour of the OpenGL.raw.GL.MESA.pack_invert to provide a more Python-friendly API Overview (from the spec) This extension adds a new pixel storage parameter to indicate that images are to be packed in top-to-bottom order instead of OpenGL's conventional bottom-to-top order. Only pixel packing can be inverted (i.e. for glReadPixels, glGetTexImage, glGetConvolutionFilter, etc). Almost all known image file formats store images in top-to-bottom order. As it is, OpenGL reads images from the frame buffer in bottom-to-top order. Thus, images usually have to be inverted before writing them to a file with image I/O libraries. This extension allows images to be read such that inverting isn't needed. The official definition of this extension is available here: http://www.opengl.org/registry/specs/MESA/pack_invert.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.MESA.pack_invert import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/MESA/resize_buffers.py0000644000175000001440000000243012025001653021650 0ustar mcfletchusers00000000000000'''OpenGL extension MESA.resize_buffers This module customises the behaviour of the OpenGL.raw.GL.MESA.resize_buffers to provide a more Python-friendly API Overview (from the spec) Mesa is often used as a client library with no integration with the computer's window system (an X server, for example). And since Mesa does not have an event loop nor window system callbacks, it cannot properly respond to window system events. In particular, Mesa cannot automatically detect when a window has been resized. Mesa's glViewport command queries the current window size and updates its internal data structors accordingly. This normally works fine since most applications call glViewport in responce to window size changes. In some situations, however, the application may not call glViewport when a window size changes but would still like Mesa to adjust to the new window size. This extension exports a new function to solve this problem. The official definition of this extension is available here: http://www.opengl.org/registry/specs/MESA/resize_buffers.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.MESA.resize_buffers import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/MESA/window_pos.py0000644000175000001440000000237612025001653021034 0ustar mcfletchusers00000000000000'''OpenGL extension MESA.window_pos This module customises the behaviour of the OpenGL.raw.GL.MESA.window_pos to provide a more Python-friendly API Overview (from the spec) In order to set the current raster position to a specific window coordinate with the RasterPos command, the modelview matrix, projection matrix and viewport must be set very carefully. Furthermore, if the desired window coordinate is outside of the window's bounds one must rely on a subtle side-effect of the Bitmap command in order to circumvent frustum clipping. This extension provides a set of functions to directly set the current raster position, bypassing the modelview matrix, the projection matrix and the viewport to window mapping. Furthermore, clip testing is not performed. This greatly simplifies the process of setting the current raster position to a specific window coordinate prior to calling DrawPixels, CopyPixels or Bitmap. The official definition of this extension is available here: http://www.opengl.org/registry/specs/MESA/window_pos.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.MESA.window_pos import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/GREMEDY/0000755000175000001440000000000012032640120016625 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/GREMEDY/__init__.py0000644000175000001440000000002712025001653020741 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/GREMEDY/frame_terminator.py0000644000175000001440000000321112025001653022536 0ustar mcfletchusers00000000000000'''OpenGL extension GREMEDY.frame_terminator This module customises the behaviour of the OpenGL.raw.GL.GREMEDY.frame_terminator to provide a more Python-friendly API Overview (from the spec) This extension defines a mechanism that enables marking the end of render frames within the OpenGL stream. When debugging or profiling an OpenGL application, the debuggers and profilers needs to know when a render frame is ended. This is important for frame per second measurements, statistical analysis, marking and clearing stream loggers logs, performance counters sampling and more. When an application uses off screen buffers, the debugger / profiler cannot be guaranteed that the application will call a certain function at the end of each off-screen frame (e.g: SwapBuffers / glClear / etc). This extension enables the application to notify the debugger / profiler whenever a render frame is ended. This extension is mainly useful for debuggers and profilers. It is not expected that standard drivers would implement this extension. The main point of having this extension is to allow applications to have a clean way of accessing this functionality only when they are run under the control of a debugger / profiler, without having to recompile or change the application source code. The official definition of this extension is available here: http://www.opengl.org/registry/specs/GREMEDY/frame_terminator.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.GREMEDY.frame_terminator import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/GREMEDY/string_marker.py0000644000175000001440000000360312025001653022054 0ustar mcfletchusers00000000000000'''OpenGL extension GREMEDY.string_marker This module customises the behaviour of the OpenGL.raw.GL.GREMEDY.string_marker to provide a more Python-friendly API Overview (from the spec) This extension defines a mechanism to insert textual markers into the OpenGL stream. When debugging or profiling an OpenGL application some of the most important tools are stream loggers, which just output a list of the called OpenGL commands, and profilers, which show at which points the pipeline is bottlenecked for a given part of the frame. The problem in using these is that there is a definite loss of information between the application and the used debugger/profiler. The application generally has a pretty good idea what is rendered when (e.g. rendering background, landscape, building, players, particle effects, bullets etc.), but the debugger/profiler only sees the OpenGL stream. To analyze the stream developers have to guess what is done when by following the program code and the log output in parallel, which can get difficult for systems that restructure their internal pipeline or do lazy changes. This extension is really only useful for these debuggers and profilers, and not for actual drivers. In fact, it is not expected that any standard driver would ever implement this extension. The main point of having this extension is to allow applications to have a clean way of accessing this functionality only when they are run under the control of a debugger/profiler, without having to recompile or change the application source code. The official definition of this extension is available here: http://www.opengl.org/registry/specs/GREMEDY/string_marker.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.GREMEDY.string_marker import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/0000755000175000001440000000000012032640120016171 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/EXT/point_parameters.py0000644000175000001440000000530312025001653022124 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.point_parameters This module customises the behaviour of the OpenGL.raw.GL.EXT.point_parameters to provide a more Python-friendly API Overview (from the spec) This extension supports additional geometric characteristics of points. It can be used to render particles or tiny light sources, commonly referred as "Light points". The raster brightness of a point is a function of the point area, point color, point transparency, and the response of the display's electron gun and phosphor. The point area and the point transparency are derived from the point size, currently provided with the parameter of glPointSize. The primary motivation is to allow the size of a point to be affected by distance attenuation. When distance attenuation has an effect, the final point size decreases as the distance of the point from the eye increases. The secondary motivation is a mean to control the mapping from the point size to the raster point area and point transparency. This is done in order to increase the dynamic range of the raster brightness of points. In other words, the alpha component of a point may be decreased (and its transparency increased) as its area shrinks below a defined threshold. This extension defines a derived point size to be closely related to point brightness. The brightness of a point is given by: 1 dist_atten(d) = ------------------- a + b * d + c * d^2 brightness(Pe) = Brightness * dist_atten(|Pe|) where 'Pe' is the point in eye coordinates, and 'Brightness' is some initial value proportional to the square of the size provided with glPointSize. Here we simplify the raster brightness to be a function of the rasterized point area and point transparency. brightness(Pe) brightness(Pe) >= Threshold_Area area(Pe) = Threshold_Area Otherwise factor(Pe) = brightness(Pe)/Threshold_Area alpha(Pe) = Alpha * factor(Pe) where 'Alpha' comes with the point color (possibly modified by lighting). 'Threshold_Area' above is in area units. Thus, it is proportional to the square of the threshold provided by the programmer through this extension. The new point size derivation method applies to all points, while the threshold applies to multisample points only. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/point_parameters.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.point_parameters import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_compression_s3tc.py0000644000175000001440000000200012025001653023614 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_compression_s3tc This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_compression_s3tc to provide a more Python-friendly API Overview (from the spec) This extension provides additional texture compression functionality specific to S3's S3TC format (called DXTC in Microsoft's DirectX API), subject to all the requirements and limitations described by the extension GL_ARB_texture_compression. This extension supports DXT1, DXT3, and DXT5 texture compression formats. For the DXT1 image format, this specification supports an RGB-only mode and a special RGBA mode with single-bit "transparent" alpha. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_compression_s3tc.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_compression_s3tc import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/draw_range_elements.py0000644000175000001440000000132412025001653022554 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.draw_range_elements This module customises the behaviour of the OpenGL.raw.GL.EXT.draw_range_elements to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/draw_range_elements.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.draw_range_elements import * ### END AUTOGENERATED SECTION glDrawRangeElementsEXT = wrapper.wrapper( glDrawRangeElementsEXT ).setPyConverter( 'indices', arrays.AsArrayOfType( 'indices', 'type' ), ).setReturnValues( wrapper.returnPyArgument( 'indices' ) )PyOpenGL-3.0.2/OpenGL/GL/EXT/framebuffer_multisample_blit_scaled.py0000644000175000001440000000444312025001653026001 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.framebuffer_multisample_blit_scaled This module customises the behaviour of the OpenGL.raw.GL.EXT.framebuffer_multisample_blit_scaled to provide a more Python-friendly API Overview (from the spec) This extension relaxes some of the restrictions associated with multisample resolve operations, specifically to allow a combined resolve and scale operation through a single call to BlitFramebuffer. It also adds two new filter types to control the quality of the combined scaled resolve operation. In traditional multisampled framebuffer rendering, color samples must be explicitly resolved via BlitFramebuffer before any other operation on the resulting pixel values can be performed. This multisample resolve operation must be done using a BlitFramebuffer call where the dimensions of the source and destination rectangles are identical. If the resulting pixel values need to be copied to a texture with different dimensions, these resolved values can then be scaled with a second call to BlitFramebuffer. By requiring two separate calls to BlitFramebuffer, the quality of final image can be maintained to a certain degree. The samples are first resolved, and then these resolved values can be filtered to produce the final image. This image quality comes at the price of increased memory usage and lower performance. However, the scaling blit can still introduce artifacts, particularly if it is done with a simple bilinear filter. The new filter types introduced by this extension allow the scaled resolve to be done with a single call to BlitFramebuffer. Not all samples from the read framebuffer are required to be be used when producing the final pixel values, and there may be a loss in quality when compared to an image produced by a separate resolve and scale. However, the single-pass scaled resolve blit should be faster than the traditional two-pass resolve then scale blits. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/framebuffer_multisample_blit_scaled.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.framebuffer_multisample_blit_scaled import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/blend_subtract.py0000644000175000001440000000151112025001653021540 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.blend_subtract This module customises the behaviour of the OpenGL.raw.GL.EXT.blend_subtract to provide a more Python-friendly API Overview (from the spec) Two additional blending equations are specified using the interface defined by EXT_blend_minmax. These equations are similar to the default blending equation, but produce the difference of its left and right hand sides, rather than the sum. Image differences are useful in many image processing applications. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/blend_subtract.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.blend_subtract import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/x11_sync_object.py0000644000175000001440000000264312025001653021547 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.x11_sync_object This module customises the behaviour of the OpenGL.raw.GL.EXT.x11_sync_object to provide a more Python-friendly API Overview (from the spec) Synchronization objects added the ability to better coordinate operations between multiple GL command streams. However, it is desirable to have the same level of coordination between GL command streams and external rendering APIs. This extension introduces two new concepts to build upon the synchronization infrastructure provided by ARB_sync: 1) A means to import an X Synchronization Fence object into the GL and use it as a sync object. 2) The concept of a reusable sync object. The latter is necessary because the import operation is expensive and performing it every time a synchronization point was reached would make the synchronization prohibitively slow. This extension stops short of allowing the GL to change the state of imported/reusable sync objects, but does not add any language that would prohibit such functionality from being added in a subsequent extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/x11_sync_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.x11_sync_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/bindable_uniform.py0000644000175000001440000000276412025001653022057 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.bindable_uniform This module customises the behaviour of the OpenGL.raw.GL.EXT.bindable_uniform to provide a more Python-friendly API Overview (from the spec) This extension introduces the concept of bindable uniforms to the OpenGL Shading Language. A uniform variable can be declared bindable, which means that the storage for the uniform is not allocated by the compiler/linker anymore, but is backed by a buffer object. This buffer object is bound to the bindable uniform through the new command UniformBufferEXT(). Binding needs to happen after linking a program object. Binding different buffer objects to a bindable uniform allows an application to easily use different "uniform data sets", without having to re-specify the data every time. A buffer object can be bound to bindable uniforms in different program objects. If those bindable uniforms are all of the same type, accessing a bindable uniform in program object A will result in the same data if the same access is made in program object B. This provides a mechanism for 'environment uniforms', uniform values that can be shared among multiple program objects. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/bindable_uniform.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.bindable_uniform import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/pixel_transform.py0000644000175000001440000000162312025001653021765 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.pixel_transform This module customises the behaviour of the OpenGL.raw.GL.EXT.pixel_transform to provide a more Python-friendly API Overview (from the spec) This extension provides support for scaling, rotation, translation and shearing of two-dimensional pixel rectangles in the pixel rasterizer. The transformation is defined via a 4x4 matrix, where only those entries which apply as a 2D affine transformation will be accepted and used. These matrices can be manipulated using the same functions as the other OpenGL matrix stacks. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/pixel_transform.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.pixel_transform import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_sRGB_decode.py0000644000175000001440000000251012031734236022434 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_sRGB_decode This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_sRGB_decode to provide a more Python-friendly API Overview (from the spec) The EXT_texture_sRGB extension (promoted to core in OpenGL 2.1) provides a texture format stored in the sRGB color space. Sampling one of these textures will always return the color value decoded into a linear color space. However, an application may wish to sample and retrieve the undecoded sRGB data from the texture and manipulate that directly. This extension adds a Texture Parameter and Sampler Object parameter to allow sRGB textures to be read directly, without decoding. The new parameter, TEXTURE_SRGB_DECODE_EXT controls whether the decoding happens at sample time. It only applies to textures with an internal format that is sRGB and is ignored for all other textures. This value defaults to DECODE_EXT, which indicates the texture should be decoded to linear color space. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_sRGB_decode.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_sRGB_decode import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/compiled_vertex_array.py0000644000175000001440000000267612025001653023151 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.compiled_vertex_array This module customises the behaviour of the OpenGL.raw.GL.EXT.compiled_vertex_array to provide a more Python-friendly API Overview (from the spec) This extension defines an interface which allows static vertex array data to be cached or pre-compiled for more efficient rendering. This is useful for implementations which can cache the transformed results of array data for reuse by several DrawArrays, ArrayElement, or DrawElements commands. It is also useful for implementations which can transfer array data to fast memory for more efficient processing. For example, rendering an M by N mesh of quadrilaterals can be accomplished by setting up vertex arrays containing all of the vertexes in the mesh and issuing M DrawElements commands each of which operate on 2 * N vertexes. Each DrawElements command after the first will share N vertexes with the preceding DrawElements command. If the vertex array data is locked while the DrawElements commands are executed, then OpenGL may be able to transform each of these shared vertexes just once. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/compiled_vertex_array.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.compiled_vertex_array import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/index_texture.py0000644000175000001440000000160512025001653021440 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.index_texture This module customises the behaviour of the OpenGL.raw.GL.EXT.index_texture to provide a more Python-friendly API Overview (from the spec) This extends the definition of texturing so that it is supported in color index mode. This extension builds on the notion of texture images which have color index internal formats which was introduced in EXT_paletted_texture. This extension also introduces a new texture environment function ADD which is useful for combining lighting and texturing in color index mode. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/index_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.index_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_integer.py0000644000175000001440000000561312025001653021771 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_integer This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_integer to provide a more Python-friendly API Overview (from the spec) Fixed-point textures in unextended OpenGL have integer components, but those values are taken to represent floating-point values in the range [0,1]. These integer components are considered "normalized" integers. When such a texture is accessed by a shader or by fixed-function fragment processing, floating-point values are returned. This extension provides a set of new "unnormalized" integer texture formats. Formats with both signed and unsigned integers are provided. In these formats, the components are treated as true integers. When such textures are accessed by a shader, actual integer values are returned. Pixel operations that read from or write to a texture or color buffer with unnormalized integer components follow a path similar to that used for color index pixel operations, except that more than one component may be provided at once. Integer values flow through the pixel processing pipe, and no pixel transfer operations are performed. Integer format enumerants used for such operations indicate unnormalized integer data. Textures or render buffers with unnormalized integer formats may also be attached to framebuffer objects to receive fragment color values written by a fragment shader. Per-fragment operations that require floating-point color components, including multisample alpha operations, alpha test, blending, and dithering, have no effect when the corresponding colors are written to an integer color buffer. The NV_gpu_program4 and EXT_gpu_shader4 extensions add the capability to fragment programs and fragment shaders to write signed and unsigned integer output values. This extension does not enforce type consistency for texture accesses or between fragment shaders and the corresponding framebuffer attachments. The results of a texture lookup from an integer texture are undefined: * for fixed-function fragment processing, or * for shader texture accesses expecting floating-point return values. The color components used for per-fragment operations and written into a color buffer are undefined: * for fixed-function fragment processing with an integer color buffer, * for fragment shaders that write floating-point color components to an integer color buffer, or * for fragment shaders that write integer color components to a color buffer with floating point or normalized integer components. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_integer.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_integer import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/fog_coord.py0000644000175000001440000000123212025001653020506 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.fog_coord This module customises the behaviour of the OpenGL.raw.GL.EXT.fog_coord to provide a more Python-friendly API Overview (from the spec) This extension allows specifying an explicit per-vertex fog coordinate to be used in fog computations, rather than using a fragment depth-based fog equation. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/fog_coord.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.fog_coord import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/blend_logic_op.py0000644000175000001440000000157412025001653021515 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.blend_logic_op This module customises the behaviour of the OpenGL.raw.GL.EXT.blend_logic_op to provide a more Python-friendly API Overview (from the spec) A single additional blending equation is specified using the interface defined by EXT_blend_minmax. This equation is a simple logical combination of the source and destination colors, where the specific logical operation is as specified by LogicOp. While only the XOR operation may find wide application, the generality of full logical operations is allowed. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/blend_logic_op.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.blend_logic_op import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/shader_image_load_store.py0000644000175000001440000000664112031734227023410 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.shader_image_load_store This module customises the behaviour of the OpenGL.raw.GL.EXT.shader_image_load_store to provide a more Python-friendly API Overview (from the spec) This extension provides GLSL built-in functions allowing shaders to load from, store to, and perform atomic read-modify-write operations to a single level of a texture object from any shader stage. These built-in functions are named imageLoad(), imageStore(), and imageAtomic*(), respectively, and accept integer texel coordinates to identify the texel accessed. The extension adds the notion of "image units" to the OpenGL API, to which texture levels are bound for access by the GLSL built-in functions. To allow shaders to specify the image unit to access, GLSL provides a new set of data types ("image*") similar to samplers. Each image variable is assigned an integer value to identify an image unit to access, which is specified using Uniform*() APIs in a manner similar to samplers. For implementations supporting the NV_gpu_program5 extensions, assembly language instructions to perform image loads, stores, and atomics are also provided. This extension also provides the capability to explicitly enable "early" per-fragment tests, where operations like depth and stencil testing are performed prior to fragment shader execution. In unextended OpenGL, fragment shaders never have any side effects and implementations can sometimes perform per-fragment tests and discard some fragments prior to executing the fragment shader. Since this extension allows fragment shaders to write to texture and buffer object memory using the built-in image functions, such optimizations could lead to non-deterministic results. To avoid this, implementations supporting this extension may not perform such optimizations on shaders having such side effects. However, enabling early per-fragment tests guarantees that such tests will be performed prior to fragment shader execution, and ensures that image stores and atomics will not be performed by fragment shader invocations where these per-fragment tests fail. Finally, this extension provides both a GLSL built-in function and an OpenGL API function allowing applications some control over the ordering of image loads, stores, and atomics relative to other OpenGL pipeline operations accessing the same memory. Because the extension provides the ability to perform random accesses to texture or buffer object memory, such accesses are not easily tracked by the OpenGL driver. To avoid the need for heavy-handed synchronization at the driver level, this extension requires manual synchronization. The MemoryBarrierEXT() OpenGL API function allows applications to specify a bitfield indicating the set of OpenGL API operations to synchronize relative to shader memory access. The memoryBarrier() GLSL built-in function provides a synchronization point within a given shader invocation to ensure that all memory accesses performed prior to the synchronization point complete prior to any started after the synchronization point. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/shader_image_load_store.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.shader_image_load_store import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/vertex_shader.py0000644000175000001440000000152612025001653021416 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.vertex_shader This module customises the behaviour of the OpenGL.raw.GL.EXT.vertex_shader to provide a more Python-friendly API Overview (from the spec) EXT_vertex_shader adds a flexible way to change the per-vertex processing in the GL pipeline. It provides a method to replace the fixed vertex/normal transform and lighting with a user specified means of generating processed vertices, texture coordinates, color, and secondary color, along with a primitive's associated state. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/vertex_shader.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.vertex_shader import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_array.py0000644000175000001440000000446312025001653021454 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_array This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_array to provide a more Python-friendly API Overview (from the spec) This extension introduces the notion of one- and two-dimensional array textures. An array texture is a collection of one- and two-dimensional images of identical size and format, arranged in layers. A one-dimensional array texture is specified using TexImage2D; a two-dimensional array texture is specified using TexImage3D. The height (1D array) or depth (2D array) specify the number of layers in the image. An array texture is accessed as a single unit in a programmable shader, using a single coordinate vector. A single layer is selected, and that layer is then accessed as though it were a one- or two-dimensional texture. The layer used is specified using the "t" or "r" texture coordinate for 1D and 2D array textures, respectively. The layer coordinate is provided as an unnormalized floating-point value in the range [0,-1], where is the number of layers in the array texture. Texture lookups do not filter between layers, though such filtering can be achieved using programmable shaders. When mipmapping is used, each level of an array texture has the same number of layers as the base level; the number of layers is not reduced as the image size decreases. Array textures can be rendered to by binding them to a framebuffer object (EXT_framebuffer_object). A single layer of an array texture can be bound using normal framebuffer object mechanisms, or an entire array texture can be bound and rendered to using the layered rendering mechanisms provided by NV_geometry_program4. This extension does not provide for the use of array textures with fixed-function fragment processing. Such support could be added by providing an additional extension allowing applications to pass the new target enumerants (TEXTURE_1D_ARRAY_EXT and TEXTURE_2D_ARRAY_EXT) to Enable and Disable. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_array.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_array import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/shared_texture_palette.py0000644000175000001440000000173612025001653023322 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.shared_texture_palette This module customises the behaviour of the OpenGL.raw.GL.EXT.shared_texture_palette to provide a more Python-friendly API Overview (from the spec) EXT_shared_texture_palette defines a shared texture palette which may be used in place of the texture object palettes provided by EXT_paletted_texture. This is useful for rapidly changing a palette common to many textures, rather than having to reload the new palette for each texture. The extension acts as a switch, causing all lookups that would normally be done on the texture's palette to instead use the shared palette. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/shared_texture_palette.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.shared_texture_palette import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/vertex_array.py0000644000175000001440000000235012025001653021262 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.vertex_array This module customises the behaviour of the OpenGL.raw.GL.EXT.vertex_array to provide a more Python-friendly API Overview (from the spec) This extension adds the ability to specify multiple geometric primitives with very few subroutine calls. Instead of calling an OpenGL procedure to pass each individual vertex, normal, or color, separate arrays of vertexes, normals, and colors are prespecified, and are used to define a sequence of primitives (all of the same type) when a single call is made to DrawArraysEXT. A stride mechanism is provided so that an application can choose to keep all vertex data staggered in a single array, or sparsely in separate arrays. Single-array storage may optimize performance on some implementations. This extension also supports the rendering of individual array elements, each specified as an index into the enabled arrays. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/vertex_array.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.vertex_array import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture.py0000644000175000001440000000353512025001653020255 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture This module customises the behaviour of the OpenGL.raw.GL.EXT.texture to provide a more Python-friendly API Overview (from the spec) The original intention of this extension was simply to support various numeric resolutions of color components in texture images. While it accomplishes this, it also accomplishes a larger task, that of formalizing the notion of an internal format for images, corresponding to the external format that already existed for image data in host memory. This notion of an internal image format will be used extensively in later extensions, especially those concerned with pixel manipulation. The idea of an internal format is simple: rather than treating a retained image as having 1, 2, 3, or 4 components, treat it as though it has a specific format, such as LUMINANCE_ALPHA, or just ALPHA. Then define the semantics of the use of internal images with these formats in a consistent way. Because texture mapping is already defined in GL, the semantics for internal-format images were chosen to match those of the 1, 2, 3, and 4 component internal images that already existed. The new semantics are a superset of the old ones, however, so this extension adds capabilities to GL, as well as allowing internal resolutions to be specified. This extension also defines a robust method for applications to determine what combinations of texture dimensions and resolutions are supported by an implementation. It also introduces a new texture environment: REPLACE_EXT. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/color_matrix.py0000644000175000001440000000056112025001653021253 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.color_matrix This module customises the behaviour of the OpenGL.raw.GL.EXT.color_matrix to provide a more Python-friendly API ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.color_matrix import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/separate_specular_color.py0000644000175000001440000000414012025001653023446 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.separate_specular_color This module customises the behaviour of the OpenGL.raw.GL.EXT.separate_specular_color to provide a more Python-friendly API Overview (from the spec) This extension adds a second color to rasterization when lighting is enabled. Its purpose is to produce textured objects with specular highlights which are the color of the lights. It applies only to rgba lighting. The two colors are computed at the vertexes. They are both clamped, flat-shaded, clipped, and converted to fixed-point just like the current rgba color (see Figure 2.8). Rasterization interpolates both colors to fragments. If texture is enabled, the first (or primary) color is the input to the texture environment; the fragment color is the sum of the second color and the color resulting from texture application. If texture is not enabled, the fragment color is the sum of the two colors. A new control to LightModel*, LIGHT_MODEL_COLOR_CONTROL_EXT, manages the values of the two colors. It takes values: SINGLE_COLOR_EXT, a compatibility mode, and SEPARATE_SPECULAR_COLOR_EXT, the object of this extension. In single color mode, the primary color is the current final color and the secondary color is 0.0. In separate specular mode, the primary color is the sum of the ambient, diffuse, and emissive terms of final color and the secondary color is the specular term. There is much concern that this extension may not be compatible with the future direction of OpenGL with regards to better lighting and shading models. Until those impacts are resolved, serious consideration should be given before adding to the interface specified herein (for example, allowing the user to specify a second input color). The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/separate_specular_color.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.separate_specular_color import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/draw_buffers2.py0000644000175000001440000000174012025001653021304 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.draw_buffers2 This module customises the behaviour of the OpenGL.raw.GL.EXT.draw_buffers2 to provide a more Python-friendly API Overview (from the spec) This extension builds upon the ARB_draw_buffers extension and provides separate blend enables and color write masks for each color output. In ARB_draw_buffers (part of OpenGL 2.0), separate values can be written to each color buffer, but the blend enable and color write mask are global and apply to all color outputs. While this extension does provide separate blend enables, it does not provide separate blend functions or blend equations per color output. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/draw_buffers2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.draw_buffers2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/copy_texture.py0000644000175000001440000000150312025001653021300 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.copy_texture This module customises the behaviour of the OpenGL.raw.GL.EXT.copy_texture to provide a more Python-friendly API Overview (from the spec) This extension defines methods to load texture images directly from the framebuffer. Methods are defined for both complete and partial replacement of a texture image. Because it is not possible to define an entire 3D texture using a 2D framebuffer image, 3D textures are supported only for partial replacement. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/copy_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.copy_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_swizzle.py0000644000175000001440000000304712025001653022042 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_swizzle This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_swizzle to provide a more Python-friendly API Overview (from the spec) Classic OpenGL texture formats conflate texture storage and interpretation, and assume that textures represent color. In modern applications, a significant quantity of textures don't represent color, but rather data like shadow maps, normal maps, page tables, occlusion data, etc.. For the latter class of data, calling the data "RGBA" is just a convenient mapping of what the data is onto the current model, but isn't an accurate reflection of the reality of the data. The existing texture formats provide an almost orthogonal set of data types, sizes, and number of components, but the mappings of this storage into what the shader or fixed-function pipeline fetches is very much non-orthogonal. Previous extensions have added some of the most demanded missing formats, but the problem has not been solved once and for all. This extension provides a mechanism to swizzle the components of a texture before they are applied according to the texture environment in fixed-function or as they are returned to the shader. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_swizzle.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_swizzle import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/draw_instanced.py0000644000175000001440000000137512025001653021542 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.draw_instanced This module customises the behaviour of the OpenGL.raw.GL.EXT.draw_instanced to provide a more Python-friendly API Overview (from the spec) This extension provides the means to render multiple instances of an object with a single draw call, and an "instance ID" variable which can be used by the vertex program to compute per-instance values, typically an object's transform. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/draw_instanced.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.draw_instanced import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/blend_color.py0000644000175000001440000000142512025001653021033 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.blend_color This module customises the behaviour of the OpenGL.raw.GL.EXT.blend_color to provide a more Python-friendly API Overview (from the spec) Blending capability is extended by defining a constant color that can be included in blending equations. A typical usage is blending two RGB images. Without the constant blend factor, one image must have an alpha channel with each pixel set to the desired blend factor. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/blend_color.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.blend_color import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/vertex_attrib_64bit.py0000644000175000001440000000565112025001653022450 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.vertex_attrib_64bit This module customises the behaviour of the OpenGL.raw.GL.EXT.vertex_attrib_64bit to provide a more Python-friendly API Overview (from the spec) This extension provides OpenGL shading language support for vertex shader inputs with 64-bit floating-point components and OpenGL API support for specifying the value of those inputs using vertex array or immediate mode entry points. This builds on the support for general-purpose support for 64-bit floating-point values in the ARB_gpu_shader_fp64 extension. This extension provides a new class of vertex attribute functions, beginning with "VertexAttribL" ("L" for "long"), that can be used to specify attributes with 64-bit floating-point components. This extension provides no automatic type conversion between attribute and shader variables; single-precision attributes are not automatically converted to double-precision or vice versa. For shader variables with 64-bit component types, the "VertexAttribL" functions must be used to specify attribute values. For other shader variables, the "VertexAttribL" functions must not be used. If a vertex attribute is specified using the wrong attribute function, the values of the corresponding shader input are undefined. This approach requiring matching types is identical to that used for the "VertexAttribI" functions provided by OpenGL 3.0 and the EXT_gpu_shader4 extension. Additionally, some vertex shader inputs using the wider 64-bit components may count double against the implementation-dependent limit on the number of vertex shader attribute vectors. A 64-bit scalar or a two-component vector consumes only a single generic vertex attribute; three- and four-component "long" may count as two. This approach is similar to the one used in the current GL where matrix attributes consume multiple attributes. Note that 64-bit generic vertex attributes were nominally supported beginning with the introduction of vertex shaders in OpenGL 2.0. However, the OpenGL Shading Language at the time had no support for 64-bit data types, so any such values were automatically converted to 32-bit. Support for 64-bit floating-point vertex attributes in this extension can be combined with other extensions. In particular, this extension provides an entry point that can be used with EXT_direct_state_access to directly set state for any vertex array object. Also, the related NV_vertex_attrib_integer_64bit extension provides an entry point to specify bindless vertex attribute arrays with 64-bit components, integer or floating-point. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/vertex_attrib_64bit.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.vertex_attrib_64bit import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/vertex_weighting.py0000644000175000001440000000272512025001653022137 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.vertex_weighting This module customises the behaviour of the OpenGL.raw.GL.EXT.vertex_weighting to provide a more Python-friendly API Overview (from the spec) The intent of this extension is to provide a means for blending geometry based on two slightly differing modelview matrices. The blending is based on a vertex weighting that can change on a per-vertex basis. This provides a primitive form of skinning. A second modelview matrix transform is introduced. When vertex weighting is enabled, the incoming vertex object coordinates are transformed by both the primary and secondary modelview matrices; likewise, the incoming normal coordinates are transformed by the inverses of both the primary and secondary modelview matrices. The resulting two position coordinates and two normal coordinates are blended based on the per-vertex vertex weight and then combined by addition. The transformed, weighted, and combined vertex position and normal are then used by OpenGL as the eye-space position and normal for lighting, texture coordinate, generation, clipping, and further vertex transformation. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/vertex_weighting.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.vertex_weighting import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/__init__.py0000644000175000001440000000002712025001653020305 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/EXT/texture_shared_exponent.py0000644000175000001440000000307612025001653023523 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_shared_exponent This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_shared_exponent to provide a more Python-friendly API Overview (from the spec) Existing texture formats provide either fixed-point formats with limited range and precision but with compact encodings (allowing 32 or fewer bits per multi-component texel), or floating-point formats with tremendous range and precision but without compact encodings (typically 16 or 32 bits per component). This extension adds a new packed format and new internal texture format for encoding 3-component vectors (typically RGB colors) with a single 5-bit exponent (biased up by 15) and three 9-bit mantissas for each respective component. There is no sign bit so all three components must be non-negative. The fractional mantissas are stored without an implied 1 to the left of the decimal point. Neither infinity nor not-a-number (NaN) are representable in this shared exponent format. This 32 bits/texel shared exponent format is particularly well-suited to high dynamic range (HDR) applications where light intensity is typically stored as non-negative red, green, and blue components with considerable range. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_shared_exponent.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_shared_exponent import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/framebuffer_multisample.py0000644000175000001440000001035112025001653023447 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.framebuffer_multisample This module customises the behaviour of the OpenGL.raw.GL.EXT.framebuffer_multisample to provide a more Python-friendly API Overview (from the spec) This extension extends the EXT_framebuffer_object framework to enable multisample rendering. The new operation RenderbufferStorageMultisampleEXT() allocates storage for a renderbuffer object that can be used as a multisample buffer. A multisample render buffer image differs from a single-sample render buffer image in that a multisample image has a number of SAMPLES that is greater than zero. No method is provided for creating multisample texture images. All of the framebuffer-attachable images attached to a framebuffer object must have the same number of SAMPLES or else the framebuffer object is not "framebuffer complete". If a framebuffer object with multisample attachments is "framebuffer complete", then the framebuffer object behaves as if SAMPLE_BUFFERS is one. In traditional multisample rendering, where DRAW_FRAMEBUFFER_BINDING_EXT is zero and SAMPLE_BUFFERS is one, the GL spec states that "the color sample values are resolved to a single, displayable color each time a pixel is updated." There are, however, several modern hardware implementations that do not actually resolve for each sample update, but instead postpones the resolve operation to a later time and resolve a batch of sample updates at a time. This is OK as long as the implementation behaves "as if" it had resolved a sample-at-a-time. Unfortunately, however, honoring the "as if" rule can sometimes degrade performance. In contrast, when DRAW_FRAMEBUFFER_BINDING_EXT is an application-created framebuffer object, MULTISAMPLE is enabled, and SAMPLE_BUFFERS is one, there is no implicit per-sample-update resolve. Instead, the application explicitly controls when the resolve operation is performed. The resolve operation is affected by calling BlitFramebufferEXT (provided by the EXT_framebuffer_blit extension) where the source is a multisample application-created framebuffer object and the destination is a single-sample framebuffer object (either application-created or window-system provided). This design for multisample resolve more closely matches current hardware, but still permits implementations which choose to resolve a single sample at a time. If hardware that implementes the multisample resolution "one sample at a time" exposes EXT_framebuffer_multisample, it could perform the implicit resolve to a driver-managed hidden surface, then read from that surface when the application calls BlitFramebufferEXT. Another motivation for granting the application explicit control over the multisample resolve operation has to do with the flexibility afforded by EXT_framebuffer_object. Previously, a drawable (window or pbuffer) had exclusive access to all of its buffers. There was no mechanism for sharing a buffer across multiple drawables. Under EXT_framebuffer_object, however, a mechanism exists for sharing a framebuffer-attachable image across several framebuffer objects, as well as sharing an image between a framebuffer object and a texture. If we had retained the "implicit" resolve from traditional multisampled rendering, and allowed the creation of "multisample" format renderbuffers, then this type of sharing would have lead to two problematic situations: * Two contexts, which shared renderbuffers, might perform competing resolve operations into the same single-sample buffer with ambiguous results. * It would have introduced the unfortunate ability to use the single-sample buffer as a texture while MULTISAMPLE is ENABLED. By using the BlitFramebufferEXT from EXT_framebuffer_blit as an explicit resolve to serialize access to the multisampled contents and eliminate the implicit per-sample resolve operation, we avoid both of these problems. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/framebuffer_multisample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.framebuffer_multisample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/vertex_array_bgra.py0000644000175000001440000000620612025001653022261 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.vertex_array_bgra This module customises the behaviour of the OpenGL.raw.GL.EXT.vertex_array_bgra to provide a more Python-friendly API Overview (from the spec) This extension provides a single new component format for vertex arrays to read 4-component unsigned byte vertex attributes with a BGRA component ordering. OpenGL expects vertex arrays containing 4 unsigned bytes per element to be in the RGBA, STRQ, or XYZW order (reading components left-to-right in their lower address to higher address order). Essentially the order the components appear in memory is the order the components appear in the resulting vertex attribute vector. However Direct3D has color (diffuse and specular) vertex arrays containing 4 unsigned bytes per element that are in a BGRA order (again reading components left-to-right in their lower address to higher address order). Direct3D calls this "ARGB" reading the components in the opposite order (reading components left-to-right in their higher address to lower address order). This ordering is generalized in the DirectX 10 by the DXGI_FORMAT_B8G8R8A8_UNORM format. For an OpenGL application to source color data from a vertex buffer formatted for Direct3D's color array format conventions, the application is forced to either: 1. Rely on a vertex program or shader to swizzle the color components from the BGRA to conventional RGBA order. 2. Re-order the color data components in the vertex buffer from Direct3D's native BGRA order to OpenGL's native RGBA order. Neither option is entirely satisfactory. Option 1 means vertex shaders have to be re-written to source colors differently. If the same vertex shader is used with vertex arrays configured to source the color as 4 floating-point color components, the swizzle for BGRA colors stored as 4 unsigned bytes is no longer appropriate. The shader's swizzling of colors becomes dependent on the type and number of color components. Ideally the vertex shader should be independent from the format and component ordering of the data it sources. Option 2 is expensive because vertex buffers may have to be reformatted prior to use. OpenGL treats the memory for vertex arrays (whether client-side memory or buffer objects) as essentially untyped memory and vertex arrays can be stored separately, interleaved, or even interwoven (where multiple arrays overlap with differing strides and formats). Rather than force a re-ordering of either vertex array components in memory or a vertex array format-dependent re-ordering of vertex shader inputs, OpenGL can simply provide a vertex array format that matches the Direct3D color component ordering. This approach mimics that of the EXT_bgra extension for pixel and texel formats except for vertex instead of image data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/vertex_array_bgra.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.vertex_array_bgra import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/stencil_wrap.py0000644000175000001440000000260412025001653021243 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.stencil_wrap This module customises the behaviour of the OpenGL.raw.GL.EXT.stencil_wrap to provide a more Python-friendly API Overview (from the spec) Various algorithms use the stencil buffer to "count" the number of surfaces that a ray passes through. As the ray passes into an object, the stencil buffer is incremented. As the ray passes out of an object, the stencil buffer is decremented. GL requires that the stencil increment operation clamps to its maximum value. For algorithms that depend on the difference between the sum of the increments and the sum of the decrements, clamping causes an erroneous result. This extension provides an enable for both maximum and minimum wrapping of stencil values. Instead, the stencil value wraps in both directions. Two additional stencil operations are specified. These new operations are similiar to the existing INCR and DECR operations, but they wrap their result instead of saturating it. This functionality matches the new stencil operations introduced by DirectX 6. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/stencil_wrap.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.stencil_wrap import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/index_func.py0000644000175000001440000000132412025001653020671 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.index_func This module customises the behaviour of the OpenGL.raw.GL.EXT.index_func to provide a more Python-friendly API Overview (from the spec) This extension provides a way to discard fragments when a comparison between the fragment's index value and a reference index fails. This may be used similarly to the alpha test which is available in RGBA mode. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/index_func.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.index_func import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/multi_draw_arrays.py0000644000175000001440000000150412025001653022277 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.multi_draw_arrays This module customises the behaviour of the OpenGL.raw.GL.EXT.multi_draw_arrays to provide a more Python-friendly API Overview (from the spec) These functions behave identically to the standard OpenGL 1.1 functions glDrawArrays() and glDrawElements() except they handle multiple lists of vertices in one call. Their main purpose is to allow one function call to render more than one primitive such as triangle strip, triangle fan, etc. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/multi_draw_arrays.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.multi_draw_arrays import * ### END AUTOGENERATED SECTION PyOpenGL-3.0.2/OpenGL/GL/EXT/pixel_buffer_object.py0000644000175000001440000000611612025001653022553 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.pixel_buffer_object This module customises the behaviour of the OpenGL.raw.GL.EXT.pixel_buffer_object to provide a more Python-friendly API Overview (from the spec) This extension expands on the interface provided by buffer objects. It is intended to permit buffer objects to be used not only with vertex array data, but also with pixel data. Buffer objects were promoted from the ARB_vertex_buffer_object extension in OpenGL 1.5. Recall that buffer objects conceptually are nothing more than arrays of bytes, just like any chunk of memory. Buffer objects allow GL commands to source data from a buffer object by binding the buffer object to a given target and then overloading a certain set of GL commands' pointer arguments to refer to offsets inside the buffer, rather than pointers to user memory. An offset is encoded in a pointer by adding the offset to a null pointer. This extension does not add any new functionality to buffer objects themselves. It simply adds two new targets to which buffer objects can be bound: PIXEL_PACK_BUFFER and PIXEL_UNPACK_BUFFER. When a buffer object is bound to the PIXEL_PACK_BUFFER target, commands such as ReadPixels write their data into a buffer object. When a buffer object is bound to the PIXEL_UNPACK_BUFFER target, commands such as DrawPixels read their data from a buffer object. There are a wide variety of applications for such functionality. Some of the most interesting ones are: - "Render to vertex array." The application can use a fragment program to render some image into one of its buffers, then read this image out into a buffer object via ReadPixels. Then, it can use this buffer object as a source of vertex data. - Streaming textures. If the application uses MapBuffer/UnmapBuffer to write its data for TexSubImage into a buffer object, at least one of the data copies usually required to download a texture can be eliminated, significantly increasing texture download performance. - Asynchronous ReadPixels. If an application needs to read back a number of images and process them with the CPU, the existing GL interface makes it nearly impossible to pipeline this operation. The driver will typically send the hardware a readback command when ReadPixels is called, and then wait for all of the data to be available before returning control to the application. Then, the application can either process the data immediately or call ReadPixels again; in neither case will the readback overlap with the processing. If the application issues several readbacks into several buffer objects, however, and then maps each one to process its data, then the readbacks can proceed in parallel with the data processing. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/pixel_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.pixel_buffer_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/GL_422_pixels.py0000644000175000001440000000241112025001653021022 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.GL_422_pixels This module customises the behaviour of the OpenGL.raw.GL.EXT.GL_422_pixels to provide a more Python-friendly API Overview (from the spec) This extension provides support for converting 422 pixels in host memory to 444 pixels as part of the pixel storage operation. The pixel unpack storage operation treats a 422 pixel as a 2 element format where the first element is C (chrominance) and the second element is L (luminance). Luminance is present on all pixels; a full chrominance value requires two pixels. The pixel pack storage operation converts RGB to a 422 pixel defined as a 2 element format where the first element stored is C (chrominance) and the second element stored is L (luminance). Luminance is present on all pixels; a full chrominance value requires two pixels. Both averaging and non-averaging is supported for green and blue assignments for pack and unpack operations. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/GL_422_pixels.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.GL_422_pixels import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/misc_attribute.py0000644000175000001440000000135712025001653021573 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.misc_attribute This module customises the behaviour of the OpenGL.raw.GL.EXT.misc_attribute to provide a more Python-friendly API Overview (from the spec) EXT_misc_attribute extends the list of attribute groups. It provides a miscellaneous group, controlled by the MISC_BIT_EXT bit, that contains the attribute state of extensions that don't logically fit in any other group. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/misc_attribute.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.misc_attribute import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/packed_float.py0000644000175000001440000000275612025001653021175 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.packed_float This module customises the behaviour of the OpenGL.raw.GL.EXT.packed_float to provide a more Python-friendly API Overview (from the spec) This extension adds a new 3-component floating-point texture format that fits within a single 32-bit word. This format stores 5 bits of biased exponent per component in the same manner as 16-bit floating-point formats, but rather than 10 mantissa bits, the red, green, and blue components have 6, 6, and 5 bits respectively. Each mantissa is assumed to have an implied leading one except in the denorm exponent case. There is no sign bit so only non-negative values can be represented. Positive infinity, positive denorms, and positive NaN values are representable. The value of the fourth component returned by a texture fetch is always 1.0. This extension also provides support for rendering into an unsigned floating-point rendering format with the assumption that the texture format described above could also be advertised as an unsigned floating-point format for rendering. The extension also provides a pixel external format for specifying packed float values directly. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/packed_float.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.packed_float import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/packed_pixels.py0000644000175000001440000000201512025001653021360 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.packed_pixels This module customises the behaviour of the OpenGL.raw.GL.EXT.packed_pixels to provide a more Python-friendly API Overview (from the spec) This extension provides support for packed pixels in host memory. A packed pixel is represented entirely by one unsigned byte, one unsigned short, or one unsigned integer. The fields with the packed pixel are not proper machine types, but the pixel as a whole is. Thus the pixel storage modes, including PACK_SKIP_PIXELS, PACK_ROW_LENGTH, PACK_SKIP_ROWS, PACK_IMAGE_HEIGHT_EXT, PACK_SKIP_IMAGES_EXT, PACK_SWAP_BYTES, PACK_ALIGNMENT, and their unpacking counterparts all work correctly with packed pixels. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/packed_pixels.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.packed_pixels import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/blend_func_separate.py0000644000175000001440000000147312025001653022537 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.blend_func_separate This module customises the behaviour of the OpenGL.raw.GL.EXT.blend_func_separate to provide a more Python-friendly API Overview (from the spec) Blending capability is extended by defining a function that allows independent setting of the RGB and alpha blend factors for blend operations that require source and destination blend factors. It is not always desired that the blending used for RGB is also applied to alpha. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/blend_func_separate.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.blend_func_separate import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/transform_feedback.py0000644000175000001440000000454612025001653022377 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.transform_feedback This module customises the behaviour of the OpenGL.raw.GL.EXT.transform_feedback to provide a more Python-friendly API Overview (from the spec) This extension provides a new mode to the GL, called transform feedback, which records selected vertex attributes for each primitive processed by the GL. The selected attributes are written into buffer objects, and can be written with each attribute in a separate buffer object or with all attributes interleaved into a single buffer object. If a geometry shader is active, the primitives recorded are those emitted by the geometry shader. Otherwise, transform feedback captures primitives whose vertices are transformed by a vertex shader. In either case, the primitives captured are those generated prior to clipping. Transform feedback mode captures the values of specified varying variables emitted from GLSL vertex or geometry shaders. The vertex data recorded in transform feedback mode is stored into buffer objects as an array of vertex attributes. The regular representation and the use of buffer objects allows the recorded data to be processed directly by the GL without requiring CPU intervention to copy data. In particular, transform feedback data can be used for vertex arrays (via vertex buffer objects), as the source for pixel data (via pixel buffer objects), as shader constant data (via the NV_parameter_buffer_object or EXT_bindable_uniform extensions), or via any other extension that makes use of buffer objects. This extension introduces new query object support to allow transform feedback mode to operate asynchronously. Query objects allow applications to determine when transform feedback results are complete, as well as the number of primitives processed and written back to buffer objects while in transform feedback mode. This extension also provides a new rasterizer discard enable, which allows applications to use transform feedback to capture vertex attributes without rendering anything. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/transform_feedback.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.transform_feedback import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/gpu_program_parameters.py0000644000175000001440000000230412025001653023313 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.gpu_program_parameters This module customises the behaviour of the OpenGL.raw.GL.EXT.gpu_program_parameters to provide a more Python-friendly API Overview (from the spec) This extension provides a new set of procedures to load multiple consecutive program environment parameters more efficiently, via a single GL call instead of multiple calls. This will reduce the amount of CPU overhead involved in loading parameters. With the existing ARB_vertex_program and ARB_fragment_program APIs, program parameters must be loaded one at a time, via separate calls. While the NV_vertex_program extension provides a set of similar functions that can be used to load program environment parameters (which are equivalent to "program parameters" in NV_vertex_program), no such function exists for program local parameters. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/gpu_program_parameters.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.gpu_program_parameters import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/timer_query.py0000644000175000001440000000343112025001653021115 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.timer_query This module customises the behaviour of the OpenGL.raw.GL.EXT.timer_query to provide a more Python-friendly API Overview (from the spec) Applications can benefit from accurate timing information in a number of different ways. During application development, timing information can help identify application or driver bottlenecks. At run time, applications can use timing information to dynamically adjust the amount of detail in a scene to achieve constant frame rates. OpenGL implementations have historically provided little to no useful timing information. Applications can get some idea of timing by reading timers on the CPU, but these timers are not synchronized with the graphics rendering pipeline. Reading a CPU timer does not guarantee the completion of a potentially large amount of graphics work accumulated before the timer is read, and will thus produce wildly inaccurate results. glFinish() can be used to determine when previous rendering commands have been completed, but will idle the graphics pipeline and adversely affect application performance. This extension provides a query mechanism that can be used to determine the amount of time it takes to fully complete a set of GL commands, and without stalling the rendering pipeline. It uses the query object mechanisms first introduced in the occlusion query extension, which allow time intervals to be polled asynchronously by the application. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/timer_query.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.timer_query import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_env_dot3.py0000644000175000001440000000223612025001653022053 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_env_dot3 This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_env_dot3 to provide a more Python-friendly API Overview (from the spec) Adds new operation to the texture combiner operations. DOT3_RGB_EXT Arg0 Arg1 DOT3_RGBA_EXT Arg0 Arg1 where Arg0, Arg1 are derived from PRIMARY_COLOR_EXT primary color of incoming fragment TEXTURE texture color of corresponding texture unit CONSTANT_EXT texture environment constant color PREVIOUS_EXT result of previous texture environment; on texture unit 0, this maps to PRIMARY_COLOR_EXT This operaion can only be performed if SOURCE0_RGB_EXT, SOURCE1_RGB_EXT are defined. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_env_dot3.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_env_dot3 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/multisample.py0000644000175000001440000000074512025001653021111 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.multisample This module customises the behaviour of the OpenGL.raw.GL.EXT.multisample to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/multisample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.multisample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/pixel_transform_color_table.py0000644000175000001440000000125612025001653024334 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.pixel_transform_color_table This module customises the behaviour of the OpenGL.raw.GL.EXT.pixel_transform_color_table to provide a more Python-friendly API Overview (from the spec) This extension defines a color table that is applied immediately after the pixel transformation operation. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/pixel_transform_color_table.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.pixel_transform_color_table import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/framebuffer_object.py0000644000175000001440000001521512025001653022365 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.framebuffer_object This module customises the behaviour of the OpenGL.raw.GL.EXT.framebuffer_object to provide a more Python-friendly API Overview (from the spec) This extension defines a simple interface for drawing to rendering destinations other than the buffers provided to the GL by the window-system. In this extension, these newly defined rendering destinations are known collectively as "framebuffer-attachable images". This extension provides a mechanism for attaching framebuffer-attachable images to the GL framebuffer as one of the standard GL logical buffers: color, depth, and stencil. (Attaching a framebuffer-attachable image to the accum logical buffer is left for a future extension to define). When a framebuffer-attachable image is attached to the framebuffer, it is used as the source and destination of fragment operations as described in Chapter 4. By allowing the use of a framebuffer-attachable image as a rendering destination, this extension enables a form of "offscreen" rendering. Furthermore, "render to texture" is supported by allowing the images of a texture to be used as framebuffer-attachable images. A particular image of a texture object is selected for use as a framebuffer-attachable image by specifying the mipmap level, cube map face (for a cube map texture), and z-offset (for a 3D texture) that identifies the image. The "render to texture" semantics of this extension are similar to performing traditional rendering to the framebuffer, followed immediately by a call to CopyTexSubImage. However, by using this extension instead, an application can achieve the same effect, but with the advantage that the GL can usually eliminate the data copy that would have been incurred by calling CopyTexSubImage. This extension also defines a new GL object type, called a "renderbuffer", which encapsulates a single 2D pixel image. The image of renderbuffer can be used as a framebuffer-attachable image for generalized offscreen rendering and it also provides a means to support rendering to GL logical buffer types which have no corresponding texture format (stencil, accum, etc). A renderbuffer is similar to a texture in that both renderbuffers and textures can be independently allocated and shared among multiple contexts. The framework defined by this extension is general enough that support for attaching images from GL objects other than textures and renderbuffers could be added by layered extensions. To facilitate efficient switching between collections of framebuffer-attachable images, this extension introduces another new GL object, called a framebuffer object. A framebuffer object contains the state that defines the traditional GL framebuffer, including its set of images. Prior to this extension, it was the window-system which defined and managed this collection of images, traditionally by grouping them into a "drawable". The window-system API's would also provide a function (i.e., wglMakeCurrent, glXMakeCurrent, aglSetDrawable, etc.) to bind a drawable with a GL context (as is done in the WGL_ARB_pbuffer extension). In this extension however, this functionality is subsumed by the GL and the GL provides the function BindFramebufferEXT to bind a framebuffer object to the current context. Later, the context can bind back to the window-system-provided framebuffer in order to display rendered content. Previous extensions that enabled rendering to a texture have been much more complicated. One example is the combination of ARB_pbuffer and ARB_render_texture, both of which are window-system extensions. This combination requires calling MakeCurrent, an operation that may be expensive, to switch between the window and the pbuffer drawables. An application must create one pbuffer per renderable texture in order to portably use ARB_render_texture. An application must maintain at least one GL context per texture format, because each context can only operate on a single pixelformat or FBConfig. All of these characteristics make ARB_render_texture both inefficient and cumbersome to use. EXT_framebuffer_object, on the other hand, is both simpler to use and more efficient than ARB_render_texture. The EXT_framebuffer_object API is contained wholly within the GL API and has no (non-portable) window-system components. Under EXT_framebuffer_object, it is not necessary to create a second GL context when rendering to a texture image whose format differs from that of the window. Finally, unlike the pbuffers of ARB_render_texture, a single framebuffer object can facilitate rendering to an unlimited number of texture objects. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/framebuffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.framebuffer_object import * ### END AUTOGENERATED SECTION from OpenGL.lazywrapper import lazy glGenFramebuffersEXT = wrapper.wrapper(glGenFramebuffersEXT).setOutput( 'framebuffers', lambda x: (x,), 'n') glGenRenderbuffersEXT = wrapper.wrapper(glGenRenderbuffersEXT).setOutput( 'renderbuffers', lambda x: (x,), 'n') @lazy( glDeleteFramebuffersEXT ) def glDeleteFramebuffersEXT( baseOperation, n, framebuffers=None ): """glDeleteFramebuffersEXT( framebuffers ) -> None """ if framebuffers is None: framebuffers = arrays.GLuintArray.asArray( n ) n = arrays.GLuintArray.arraySize( framebuffers ) return baseOperation( n, framebuffers ) #glBindRenderbufferEXT # doesn't require wrapping #glBindFramebufferEXT # doesn't require wrapping #glBindRenderbufferEXT # doesn't require wrapping #glCheckFramebufferStatusEXT #glDeleteFramebuffersEXT # should be wrapped to eliminate 'length' #glDeleteRenderbuffersEXT # should be wrapped to eliminate 'length' #glFramebufferRenderbufferEXT #glFramebufferTexture1DEXT #glFramebufferTexture2DEXT #glFramebufferTexture3DEXT #glGenFramebuffersEXT # wrapped #glGenRenderbuffersEXT # wrapped #glGenerateMipmapEXT #glGetFramebufferAttachmentParameterivEXT #glGetRenderbufferParameterivEXT #glInitFramebufferObjectEXT #glIsFramebufferEXT #glIsRenderbufferEXT #glRenderbufferStorageEXT # doesn't require wrapping #glget.addGLGetConstant( GL_MAX_COLOR_ATTACHMENTS_EXT, (1,)) #glget.addGLGetConstant( GL_FRAMEBUFFER_BINDING_EXT, (1,)) #glget.addGLGetConstant( GL_RENDERBUFFER_BINDING_EXT, (1,)) #glget.addGLGetConstant( GL_MAX_RENDERBUFFER_SIZE_EXT, (1,))PyOpenGL-3.0.2/OpenGL/GL/EXT/histogram.py0000644000175000001440000000211112025001653020537 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.histogram This module customises the behaviour of the OpenGL.raw.GL.EXT.histogram to provide a more Python-friendly API Overview (from the spec) This extension defines pixel operations that count occurences of specific color component values (histogram) and that track the minimum and maximum color component values (minmax). An optional mode allows pixel data to be discarded after the histogram and/or minmax operations are completed. Otherwise the pixel data continue on to the next operation unaffected. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/histogram.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.histogram import * ### END AUTOGENERATED SECTION glGetHistogramParameterfvEXT = wrapper.wrapper(glGetHistogramParameterfvEXT).setOutput( "params",(1,), ) glGetHistogramParameterivEXT = wrapper.wrapper(glGetHistogramParameterivEXT).setOutput( "params",(1,), )PyOpenGL-3.0.2/OpenGL/GL/EXT/texture_object.py0000644000175000001440000000145512025001653021602 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_object This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_object to provide a more Python-friendly API Overview (from the spec) This extension introduces named texture objects. The only way to name a texture in GL 1.0 is by defining it as a single display list. Because display lists cannot be edited, these objects are static. Yet it is important to be able to change the images and parameters of a texture. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_lod_bias.py0000644000175000001440000000245512025001653022111 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_lod_bias This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_lod_bias to provide a more Python-friendly API Overview (from the spec) OpenGL computes a texture level-of-detail parameter, called lambda in the GL specification, that determines which mipmap levels and their relative mipmap weights for use in mipmapped texture filtering. This extension provides a means to bias the lambda computation by a constant (signed) value. This bias can provide a way to blur or pseudo-sharpen OpenGL's standard texture filtering. This blurring or pseudo-sharpening may be useful for special effects (such as depth-of-field effects) or image processing techniques (where the mipmap levels act as pre-downsampled image versions). On some implementations, increasing the texture lod bias may improve texture filtering performance (at the cost of texture bluriness). The extension mimics functionality found in Direct3D. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_lod_bias.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_lod_bias import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/cull_vertex.py0000644000175000001440000000225212025001653021104 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.cull_vertex This module customises the behaviour of the OpenGL.raw.GL.EXT.cull_vertex to provide a more Python-friendly API Overview (from the spec) This extension introduces a method for culling vertexes in object space based on the value of the dot product between the normal at the vertex and a culling eye direction. Culling a polygon by examining its vertexes in object space can be more efficient than screen space polygon culling since the transformation to screen space (which may include a division by w) can be avoided for culled vertexes. Also, vertex culling can be computed before vertexes are assembled into primitives. This is a useful property when drawing meshes with shared vertexes, since a vertex can be culled once, and the resulting state can be used for all primitives which share the vertex. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/cull_vertex.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.cull_vertex import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/index_array_formats.py0000644000175000001440000000127312025001653022612 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.index_array_formats This module customises the behaviour of the OpenGL.raw.GL.EXT.index_array_formats to provide a more Python-friendly API Overview (from the spec) This extends the number of packed vertex formats accepted by InterleavedArrays to include formats which specify color indexes rather than RGBA colors. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/index_array_formats.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.index_array_formats import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/direct_state_access.py0000644000175000001440000002372412025001653022552 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.direct_state_access This module customises the behaviour of the OpenGL.raw.GL.EXT.direct_state_access to provide a more Python-friendly API Overview (from the spec) This extension introduces a set of new "direct state access" commands (meaning no selector is involved) to access (update and query) OpenGL state that previously depended on the OpenGL state selectors for access. These new commands supplement the existing selector-based OpenGL commands to access the same state. The intent of this extension is to make it more efficient for libraries to avoid disturbing selector and latched state. The extension also allows more efficient command usage by eliminating the need for selector update commands. Two derivative advantages of this extension are 1) display lists can be executed using these commands that avoid disturbing selectors that subsequent commands may depend on, and 2) drivers implemented with a dual-thread partitioning with OpenGL command buffering from an application thread and then OpenGL command dispatching in a concurrent driver thread can avoid thread synchronization created by selector saving, setting, command execution, and selector restoration. This extension does not itself add any new OpenGL state. We call a state variable in OpenGL an "OpenGL state selector" or simply a "selector" if OpenGL commands depend on the state variable to determine what state to query or update. The matrix mode and active texture are both selectors. Object bindings for buffers, programs, textures, and framebuffer objects are also selectors. We call OpenGL state "latched" if the state is set by one OpenGL command but then that state is saved by a subsequent command or the state determines how client memory or buffer object memory is accessed by a subsequent command. The array and element array buffer bindings are latched by vertex array specification commands to determine which buffer a given vertex array uses. Vertex array state and pixel pack/unpack state decides how client memory or buffer object memory is accessed by subsequent vertex pulling or image specification commands. The existence of selectors and latched state in the OpenGL API reduces the number of parameters to various sets of OpenGL commands but complicates the access to state for layered libraries which seek to access state without disturbing other state, namely the state of state selectors and latched state. In many cases, selectors and latched state were introduced by extensions as OpenGL evolved to minimize the disruption to the OpenGL API when new functionality, particularly the pluralization of existing functionality as when texture objects and later multiple texture units, was introduced. The OpenGL API involves several selectors (listed in historical order of introduction): o The matrix mode. o The current bound texture for each supported texture target. o The active texture. o The active client texture. o The current bound program for each supported program target. o The current bound buffer for each supported buffer target. o The current GLSL program. o The current framebuffer object. The new selector-free update commands can be compiled into display lists. The OpenGL API has latched state for vertex array buffer objects and pixel store state. When an application issues a GL command to unpack or pack pixels (for example, glTexImage2D or glReadPixels respectively), the current unpack and pack pixel store state determines how the pixels are unpacked from/packed to client memory or pixel buffer objects. For example, consider: glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_TRUE); glPixelStorei(GL_UNPACK_ROW_LENGTH, 640); glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 47); glDrawPixels(100, 100, GL_RGB, GL_FLOAT, pixels); The unpack swap bytes and row length state set by the preceding glPixelStorei commands (as well as the 6 other unpack pixel store state variables) control how data is read (unpacked) from buffer of data pointed to by pixels. The glBindBuffer command also specifies an unpack buffer object (47) so the pixel pointer is actually treated as a byte offset into buffer object 47. When an application issues a command to configure a vertex array, the current array buffer state is latched as the binding for the particular vertex array being specified. For example, consider: glBindBuffer(GL_ARRAY_BUFFER, 23); glVertexPointer(3, GL_FLOAT, 12, pointer); The glBindBuffer command updates the array buffering binding (GL_ARRAY_BUFFER_BINDING) to the buffer object named 23. The subsequent glVertexPointer command specifies explicit parameters for the size, type, stride, and pointer to access the position vertex array BUT ALSO latches the current array buffer binding for the vertex array buffer binding (GL_VERTEX_ARRAY_BUFFER_BINDING). Effectively the current array buffer binding buffer object becomes an implicit fifth parameter to glVertexPointer and this applies to all the gl*Pointer vertex array specification commands. Selectors and latched state create problems for layered libraries using OpenGL because selectors require the selector state to be modified to update some other state and latched state means implicit state can affect the operation of commands specifying, packing, or unpacking data through pointers/offsets. For layered libraries, a state update performed by the library may attempt to save the selector state, set the selector, update/query some state the selector controls, and then restore the selector to its saved state. Layered libraries can skip the selector save/restore but this risks introducing uncertainty about the state of a selector after calling layered library routines. Such selector side-effects are difficult to document and lead to compatibility issues as the layered library evolves or its usage varies. For latched state, layered libraries may find commands such as glDrawPixels do not work as expected because latched pixel store state is not what the library expects. Querying or pushing the latched state, setting the latched state explicitly, performing the operation involving latched state, and then restoring or popping the latched state avoids entanglements with latched state but at considerable cost. EXAMPLE USAGE OF THIS EXTENSION'S FUNCTIONALITY Consider the following routine to set the modelview matrix involving the matrix mode selector: void setModelviewMatrix(const GLfloat matrix[16]) { GLenum savedMatrixMode; glGetIntegerv(GL_MATRIX_MODE, &savedMatrixMode); glMatrixMode(GL_MODELVIEW); glLoadMatrixf(matrix); glMatrixMode(savedMatrixMode); } Notice that four OpenGL commands are required to update the current modelview matrix without disturbing the matrix mode selector. OpenGL query commands can also substantially reduce the performance of modern OpenGL implementations which may off-load OpenGL state processing to another CPU core/thread or to the GPU itself. An alternative to querying the selector is to use the glPushAttrib/glPopAttrib commands. However this approach typically involves pushing far more state than simply the one or two selectors that need to be saved and restored. Because so much state is associated with a given push/pop attribute bit, the glPushAttrib and glPopAttrib commands are considerably more costly than the save/restore approach. Additionally glPushAttrib risks overflowing the attribute stack. The reliability and performance of layered libraries and applications can be improved by adding to the OpenGL API a new set of commands to access directly OpenGL state that otherwise involves selectors to access. The above example can be reimplemented more efficiently and without selector side-effects: void setModelviewMatrix(const GLfloat matrix[16]) { glMatrixLoadfEXT(GL_MODELVIEW, matrix); } Consider a layered library seeking to load a texture: void loadTexture(GLint texobj, GLint width, GLint height, void *data) { glBindTexture(GL_TEXTURE_2D, texobj); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, width, height, GL_RGB, GL_FLOAT, data); } The library expects the data to be packed into the buffer pointed to by data. But what if the current pixel unpack buffer binding is not zero so the current pixel unpack buffer, rather than client memory, will be read? Or what if the application has modified the GL_UNPACK_ROW_LENGTH pixel store state before loadTexture is called? We can fix the routine by calling glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0) and setting all the pixel store unpack state to the initial state the loadTexture routine expects, but this is expensive. It also risks disturbing the state so when loadTexture returns to the application, the application doesn't realize the current texture object (for whatever texture unit the current active texture happens to be) and pixel store state has changed. We can more efficiently implement this routine without disturbing selector or latched state as follows: void loadTexture(GLint texobj, GLint width, GLint height, void *data) { glPushClientAttribDefaultEXT(GL_CLIENT_PIXEL_STORE_BIT); glTextureImage2D(texobj, GL_TEXTURE_2D, 0, GL_RGB8, width, height, GL_RGB, GL_FLOAT, data); glPopClientAttrib(); } Now loadTexture does not have to worry about inappropriately configured pixel store state or a non-zero pixel unpack buffer binding. And loadTexture has no unintended side-effects for selector or latched state (assuming the client attrib state does not overflow). The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/direct_state_access.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.direct_state_access import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/coordinate_frame.py0000644000175000001440000000142712025001653022054 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.coordinate_frame This module customises the behaviour of the OpenGL.raw.GL.EXT.coordinate_frame to provide a more Python-friendly API Overview (from the spec) This extension allows specifying a per-vertex tangent and binormal vector in addition to the normal vector, defining a coordinate frame. The coordinate frame is used in additional extensions which also build on fragment lighting to achieve bump mapping. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/coordinate_frame.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.coordinate_frame import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/depth_bounds_test.py0000644000175000001440000000545112025001653022271 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.depth_bounds_test This module customises the behaviour of the OpenGL.raw.GL.EXT.depth_bounds_test to provide a more Python-friendly API Overview (from the spec) This extension adds a new per-fragment test that is, logically, after the scissor test and before the alpha test. The depth bounds test compares the depth value stored at the location given by the incoming fragment's (xw,yw) coordinates to a user-defined minimum and maximum depth value. If the stored depth value is outside the user-defined range (exclusive), the incoming fragment is discarded. Unlike the depth test, the depth bounds test has NO dependency on the fragment's window-space depth value. This functionality is useful in the context of attenuated stenciled shadow volume rendering. To motivate the functionality's utility in this context, we first describe how conventional scissor testing can be used to optimize shadow volume rendering. If an attenuated light source's illumination can be bounded to a rectangle in XY window-space, the conventional scissor test can be used to discard shadow volume fragments that are guaranteed to be outside the light source's window-space XY rectangle. The stencil increments and decrements that would otherwise be generated by these scissored fragments are inconsequential because the light source's illumination can pre-determined to be fully attenuated outside the scissored region. In other words, the scissor test can be used to discard shadow volume fragments rendered outside the scissor, thereby improving performance, without affecting the ultimate illumination of these pixels with respect to the attenuated light source. This scissoring optimization can be used both when rendering the stenciled shadow volumes to update stencil (incrementing and decrementing the stencil buffer) AND when adding the illumination contribution of attenuated light source's. In a similar fashion, we can compute the attenuated light source's window-space Z bounds (zmin,zmax) of consequential illumination. Unless a depth value (in the depth buffer) at a pixel is within the range [zmin,zmax], the light source's illumination can be pre-determined to be inconsequential for the pixel. Said another way, the pixel being illuminated is either far enough in front of or behind the attenuated light source so that the light source's illumination for the pixel is fully attenuated. The depth bounds test can perform this test. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/depth_bounds_test.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.depth_bounds_test import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/422_pixels.py0000644000175000001440000000056412025001653020447 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.GL_422_pixels This module customises the behaviour of the OpenGL.raw.GL.EXT.GL_422_pixels to provide a more Python-friendly API ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.GL_422_pixels import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_cube_map.py0000644000175000001440000000077112025001653022107 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_cube_map This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_cube_map to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_cube_map.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_cube_map import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/shadow_funcs.py0000644000175000001440000000124212025001653021231 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.shadow_funcs This module customises the behaviour of the OpenGL.raw.GL.EXT.shadow_funcs to provide a more Python-friendly API Overview (from the spec) This extension generalizes the GL_ARB_shadow extension to support all eight binary texture comparison functions rather than just GL_LEQUAL and GL_GEQUAL. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/shadow_funcs.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.shadow_funcs import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/light_texture.py0000644000175000001440000000257512025001653021447 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.light_texture This module customises the behaviour of the OpenGL.raw.GL.EXT.light_texture to provide a more Python-friendly API Overview (from the spec) This extension defines a general mechanism for substituting the fragment color computed during texture environment processing in place of other fragment attributes such as the fragment normal, or as sources for some of the computations in the fragment processing pipeline, for example as material or light parameters in the fragment lighting computations. Cf ----------------------+ | +-> to lighting parameters v | +------------+ +--------+ +-------------+ | | | | | | | texel |------->| texenv |-----| texture |---> Cf' (to Light Environment | generation | | | | application | or Fog) | | | | | | +------------+ +--------+ +-------------+ The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/light_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.light_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_mirror_clamp.py0000644000175000001440000000214612025001653023020 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_mirror_clamp This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_mirror_clamp to provide a more Python-friendly API Overview (from the spec) EXT_texture_mirror_clamp extends the set of texture wrap modes to include three modes (GL_MIRROR_CLAMP_EXT, GL_MIRROR_CLAMP_TO_EDGE_EXT, GL_MIRROR_CLAMP_TO_BORDER_EXT) that effectively use a texture map twice as large as the original image in which the additional half of the new image is a mirror image of the original image. This new mode relaxes the need to generate images whose opposite edges match by using the original image to generate a matching "mirror image". This mode allows the texture to be mirrored only once in the negative s, t, and r directions. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_mirror_clamp.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_mirror_clamp import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/bgra.py0000644000175000001440000000132212025001653017460 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.bgra This module customises the behaviour of the OpenGL.raw.GL.EXT.bgra to provide a more Python-friendly API Overview (from the spec) EXT_bgra extends the list of host-memory color formats. Specifically, it provides formats which match the memory layout of Windows DIBs so that applications can use the same data in both Windows API calls and OpenGL pixel API calls. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/bgra.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.bgra import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/subtexture.py0000644000175000001440000000174712025001653020772 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.subtexture This module customises the behaviour of the OpenGL.raw.GL.EXT.subtexture to provide a more Python-friendly API Overview (from the spec) This extension allows a contiguous portion of an already-existing texture image to be redefined, without affecting the remaining portion of the image, or any of the other state that describe the texture. No provision is made to query a subregion of a texture. Semantics for null image pointers are defined for TexImage1D, TexImage2D, and TexImage3DEXT. Null image pointers can be used by applications to effectively support texture arrays whose dimensions are not a power of 2. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/subtexture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.subtexture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_filter_anisotropic.py0000644000175000001440000000506312025001653024232 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_filter_anisotropic This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_filter_anisotropic to provide a more Python-friendly API Overview (from the spec) Texture mapping using OpenGL's existing mipmap texture filtering modes assumes that the projection of the pixel filter footprint into texture space is a square (ie, isotropic). In practice however, the footprint may be long and narrow (ie, anisotropic). Consequently, mipmap filtering severely blurs images on surfaces angled obliquely away from the viewer. Several approaches exist for improving texture sampling by accounting for the anisotropic nature of the pixel filter footprint into texture space. This extension provides a general mechanism for supporting anisotropic texturing filtering schemes without specifying a particular formulation of anisotropic filtering. The extension permits the OpenGL application to specify on a per-texture object basis the maximum degree of anisotropy to account for in texture filtering. Increasing a texture object's maximum degree of anisotropy may improve texture filtering but may also significantly reduce the implementation's texture filtering rate. Implementations are free to clamp the specified degree of anisotropy to the implementation's maximum supported degree of anisotropy. A texture's maximum degree of anisotropy is specified independent from the texture's minification and magnification filter (as opposed to being supported as an entirely new filtering mode). Implementations are free to use the specified minification and magnification filter to select a particular anisotropic texture filtering scheme. For example, a NEAREST filter with a maximum degree of anisotropy of two could be treated as a 2-tap filter that accounts for the direction of anisotropy. Implementations are also permitted to ignore the minification or magnification filter and implement the highest quality of anisotropic filtering possible. Applications seeking the highest quality anisotropic filtering available are advised to request a LINEAR_MIPMAP_LINEAR minification filter, a LINEAR magnification filter, and a large maximum degree of anisotropy. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_filter_anisotropic.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_filter_anisotropic import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/index_material.py0000644000175000001440000000176012025001653021540 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.index_material This module customises the behaviour of the OpenGL.raw.GL.EXT.index_material to provide a more Python-friendly API Overview (from the spec) This extends color index lighting to include a way for the current index to contribute to the color index produced by lighting. This works much like ColorMaterial does for RGBA lighting by allowing one or more color index material properties to be attached to the current index. The color index lighting formula is also modified so that the lit color index may be bitwise shifted in order to allow greater control when using lighting and fog together in color index mode. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/index_material.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.index_material import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/stencil_clear_tag.py0000644000175000001440000000733512025001653022221 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.stencil_clear_tag This module customises the behaviour of the OpenGL.raw.GL.EXT.stencil_clear_tag to provide a more Python-friendly API Overview (from the spec) Stencil-only framebuffer clears are increasingly common as 3D applications are now using rendering algorithms such as stenciled shadow volume rendering for multiple light sources in a single frame, recent "soft" stenciled shadow volume techniques, and stencil-based constructive solid geometry techniques. In such algorithms there are multiple stencil buffer clears for each depth buffer clear. Additionally in most cases, these algorithms do not require all of the 8 typical stencil bitplanes for their stencil requirements. In such cases, there is the potential for unused stencil bitplanes to encode a "stencil clear tag" in such a way to reduce the number of actual stencil clears. The idea is that switching to an unused stencil clear tag logically corresponds to when an application would otherwise perform a framebuffer-wide stencil clear. This extension exposes an inexpensive hardware mechanism for amortizing the cost of multiple stencil-only clears by using a client-specified number of upper bits of the stencil buffer to maintain a per-pixel stencil tag. The upper bits of each stencil value is treated as a tag that indicates the state of the upper bits of the "stencil clear tag" state when the stencil value was last written. If a stencil value is read and its upper bits containing its tag do NOT match the current upper bits of the stencil clear tag state, the stencil value is substituted with the lower bits of the stencil clear tag (the reset value). Either way, the upper tag bits of the stencil value are ignored by subsequent stencil function and operation processing of the stencil value. When a stencil value is written to the stencil buffer, its upper bits are overridden with the upper bits of the current stencil clear tag state so subsequent reads, prior to any subsequent stencil clear tag state change, properly return the updated lower bits. In this way, the stencil clear tag functionality provides a way to replace multiple bandwidth-intensive stencil clears with very inexpensive update of the stencil clear tag state. If used as expected with the client specifying 3 bits for the stencil tag, every 7 of 8 stencil-only clears of the entire stencil buffer can be substituted for an update of the current stencil clear tag rather than an actual update of all the framebuffer's stencil values. Still, every 8th clear must be an actual stencil clear. The net effect is that the aggregate cost of stencil clears is reduced by a factor of 1/(2^n) where n is the number of bits devoted to the stencil tag. The application specifies two new pieces of state: 1) the number of upper stencil bits, n, assigned to maintain the tag bits for each stencil value within the stencil buffer, and 2) a stencil clear tag value that packs the current tag and a reset value into a single integer values. The upper n bits of the stencil clear tag value specify the current tag while the lower s-min(n,s) bits specify the current reset value, where s is the number of bitplanes in the stencil buffer and n is the current number of stencil tag bits. If zero stencil clear tag bits are assigned to the stencil tag encoding, then the stencil buffer operates in the conventional manner. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/stencil_clear_tag.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.stencil_clear_tag import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture3D.py0000644000175000001440000000145012025001653020436 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture3D This module customises the behaviour of the OpenGL.raw.GL.EXT.texture3D to provide a more Python-friendly API Overview (from the spec) This extension defines 3-dimensional texture mapping. In order to define a 3D texture image conveniently, this extension also defines the in-memory formats for 3D images, and adds pixel storage modes to support them. One important application of 3D textures is rendering volumes of image data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture3D.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture3D import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_perturb_normal.py0000644000175000001440000000141112025001653023357 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_perturb_normal This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_perturb_normal to provide a more Python-friendly API Overview (from the spec) This extension defines a mechanism for using texture values to perturb the fragment normal vector prior to fragment lighting. It enables a direct implementation of the original formulation of bump mapping by Blinn. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_perturb_normal.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_perturb_normal import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/framebuffer_sRGB.py0000644000175000001440000000414112025001653021710 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.framebuffer_sRGB This module customises the behaviour of the OpenGL.raw.GL.EXT.framebuffer_sRGB to provide a more Python-friendly API Overview (from the spec) Conventionally, OpenGL assumes framebuffer color components are stored in a linear color space. In particular, framebuffer blending is a linear operation. The sRGB color space is based on typical (non-linear) monitor characteristics expected in a dimly lit office. It has been standardized by the International Electrotechnical Commission (IEC) as IEC 61966-2-1. The sRGB color space roughly corresponds to 2.2 gamma correction. This extension adds a framebuffer capability for sRGB framebuffer update and blending. When blending is disabled but the new sRGB updated mode is enabled (assume the framebuffer supports the capability), high-precision linear color component values for red, green, and blue generated by fragment coloring are encoded for sRGB prior to being written into the framebuffer. When blending is enabled along with the new sRGB update mode, red, green, and blue framebuffer color components are treated as sRGB values that are converted to linear color values, blended with the high-precision color values generated by fragment coloring, and then the blend result is encoded for sRGB just prior to being written into the framebuffer. The primary motivation for this extension is that it allows OpenGL applications to render into a framebuffer that is scanned to a monitor configured to assume framebuffer color values are sRGB encoded. This assumption is roughly true of most PC monitors with default gamma correction. This allows applications to achieve faithful color reproduction for OpenGL rendering without adjusting the monitor's gamma correction. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/framebuffer_sRGB.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.framebuffer_sRGB import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/polygon_offset.py0000644000175000001440000000234012025001653021603 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.polygon_offset This module customises the behaviour of the OpenGL.raw.GL.EXT.polygon_offset to provide a more Python-friendly API Overview (from the spec) The depth values of fragments generated by rendering polygons are displaced by an amount that is proportional to the maximum absolute value of the depth slope of the polygon, measured and applied in window coordinates. This displacement allows lines (or points) and polygons in the same plane to be rendered without interaction -- the lines rendered either completely in front of or behind the polygons (depending on the sign of the offset factor). It also allows multiple coplanar polygons to be rendered without interaction, if different offset factors are used for each polygon. Applications include rendering hidden-line images, rendering solids with highlighted edges, and applying `decals' to surfaces. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/polygon_offset.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.polygon_offset import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/color_subtable.py0000644000175000001440000000133712025001653021552 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.color_subtable This module customises the behaviour of the OpenGL.raw.GL.EXT.color_subtable to provide a more Python-friendly API Overview (from the spec) This extension allows a portion of a color table to be redefined. If EXT_copy_texture is implemented, this extension also defines a method to load a portion of a color lookup table from the framebuffer. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/color_subtable.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.color_subtable import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/separate_shader_objects.py0000644000175000001440000000547212025001653023422 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.separate_shader_objects This module customises the behaviour of the OpenGL.raw.GL.EXT.separate_shader_objects to provide a more Python-friendly API Overview (from the spec) Prior to this extension, GLSL requires multiple shader domains (vertex, fragment, geometry) to be linked into a single monolithic program object to specify a GLSL shader for each domain. While GLSL's monolithic approach has some advantages for optimizing shaders as a unit that span multiple domains, all existing GPU hardware supports the more flexible mix-and-match approach. HLSL9, Cg, the prior OpenGL assembly program extensions, and game console programmers favor a more flexible "mix-and-match" approach to specifying shaders independently for these different shader domains. Many developers build their shader content around the mix-and-match approach where they can use a single vertex shader with multiple fragment shaders (or vice versa). This keep-it-simple extension adapts the "mix-and-match" shader domain model for GLSL so different GLSL program objects can be bound to different shader domains. This extension redefines the operation of glUseProgram(GLenum program) to be equivalent to: glUseShaderProgramEXT(GL_VERTEX_SHADER, program); glUseShaderProgramEXT(GL_GEOMETRY_SHADER_EXT, program); glUseShaderProgramEXT(GL_FRAGMENT_SHADER, program); glActiveProgramEXT(program); You can also call these commands separately to bind each respective domain. The GL_VERTEX_SHADER, GL_GEOMETRY_SHADER_EXT, and GL_FRAGMENT_SHADER tokens refer to the conventional vertex, geometry, and fragment domains respectively. glActiveProgramEXT specifies the program that glUniform* commands will update. Separate linking creates the possibility that certain output varyings of a shader may go unread by the subsequent shader inputting varyings. In this case, the output varyings are simply ignored. It is also possible input varyings from a shader may not be written as output varyings of a preceding shader. In this case, the unwritten input varying values are undefined. Implementations are encouraged to zero these undefined input varying values. This extension is a proof-of-concept that separate shader objects can work for GLSL and a response to repeated requests for this functionality. There are various loose ends, particularly when dealing with user-defined varyings. The hope is a future extension will improve this situation. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/separate_shader_objects.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.separate_shader_objects import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/packed_depth_stencil.py0000644000175000001440000001227412025001653022711 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.packed_depth_stencil This module customises the behaviour of the OpenGL.raw.GL.EXT.packed_depth_stencil to provide a more Python-friendly API Overview (from the spec) Many OpenGL implementations have chosen to interleave the depth and stencil buffers into one buffer, often with 24 bits of depth precision and 8 bits of stencil data. 32 bits is more than is needed for the depth buffer much of the time; a 24-bit depth buffer, on the other hand, requires that reads and writes of depth data be unaligned with respect to power-of-two boundaries. On the other hand, 8 bits of stencil data is more than sufficient for most applications, so it is only natural to pack the two buffers into a single buffer with both depth and stencil data. OpenGL never provides direct access to the buffers, so the OpenGL implementation can provide an interface to applications where it appears the one merged buffer is composed of two logical buffers. One disadvantage of this scheme is that OpenGL lacks any means by which this packed data can be handled efficiently. For example, when an application reads from the 24-bit depth buffer, using the type GL_UNSIGNED_SHORT will lose 8 bits of data, while GL_UNSIGNED_INT has 8 too many. Both require expensive format conversion operations. A 24-bit format would be no more suitable, because it would also suffer from the unaligned memory accesses that made the standalone 24-bit depth buffer an unattractive proposition in the first place. Many applications, such as parallel rendering applications, may also wish to draw to or read back from both the depth and stencil buffers at the same time. Currently this requires two separate operations, reducing performance. Since the buffers are interleaved, drawing to or reading from both should be no more expensive than using just one; in some cases, it may even be cheaper. This extension provides a new data format, GL_DEPTH_STENCIL_EXT, that can be used with the glDrawPixels, glReadPixels, and glCopyPixels commands, as well as a packed data type, GL_UNSIGNED_INT_24_8_EXT, that is meant to be used with GL_DEPTH_STENCIL_EXT. No other data types are supported with GL_DEPTH_STENCIL_EXT. If ARB_depth_texture or SGIX_depth_texture is supported, GL_DEPTH_STENCIL_EXT/GL_UNSIGNED_INT_24_8_EXT data can also be used for textures; this provides a more efficient way to supply data for a 24-bit depth texture. GL_DEPTH_STENCIL_EXT data, when passed through the pixel path, undergoes both depth and stencil operations. The depth data is scaled and biased by the current GL_DEPTH_SCALE and GL_DEPTH_BIAS, while the stencil data is shifted and offset by the current GL_INDEX_SHIFT and GL_INDEX_OFFSET. The stencil data is also put through the stencil-to-stencil pixel map. glDrawPixels of GL_DEPTH_STENCIL_EXT data operates similarly to that of GL_STENCIL_INDEX data, bypassing the OpenGL fragment pipeline entirely, unlike the treatment of GL_DEPTH_COMPONENT data. The stencil and depth masks are applied, as are the pixel ownership and scissor tests, but all other operations are skipped. glReadPixels of GL_DEPTH_STENCIL_EXT data reads back a rectangle from both the depth and stencil buffers. glCopyPixels of GL_DEPTH_STENCIL_EXT data copies a rectangle from both the depth and stencil buffers. Like glDrawPixels, it applies both the stencil and depth masks but skips the remainder of the OpenGL fragment pipeline. glTex[Sub]Image[1,2,3]D of GL_DEPTH_STENCIL_EXT data loads depth and stencil data into a depth_stencil texture. glGetTexImage of GL_DEPTH_STENCIL_EXT data can be used to retrieve depth and stencil data from a depth/stencil texture. In addition, a new base internal format, GL_DEPTH_STENCIL_EXT, can be used by both texture images and renderbuffer storage. When an image with a DEPTH_STENCIL_EXT internal format is attached to both the depth and stencil attachment points of a framebuffer object (see EXT_framebuffer_object), then it becomes both the depth and stencil buffers of the framebuffer. This fits nicely with hardware that interleaves both depth and stencil data into a single buffer. When a texture with DEPTH_STENCIL_EXT data is bound for texturing, only the depth component is accessible through the texture fetcher. The stencil data can be written with TexImage or CopyTexImage, and can be read with GetTexImage. When a DEPTH_STENCIL_EXT image is attached to the stencil attachment of the bound framebuffer object, the stencil data can be accessed through any operation that reads from or writes to the framebuffer's stencil buffer. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/packed_depth_stencil.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.packed_depth_stencil import * ### END AUTOGENERATED SECTION # Setup the new image types from OpenGL import images from OpenGL.constants import GL_UNSIGNED_INT images.TYPE_TO_ARRAYTYPE[ GL_UNSIGNED_INT_24_8_EXT ] = GL_UNSIGNED_INT images.TIGHT_PACK_FORMATS[ GL_UNSIGNED_INT_24_8_EXT ] = 4 images.COMPONENT_COUNTS[ GL_DEPTH_STENCIL_EXT ] = 4 PyOpenGL-3.0.2/OpenGL/GL/EXT/geometry_shader4.py0000644000175000001440000000422312025001653022015 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.geometry_shader4 This module customises the behaviour of the OpenGL.raw.GL.EXT.geometry_shader4 to provide a more Python-friendly API Overview (from the spec) EXT_geometry_shader4 defines a new shader type available to be run on the GPU, called a geometry shader. Geometry shaders are run after vertices are transformed, but prior to color clamping, flat shading and clipping. A geometry shader begins with a single primitive (point, line, triangle). It can read the attributes of any of the vertices in the primitive and use them to generate new primitives. A geometry shader has a fixed output primitive type (point, line strip, or triangle strip) and emits vertices to define a new primitive. A geometry shader can emit multiple disconnected primitives. The primitives emitted by the geometry shader are clipped and then processed like an equivalent OpenGL primitive specified by the application. Furthermore, EXT_geometry_shader4 provides four additional primitive types: lines with adjacency, line strips with adjacency, separate triangles with adjacency, and triangle strips with adjacency. Some of the vertices specified in these new primitive types are not part of the ordinary primitives, instead they represent neighboring vertices that are adjacent to the two line segment end points (lines/strips) or the three triangle edges (triangles/tstrips). These vertices can be accessed by geometry shaders and used to match up the vertices emitted by the geometry shader with those of neighboring primitives. Since geometry shaders expect a specific input primitive type, an error will occur if the application presents primitives of a different type. For example, if a geometry shader expects points, an error will occur at Begin() time, if a primitive mode of TRIANGLES is specified. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/geometry_shader4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.geometry_shader4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/clip_volume_hint.py0000644000175000001440000000155212025001653022112 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.clip_volume_hint This module customises the behaviour of the OpenGL.raw.GL.EXT.clip_volume_hint to provide a more Python-friendly API Overview (from the spec) EXT_clip_volume_hint provides a mechanism for applications to indicate that they do not require clip volume clipping for primitives. It allows applications to maximize performance in situations where they know that clipping is unnecessary. EXT_clip_volume_hint is only an indication, though, and implementations are free to ignore it. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/clip_volume_hint.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.clip_volume_hint import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/secondary_color.py0000644000175000001440000000134712025001653021741 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.secondary_color This module customises the behaviour of the OpenGL.raw.GL.EXT.secondary_color to provide a more Python-friendly API Overview (from the spec) This extension allows specifying the RGB components of the secondary color used in the Color Sum stage, instead of using the default (0,0,0,0) color. It applies only in RGBA mode and when LIGHTING is disabled. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/secondary_color.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.secondary_color import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/paletted_texture.py0000644000175000001440000000530012025001653022127 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.paletted_texture This module customises the behaviour of the OpenGL.raw.GL.EXT.paletted_texture to provide a more Python-friendly API Overview (from the spec) EXT_paletted_texture defines new texture formats and new calls to support the use of paletted textures in OpenGL. A paletted texture is defined by giving both a palette of colors and a set of image data which is composed of indices into the palette. The paletted texture cannot function properly without both pieces of information so it increases the work required to define a texture. This is offset by the fact that the overall amount of texture data can be reduced dramatically by factoring redundant information out of the logical view of the texture and placing it in the palette. Paletted textures provide several advantages over full-color textures: * As mentioned above, the amount of data required to define a texture can be greatly reduced over what would be needed for full-color specification. For example, consider a source texture that has only 256 distinct colors in a 256 by 256 pixel grid. Full-color representation requires three bytes per pixel, taking 192K of texture data. By putting the distinct colors in a palette only eight bits are required per pixel, reducing the 192K to 64K plus 768 bytes for the palette. Now add an alpha channel to the texture. The full-color representation increases by 64K while the paletted version would only increase by 256 bytes. This reduction in space required is particularly important for hardware accelerators where texture space is limited. * Paletted textures allow easy reuse of texture data for images which require many similar but slightly different colored objects. Consider a driving simulation with heavy traffic on the road. Many of the cars will be similar but with different color schemes. If full-color textures are used a separate texture would be needed for each color scheme, while paletted textures allow the same basic index data to be reused for each car, with a different palette to change the final colors. * Paletted textures also allow use of all the palette tricks developed for paletted displays. Simple animation can be done, along with strobing, glowing and other palette-cycling effects. All of these techniques can enhance the visual richness of a scene with very little data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/paletted_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.paletted_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/abgr.py0000644000175000001440000000141112025001653017457 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.abgr This module customises the behaviour of the OpenGL.raw.GL.EXT.abgr to provide a more Python-friendly API Overview (from the spec) EXT_abgr extends the list of host-memory color formats. Specifically, it provides a reverse-order alternative to image format RGBA. The ABGR component order matches the cpack Iris GL format on big-endian machines. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/abgr.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.abgr import * ### END AUTOGENERATED SECTION from OpenGL import images as _i _i.COMPONENT_COUNTS[ GL_ABGR_EXT ] = 4 PyOpenGL-3.0.2/OpenGL/GL/EXT/texture_buffer_object.py0000644000175000001440000000455012025001653023132 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_buffer_object This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_buffer_object to provide a more Python-friendly API Overview (from the spec) This extension provides a new texture type, called a buffer texture. Buffer textures are one-dimensional arrays of texels whose storage comes from an attached buffer object. When a buffer object is bound to a buffer texture, a format is specified, and the data in the buffer object is treated as an array of texels of the specified format. The use of a buffer object to provide storage allows the texture data to be specified in a number of different ways: via buffer object loads (BufferData), direct CPU writes (MapBuffer), framebuffer readbacks (EXT_pixel_buffer_object extension). A buffer object can also be loaded by transform feedback (NV_transform_feedback extension), which captures selected transformed attributes of vertices processed by the GL. Several of these mechanisms do not require an extra data copy, which would be required when using conventional TexImage-like entry points. Buffer textures do not support mipmapping, texture lookups with normalized floating-point texture coordinates, and texture filtering of any sort, and may not be used in fixed-function fragment processing. They can be accessed via single texel fetch operations in programmable shaders. For assembly shaders (NV_gpu_program4), the TXF instruction is used. For GLSL (EXT_gpu_shader4), a new sampler type and texel fetch function are used. Buffer textures can be substantially larger than equivalent one-dimensional textures; the maximum texture size supported for buffer textures in the initial implementation of this extension is 2^27 texels, versus 2^13 (8192) texels for otherwise equivalent one-dimensional textures. When a buffer object is attached to a buffer texture, a size is not specified; rather, the number of texels in the texture is taken by dividing the size of the buffer object by the size of each texel. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_buffer_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/gpu_shader4.py0000644000175000001440000001217212025001653020757 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.gpu_shader4 This module customises the behaviour of the OpenGL.raw.GL.EXT.gpu_shader4 to provide a more Python-friendly API Overview (from the spec) This extension provides a set of new features to the OpenGL Shading Language and related APIs to support capabilities of new hardware. In particular, this extension provides the following functionality: * New texture lookup functions are provided that allow shaders to access individual texels using integer coordinates referring to the texel location and level of detail. No filtering is performed. These functions allow applications to use textures as one-, two-, and three-dimensional arrays. * New texture lookup functions are provided that allow shaders to query the dimensions of a specific level-of-detail image of a texture object. * New texture lookup functions variants are provided that allow shaders to pass a constant integer vector used to offset the texel locations used during the lookup to assist in custom texture filtering operations. * New texture lookup functions are provided that allow shaders to access one- and two-dimensional array textures. The second, or third, coordinate is used to select the layer of the array to access. * New "Grad" texture lookup functions are provided that allow shaders to explicitely pass in derivative values which are used by the GL to compute the level-of-detail when performing a texture lookup. * A new texture lookup function is provided to access a buffer texture. * The existing absolute LOD texture lookup functions are no longer restricted to the vertex shader only. * The ability to specify and use cubemap textures with a DEPTH_COMPONENT internal format. This also enables shadow mapping on cubemaps. The 'q' coordinate is used as the reference value for comparisons. A set of new texture lookup functions is provided to lookup into shadow cubemaps. * The ability to specify if varying variables are interpolated in a non-perspective correct manner, if they are flat shaded or, if multi-sampling, if centroid sampling should be performed. * Full signed integer and unsigned integer support in the OpenGL Shading Language: - Integers are defined as 32 bit values using two's complement. - Unsigned integers and vectors thereof are added. - New texture lookup functions are provided that return integer values. These functions are to be used in conjunction with new texture formats whose components are actual integers, rather than integers that encode a floating-point value. To support these lookup functions, new integer and unsigned-integer sampler types are introduced. - Integer bitwise operators are now enabled. - Several built-in functions and operators now operate on integers or vectors of integers. - New vertex attribute functions are added that load integer attribute data and can be referenced in a vertex shader as integer data. - New uniform loading commands are added to load unsigned integer data. - Varying variables can now be (unsigned) integers. If declared as such, they have to be flat shaded. - Fragment shaders can define their own output variables, and declare them to be of type floating-point, integer or unsigned integer. These variables are bound to a fragment color index with the new API command BindFragDataLocationEXT(), and directed to buffers using the existing DrawBuffer or DrawBuffers API commands. * Added new built-in functions truncate() and round() to the shading language. * A new built-in variable accessible from within vertex shaders that holds the index implicitly passed to ArrayElement to specify the vertex. This is called the vertex ID. * A new built-in variable accessible from within fragment and geometry shaders that hold the index of the currently processed primitive. This is called the primitive ID. This extension also briefly mentions a new shader type, called a geometry shader. A geometry shader is run after vertices are transformed, but before clipping. A geometry shader begins with a single primitive (point, line, triangle. It can read the attributes of any of the vertices in the primitive and use them to generate new primitives. A geometry shader has a fixed output primitive type (point, line strip, or triangle strip) and emits vertices to define a new primitive. Geometry shaders are discussed in detail in the GL_EXT_geometry_shader4 specification. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/gpu_shader4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.gpu_shader4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/framebuffer_blit.py0000644000175000001440000000154712025001653022054 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.framebuffer_blit This module customises the behaviour of the OpenGL.raw.GL.EXT.framebuffer_blit to provide a more Python-friendly API Overview (from the spec) This extension modifies EXT_framebuffer_object by splitting the framebuffer object binding point into separate DRAW and READ bindings. This allows copying directly from one framebuffer to another. In addition, a new high performance blit function is added to facilitate these blits and perform some data conversion where allowed. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/framebuffer_blit.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.framebuffer_blit import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_sRGB.py0000644000175000001440000000216312025001653021126 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_sRGB This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_sRGB to provide a more Python-friendly API Overview (from the spec) Conventional texture formats assume a linear color space. So for a conventional internal texture format such as GL_RGB8, the 256 discrete values for each 8-bit color component map linearly and uniformly to the [0,1] range. The sRGB color space is based on typical (non-linear) monitor characteristics expected in a dimly lit office. It has been standardized by the International Electrotechnical Commission (IEC) as IEC 61966-2-1. The sRGB color space roughly corresponds to 2.2 gamma correction. This extension adds a few new uncompressed and compressed color texture formats with sRGB color components. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_sRGB.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_sRGB import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_env_combine.py0000644000175000001440000000260612025001653022617 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_env_combine This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_env_combine to provide a more Python-friendly API Overview (from the spec) New texture environment function COMBINE_EXT allows programmable texture combiner operations, including: REPLACE Arg0 MODULATE Arg0 * Arg1 ADD Arg0 + Arg1 ADD_SIGNED_EXT Arg0 + Arg1 - 0.5 INTERPOLATE_EXT Arg0 * (Arg2) + Arg1 * (1-Arg2) where Arg0, Arg1 and Arg2 are derived from PRIMARY_COLOR_EXT primary color of incoming fragment TEXTURE texture color of corresponding texture unit CONSTANT_EXT texture environment constant color PREVIOUS_EXT result of previous texture environment; on texture unit 0, this maps to PRIMARY_COLOR_EXT and Arg2 is restricted to the alpha component of the corresponding source. In addition, the result may be scaled by 1.0, 2.0 or 4.0. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_env_combine.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_env_combine import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_compression_latc.py0000644000175000001440000000223712025001653023677 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_compression_latc This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_compression_latc to provide a more Python-friendly API Overview (from the spec) This extension introduces four new block-based texture compression formats suited for unsigned and signed luminance and luminance-alpha textures (hence the name "latc" for Luminance-Alpha Texture Compression). These formats are designed to reduce the storage requirements and memory bandwidth required for luminance and luminance-alpha textures by a factor of 2-to-1 over conventional uncompressed luminance and luminance-alpha textures with 8-bit components (GL_LUMINANCE8 and GL_LUMINANCE8_ALPHA8). The compressed signed luminance-alpha format is reasonably suited for storing compressed normal maps. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_compression_latc.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_compression_latc import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/rescale_normal.py0000644000175000001440000000167612025001653021547 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.rescale_normal This module customises the behaviour of the OpenGL.raw.GL.EXT.rescale_normal to provide a more Python-friendly API Overview (from the spec) When normal rescaling is enabled a new operation is added to the transformation of the normal vector into eye coordinates. The normal vector is rescaled after it is multiplied by the inverse modelview matrix and before it is normalized. The rescale factor is chosen so that in many cases normal vectors with unit length in object coordinates will not need to be normalized as they are transformed into eye coordinates. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/rescale_normal.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.rescale_normal import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/cmyka.py0000644000175000001440000000263712025001653017663 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.cmyka This module customises the behaviour of the OpenGL.raw.GL.EXT.cmyka to provide a more Python-friendly API Overview (from the spec) This extension provides a simple method for OpenGL to read and store images whose pixels have CMYK or CMYKA formats. The algorithms used to convert to RGBA from CMYKA and to convert back from RGBA to CMYKA are of the "black-box" nature, meaning that the application has little control over how the conversion is done. Also, this black-box mechanism is available only for transfers to or from memory, not for internal copies of pixel data (such as invoked by CopyPixels, CopyTexImage1D, etc.) However, the defined mechanism nicely handles 5-component CMYKA images, and it is very easy to use. A more configurable and potentially higher quality color conversion can be implemented using the color tables, the color matrix, and possibly 3D and 4D texture lookup. Such a color conversion also applies to copied pixel data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/cmyka.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.cmyka import * ### END AUTOGENERATED SECTION from OpenGL import images as _i _i.COMPONENT_COUNTS[ GL_CMYK_EXT ] = 4 _i.COMPONENT_COUNTS[ GL_CMYKA_EXT ] = 5 PyOpenGL-3.0.2/OpenGL/GL/EXT/convolution.py0000644000175000001440000000175612025001653021137 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.convolution This module customises the behaviour of the OpenGL.raw.GL.EXT.convolution to provide a more Python-friendly API Overview (from the spec) This extension defines 1 and 2 dimensional convolution operations at a fixed location in the pixel transfer process. Thus pixel drawing, reading, and copying, as well as texture image definition, are all candidates for convolution. The convolution kernels are themselves treated as 1 and 2 dimensional images, which can be loaded from application memory or from the framebuffer. This extension is designed to accommodate 3D convolution, but the API is left for a future extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/convolution.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.convolution import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/stencil_two_side.py0000644000175000001440000000156512025001653022114 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.stencil_two_side This module customises the behaviour of the OpenGL.raw.GL.EXT.stencil_two_side to provide a more Python-friendly API Overview (from the spec) This extension provides two-sided stencil testing where the stencil-related state (stencil operations, reference value, compare mask, and write mask) may be different for front- and back-facing polygons. Two-sided stencil testing may improve the performance of stenciled shadow volume and Constructive Solid Geometry (CSG) rendering algorithms. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/stencil_two_side.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.stencil_two_side import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/provoking_vertex.py0000644000175000001440000000341712025001653022167 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.provoking_vertex This module customises the behaviour of the OpenGL.raw.GL.EXT.provoking_vertex to provide a more Python-friendly API Overview (from the spec) This extension provides an alternative provoking vertex convention for rendering lines, triangles, and (optionally depending on the implementation) quads. The provoking vertex of a primitive is the vertex that determines the constant primary and secondary colors when flat shading is enabled. In OpenGL, the provoking vertex for triangle, quad, line, and (trivially) point primitives is the last vertex used to assemble the primitive. The polygon primitive is an exception in OpenGL where the first vertex of a polygon primitive determines the color of the polygon, even if actually broken into triangles and/or quads. See section 2.14.7 (Flatshading) of the OpenGL 2.1 specification, particularly Table 2.12 for more details. Alternatively the provoking vertex could be the first vertex of the primitive. Other APIs with flat-shading functionality such as Reality Lab and Direct3D have adopted the "first vertex of the primitive" convention to determine the provoking vertex. However, these APIs lack quads so do not have a defined provoking vertex convention for quads. The motivation for this extension is to allow applications developed for APIs with a "first vertex of the primitive" provoking vertex to be easily converted to OpenGL. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/provoking_vertex.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.provoking_vertex import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/blend_minmax.py0000644000175000001440000000176212025001653021212 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.blend_minmax This module customises the behaviour of the OpenGL.raw.GL.EXT.blend_minmax to provide a more Python-friendly API Overview (from the spec) Blending capability is extended by respecifying the entire blend equation. While this document defines only two new equations, the BlendEquationEXT procedure that it defines will be used by subsequent extensions to define additional blending equations. The two new equations defined by this extension produce the minimum (or maximum) color components of the source and destination colors. Taking the maximum is useful for applications such as maximum projection in medical imaging. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/blend_minmax.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.blend_minmax import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/blend_equation_separate.py0000644000175000001440000000225612025001653023431 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.blend_equation_separate This module customises the behaviour of the OpenGL.raw.GL.EXT.blend_equation_separate to provide a more Python-friendly API Overview (from the spec) EXT_blend_func_separate introduced separate RGB and alpha blend factors. EXT_blend_minmax introduced a distinct blend equation for combining source and destination blend terms. (EXT_blend_subtract & EXT_blend_logic_op added other blend equation modes.) OpenGL 1.4 integrated both functionalities into the core standard. While there are separate blend functions for the RGB and alpha blend factors, OpenGL 1.4 provides a single blend equation that applies to both RGB and alpha portions of blending. This extension provides a separate blend equation for RGB and alpha to match the generality available for blend factors. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/blend_equation_separate.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.blend_equation_separate import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_env_add.py0000644000175000001440000000132312025001653021726 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_env_add This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_env_add to provide a more Python-friendly API Overview (from the spec) New texture environment function ADD is supported with the following equation: Cv = min(1, Cf + Ct) New function may be specified by calling TexEnv with ADD token. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_env_add.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_env_add import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_snorm.py0000644000175000001440000000206712025001653021472 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_snorm This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_snorm to provide a more Python-friendly API Overview (from the spec) Fixed-point textures in unextended OpenGL have integer components, but those values are taken to represent floating-point values in the range [0.0,1.0]. These integer components are considered "unsigned normalized" integers. When such a texture is accessed by a shader or by fixed-function fragment processing, floating-point values are returned in the range [0.0,1.0]. This extension provides a set of new "signed normalized" integer texture formats. These are taken to represent a floating-point value in the range [-1.0,1.0] with an exact 0.0. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_snorm.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_snorm import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/EXT/texture_compression_rgtc.py0000644000175000001440000000270012025001653023706 0ustar mcfletchusers00000000000000'''OpenGL extension EXT.texture_compression_rgtc This module customises the behaviour of the OpenGL.raw.GL.EXT.texture_compression_rgtc to provide a more Python-friendly API Overview (from the spec) This extension introduces four new block-based texture compression formats suited for unsigned and signed red and red-green textures (hence the name "rgtc" for Red-Green Texture Compression). These formats are designed to reduce the storage requirements and memory bandwidth required for red and red-green textures by a factor of 2-to-1 over conventional uncompressed luminance and luminance-alpha textures with 8-bit components (GL_LUMINANCE8 and GL_LUMINANCE8_ALPHA8). The compressed signed red-green format is reasonably suited for storing compressed normal maps. This extension uses the same compression format as the EXT_texture_compression_latc extension except the color data is stored in the red and green components rather than luminance and alpha. Representing compressed red and green components is consistent with the BC4 and BC5 compressed formats supported by DirectX 10. The official definition of this extension is available here: http://www.opengl.org/registry/specs/EXT/texture_compression_rgtc.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.EXT.texture_compression_rgtc import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/PGI/0000755000175000001440000000000012032640120016150 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/PGI/vertex_hints.py0000644000175000001440000000120512025001653021246 0ustar mcfletchusers00000000000000'''OpenGL extension PGI.vertex_hints This module customises the behaviour of the OpenGL.raw.GL.PGI.vertex_hints to provide a more Python-friendly API Overview (from the spec) The extension allows the app to give hints regarding what kinds of OpenGL function calls will happen between Begin/End pairs. The official definition of this extension is available here: http://www.opengl.org/registry/specs/PGI/vertex_hints.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.PGI.vertex_hints import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/PGI/misc_hints.py0000644000175000001440000000116712025001653020673 0ustar mcfletchusers00000000000000'''OpenGL extension PGI.misc_hints This module customises the behaviour of the OpenGL.raw.GL.PGI.misc_hints to provide a more Python-friendly API Overview (from the spec) The extension allows the app to give various hints regarding desired level of conformance, performance, features, etc. The official definition of this extension is available here: http://www.opengl.org/registry/specs/PGI/misc_hints.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.PGI.misc_hints import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/PGI/__init__.py0000644000175000001440000000002712025001653020264 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/SGIS/0000755000175000001440000000000012032640120016276 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/SGIS/sharpen_texture.py0000644000175000001440000000145612025001653022102 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.sharpen_texture This module customises the behaviour of the OpenGL.raw.GL.SGIS.sharpen_texture to provide a more Python-friendly API Overview (from the spec) This extension introduces texture magnification filters that sharpen the resulting image by extrapolating from the level 1 image to the level 0 image. Sharpening can be enabled for all color channels, for the alpha channel only, or for the red, green, and blue channels only. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/sharpen_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.sharpen_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/point_parameters.py0000644000175000001440000000077512025001653022241 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.point_parameters This module customises the behaviour of the OpenGL.raw.GL.SGIS.point_parameters to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/point_parameters.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.point_parameters import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/texture_border_clamp.py0000644000175000001440000000256012025001653023070 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.texture_border_clamp This module customises the behaviour of the OpenGL.raw.GL.SGIS.texture_border_clamp to provide a more Python-friendly API Overview (from the spec) The base OpenGL provides clamping such that the texture coordinates are limited to exactly the range [0,1]. When a texture coordinate is clamped using this algorithm, the texture sampling filter straddles the edge of the texture image, taking 1/2 its sample values from within the texture image, and the other 1/2 from the texture border. It is sometimes desirable for a texture to be clamped to the border color, rather than to an average of the border and edge colors. This extension defines an additional texture clamping algorithm. CLAMP_TO_BORDER_SGIS clamps texture coordinates at all mipmap levels such that NEAREST and LINEAR filters return the color of the border texels. When used with FILTER4 filters, the filter operation of CLAMP_TO_BORDER_SGIS is defined but doesn't result in a nice clamp-to-border color. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/texture_border_clamp.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.texture_border_clamp import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/texture_color_mask.py0000644000175000001440000000207512025001653022571 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.texture_color_mask This module customises the behaviour of the OpenGL.raw.GL.SGIS.texture_color_mask to provide a more Python-friendly API Overview (from the spec) This extension implements the same functionality for texture updates that glColorMask implements for color buffer updates. Masks for updating textures with indexed internal formats (the analog for glIndexMask) should be supported by a separate extension. The extension allows an application to update a subset of components in an existing texture. The masks are applied after all pixel transfer operations have been performed, immediately prior to writing the texel value into texture memory. They apply to all texture updates. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/texture_color_mask.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.texture_color_mask import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/texture_lod.py0000644000175000001440000000327212025001653021216 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.texture_lod This module customises the behaviour of the OpenGL.raw.GL.SGIS.texture_lod to provide a more Python-friendly API Overview (from the spec) This extension imposes two constraints related to the texture level of detail parameter LOD, which is represented by the Greek character lambda in the GL Specification. One constraint clamps LOD to a specified floating point range. The other limits the selection of mipmap image arrays to a subset of the arrays that would otherwise be considered. Together these constraints allow a large texture to be loaded and used initially at low resolution, and to have its resolution raised gradually as more resolution is desired or available. Image array specification is necessarily integral, rather than continuous. By providing separate, continuous clamping of the LOD parameter, it is possible to avoid "popping" artifacts when higher resolution images are provided. Note: because the shape of the mipmap array is always determined by the dimensions of the level 0 array, this array must be loaded for mipmapping to be active. If the level 0 array is specified with a null image pointer, however, no actual data transfer will take place. And a sufficiently tuned implementation might not even allocate space for a level 0 array so specified until true image data were presented. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/texture_lod.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.texture_lod import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/point_line_texgen.py0000644000175000001440000000131012025001653022361 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.point_line_texgen This module customises the behaviour of the OpenGL.raw.GL.SGIS.point_line_texgen to provide a more Python-friendly API Overview (from the spec) This extension adds two texture coordinate generation modes, both which generate a texture coordinate based on the minimum distance from a vertex to a specified line. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/point_line_texgen.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.point_line_texgen import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/pixel_texture.py0000644000175000001440000000541012025001653021555 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.pixel_texture This module customises the behaviour of the OpenGL.raw.GL.SGIS.pixel_texture to provide a more Python-friendly API Overview (from the spec) The geometry rasterization and pixel pipeline "convert to fragment" stages each produce fragments. The fragments are processed by a unified per fragment pipeline that begins with the application of the texture to the fragment color. Because the pixel pipeline shares the per fragment processing with the geometry pipeline, the fragments produced by the pixel pipeline must have the same fields as the ones produced by the geometry pipeline. When pixel groups are being converted to fragments, the parts of the fragment that aren't derived from the pixel groups are taken from the associated values in the current raster position. A fragment consists of x and y window coordinates and their associated color value, depth value, and texture coordinates. In the 1.1 OpenGL specification, when the pixel group is RGBA the fragment color is always derived from the pixel group, and the depth value and texture coordinates always come from the raster position. This extension provides a way to specify how the texture coordinates of the fragments can be derived from RGBA pixel groups. When this option is enabled, the source of the fragment color value when the pixel group is RGBA can be specified to come from either the raster position or the pixel group. Deriving the fragment texture coordinates from the pixel group effectively converts a color image into a texture coordinate image. The multidimensional texture mapping lookup logic also makes this extension useful for implementing multidimensional color lookups. Multidimensional color lookups can be used to implement very accurate color space conversions. Deriving texture coordinates from the pixel groups in the pixel pipeline introduces a problem with the lambda parameter in the texture mapping equations. When texture coordinates are being taken from the current raster position texture coordinates, the texture coordinate values don't change from pixel to pixel, and the equation for calculating lambda always produces zero. Enabling pixel_texture introduces changes in the texture coordinates from pixel to pixel which are not necessarily meaningful for texture lookups. This problem is addressed by specifying that lambda is always set to zero when pixel_texture is enabled. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/pixel_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.pixel_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/__init__.py0000644000175000001440000000002712025001653020412 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/SGIS/texture4D.py0000644000175000001440000000317112025001653020546 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.texture4D This module customises the behaviour of the OpenGL.raw.GL.SGIS.texture4D to provide a more Python-friendly API Overview (from the spec) This extension defines 4-dimensional texture mapping. If EXT_subtexture is supported, this extension also defines a mechanism to redefine a portion of an existing 4-dimensional texture image. Because EXT_texture3D is required, this extension utilizes the 3-dimensional image support defined in by EXT_texture3D as a base for 4-dimensional image manipulation. The 4th dimension has an abstract, rather than physical, reference and will be called "extent", since the definition of extent is "that which specifies the range or magnitude of an area or volume." Four-dimensional texture mapping is more constrained than its one, two, and three-dimensional counterparts. Mipmapping is not supported, so only the level-zero 4-dimensional texture image can be defined. Cubic filtering is not supported, so the border width must be either zero or one. Four-dimensional textures are used primarily as color lookup tables for color conversion. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/texture4D.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.texture4D import * ### END AUTOGENERATED SECTION from OpenGL.GL import images as _i _i.images.RANK_PACKINGS.setdefault(4,[]).extend([ (glPixelStorei,GL_PACK_SKIP_VOLUMES_SGIS, 0), (glPixelStorei,GL_PACK_IMAGE_DEPTH_SGIS, 0), ]) PyOpenGL-3.0.2/OpenGL/GL/SGIS/texture_edge_clamp.py0000644000175000001440000000302712025001653022516 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.texture_edge_clamp This module customises the behaviour of the OpenGL.raw.GL.SGIS.texture_edge_clamp to provide a more Python-friendly API Overview (from the spec) The base OpenGL provides clamping such that the texture coordinates are limited to exactly the range [0,1]. When a texture coordinate is clamped using this algorithm, the texture sampling filter straddles the edge of the texture image, taking 1/2 its sample values from within the texture image, and the other 1/2 from the texture border. It is sometimes desirable to clamp a texture without requiring a border, and without using the constant border color. This extension defines a new texture clamping algorithm. CLAMP_TO_EDGE_SGIS clamps texture coordinates at all mipmap levels such that the texture filter never samples a border texel. When used with a NEAREST or a LINEAR filter, the color returned when clamping is derived only from texels at the edge of the texture image. When used with FILTER4 filters, the filter operations of CLAMP_TO_EDGE_SGIS are defined but don't result in a nice clamp-to-edge color. CLAMP_TO_EDGE_SGIS is supported by 1, 2, and 3-dimensional textures only. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/texture_edge_clamp.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.texture_edge_clamp import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/texture_select.py0000644000175000001440000000261512025001653021717 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.texture_select This module customises the behaviour of the OpenGL.raw.GL.SGIS.texture_select to provide a more Python-friendly API Overview (from the spec) This extension introduces several new texture internal formats. The purpose of these new formats is to reorganize the components of a texture into groups of components. The currently selected group effectively becomes the internal format. Also, two new texture parameters are introduced that control the selection of these groups of components. For example, assume a texture internal format of DUAL_LUMINANCE4_SGIS is specified. Now there are two groups of components, where each group has a format of LUMINANCE4. One of the two LUMINANCE groups is always selected. components can be selected and then interpreted as a LUMINANCE texture. The purpose of this extension is allow better utilization of texture memory by subdividing the internal representation of a texel into 1, 2, or 4 smaller texels. Additionally, this may improve performance of texture downloads. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/texture_select.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.texture_select import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/multisample.py0000644000175000001440000000373012025001653021213 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.multisample This module customises the behaviour of the OpenGL.raw.GL.SGIS.multisample to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism to antialias all GL primitives: points, lines, polygons, bitmaps, and images. The technique is to sample all primitives multiple times at each pixel. The color sample values are resolved to a single, displayable color each time a pixel is updated, so the antialiasing appears to be automatic at the application level. Because each sample includes depth and stencil information, the depth and stencil functions perform equivalently to the single-sample mode. An additional buffer, called the multisample buffer, is added to the framebuffer. Pixel sample values, including color, depth, and stencil values, are stored in this buffer. When the framebuffer includes a multisample buffer, it does not also include separate depth or stencil buffers, even if the multisample buffer does not store depth or stencil values. Color buffers (left/right, front/ back, and aux) do coexist with the multisample buffer, however. Multisample antialiasing is most valuable for rendering polygons, because it requires no sorting for hidden surface elimination, and it correctly handles adjacent polygons, object silhouettes, and even intersecting polygons. If only points or lines are being rendered, the "smooth" antialiasing mechanism provided by the base GL may result in a higher quality image. This extension is designed to allow multisample and smooth antialiasing techniques to be alternated during the rendering of a single scene. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/multisample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.multisample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/generate_mipmap.py0000644000175000001440000000142312025001653022011 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.generate_mipmap This module customises the behaviour of the OpenGL.raw.GL.SGIS.generate_mipmap to provide a more Python-friendly API Overview (from the spec) This extension defines a mechanism by which OpenGL can derive the entire set of mipmap arrays when provided with only the base level array. Automatic mipmap generation is particularly useful when texture images are being provided as a video stream. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/generate_mipmap.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.generate_mipmap import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/detail_texture.py0000644000175000001440000000242212025001653021676 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.detail_texture This module customises the behaviour of the OpenGL.raw.GL.SGIS.detail_texture to provide a more Python-friendly API Overview (from the spec) This extension introduces texture magnification filters that blend between the level 0 image and a separately defined "detail" image. The detail image represents the characteristics of the high frequency subband image above the band-limited level 0 image. The detail image is typically a rectangular portion of the subband image which is modified so that it can be repeated without discontinuities along its edges. Detail blending can be enabled for all color channels, for the alpha channel only, or for the red, green, and blue channels only. It is available only for 2D textures. WARNING - Silicon Graphics has filed for patent protection for some of the techniques described in this extension document. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/detail_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.detail_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/texture_filter4.py0000644000175000001440000000163512025001653022012 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.texture_filter4 This module customises the behaviour of the OpenGL.raw.GL.SGIS.texture_filter4 to provide a more Python-friendly API Overview (from the spec) This extension allows 1D and 2D textures to be filtered using an application-defined, four sample per dimension filter. (In addition to the NEAREST and LINEAR filters defined in the original GL Specification.) Such filtering results in higher image quality. It is defined only for non-mipmapped filters. The filter that is specified must be symmetric and separable (in the 2D case). The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/texture_filter4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.texture_filter4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIS/fog_function.py0000644000175000001440000000161612025001653021340 0ustar mcfletchusers00000000000000'''OpenGL extension SGIS.fog_function This module customises the behaviour of the OpenGL.raw.GL.SGIS.fog_function to provide a more Python-friendly API Overview (from the spec) This extension allows to define application-specific fog blend-factor function. Function is defined by the set of the "control" points and should be monotonic. Each control point represented as a pair of the eye-space distance value and corresponding value of the fog blending factor. The minimum number of control points is one. The maximum number is implementation dependent. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIS/fog_function.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIS.fog_function import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/0000755000175000001440000000000012032640120016135 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/ARB/transform_feedback3.py0000644000175000001440000000646412025001653022427 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.transform_feedback3 This module customises the behaviour of the OpenGL.raw.GL.ARB.transform_feedback3 to provide a more Python-friendly API Overview (from the spec) This extension further extends the transform feedback capabilities provided by the EXT_transform_feedback, NV_transform_feedback, and NV_transform_feedback2 extensions. Those extensions provided a new transform feedback mode, where selected vertex attributes can be recorded to a buffer object for each primitive processed by the GL. This extension provides increased flexibility in how vertex attributes can be written to buffer objects. Previous extensions allowed applications to record a set of attributes interleaved into a single buffer object (interleaved mode) or to record into multiple objects, but with only a single attribute per buffer (separate mode). This extension extends interleaved mode to write into multiple buffers, with multiple attributes per buffer. This capability is supported for all three styles of transform feedback: - "EXT"-style GLSL transform feedback (EXT_transform_feedback), where a list of varyings is provided prior to linking a program object and is used whenever that program object is used. - "NV"-style GLSL transform feedback (NV_transform_feedback), where "locations" of active varyings are queried after linking and are then passed to a function that sets the active transform feedback varyings for the program object. Unlike the "EXT"-style mode, the set of varyings to capture can be changed without relinking. - Transform feedback for fixed-function or assembly vertex/geometry shaders (NV_transform_feedback), where applications specify a set of canonical attribute enums/numbers to capture. Additionally, this extension adds new support for multiple separate vertex streams. New geometry shader functionality provided by the ARB_gpu_shader5 and NV_gpu_program5 extensions allows geometry shaders to direct each vertex arbitrarily at a specified vertex stream. For example, a geometry program might write each "regular" vertex it emits to one vertex stream while writing some per-primitive data it computes to a second vertex stream. This extension allows applications to choose a vertex stream for each buffer object it writes to, and allows the vertices written to each vertex stream to be recorded in separate buffer objects. Only one stream may be selected for rasterization, and in the initial implementation, the geometry shader output topology must be POINTS if multiple streams are used. When geometry shaders are not used, or when an old geometry shader not writing multiple streams is used, all vertices produced by the GL are directed at the stream numbered zero. The set of transform feedback-related query targets is extended to accommodate multiple vertex streams, so it is possible to count the number of processed and recorded primitives for each stream separately. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/transform_feedback3.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.transform_feedback3 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/ES2_compatibility.py0000644000175000001440000000235112025001653022036 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.ES2_compatibility This module customises the behaviour of the OpenGL.raw.GL.ARB.ES2_compatibility to provide a more Python-friendly API Overview (from the spec) This extension adds support for features of OpenGL ES 2.0 that are missing from OpenGL 3.x. Enabling these features will ease the process of porting applications from OpenGL ES 2.0 to OpenGL. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/ES2_compatibility.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.ES2_compatibility import * ### END AUTOGENERATED SECTION from OpenGL import lazywrapper from OpenGL.arrays import GLintArray @lazywrapper.lazy( glGetShaderPrecisionFormat ) def glGetShaderPrecisionFormat(baseOperation, shadertype, precisiontype, range=None,precision=None ): """Provides range and precision if not provided, returns (range,precision)""" if range is None: range = GLintArray.zeros( (2,)) if precision is None: precision = GLintArray.zeros((2,)) baseOperation( shadertype, precisiontype, range, precision ) return range, precision PyOpenGL-3.0.2/OpenGL/GL/ARB/texture_rg.py0000644000175000001440000000321412025001653020703 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_rg This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_rg to provide a more Python-friendly API Overview (from the spec) Historically one- and two- component textures have been specified in OpenGL using the intensity, luminance or luminance-alpha (I/L/LA) formats. With the advent of programmable shaders and render-to-texture capabilites these legacy formats carry some historical artifacts which are no longer useful. For example, when sampling from such textures, the luminance values are replicated across the color components, and the intensity values are replicated across both the color and alpha components. This is no longer necessary with programmable shaders. It is also desirable to be able to render to one- and two- component format textures using capabilities such as framebuffer objects (FBO), but rendering to I/L/LA formats is under-specified (specifically how to map R/G/B/A values to I/L/A texture channels). This extension adds new base internal formats for the one-component RED and two-component RG (red green) texture formats as well as sized internal formats for fixed-point, floating-point and pure integer texture formats. The new texure formats can be used for texturing as well as for rendering into with framebuffer objects. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_rg.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_rg import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/multi_draw_indirect.py0000644000175000001440000000235412025001653022547 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.multi_draw_indirect This module customises the behaviour of the OpenGL.raw.GL.ARB.multi_draw_indirect to provide a more Python-friendly API Overview (from the spec) The ARB_draw_indirect extension (included in OpenGL 4.0) introduced mechanisms whereby the parameters for a draw function may be provided in a structure contained in a buffer object rather than as parameters to the drawing procedure. This is known as an indirect draw and is exposed as two new functions, glDrawArraysIndirect and glDrawElementsIndirect. Each of these functions generates a single batch of primitives. This extension builds on this functionality by providing procedures to invoke multiple draws from a single procedure call. This allows large batches of drawing commands to be assembled in server memory (via a buffer object) which may then be dispatched through a single function call. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/multi_draw_indirect.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.multi_draw_indirect import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/point_parameters.py0000644000175000001440000000615312025001653022074 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.point_parameters This module customises the behaviour of the OpenGL.raw.GL.ARB.point_parameters to provide a more Python-friendly API Overview (from the spec) This extension supports additional geometric characteristics of points. It can be used to render particles or tiny light sources, commonly referred to as "Light points". The raster brightness of a point is a function of the point area, point color, point transparency, and the response of the display's electron gun and phosphor. The point area and the point transparency are derived from the point size, currently provided with the parameter of glPointSize. The primary motivation is to allow the size of a point to be affected by distance attenuation. When distance attenuation has an effect, the final point size decreases as the distance of the point from the eye increases. The secondary motivation is a mean to control the mapping from the point size to the raster point area and point transparency. This is done in order to increase the dynamic range of the raster brightness of points. In other words, the alpha component of a point may be decreased (and its transparency increased) as its area shrinks below a defined threshold. This extension defines a derived point size to be closely related to point brightness. The brightness of a point is given by: 1 dist_atten(d) = ------------------- a + b * d + c * d^2 brightness(Pe) = Brightness * dist_atten(|Pe|) where 'Pe' is the point in eye coordinates, and 'Brightness' is some initial value proportional to the square of the size provided with PointSize. Here we simplify the raster brightness to be a function of the rasterized point area and point transparency. brightness(Pe) brightness(Pe) >= Threshold_Area area(Pe) = Threshold_Area Otherwise factor(Pe) = brightness(Pe)/Threshold_Area alpha(Pe) = Alpha * factor(Pe) where 'Alpha' comes with the point color (possibly modified by lighting). 'Threshold_Area' above is in area units. Thus, it is proportional to the square of the threshold provided by the programmer through this extension. The new point size derivation method applies to all points, while the threshold applies to multisample points only. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/point_parameters.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.point_parameters import * ### END AUTOGENERATED SECTION from OpenGL.GL import glget glget.addGLGetConstant( GL_POINT_SIZE_MIN_ARB, (1,) ) glget.addGLGetConstant( GL_POINT_SIZE_MAX_ARB , (1,) ) glget.addGLGetConstant( GL_POINT_FADE_THRESHOLD_SIZE_ARB, (1,) ) glget.addGLGetConstant( GL_POINT_DISTANCE_ATTENUATION_ARB, (3,) ) glPointParameterfvARB = arrays.setInputArraySizeType( glPointParameterfvARB, None, # XXX should be dependant on the pname field! arrays.GLfloatArray, 'params', )PyOpenGL-3.0.2/OpenGL/GL/ARB/shadow_ambient.py0000644000175000001440000000171212025001653021500 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shadow_ambient This module customises the behaviour of the OpenGL.raw.GL.ARB.shadow_ambient to provide a more Python-friendly API Overview (from the spec) This is based on the GL_SGIX_shadow_ambient extension and is layered upon the GL_ARB_shadow extension. Basically, this extension allows the user to specify the texture value to use when the texture compare function fails. Normally this value is zero. By allowing an arbitrary value we can get functionality which otherwise requires an advanced texture combine extension (such as GL_NV_register_combiners) and multiple texture units. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shadow_ambient.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shadow_ambient import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_border_clamp.py0000644000175000001440000000234112025001653022724 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_border_clamp This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_border_clamp to provide a more Python-friendly API Overview (from the spec) The base OpenGL provides clamping such that the texture coordinates are limited to exactly the range [0,1]. When a texture coordinate is clamped using this algorithm, the texture sampling filter straddles the edge of the texture image, taking 1/2 its sample values from within the texture image, and the other 1/2 from the texture border. It is sometimes desirable for a texture to be clamped to the border color, rather than to an average of the border and edge colors. This extension defines an additional texture clamping algorithm. CLAMP_TO_BORDER_ARB clamps texture coordinates at all mipmap levels such that NEAREST and LINEAR filters return only the color of the border texels. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_border_clamp.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_border_clamp import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/internalformat_query.py0000644000175000001440000000213512025001653022766 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.internalformat_query This module customises the behaviour of the OpenGL.raw.GL.ARB.internalformat_query to provide a more Python-friendly API Overview (from the spec) OpenGL 4.1 has a number of queries to indicate the maximum number of samples available for different formats. These give a coarse-grained query mechanism e.g. an implementation can expose different sample counts for integer and floating-point formats, but not for different floating-point formats. There is also no convenient way for the user to determine the granularity of sample counts available, only the maximum. This extension adds a query mechanism that allows the user to determine which sample counts are available for a specific internal format. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/internalformat_query.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.internalformat_query import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/debug_output.py0000644000175000001440000000733412025001653021230 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.debug_output This module customises the behaviour of the OpenGL.raw.GL.ARB.debug_output to provide a more Python-friendly API Overview (from the spec) This extension allows the GL to notify applications when various events occur that may be useful during application development and debugging. These events are represented in the form of enumerable messages with a human-readable string representation. Examples of debug events include incorrect use of the GL, warnings of undefined behavior, and performance warnings. A message is uniquely identified by a source, a type and an implementation-dependent ID within the source and type pair. A message's source identifies the origin of the message and can either describe components of the GL, the window system, third-party external sources such as external debuggers, or even the application itself. The type of the message roughly identifies the nature of the event that caused the message. Examples include errors, performance warnings, or warnings about undefined behavior. A message's ID for a given source and type further distinguishes messages within those groups. For example, an error caused by a negative parameter value or an invalid internal texture format are both errors generated by the API, but would likely have different message IDs. Each message is also assigned to a severity level that denotes roughly how "important" that message is in comparison to other messages across all sources and types. For example, notification of a GL error would likely have a higher severity than a performance warning due to redundant state changes. Finally, every message contains an implementation-dependent string representation that provides a useful description of the event. Messages are communicated to the application through an application- defined callback function that is called by the GL implementation on each debug message. The motivation for the callback routine is to free application developers from actively having to query whether a GL error, or any other debuggable event has happened after each call to a GL function. With a callback, developers can keep their code free of debug checks, and only have to react to messages as they occur. In situations where using a callback is not possible, a message log is also provided that stores copies of recent messages until they are actively queried. To control the volume of debug output, messages can be disabled either individually by ID, or entire groups of messages can be turned off based on combination of source and type. The only requirement on the minimum quantity and type of messages that implementations of this extension must support is that some sort of message must be sent notifying the application whenever any GL error occurs. Any further messages are left to the implementation. Implementations do not have to output messages from all sources nor do they have to use all types of messages listed by this extension, and both new sources and types can be added by other extensions. For performance reasons it is recommended, but not required, that implementations restrict supporting this extension only to contexts created using the debug flag as provided by WGL_create_context or GLX_create_context. This extension places no limits on any other functionality provided by debug contexts through other extensions. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/debug_output.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.debug_output import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/robustness.py0000644000175000001440000001262712025001653020732 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.robustness This module customises the behaviour of the OpenGL.raw.GL.ARB.robustness to provide a more Python-friendly API Overview (from the spec) Several recent trends in how OpenGL integrates into modern computer systems have created new requirements for robustness and security for OpenGL rendering contexts. Additionally GPU architectures now support hardware fault detection; for example, video memory supporting ECC (error correcting codes) and error detection. OpenGL contexts should be capable of recovering from hardware faults such as uncorrectable memory errors. Along with recovery from such hardware faults, the recovery mechanism can also allow recovery from video memory access exceptions and system software failures. System software failures can be due to device changes or driver failures. Demands for increased software robustness and concerns about malware exploiting buffer overflows have lead API designers to provide additional "safe" APIs that bound the amount of data returned by an API query. For example, the safer "snprintf" or "_snprintf" routines are prefered over "sprintf". The OpenGL API has many such robustness perils. OpenGL queries return (write) some number of bytes to a buffer indicated by a pointer parameter. The exact number of bytes written by existing OpenGL queries is not expressed directly by any specific parameter; instead the number of bytes returned is a complex function of one or more query arguments, sometimes context state such as pixel store modes or the active texture selector, and the current state of an object (such as a texture level's number of total texels). By the standards of modern API design, such queries are not "safe". Making these queries safer involves introducing a new query API with an additional parameter that specifies the number of bytes in the buffer and never writing bytes beyond that limit. Multi-threaded use of OpenGL contexts in a "share group" allow sharing of objects such as textures and programs. Such sharing in conjunction with concurrent OpenGL commands stream execution by two or more contexts introduces hazards whereby one context can change objects in ways that can cause buffer overflows for another context's OpenGL queries. The original ARB_vertex_buffer_object extension includes an issue that explicitly states program termination is allowed when out-of-bounds vertex buffer object fetches occur. Modern GPUs capable of DirectX 10 enforce the well-defined behavior of always returning zero values for indices or non-fixed components in this case. Older GPUs may require extra checks to enforce well-defined (and termination free) behavior, but this expense is warranted when processing potentially untrusted content. The intent of this extension is to address some specific robustness goals: * For all existing OpenGL queries, provide additional "safe" APIs that limit data written to user pointers to a buffer size in bytes that is an explicit additional parameter of the query. * Provide a mechanism for an OpenGL application to learn about graphics resets that affect the context. When a graphics reset occurs, the OpenGL context becomes unusable and the application must create a new context to continue operation. Detecting a graphics reset happens through an inexpensive query. * Provide an enable to guarantee that out-of-bounds buffer object accesses by the GPU will have deterministic behavior and preclude application instability or termination due to an incorrect buffer access. Such accesses include vertex buffer fetches of attributes and indices, and indexed reads of uniforms or parameters from buffers. In one anticipated usage model, WebGL contexts may make use of these robust features to grant greater stability when using untrusted code. WebGL contexts cannot call OpenGL commands directly but rather must route all OpenGL API calls through the web browser. It is then the web browser that configures the context, using the commands in this extension, to enforce safe behavior. In this scenario, the WebGL content cannot specify or change the use of this extension's features itself; the web browser enforces this policy. There are other well-known robustness issues with the OpenGL API which this extension does not address. For example, selector-based OpenGL commands are a well-known source of programming errors. Code to manipulate texture state may assume the active texture selector is set appropriately when an intervening function call obscures a change to the active texture state resulting in incorrectly updated or queried state. The EXT_direct_state_access extension introduces selector-free OpenGL commands and queries to address that particular issue so this extension does not. The intent of this extension is NOT to deprecate any existing API and thereby introduce compatibility issues and coding burdens on existing code, but rather to provide new APIs to ensure a level of robustness commensurate with the expectations of modern applications of OpenGL. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/robustness.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.robustness import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/vertex_program.py0000644000175000001440000001363512025001653021567 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.vertex_program This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_program to provide a more Python-friendly API Overview (from the spec) Unextended OpenGL mandates a certain set of configurable per-vertex computations defining vertex transformation, texture coordinate generation and transformation, and lighting. Several extensions have added further per-vertex computations to OpenGL. For example, extensions have defined new texture coordinate generation modes (ARB_texture_cube_map, NV_texgen_reflection, NV_texgen_emboss), new vertex transformation modes (ARB_vertex_blend, EXT_vertex_weighting), new lighting modes (OpenGL 1.2's separate specular and rescale normal functionality), several modes for fog distance generation (NV_fog_distance), and eye-distance point size attenuation (EXT/ARB_point_parameters). Each such extension adds a small set of relatively inflexible per-vertex computations. This inflexibility is in contrast to the typical flexibility provided by the underlying programmable floating point engines (whether micro-coded vertex engines, DSPs, or CPUs) that are traditionally used to implement OpenGL's per-vertex computations. The purpose of this extension is to expose to the OpenGL application writer a significant degree of per-vertex programmability for computing vertex parameters. For the purposes of discussing this extension, a vertex program is a sequence of floating-point 4-component vector operations that determines how a set of program parameters (defined outside of OpenGL's Begin/End pair) and an input set of per-vertex parameters are transformed to a set of per-vertex result parameters. The per-vertex computations for standard OpenGL given a particular set of lighting and texture coordinate generation modes (along with any state for extensions defining per-vertex computations) is, in essence, a vertex program. However, the sequence of operations is defined implicitly by the current OpenGL state settings rather than defined explicitly as a sequence of instructions. This extension provides an explicit mechanism for defining vertex program instruction sequences for application-defined vertex programs. In order to define such vertex programs, this extension defines a vertex programming model including a floating-point 4-component vector instruction set and a relatively large set of floating-point 4-component registers. The extension's vertex programming model is designed for efficient hardware implementation and to support a wide variety of vertex programs. By design, the entire set of existing vertex programs defined by existing OpenGL per-vertex computation extensions can be implemented using the extension's vertex programming model. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/vertex_program.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.vertex_program import * ### END AUTOGENERATED SECTION from OpenGL.lazywrapper import lazy from OpenGL import converters, error, contextdata from OpenGL.arrays.arraydatatype import ArrayDatatype # Note: sizes here are == the only documented sizes I could find, # may need a lookup table some day... glGetProgramivARB = wrapper.wrapper(glGetProgramivARB).setOutput( 'params', (1,), ) glGetProgramEnvParameterdvARB = wrapper.wrapper(glGetProgramEnvParameterdvARB).setOutput( 'params',(4,), ) glGetProgramEnvParameterfvARB = wrapper.wrapper(glGetProgramEnvParameterfvARB).setOutput( 'params',(4,), ) glGetProgramLocalParameterdvARB = wrapper.wrapper(glGetProgramLocalParameterdvARB).setOutput( 'params',(4,), ) glGetProgramLocalParameterfvARB = wrapper.wrapper(glGetProgramLocalParameterfvARB).setOutput( 'params',(4,), ) glGetVertexAttribdvARB = wrapper.wrapper(glGetVertexAttribdvARB).setOutput( 'params',(1,), ) ##glGetVertexAttribPointervARB = wrapper.wrapper(glGetVertexAttribPointervARB).setOutput( ## 'pointer',(1,), ##) ## ##_base_glGetVertexAttribPointervARB ##def glGetVertexAttribPointervARB( index, pname=GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB ): ## """Retrieve named attribute vector ## ## XXX Needs logic checking, I don't think I got the number of ## levels of indirection correct... i.e. I believe it's just going ## to rewrite the temporary void_p's value, rather than writing ## into the numpy array. ## ## returns 4-element double array... ## """ ## output = arrays.GLdoubleArray.zeros( (4,) ) ## pointer = arrays.GLdoubleArray.voidDataPointer( output ) ## _base_glGetVertexAttribPointervARB( index, pname, pointer ) ## return output @lazy( glVertexAttribPointerARB ) def glVertexAttribPointerARB( baseOperation, index, size, type, normalized, stride, pointer, ): """Set an attribute pointer for a given shader (index) index -- the index of the generic vertex to bind, see glGetAttribLocation for retrieval of the value, note that index is a global variable, not per-shader size -- number of basic elements per record, 1,2,3, or 4 type -- enum constant for data-type normalized -- whether to perform int to float normalization on integer-type values stride -- stride in machine units (bytes) between consecutive records, normally used to create "interleaved" arrays pointer -- data-pointer which provides the data-values, normally a vertex-buffer-object or offset into the same. This implementation stores a copy of the data-pointer in the contextdata structure in order to prevent null- reference errors in the renderer. """ array = ArrayDatatype.asArray( pointer, type ) key = ('vertex-attrib',index) contextdata.setValue( key, array ) return baseOperation( index, size, type, normalized, stride, ArrayDatatype.voidDataPointer( array ) ) PyOpenGL-3.0.2/OpenGL/GL/ARB/seamless_cube_map.py0000644000175000001440000000312012025001653022156 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.seamless_cube_map This module customises the behaviour of the OpenGL.raw.GL.ARB.seamless_cube_map to provide a more Python-friendly API Overview (from the spec) When sampling from cube map textures, a three-dimensional texture coordinate is used to select one of the cube map faces and generate a two dimensional texture coordinate ( s t ), at which a texel is sampled from the determined face of the cube map texture. Each face of the texture is treated as an independent two-dimensional texture, and the generated ( s t ) coordinate is subjected to the same clamping and wrapping rules as for any other two dimensional texture fetch. Although it is unlikely that the generated ( s t ) coordinate lies significantly outside the determined cube map face, it is often the case that the locations of the individual elements required during a linear sampling do not lie within the determined face, and their coordinates will therefore be modified by the selected clamping and wrapping rules. This often has the effect of producing seams or other discontinuities in the sampled texture. This extension allows implementations to take samples from adjacent cube map faces, providing the ability to create seamless cube maps. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/seamless_cube_map.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.seamless_cube_map import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/depth_buffer_float.py0000644000175000001440000000273512025001653022344 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.depth_buffer_float This module customises the behaviour of the OpenGL.raw.GL.ARB.depth_buffer_float to provide a more Python-friendly API Overview (from the spec) This extension provides new texture internal formats whose depth components are stored as 32-bit floating-point values, rather than the normalized unsigned integers used in existing depth formats. Floating-point depth textures support all the functionality supported for fixed-point depth textures, including shadow mapping and rendering support via EXT_framebuffer_object. Floating-point depth textures can store values outside the range [0,1]. Additionally, this extension provides new packed depth/stencil pixel formats (see EXT_packed_depth_stencil) that have 64-bit pixels consisting of a 32-bit floating-point depth value, 8 bits of stencil, and 24 unused bites. A packed depth/stencil texture internal format is also provided. This extension does not provide support for WGL or GLX pixel formats with floating-point depth buffers. The existing (but not commonly used) WGL_EXT_depth_float extension could be used for this purpose. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/depth_buffer_float.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.depth_buffer_float import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/debug_group.py0000644000175000001440000000417212025001653021021 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.debug_group This module customises the behaviour of the OpenGL.raw.GL.ARB.debug_group to provide a more Python-friendly API Overview (from the spec) This extension defines a mechanism for the OpenGL application to annotate the command stream with markers for discrete events and groups of commands using descriptive text. When profiling or debugging an OpenGL application with a built-in or an external debugger or profiler, it is difficult to relate the commands within the command stream to the elements of the scene or parts of the program code to which they correspond. Debug markers and debug groups help obviate this by allowing applications to specify this link. For example, a debug marker can be used to identify the beginning of a frame in the command stream and a debug group can encapsulate a specific command stream to identify a rendering pass. Debug groups also allow to control the debug output volume per section of an application code providing an effective way to handle the massive amount of debug outputs that drivers can generate. The intended purpose of this is purely to improve the user experience within OpenGL development tools and application built-in code for debugging and profiling. This extension is based on the functionality proposed by the OpenGL ES extension EXT_debug_marker but with a similar approach to ARB_debug_output for the purpose of synergy between APIs and debug functionalities. This allows sharing a single set of APIs for both built-in and external debuggers and profilers. Finally, this extension adds a new severity level (a notification) to emphasise the profiling usages of the debug output functionality. It aims reporting messages which are only useful notifications for the application perspective. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/debug_group.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.debug_group import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/matrix_palette.py0000644000175000001440000000247412025001653021544 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.matrix_palette This module customises the behaviour of the OpenGL.raw.GL.ARB.matrix_palette to provide a more Python-friendly API Overview (from the spec) This extension extends the abilities of ARB_vertex_blend to include a palette of modelview matrices. The n vertex units use a palette of m modelview matrices. (Where n and m are constrained to implementation defined maxima.) Each vertex has a set of n indices into the palette, and a corresponding set of n weights. Matrix indices can be changed for each vertex (between Begin and End). When this extension is utilized, the enabled units transform each vertex by the modelview matrices specified by the vertices' respective indices. These results are subsequently scaled by the weights of the respective units and then summed to create the eyespace vertex. A similar procedure is followed for normals. Normals, however, are transformed by the inverse transpose of the modelview matrix. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/matrix_palette.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.matrix_palette import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/viewport_array.py0000644000175000001440000000405712025001653021576 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.viewport_array This module customises the behaviour of the OpenGL.raw.GL.ARB.viewport_array to provide a more Python-friendly API Overview (from the spec) OpenGL is modeled on a pipeline of operations. The final stage in this pipeline before rasterization is the viewport transformation. This stage transforms vertices from view space into window coordinates and allows the application to specify a rectangular region of screen space into which OpenGL should draw primitives. Unextended OpenGL implementations provide a single viewport per context. In order to draw primitives into multiple viewports, the OpenGL viewport may be changed between several draw calls. With the advent of Geometry Shaders, it has become possible for an application to amplify geometry and produce multiple output primitives for each primitive input to the Geometry Shader. It is possible to direct these primitives to render into a selected render target. However, all render targets share the same, global OpenGL viewport. This extension enhances OpenGL by providing a mechanism to expose multiple viewports. Each viewport is specified as a rectangle. The destination viewport may be selected per-primitive by the geometry shader. This allows the Geometry Shader to produce different versions of primitives destined for separate viewport rectangles on the same surface. Additionally, when combined with multiple framebuffer attachments, it allows a different viewport rectangle to be selected for each. This extension also exposes a separate scissor rectangle for each viewport. Finally, the viewport bounds are now floating point quantities allowing fractional pixel offsets to be applied during the viewport transform. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/viewport_array.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.viewport_array import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/fragment_layer_viewport.py0000644000175000001440000000214212025001653023450 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.fragment_layer_viewport This module customises the behaviour of the OpenGL.raw.GL.ARB.fragment_layer_viewport to provide a more Python-friendly API Overview (from the spec) The geometry shader has the special built-in variables gl_Layer and gl_ViewportIndex that specify which layer and viewport primitives are rendered to. Currently the fragment shader does not know which layer or viewport the fragments are being written to without the application implementing their own interface variables between the geometry and fragment shaders. This extension specifies that the gl_Layer and gl_ViewportIndex built-in variables are also available to the fragment shader so the application doesn't need to implement these manually. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/fragment_layer_viewport.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.fragment_layer_viewport import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shader_image_load_store.py0000644000175000001440000000637612025001653023352 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_image_load_store This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_image_load_store to provide a more Python-friendly API Overview (from the spec) This extension provides GLSL built-in functions allowing shaders to load from, store to, and perform atomic read-modify-write operations to a single level of a texture object from any shader stage. These built-in functions are named imageLoad(), imageStore(), and imageAtomic*(), respectively, and accept integer texel coordinates to identify the texel accessed. The extension adds the notion of "image units" to the OpenGL API, to which texture levels are bound for access by the GLSL built-in functions. To allow shaders to specify the image unit to access, GLSL provides a new set of data types ("image*") similar to samplers. Each image variable is assigned an integer value to identify an image unit to access, which is specified using Uniform*() APIs in a manner similar to samplers. This extension also provides the capability to explicitly enable "early" per-fragment tests, where operations like depth and stencil testing are performed prior to fragment shader execution. In unextended OpenGL, fragment shaders never have any side effects and implementations can sometimes perform per-fragment tests and discard some fragments prior to executing the fragment shader. Since this extension allows fragment shaders to write to texture and buffer object memory using the built-in image functions, such optimizations could lead to non-deterministic results. To avoid this, implementations supporting this extension may not perform such optimizations on shaders having such side effects. However, enabling early per-fragment tests guarantees that such tests will be performed prior to fragment shader execution, and ensures that image stores and atomics will not be performed by fragment shader invocations where these per-fragment tests fail. Finally, this extension provides both a GLSL built-in function and an OpenGL API function allowing applications some control over the ordering of image loads, stores, and atomics relative to other OpenGL pipeline operations accessing the same memory. Because the extension provides the ability to perform random accesses to texture or buffer object memory, such accesses are not easily tracked by the OpenGL driver. To avoid the need for heavy-handed synchronization at the driver level, this extension requires manual synchronization. The MemoryBarrier() OpenGL API function allows applications to specify a bitfield indicating the set of OpenGL API operations to synchronize relative to shader memory access. The memoryBarrier() GLSL built-in function provides a synchronization point within a given shader invocation to ensure that all memory accesses performed prior to the synchronization point complete prior to any started after the synchronization point. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_image_load_store.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_image_load_store import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/robustness_isolation.py0000644000175000001440000000246512025001653023012 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.robustness_isolation This module customises the behaviour of the OpenGL.raw.GL.ARB.robustness_isolation to provide a more Python-friendly API Overview (from the spec) GL_ARB_robustness and supporting window system extensions allow creating an OpenGL context supporting graphics reset notification behavior. GL_ARB_robustness_isolation provides stronger guarantees about the possible side-effects of a graphics reset. It is expected that there may be a performance cost associated with isolating an application or share group from other contexts on the GPU. For this reason, GL_ARB_robustness_isolation is phrased as an opt-in mechanism, with a new context creation bit defined in the window system bindings. It is expected that implementations might only advertise the strings in this extension if both the implementation supports the desired isolation properties, and the context was created with the appropriate reset isolation bit. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/robustness_isolation.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.robustness_isolation import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_storage.py0000644000175000001440000000302412025001653021736 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_storage This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_storage to provide a more Python-friendly API Overview (from the spec) The texture image specification commands in OpenGL allow each level to be separately specified with different sizes, formats, types and so on, and only imposes consistency checks at draw time. This adds overhead for implementations. This extension provides a mechanism for specifying the entire structure of a texture in a single call, allowing certain consistency checks and memory allocations to be done up front. Once specified, the format and dimensions of the image array become immutable, to simplify completeness checks in the implementation. When using this extension, it is no longer possible to supply texture data using TexImage*. Instead, data can be uploaded using TexSubImage*, or produced by other means (such as render-to-texture, mipmap generation, or rendering to a sibling EGLImage). This extension has complicated interactions with other extensions. The goal of most of these interactions is to ensure that a texture is always mipmap complete (and cube complete for cubemap textures). The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_storage.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_storage import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/vertex_shader.py0000644000175000001440000000510212025001653021354 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.vertex_shader This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_shader to provide a more Python-friendly API Overview (from the spec) This extension adds programmable vertex level processing to OpenGL. The application can write vertex shaders in a high level language as defined in the OpenGL Shading Language specification. The language itself is not discussed here. A vertex shader replaces the transformation, texture coordinate generation and lighting parts of OpenGL, and it also adds texture access at the vertex level. Furthermore, management of vertex shader objects and loading generic attributes are discussed. A vertex shader object, attached to a program object, can be compiled and linked to produce an executable that runs on the vertex processor in OpenGL. This extension also defines how such an executable interacts with the fixed functionality vertex processing of OpenGL 1.4. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/vertex_shader.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.vertex_shader import * ### END AUTOGENERATED SECTION from OpenGL._bytes import bytes, _NULL_8_BYTE from OpenGL.lazywrapper import lazy from shader_objects import glGetObjectParameterivARB base_glGetActiveAttribARB = glGetActiveAttribARB def glGetActiveAttribARB(program, index): """Retrieve the name, size and type of the uniform of the index in the program""" max_index = int(glGetObjectParameterivARB( program, GL_OBJECT_ACTIVE_ATTRIBUTES_ARB )) length = int(glGetObjectParameterivARB( program, GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB)) if index < max_index and index >= 0 and length > 0: name = ctypes.create_string_buffer(length) size = arrays.GLintArray.zeros( (1,)) gl_type = arrays.GLuintArray.zeros( (1,)) base_glGetActiveAttribARB(program, index, length, None, size, gl_type, name) return name.value, size[0], gl_type[0] raise IndexError, 'index out of range from zero to %i' % (max_index - 1, ) glGetActiveAttribARB.wrappedOperation = base_glGetActiveAttribARB @lazy( glGetAttribLocationARB ) def glGetAttribLocationARB( baseOperation, program, name ): """Check that name is a string with a null byte at the end of it""" if not name: raise ValueError( """Non-null name required""" ) elif name[-1] != _NULL_8_BYTE: name = name + _NULL_8_BYTE return baseOperation( program, name ) PyOpenGL-3.0.2/OpenGL/GL/ARB/texture_rgb10_a2ui.py0000644000175000001440000000160312025001653022126 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_rgb10_a2ui This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_rgb10_a2ui to provide a more Python-friendly API Overview (from the spec) This extension adds support for the following data format: A new texturing format for unsigned 10.10.10.2 integer textures. OpenGL has supported RGB10 and RGB10_A2 formats for a very long time. This extension provides a variant of RGB10_A2 which supports unsigned integer data (in contrast to the above "unsigned normalized integer" formats). The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_rgb10_a2ui.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_rgb10_a2ui import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shader_storage_buffer_object.py0000644000175000001440000000554112025001653024371 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_storage_buffer_object This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_storage_buffer_object to provide a more Python-friendly API Overview (from the spec) This extension provides the ability for OpenGL shaders to perform random access reads, writes, and atomic memory operations on variables stored in a buffer object. Application shader code can declare sets of variables (referred to as "buffer variables") arranged into interface blocks in a manner similar to that done with uniform blocks in OpenGL 3.1. In both cases, the values of the variables declared in a given interface block are taken from a buffer object bound to a binding point associated with the block. Buffer objects used in this extension are referred to as "shader storage buffers". While the capability provided by this extension is similar to that provided by OpenGL 3.1 and ARB_uniform_buffer_object, there are several significant differences. Most importantly, shader code is allowed to write to shader storage buffers, while uniform buffers are always read-only. Shader storage buffers have a separate set of binding points, with different counts and size limits. The maximum usable size for shader storage buffers is implementation-dependent, but its minimum value is substantially larger than the minimum for uniform buffers. The ability to write to buffer objects creates the potential for multiple independent shader invocations to read and write the same underlying memory. The same issue exists with the ARB_shader_image_load_store extension provided in OpenGL 4.2, which can write to texture objects and buffers. In both cases, the specification makes few guarantees related to the relative order of memory reads and writes performed by the shader invocations. For ARB_shader_image_load_store, the OpenGL API and shading language do provide some control over memory transactions; those mechanisms also affect reads and writes of shader storage buffers. In the OpenGL API, the glMemoryBarrier() call can be used to ensure that certain memory operations related to commands issued prior the barrier complete before other operations related to commands issued after the barrier. Additionally, the shading language provides the memoryBarrier() function to control the relative order of memory accesses within individual shader invocations and provides various memory qualifiers controlling how the memory corresponding to individual variables is accessed. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_storage_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_storage_buffer_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/arrays_of_arrays.py0000644000175000001440000000634412025001653022070 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.arrays_of_arrays This module customises the behaviour of the OpenGL.raw.GL.ARB.arrays_of_arrays to provide a more Python-friendly API Overview (from the spec) Multi-dimensional arrays are a frequently requested feature. This extension removes the restriciton that arrays cannot be formed into arrays, allowing arrays of arrays to be declared. Technically, removing this restriction is all that is necessary to enable this feature, but it is worthwhile showing what the result of doing that looks like. The following will be true of arrays of arrays - They will first class objects. (They know their size, can be passed by copy-in semantics to functions, etc.) - They will only be one-dimensional arrays of other first class objects. (arrays are already first class objects). - The syntax vec4 a[3][2]; Declares a one-dimensional array of size 3 of one-dimensional arrays of size 2 of vec4s. Also, these syntaxes do the same thing: vec4[2] a[3]; vec4[3][2] a; or, looking at more dimensions, these are all the same int a[1][2][3][4][5][6]; int[1][2][3][4][5][6] a; int[4][5][6] a[1][2][3]; note this latter is equivalent to C, in meaning the same thing, if done as typedef int int456[4][5][6]; int456 a[1][2][3]; that is, this GLSL proposal matches C behavior in this way. The type needed for both constructors and nameless parameters is: int[1][2][3][4][5][6] - This type could be declared as a formal parameter in a function prototype as void foo(vec4[3][2]); - Accessing is done as a[x][y] // x selects which array of size 2 is desired // y selects which vec4 is desired a[x] // this results in a one-dimensional array, with all rights and // priviledges implied - The .length() operator works as normal: a.length() // this is 3 a[x].length() // this is 2 - The constructor for the above is vec4[3][2](vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0))) - Initializers for the above are vec4 a[3][2] = vec4[3][2](vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0))); // or vec4 a[3][2] = {vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0)), vec4[2](vec4(0.0), vec4(1.0))) }; // or vec4 a[3][2] = {{ vec4(0.0), vec4(1.0) }, { vec4(0.0), vec4(1.0) }, { vec4(0.0), vec4(1.0) } }; // requires matching nesting of // {} with objects hierarchy Note that all the above is naturally already specified in the core specification. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/arrays_of_arrays.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.arrays_of_arrays import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shader_texture_lod.py0000644000175000001440000001020212031734163022400 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_texture_lod This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_texture_lod to provide a more Python-friendly API Overview (from the spec) This extension adds additional texture functions to the OpenGL Shading Language which provide the shader writer with explicit control of LOD. Mipmap texture fetches and anisotropic texture fetches require an implicit derivatives to calculate rho, lambda and/or the line of anisotropy. These implicit derivatives will be undefined for texture fetches occuring inside non-uniform control flow or for vertex shader texture fetches, resulting in undefined texels. The additional texture functions introduced with this extension provide explict control of LOD (isotropic texture functions) or provide explicit derivatives (anisotropic texture functions). Anisotropic texture functions return defined texels for mipmap texture fetches or anisotropic texture fetches, even inside non-uniform control flow. Isotropic texture functions return defined texels for mipmap texture fetches, even inside non-uniform control flow. However, isotropic texture functions return undefined texels for anisotropic texture fetches. The existing isotropic vertex texture functions: texture1DLod, texture1DProjLod, texture2DLod, texture2DProjLod, texture3DLod, texture3DProjLod, textureCubeLod, shadow1DLod, shadow1DProjLod, shadow2DLod, shadow2DProjLod, are added to the built-in functions for fragment shaders. New anisotropic texture functions, providing explicit derivatives: texture1DGradARB( sampler1D sampler, float P, float dPdx, float dPdy ); texture1DProjGradARB( sampler1D sampler, vec2 P, float dPdx, float dPdy ); texture1DProjGradARB( sampler1D sampler, vec4 P, float dPdx, float dPdy ); texture2DGradARB( sampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy ); texture2DProjGradARB( sampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy ); texture2DProjGradARB( sampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy ); texture3DGradARB( sampler3D sampler, vec3 P, vec3 dPdx, vec3 dPdy ); texture3DProjGradARB( sampler3D sampler, vec4 P, vec3 dPdx, vec3 dPdy ); textureCubeGradARB( samplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy ); shadow1DGradARB( sampler1DShadow sampler, vec3 P, float dPdx, float dPdy ); shadow1DProjGradARB( sampler1DShadow sampler, vec4 P, float dPdx, float dPdy ); shadow2DGradARB( sampler2DShadow sampler, vec3 P, vec2 dPdx, vec2 dPdy ); shadow2DProjGradARB( sampler2DShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy ); texture2DRectGradARB( sampler2DRect sampler, vec2 P, vec2 dPdx, vec2 dPdy ); texture2DRectProjGradARB( sampler2DRect sampler, vec3 P, vec2 dPdx, vec2 dPdy ); texture2DRectProjGradARB( sampler2DRect sampler, vec4 P, vec2 dPdx, vec2 dPdy ); shadow2DRectGradARB( sampler2DRectShadow sampler, vec3 P, vec2 dPdx, vec2 dPdy ); shadow2DRectProjGradARB( sampler2DRectShadow sampler, vec4 P, vec2 dPdx, vec2 dPdy ); are added to the built-in functions for vertex shaders and fragment shaders. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_texture_lod.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_texture_lod import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shadow.py0000644000175000001440000000175612025001653020011 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shadow This module customises the behaviour of the OpenGL.raw.GL.ARB.shadow to provide a more Python-friendly API Overview (from the spec) This extension clarifies the GL_SGIX_shadow extension. This extension supports comparing the texture R coordinate to a depth texture value in order to produce a boolean texture value. This can be used to implement shadow maps. The extension is written in generic terms such that other texture comparison modes can be accommodated in the future. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shadow.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shadow import * ### END AUTOGENERATED SECTION from OpenGL.GL import glget glget.TEX_PARAMETER_SIZES[ GL_TEXTURE_COMPARE_MODE_ARB ] = (1,) glget.TEX_PARAMETER_SIZES[ GL_TEXTURE_COMPARE_FUNC_ARB ] = (1,)PyOpenGL-3.0.2/OpenGL/GL/ARB/texture_float.py0000644000175000001440000000157012025001653021403 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_float This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_float to provide a more Python-friendly API Overview (from the spec) This extension adds texture internal formats with 16- and 32-bit floating-point components. The 32-bit floating-point components are in the standard IEEE float format. The 16-bit floating-point components have 1 sign bit, 5 exponent bits, and 10 mantissa bits. Floating-point components are clamped to the limits of the range representable by their format. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_float.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_float import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/base_instance.py0000644000175000001440000000315112025001653021311 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.base_instance This module customises the behaviour of the OpenGL.raw.GL.ARB.base_instance to provide a more Python-friendly API Overview (from the spec) This extension allows the offset within buffer objects used for instanced rendering to be specified. This is congruent with the parameter in glDrawArrays and the parameter in glDrawElements. When instanced rendering is performed (for example, through glDrawArraysInstanced), instanced vertex attributes whose vertex attribute divisors are non-zero are fetched from enabled vertex arrays per-instance rather than per-vertex. However, in unextended OpenGL, there is no way to define the offset into those arrays from which the attributes are fetched. This extension adds that offset in the form of a parameter to several new procedures. The parameter is added to the index of the array element, after division by the vertex attribute divisor. This allows several sets of instanced vertex attribute data to be stored in a single vertex array, and the base offset of that data to be specified for each draw. Further, this extension exposes the parameter as the final and previously undefined structure member of the draw-indirect data structure. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/base_instance.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.base_instance import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_mirrored_repeat.py0000644000175000001440000000175512025001653023466 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_mirrored_repeat This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_mirrored_repeat to provide a more Python-friendly API Overview (from the spec) ARB_texture_mirrored_repeat extends the set of texture wrap modes to include a mode (GL_MIRRORED_REPEAT_ARB) that effectively uses a texture map twice as large at the original image in which the additional half, for each coordinate, of the new image is a mirror image of the original image. This new mode relaxes the need to generate images whose opposite edges match by using the original image to generate a matching "mirror image". The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_mirrored_repeat.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_mirrored_repeat import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/gpu_shader5.py0000644000175000001440000000744712025001653020735 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.gpu_shader5 This module customises the behaviour of the OpenGL.raw.GL.ARB.gpu_shader5 to provide a more Python-friendly API Overview (from the spec) This extension provides a set of new features to the OpenGL Shading Language and related APIs to support capabilities of new GPUs, extending the capabilities of version 1.50 of the OpenGL Shading Language. Shaders using the new functionality provided by this extension should enable this functionality via the construct #extension GL_ARB_gpu_shader5 : require (or enable) This extension provides a variety of new features for all shader types, including: * support for indexing into arrays of samplers using non-constant indices, as long as the index doesn't diverge if multiple shader invocations are run in lockstep; * extending the uniform block capability of OpenGL 3.1 and 3.2 to allow shaders to index into an array of uniform blocks; * support for implicitly converting signed integer types to unsigned types, as well as more general implicit conversion and function overloading infrastructure to support new data types introduced by other extensions; * a "precise" qualifier allowing computations to be carried out exactly as specified in the shader source to avoid optimization-induced invariance issues (which might cause cracking in tessellation); * new built-in functions supporting: * fused floating-point multiply-add operations; * splitting a floating-point number into a significand and exponent (frexp), or building a floating-point number from a significand and exponent (ldexp); * integer bitfield manipulation, including functions to find the position of the most or least significant set bit, count the number of one bits, and bitfield insertion, extraction, and reversal; * packing and unpacking vectors of small fixed-point data types into a larger scalar; and * convert floating-point values to or from their integer bit encodings; * extending the textureGather() built-in functions provided by ARB_texture_gather: * allowing shaders to select any single component of a multi-component texture to produce the gathered 2x2 footprint; * allowing shaders to perform a per-sample depth comparison when gathering the 2x2 footprint using for shadow sampler types; * allowing shaders to use arbitrary offsets computed at run-time to select a 2x2 footprint to gather from; and * allowing shaders to use separate independent offsets for each of the four texels returned, instead of requiring a fixed 2x2 footprint. This extension also provides some new capabilities for individual shader types, including: * support for instanced geometry shaders, where a geometry shader may be run multiple times for each primitive, including a built-in gl_InvocationID to identify the invocation number; * support for emitting vertices in a geometry program where each vertex emitted may be directed independently at a specified vertex stream (as provided by ARB_transform_feedback3), and where each shader output is associated with a stream; * support for reading a mask of covered samples in a fragment shader; and * support for interpolating a fragment shader input at a programmable offset relative to the pixel center, a programmable sample number, or at the centroid. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/gpu_shader5.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.gpu_shader5 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_compression_bptc.py0000644000175000001440000000264412025001653023652 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_compression_bptc This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_compression_bptc to provide a more Python-friendly API Overview (from the spec) This extension provides additional texture compression functionality specific to the BPTC and BPTC_FLOAT compressed texture formats (called BC7 and BC6H respectively in Microsoft's DirectX API), subject to all the requirements and limitations described by the extension GL_ARB_texture_compression. Traditional block compression methods as typified by s3tc and latc compress a block of pixels into indicies along a gradient. This works well for smooth images, but can have quality issues along sharp edges and strong chrominance transitions. To improve quality in these problematic cases, the BPTC formats can divide each block into multiple partitions, each of which are compressed using an independent gradient. In addition, it is desirable to directly support high dynamic range imagery in compressed formats, which is accomplished by the BPTC_FLOAT formats. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_compression_bptc.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_compression_bptc import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_swizzle.py0000644000175000001440000000304712025001653022006 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_swizzle This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_swizzle to provide a more Python-friendly API Overview (from the spec) Classic OpenGL texture formats conflate texture storage and interpretation, and assume that textures represent color. In modern applications, a significant quantity of textures don't represent color, but rather data like shadow maps, normal maps, page tables, occlusion data, etc.. For the latter class of data, calling the data "RGBA" is just a convenient mapping of what the data is onto the current model, but isn't an accurate reflection of the reality of the data. The existing texture formats provide an almost orthogonal set of data types, sizes, and number of components, but the mappings of this storage into what the shader or fixed-function pipeline fetches is very much non-orthogonal. Previous extensions have added some of the most demanded missing formats, but the problem has not been solved once and for all. This extension provides a mechanism to swizzle the components of a texture before they are applied according to the texture environment in fixed-function or as they are returned to the shader. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_swizzle.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_swizzle import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/tessellation_shader.py0000644000175000001440000001122312025001653022546 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.tessellation_shader This module customises the behaviour of the OpenGL.raw.GL.ARB.tessellation_shader to provide a more Python-friendly API Overview (from the spec) This extension introduces new tessellation stages and two new shader types to the OpenGL primitive processing pipeline. These pipeline stages operate on a new basic primitive type, called a patch. A patch consists of a fixed-size collection of vertices, each with per-vertex attributes, plus a number of associated per-patch attributes. Tessellation control shaders transform an input patch specified by the application, computing per-vertex and per-patch attributes for a new output patch. A fixed-function tessellation primitive generator subdivides the patch, and tessellation evaluation shaders are used to compute the position and attributes of each vertex produced by the tessellator. When tessellation is active, it begins by running the optional tessellation control shader. This shader consumes an input patch and produces a new fixed-size output patch. The output patch consists of an array of vertices, and a set of per-patch attributes. The per-patch attributes include tessellation levels that control how finely the patch will be tessellated. For each patch processed, multiple tessellation control shader invocations are performed -- one per output patch vertex. Each tessellation control shader invocation writes all the attributes of its corresponding output patch vertex. A tessellation control shader may also read the per-vertex outputs of other tessellation control shader invocations, as well as read and write shared per-patch outputs. The tessellation control shader invocations for a single patch effectively run as a group. A built-in barrier() function is provided to allow synchronization points where no shader invocation will continue until all shader invocations have reached the barrier. The tessellation primitive generator then decomposes a patch into a new set of primitives using the tessellation levels to determine how finely tessellated the output should be. The primitive generator begins with either a triangle or a quad, and splits each outer edge of the primitive into a number of segments approximately equal to the corresponding element of the outer tessellation level array. The interior of the primitive is tessellated according to elements of the inner tessellation level array. The primitive generator has three modes: "triangles" and "quads" split a triangular or quad-shaped patch into a set of triangles that cover the original patch; "isolines" splits a quad-shaped patch into a set of line strips running across the patch horizontally. Each vertex generated by the tessellation primitive generator is assigned a (u,v) or (u,v,w) coordinate indicating its relative location in the subdivided triangle or quad. For each vertex produced by the tessellation primitive generator, the tessellation evaluation shader is run to compute its position and other attributes of the vertex, using its (u,v) or (u,v,w) coordinate. When computing final vertex attributes, the tessellation evaluation shader can also read the attributes of any of the vertices of the patch written by the tessellation control shader. Tessellation evaluation shader invocations are completely independent, although all invocations for a single patch share the same collection of input vertices and per-patch attributes. The tessellator operates on vertices after they have been transformed by a vertex shader. The primitives generated by the tessellator are passed further down the OpenGL pipeline, where they can be used as inputs to geometry shaders, transform feedback, and the rasterizer. The tessellation control and evaluation shaders are both optional. If neither shader type is present, the tessellation stage has no effect. If no tessellation control shader is present, the input patch provided by the application is passed directly to the tessellation primitive generator, and a set of default tessellation level parameters is used to control primitive generation. In this extension, patches may not be passed beyond the tessellation evaluation shader, and an error is generated if an application provides patches and the current program object contains no tessellation evaluation shader. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/tessellation_shader.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.tessellation_shader import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/draw_instanced.py0000644000175000001440000000267112025001653021506 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.draw_instanced This module customises the behaviour of the OpenGL.raw.GL.ARB.draw_instanced to provide a more Python-friendly API Overview (from the spec) A common use case in GL for some applications is to be able to draw the same object, or groups of similar objects that share vertex data, primitive count and type, multiple times. This extension provides a means of accelerating such use cases while restricting the number of API calls, and keeping the amount of duplicate data to a minimum. This extension introduces two draw calls which are conceptually equivalent to a series of draw calls. Each conceptual call in this series is considered an "instance" of the actual draw call. This extension also introduces a read-only built-in variable to GLSL which contains the "instance ID." This variable initially contains 0, but increases by one after each conceptual draw call. By using the instance ID or multiples thereof as an index into a uniform array containing transform data, vertex shaders can draw multiple instances of an object with a single draw call. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/draw_instanced.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.draw_instanced import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/draw_elements_base_vertex.py0000644000175000001440000000545212025001653023741 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.draw_elements_base_vertex This module customises the behaviour of the OpenGL.raw.GL.ARB.draw_elements_base_vertex to provide a more Python-friendly API Overview (from the spec) This extension provides a method to specify a "base vertex offset" value which is effectively added to every vertex index that is transferred through DrawElements. This mechanism can be used to decouple a set of indices from the actual vertex array that it is referencing. This is useful if an application stores multiple indexed models in a single vertex array. The same index array can be used to draw the model no matter where it ends up in a larger vertex array simply by changing the base vertex value. Without this functionality, it would be necessary to rebind all the vertex attributes every time geometry is switched and this can have larger performance penalty. For example consider the (very contrived and simple) example of drawing two triangles to form a quad. In the typical example you have the following setup: vertices indices ---------- ----- 0 | (-1, 1) | 0 | 0 | 1 | (-1, -1) | 1 | 1 | 2 | ( 1, -1) | 2 | 2 | 3 | ( 1, 1) | 3 | 3 | ---------- 4 | 0 | 5 | 2 | ----- which is normally rendered with the call DrawElements(TRIANGLES, 6, UNSIGNED_BYTE, &indices). Now consider the case where the vertices you want to draw are not at the start of a vertex array but are instead located at offset 100 into a larger array: vertices2 indices2 ---------- ----- .... 0 | 100 | 100 | (-1, 1) | 1 | 101 | 101 | (-1, -1) | 2 | 102 | 102 | ( 1, -1) | 3 | 103 | 103 | ( 1, 1) | 4 | 100 | .... 5 | 102 | ---------- ----- The typical choices for rendering this are to rebind your vertex attributes with an additional offset of 100*stride, or to create an new array of indices (as indices2 in the example). However both rebinding vertex attributes and rebuilding index arrays can be quite costly activities. With the new drawing commands introduced by this extension you can instead draw using vertices2 and the new draw call: DrawElementsBaseVertex(TRIANGLES, 6, UNSIGNED_BYTE, &indices, 100) The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/draw_elements_base_vertex.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.draw_elements_base_vertex import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_query_levels.py0000644000175000001440000000341412025001653023014 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_query_levels This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_query_levels to provide a more Python-friendly API Overview (from the spec) This extension provides a new set of texture functions (textureQueryLevels) in the OpenGL Shading Language that exposes the number of accessible mipmap levels in the texture associated with a GLSL sampler variable. The set of accessible levels includes all the levels of the texture defined either through TexImage*, TexStorage*, or TextureView* (ARB_texture_view) APIs that are not below the TEXTURE_BASE_LEVEL or above the TEXTURE_MAX_LEVEL parameters. For textures defined with TexImage*, the set of resident levels is somewhat implementation-dependent. For fully defined results, applications should use TexStorage*/TextureView unless the texture has a full mipmap chain and is used with a mipmapped minification filter. These functions means that shaders are not required to manually recompute, approximate, or maintain a uniform holding a pre-computed level count, since the true level count is already available to the implementation. This value can be used to avoid black or leaking pixel artifacts for rendering methods which are using texture images as memory pages (eg: virtual textures); methods that can't only rely on the fixed pipeline texture functions which take advantage of TEXTURE_MAX_LEVEL for their sampling. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_query_levels.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_query_levels import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/occlusion_query.py0000644000175000001440000001137512025001653021745 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.occlusion_query This module customises the behaviour of the OpenGL.raw.GL.ARB.occlusion_query to provide a more Python-friendly API Overview (from the spec) This extension defines a mechanism whereby an application can query the number of pixels (or, more precisely, samples) drawn by a primitive or group of primitives. The primary purpose of such a query (hereafter referred to as an "occlusion query") is to determine the visibility of an object. Typically, the application will render the major occluders in the scene, then perform an occlusion query for the bounding box of each detail object in the scene. Only if said bounding box is visible, i.e., if at least one sample is drawn, should the corresponding object be drawn. The earlier HP_occlusion_test extension defined a similar mechanism, but it had two major shortcomings. - It returned the result as a simple GL_TRUE/GL_FALSE result, when in fact it is often useful to know exactly how many samples were drawn. - It provided only a simple "stop-and-wait" model for using multiple queries. The application begins an occlusion test and ends it; then, at some later point, it asks for the result, at which point the driver must stop and wait until the result from the previous test is back before the application can even begin the next one. This is a very simple model, but its performance is mediocre when an application wishes to perform many queries, and it eliminates most of the opportunities for parallelism between the CPU and GPU. This extension solves both of those problems. It returns as its result the number of samples that pass the depth and stencil tests, and it encapsulates occlusion queries in "query objects" that allow applications to issue many queries before asking for the result of any one. As a result, they can overlap the time it takes for the occlusion query results to be returned with other, more useful work, such as rendering other parts of the scene or performing other computations on the CPU. There are many situations where a pixel/sample count, rather than a boolean result, is useful. - Objects that are visible but cover only a very small number of pixels can be skipped at a minimal reduction of image quality. - Knowing exactly how many pixels an object might cover may help the application decide which level-of-detail model should be used. If only a few pixels are visible, a low-detail model may be acceptable. - "Depth peeling" techniques, such as order-independent transparency, need to know when to stop rendering more layers; it is difficult to determine a priori how many layers are needed. A boolean result allows applications to stop when more layers will not affect the image at all, but this will likely result in unacceptable performance. Instead, it makes more sense to stop rendering when the number of pixels in each layer falls below a given threshold. - Occlusion queries can replace glReadPixels of the depth buffer to determine whether (for example) a light source is visible for the purposes of a lens flare effect or a halo to simulate glare. Pixel counts allow you to compute the percentage of the light source that is visible, and the brightness of these effects can be modulated accordingly. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/occlusion_query.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.occlusion_query import * ### END AUTOGENERATED SECTION from OpenGL.lazywrapper import lazy from OpenGL.GL import glget from OpenGL import converters @lazy( glDeleteQueriesARB ) def glDeleteQueriesARB( baseOperation, n, ids=None ): """Delete the given queries n -- either the number of queries to delete, or an array of query values ids -- if provided, the array/pointer to the queries to delete """ if ids is None: ids = arrays.GLuintArray.asArray( n ) n = arrays.GLuintArray.arraySize( ids ) else: ids = arrays.GLuintArray.asArray( ids ) return baseOperation( n,ids ) @lazy( glGenQueriesARB ) def glGenQueriesARB( baseOperation, n, ids=None ): """Generate n queries, if ids is None, is allocated returns array of ids """ if ids is None: ids = arrays.GLuintArray.zeros( (n,)) else: ids = arrays.GLuintArray.asArray( ids ) baseOperation( n, ids ) return ids for func in ( 'glGetQueryivARB','glGetQueryObjectivARB','glGetQueryObjectuivARB', ): globals()[func] = wrapper.wrapper(globals()[func]).setOutput( "params", (1,) ) try: del func, glget except NameError, err: pass PyOpenGL-3.0.2/OpenGL/GL/ARB/vertex_attrib_64bit.py0000644000175000001440000000564712025001653022421 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.vertex_attrib_64bit This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_attrib_64bit to provide a more Python-friendly API Overview (from the spec) This extension provides OpenGL shading language support for vertex shader inputs with 64-bit floating-point components and OpenGL API support for specifying the value of those inputs using vertex array or immediate mode entry points. This builds on the support for general-purpose support for 64-bit floating-point values in the ARB_gpu_shader_fp64 extension. This extension provides a new class of vertex attribute functions, beginning with "VertexAttribL" ("L" for "long"), that can be used to specify attributes with 64-bit floating-point components. This extension provides no automatic type conversion between attribute and shader variables; single-precision attributes are not automatically converted to double-precision or vice versa. For shader variables with 64-bit component types, the "VertexAttribL" functions must be used to specify attribute values. For other shader variables, the "VertexAttribL" functions must not be used. If a vertex attribute is specified using the wrong attribute function, the values of the corresponding shader input are undefined. This approach requiring matching types is identical to that used for the "VertexAttribI" functions provided by OpenGL 3.0 and the EXT_gpu_shader4 extension. Additionally, some vertex shader inputs using the wider 64-bit components may count double against the implementation-dependent limit on the number of vertex shader attribute vectors. A 64-bit scalar or a two-component vector consumes only a single generic vertex attribute; three- and four-component "long" may count as two. This approach is similar to the one used in the current GL where matrix attributes consume multiple attributes. Note that 64-bit generic vertex attributes were nominally supported beginning with the introduction of vertex shaders in OpenGL 2.0. However, the OpenGL Shading Language at the time had no support for 64-bit data types, so any such values were automatically converted to 32-bit. Support for 64-bit floating-point vertex attributes in this extension can be combined with other extensions. In particular, this extension provides an entry point that can be used with EXT_direct_state_access to directly set state for any vertex array object. Also, the related NV_vertex_attrib_integer_64bit extension provides an entry point to specify bindless vertex attribute arrays with 64-bit components, integer or floating-point. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/vertex_attrib_64bit.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.vertex_attrib_64bit import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/blend_func_extended.py0000644000175000001440000000262012025001653022472 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.blend_func_extended This module customises the behaviour of the OpenGL.raw.GL.ARB.blend_func_extended to provide a more Python-friendly API Overview (from the spec) Traditional OpenGL includes fixed-function blending that combines source colors with the existing content of a render buffer in a variety of ways. A number of extensions have enhanced this functionality by adding further sources of blending weights and methods to combine them. However, the inputs to the fixed-function blending units are constrained to a source color (as output from fragment shading), destination color (as the current content of the frame buffer) or constants that may be used in their place. This extension adds new blending functions whereby a fragment shader may output two colors, one of which is treated as the source color, and the other used as a blending factor for either source or destination colors. Furthermore, this extension increases orthogonality by allowing the SRC_ALPHA_SATURATE function to be used as the destination weight. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/blend_func_extended.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.blend_func_extended import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/__init__.py0000644000175000001440000000002712025001653020251 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/ARB/copy_buffer.py0000644000175000001440000000136212025001653021020 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.copy_buffer This module customises the behaviour of the OpenGL.raw.GL.ARB.copy_buffer to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism to do an accelerated copy from one buffer object to another. This may be useful to load buffer objects in a "loading thread" while minimizing cost and synchronization effort in the "rendering thread." The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/copy_buffer.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.copy_buffer import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shader_stencil_export.py0000644000175000001440000000231712025001653023106 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_stencil_export This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_stencil_export to provide a more Python-friendly API Overview (from the spec) In OpenGL, the stencil test is a powerful mechanism to selectively discard fragments based on the content of the stencil buffer. However, facilites to update the content of the stencil buffer are limited to operations such as incrementing the existing value, or overwriting with a fixed reference value. This extension provides a mechanism whereby a shader may generate the stencil reference value per invocation. When stencil testing is enabled, this allows the test to be performed against the value generated in the shader. When the stencil operation is set to GL_REPLACE, this allows a value generated in the shader to be written to the stencil buffer directly. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_stencil_export.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_stencil_export import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shader_precision.py0000644000175000001440000000172312025001653022037 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_precision This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_precision to provide a more Python-friendly API Overview (from the spec) This extension more clearly restricts the precision requirements of implementations of the GLSL specification. These include precision of arithmetic operations (operators '+', '/', ...), transcendentals (log, exp, pow, reciprocal sqrt, ...), when NaNs (not a number) and INFs (infinities) will be supported and generated, and denorm flushing behavior. Trigonometric built-ins and some other categories of built-ins are not addressed. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_precision.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_precision import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/vertex_array_bgra.py0000644000175000001440000000620612025001653022225 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.vertex_array_bgra This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_array_bgra to provide a more Python-friendly API Overview (from the spec) This extension provides a single new component format for vertex arrays to read 4-component unsigned byte vertex attributes with a BGRA component ordering. OpenGL expects vertex arrays containing 4 unsigned bytes per element to be in the RGBA, STRQ, or XYZW order (reading components left-to-right in their lower address to higher address order). Essentially the order the components appear in memory is the order the components appear in the resulting vertex attribute vector. However Direct3D has color (diffuse and specular) vertex arrays containing 4 unsigned bytes per element that are in a BGRA order (again reading components left-to-right in their lower address to higher address order). Direct3D calls this "ARGB" reading the components in the opposite order (reading components left-to-right in their higher address to lower address order). This ordering is generalized in the DirectX 10 by the DXGI_FORMAT_B8G8R8A8_UNORM format. For an OpenGL application to source color data from a vertex buffer formatted for Direct3D's color array format conventions, the application is forced to either: 1. Rely on a vertex program or shader to swizzle the color components from the BGRA to conventional RGBA order. 2. Re-order the color data components in the vertex buffer from Direct3D's native BGRA order to OpenGL's native RGBA order. Neither option is entirely satisfactory. Option 1 means vertex shaders have to be re-written to source colors differently. If the same vertex shader is used with vertex arrays configured to source the color as 4 floating-point color components, the swizzle for BGRA colors stored as 4 unsigned bytes is no longer appropriate. The shader's swizzling of colors becomes dependent on the type and number of color components. Ideally the vertex shader should be independent from the format and component ordering of the data it sources. Option 2 is expensive because vertex buffers may have to be reformatted prior to use. OpenGL treats the memory for vertex arrays (whether client-side memory or buffer objects) as essentially untyped memory and vertex arrays can be stored separately, interleaved, or even interwoven (where multiple arrays overlap with differing strides and formats). Rather than force a re-ordering of either vertex array components in memory or a vertex array format-dependent re-ordering of vertex shader inputs, OpenGL can simply provide a vertex array format that matches the Direct3D color component ordering. This approach mimics that of the EXT_bgra extension for pixel and texel formats except for vertex instead of image data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/vertex_array_bgra.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.vertex_array_bgra import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_query_lod.py0000644000175000001440000000135712025001653022304 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_query_lod This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_query_lod to provide a more Python-friendly API Overview (from the spec) This extension provides a new set of fragment shader texture functions (textureLOD) that return the results of automatic level-of-detail computations that would be performed if a texture lookup were performed. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_query_lod.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_query_lod import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/ES3_compatibility.py0000644000175000001440000000163212025001653022040 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.ES3_compatibility This module customises the behaviour of the OpenGL.raw.GL.ARB.ES3_compatibility to provide a more Python-friendly API Overview (from the spec) This extension adds support for features of OpenGL ES 3.0 that are missing from OpenGL 3.x. Enabling these features will ease the process of porting applications from OpenGL ES 3.0 to OpenGL. These features include conservative boolean occlusion queries, primitive restart with a fixed index, the OpenGL ES Shading Language 3.00 specification, and the dependencies stated above. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/ES3_compatibility.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.ES3_compatibility import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/draw_buffers.py0000644000175000001440000000243112025001653021164 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.draw_buffers This module customises the behaviour of the OpenGL.raw.GL.ARB.draw_buffers to provide a more Python-friendly API Overview (from the spec) This extension extends ARB_fragment_program and ARB_fragment_shader to allow multiple output colors, and provides a mechanism for directing those outputs to multiple color buffers. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/draw_buffers.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.draw_buffers import * ### END AUTOGENERATED SECTION from OpenGL.lazywrapper import lazy @lazy( glDrawBuffersARB ) def glDrawBuffersARB( baseOperation, n=None, bufs=None ): """glDrawBuffersARB( bufs ) -> bufs Wrapper will calculate n from dims of bufs if only one argument is provided... """ if bufs is None: bufs = n n = None bufs = arrays.GLenumArray.asArray( bufs ) if n is None: n = arrays.GLenumArray.arraySize( bufs ) return baseOperation( n,bufs ) from OpenGL.GL import glget glget.addGLGetConstant( GL_MAX_DRAW_BUFFERS_ARB, (1,) ) # Should have output arrays for the buffers too??? PyOpenGL-3.0.2/OpenGL/GL/ARB/half_float_pixel.py0000644000175000001440000000240212025001653022011 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.half_float_pixel This module customises the behaviour of the OpenGL.raw.GL.ARB.half_float_pixel to provide a more Python-friendly API Overview (from the spec) This extension introduces a new data type for half-precision (16-bit) floating-point quantities. The floating-point format is very similar to the IEEE single-precision floating-point standard, except that it has only 5 exponent bits and 10 mantissa bits. Half-precision floats are smaller than full precision floats and provide a larger dynamic range than similarly sized normalized scalar data types. This extension allows applications to use half-precision floating- point data when specifying pixel data. It extends the existing image specification commands to accept the new data type. Floating-point data is clamped to [0, 1] at various places in the GL unless clamping is disabled with the ARB_color_buffer_float extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/half_float_pixel.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.half_float_pixel import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/occlusion_query2.py0000644000175000001440000000142712025001653022024 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.occlusion_query2 This module customises the behaviour of the OpenGL.raw.GL.ARB.occlusion_query2 to provide a more Python-friendly API Overview (from the spec) This extension trivially adds a boolean occlusion query to ARB_occlusion_query. While the counter-based occlusion query provided by ARB_occlusion_query is flexible, there is still value to a simple boolean, which is often sufficient for applications. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/occlusion_query2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.occlusion_query2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/pixel_buffer_object.py0000644000175000001440000000776412025001653022531 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.pixel_buffer_object This module customises the behaviour of the OpenGL.raw.GL.ARB.pixel_buffer_object to provide a more Python-friendly API Overview (from the spec) This extension expands on the interface provided by the ARB_vertex_buffer_object extension (and later integrated into OpenGL 1.5) in order to permit buffer objects to be used not only with vertex array data, but also with pixel data. The intent is to provide more acceleration opportunities for OpenGL pixel commands. While a single buffer object can be bound for both vertex arrays and pixel commands, we use the designations vertex buffer object (VBO) and pixel buffer object (PBO) to indicate their particular usage in a given situation. Recall that buffer objects conceptually are nothing more than arrays of bytes, just like any chunk of memory. ARB_vertex_buffer_object allows GL commands to source data from a buffer object by binding the buffer object to a given target and then overloading a certain set of GL commands' pointer arguments to refer to offsets inside the buffer, rather than pointers to user memory. An offset is encoded in a pointer by adding the offset to a null pointer. This extension does not add any new functionality to buffer objects themselves. It simply adds two new targets to which buffer objects can be bound: GL_PIXEL_PACK_BUFFER and GL_PIXEL_UNPACK_BUFFER. When a buffer object is bound to the GL_PIXEL_PACK_BUFFER target, commands such as glReadPixels pack (write) their data into a buffer object. When a buffer object is bound to the GL_PIXEL_UNPACK_BUFFER target, commands such as glDrawPixels and glTexImage2D unpack (read) their data from a buffer object. There are a several approaches to improve graphics performance with PBOs. Some of the most interesting approaches are: - Streaming texture updates: If the application uses glMapBuffer/glUnmapBuffer to write its data for glTexSubImage into a buffer object, at least one of the data copies usually required to download a texture can be eliminated, significantly increasing texture download performance. - Streaming draw pixels: When glDrawPixels sources client memory, OpenGL says the client memory can be modified immediately after the glDrawPixels command returns without disturbing the drawn image. This typically necessitates unpacking and copying the image prior to glDrawPixels returning. However, when using glDrawPixels with a pixel pack buffer object, glDrawPixels may return prior to image unpacking because future modification of the buffer data requires explicit commands (glMapBuffer, glBufferData, or glBufferSubData). - Asynchronous glReadPixels: If an application needs to read back a number of images and process them with the CPU, the existing GL interface makes it nearly impossible to pipeline this operation. The driver will typically send the hardware a readback command when glReadPixels is called, and then wait for all of the data to be available before returning control to the application. Then, the application can either process the data immediately or call glReadPixels again; in neither case will the readback overlap with the processing. If the application issues several readbacks into several buffer objects, however, and then maps each one to process its data, then the readbacks can proceed in parallel with the data processing. - Render to vertex array: The application can use a fragment program to render some image into one of its buffers, then read this image out into a buffer object via glReadPixels. Then, it can use this buffer object as a source of vertex data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/pixel_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.pixel_buffer_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/internalformat_query2.py0000644000175000001440000000551312025001653023053 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.internalformat_query2 This module customises the behaviour of the OpenGL.raw.GL.ARB.internalformat_query2 to provide a more Python-friendly API Overview (from the spec) This extension extends the GetInternalformativ query that was added in the ARB_internalformat_query extension to provide applications with more granular per-format capability information. This extension allows the remainder of the texture-style targets to be specified along with any possible internal format. We add queries for additional properties supported for an internal format in addition to the multisample-related information that was added in ARB_internalformat_query. The goals of this extension are to: a) provide a mechanism for implementations to declare support *above* the minimum required by the specification b) provide API to allow universally constant information to be queried c) provide a user-friendly way of finding out about version- or implementation-specific limitations. While much of this information can be determined for a single GL version by careful examination of the specification, support for many of these properties has been gradually introduced over a number of API revisions. This can observed when considering the range in functionality between the various versions of GL 2, 3, and 4, as well as GL ES 2 and 3. In the case of an application which wishes to be scalable and able to run on a variety of possible GL or GL ES versions without being specifically tailored for each version, it must either have knowledge of the specifications built up into either the code or tables, or it must do a number of tests on startup to determine which capabilities are present. In OpenGL, other than the course-grained extension mechanism, many limitations of, or limited support for, an internalformat can only be signalled by failing an operation or by operating at reduced performance. Thus, such tests often involve attempts to create resources, using them in specific ways and benchmarking the operations to find out if it is supported in the desired form, and at a required performance level. The extension provides a way for these properties and caveats to be directly queried from the implementation. This extension is NOT intended to allow implementations to only support a subset of features that are required by a specific GL version, nor is it intended to replace the proper use of extension checks for optional functionality. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/internalformat_query2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.internalformat_query2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_buffer_object_rgb32.py0000644000175000001440000000153512025001653024075 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_buffer_object_rgb32 This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_buffer_object_rgb32 to provide a more Python-friendly API Overview (from the spec) This extension adds three new buffer texture formats - RGB32F, RGB32I, and RGB32UI. This partially addresses one of the limitations of buffer textures in the original EXT_texture_buffer_object extension and in OpenGL 3.1, which provide no support for three-component formats. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_buffer_object_rgb32.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_buffer_object_rgb32 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/vertex_type_2_10_10_10_rev.py0000644000175000001440000000206512025001653023271 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.vertex_type_2_10_10_10_rev This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_type_2_10_10_10_rev to provide a more Python-friendly API Overview (from the spec) This extension adds the following data formats: Two new vertex attribute data formats: a signed 2.10.10.10 and an unsigned 2.10.10.10 vertex data format. These vertex data formats describe a 4 component stream which can be used to store normals or other attributes in a quantized form. Normals, tangents, binormals and other vertex attributes can often be specified at reduced precision without introducing noticeable artifacts, reducing the amount of memory and memory bandwidth they consume. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/vertex_type_2_10_10_10_rev.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.vertex_type_2_10_10_10_rev import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/timer_query.py0000644000175000001440000000343112025001653021061 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.timer_query This module customises the behaviour of the OpenGL.raw.GL.ARB.timer_query to provide a more Python-friendly API Overview (from the spec) Applications can benefit from accurate timing information in a number of different ways. During application development, timing information can help identify application or driver bottlenecks. At run time, applications can use timing information to dynamically adjust the amount of detail in a scene to achieve constant frame rates. OpenGL implementations have historically provided little to no useful timing information. Applications can get some idea of timing by reading timers on the CPU, but these timers are not synchronized with the graphics rendering pipeline. Reading a CPU timer does not guarantee the completion of a potentially large amount of graphics work accumulated before the timer is read, and will thus produce wildly inaccurate results. glFinish() can be used to determine when previous rendering commands have been completed, but will idle the graphics pipeline and adversely affect application performance. This extension provides a query mechanism that can be used to determine the amount of time it takes to fully complete a set of GL commands, and without stalling the rendering pipeline. It uses the query object mechanisms first introduced in the occlusion query extension, which allow time intervals to be polled asynchronously by the application. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/timer_query.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.timer_query import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_env_dot3.py0000644000175000001440000000156112025001653022017 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_env_dot3 This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_env_dot3 to provide a more Python-friendly API Overview (from the spec) Adds new operation to the texture combiner operations. DOT3_RGB_ARB Arg0 Arg1 DOT3_RGBA_ARB Arg0 Arg1 where Arg0, Arg1 are specified by parameter of TexEnvf, TexEnvi, TexEnvfv, and TexEnviv when the parameter value is SOURCE0_RGB_ARB and SOURCE1_RGB_ARB. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_env_dot3.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_env_dot3 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/vertex_array_object.py0000644000175000001440000000233212025001653022554 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.vertex_array_object This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_array_object to provide a more Python-friendly API Overview (from the spec) This extension introduces named vertex array objects which encapsulate vertex array state on the client side. These objects allow applications to rapidly switch between large sets of array state. In addition, layered libraries can return to the default array state by simply creating and binding a new vertex array object. This extension differs from GL_APPLE_vertex_array_object in that client memory cannot be accessed through a non-zero vertex array object. It also differs in that vertex array objects are explicitly not sharable between contexts. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/vertex_array_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.vertex_array_object import * ### END AUTOGENERATED SECTION glGenVertexArrays = wrapper.wrapper(glGenVertexArrays).setOutput('arrays', lambda n: (n,), 'n', arrayType = arrays.GLuintArray ) PyOpenGL-3.0.2/OpenGL/GL/ARB/fragment_coord_conventions.py0000644000175000001440000000632412025001653024136 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.fragment_coord_conventions This module customises the behaviour of the OpenGL.raw.GL.ARB.fragment_coord_conventions to provide a more Python-friendly API Overview (from the spec) This extension provides alternative conventions for the fragment coordinate XY location available for programmable fragment processing. The scope of this extension deals *only* with how the fragment coordinate XY location appears during programming fragment processing. Beyond the scope of this extension are coordinate conventions used for rasterization or transformation. In the case of the coordinate conventions for rasterization and transformation, some combination of the viewport, depth range, culling state, and projection matrix state can be reconfigured to adopt other arbitrary clip-space and window-space coordinate space conventions. Adopting other clip-space and window-space conventions involves adjusting existing OpenGL state. However it is non-trivial to massage an arbitrary fragment shader or program to adopt a different window-space coordinate system because such shaders are encoded in various textual representations. The dominant 2D and 3D rendering APIs make two basic choices of convention when locating fragments in window space. The two choices are: 1) Is the origin nearest the lower-left- or upper-left-most pixel of the window? 2) Is the (x,y) location of the pixel nearest the origin at (0,0) or (0.5,0.5)? OpenGL assumes a lower-left origin for window coordinates and assumes pixel centers are located at half-pixel coordinates. This means the XY location (0.5,0.5) corresponds to the lower-left-most pixel in a window. Other window coordinate conventions exist for other rendering APIs. X11, GDI, and Direct3D version through DirectX 9 assume an upper-left window origin and locate pixel centers at integer XY values. By this alternative convention, the XY location (0,0) corresponds to the upper-left-most pixel in a window. Direct3D for DirectX 10 assumes an upper-left origin (as do prior DirectX versions) yet assumes half-pixel coordinates (unlike prior DirectX versions). By the DirectX 10 convention, the XY location (0.5,0.5) corresponds to the upper-left-most pixel in a window. Fragment shaders can directly access the location of a given processed fragment in window space. We call this location the "fragment coordinate". This extension provides a means for fragment shaders written in GLSL or OpenGL assembly extensions to specify alternative conventions for determining the fragment coordinate value accessed during programmable fragment processing. The motivation for this extension is to provide an easy, efficient means for fragment shaders accessing a fragment's window-space location to adopt the fragment coordinate convention for which the shader was originally written. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/fragment_coord_conventions.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.fragment_coord_conventions import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/draw_buffers_blend.py0000644000175000001440000000174312025001653022335 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.draw_buffers_blend This module customises the behaviour of the OpenGL.raw.GL.ARB.draw_buffers_blend to provide a more Python-friendly API Overview (from the spec) This extension builds upon the ARB_draw_buffers and EXT_draw_buffers2 extensions. In ARB_draw_buffers (part of OpenGL 2.0), separate values could be written to each color buffer. This was further enhanced by EXT_draw_buffers2 by adding in the ability to enable blending and to set color write masks independently per color output. This extension provides the ability to set individual blend equations and blend functions for each color output. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/draw_buffers_blend.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.draw_buffers_blend import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/sample_shading.py0000644000175000001440000000347112025001653021476 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.sample_shading This module customises the behaviour of the OpenGL.raw.GL.ARB.sample_shading to provide a more Python-friendly API Overview (from the spec) In standard multisample rendering, an implementation is allowed to assign the same color and texture coordinate values to each sample, which then allows the optimization where the shader is only evaluated once and then distributed to the samples that have been determined to be covered by the primitive currently being rasterized. This can cause aliasing where the input color and texture coordinates are used to generate a result that doesn't antialias itself, for example with alpha-tested transparency. This extension adds the ability to explicitly request that an implementation use a minimum number of unique set of fragment computation inputs when multisampling a pixel. Specifying such a requirement can reduce aliasing that results from evaluating the fragment computations too few times per pixel. This extension adds new global state that controls the minimum number of samples for which attribute data is independently interpolated. When enabled, all operations that were traditionally executed per-fragment operate independently on each sample. This also extends the shading language to allow control over the sample being processed. This includes built-in fragment input variables identifying the sample number and position being processed when executing fragment shaders per sample. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/sample_shading.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.sample_shading import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/multisample.py0000644000175000001440000000372412025001653021055 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.multisample This module customises the behaviour of the OpenGL.raw.GL.ARB.multisample to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism to antialias all GL primitives: points, lines, polygons, bitmaps, and images. The technique is to sample all primitives multiple times at each pixel. The color sample values are resolved to a single, displayable color each time a pixel is updated, so the antialiasing appears to be automatic at the application level. Because each sample includes depth and stencil information, the depth and stencil functions perform equivalently to the single-sample mode. An additional buffer, called the multisample buffer, is added to the framebuffer. Pixel sample values, including color, depth, and stencil values, are stored in this buffer. When the framebuffer includes a multisample buffer, it does not also include separate depth or stencil buffers, even if the multisample buffer does not store depth or stencil values. Color buffers (left/right, front/ back, and aux) do coexist with the multisample buffer, however. Multisample antialiasing is most valuable for rendering polygons, because it requires no sorting for hidden surface elimination, and it correctly handles adjacent polygons, object silhouettes, and even intersecting polygons. If only points or lines are being rendered, the "smooth" antialiasing mechanism provided by the base GL may result in a higher quality image. This extension is designed to allow multisample and smooth antialiasing techniques to be alternated during the rendering of a single scene. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/multisample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.multisample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/framebuffer_object.py0000644000175000001440000003670212025001653022335 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.framebuffer_object This module customises the behaviour of the OpenGL.raw.GL.ARB.framebuffer_object to provide a more Python-friendly API Overview (from the spec) ARB_framebuffer_object is an extension intended to address the following goals: - Reflect FBO-related functionality found in the OpenGL 3.0 specification. - Integrate multiple disjoint extensions into a single ARB extension. These extensions are: EXT_framebuffer_object EXT_framebuffer_blit EXT_framebuffer_multisample EXT_packed_depth_stencil - Where appropriate, relax some of the constraints expressed by previous FBO-related extensions. In particular the requirement of matching attachment dimensions and component sizes has been relaxed, to allow implementations the freedom to support more flexible usages where possible. ARB_framebuffer_object defines an interface for drawing to rendering destinations other than the buffers provided to the GL by the window-system. In this extension, these newly defined rendering destinations are known collectively as "framebuffer-attachable images". This extension provides a mechanism for attaching framebuffer-attachable images to the GL framebuffer as one of the standard GL logical buffers: color, depth, and stencil. (Attaching a framebuffer-attachable image to the accum logical buffer is left for a future extension to define). When a framebuffer-attachable image is attached to the framebuffer, it is used as the source and destination of fragment operations as described in Chapter 4. By allowing the use of a framebuffer-attachable image as a rendering destination, this extension enables a form of "offscreen" rendering. Furthermore, "render to texture" is supported by allowing the images of a texture to be used as framebuffer-attachable images. A particular image of a texture object is selected for use as a framebuffer-attachable image by specifying the mipmap level, cube map face (for a cube map texture), and layer (for a 3D texture) that identifies the image. The "render to texture" semantics of this extension are similar to performing traditional rendering to the framebuffer, followed immediately by a call to CopyTexSubImage. However, by using this extension instead, an application can achieve the same effect, but with the advantage that the GL can usually eliminate the data copy that would have been incurred by calling CopyTexSubImage. This extension also defines a new GL object type, called a "renderbuffer", which encapsulates a single 2D pixel image. The image of renderbuffer can be used as a framebuffer-attachable image for generalized offscreen rendering and it also provides a means to support rendering to GL logical buffer types which have no corresponding texture format (stencil, accum, etc). A renderbuffer is similar to a texture in that both renderbuffers and textures can be independently allocated and shared among multiple contexts. The framework defined by this extension is general enough that support for attaching images from GL objects other than textures and renderbuffers could be added by layered extensions. To facilitate efficient switching between collections of framebuffer-attachable images, this extension introduces another new GL object, called a framebuffer object. A framebuffer object contains the state that defines the traditional GL framebuffer, including its set of images. Prior to this extension, it was the window-system which defined and managed this collection of images, traditionally by grouping them into a "drawable". The window-system API's would also provide a function (i.e., wglMakeCurrent, glXMakeCurrent, aglSetDrawable, etc.) to bind a drawable with a GL context (as is done in the WGL_ARB_pbuffer extension). In this extension however, this functionality is subsumed by the GL and the GL provides the function BindFramebufferARB to bind a framebuffer object to the current context. Later, the context can bind back to the window-system-provided framebuffer in order to display rendered content. Previous extensions that enabled rendering to a texture have been much more complicated. One example is the combination of ARB_pbuffer and ARB_render_texture, both of which are window-system extensions. This combination requires calling MakeCurrent, an operation that may be expensive, to switch between the window and the pbuffer drawables. An application must create one pbuffer per renderable texture in order to portably use ARB_render_texture. An application must maintain at least one GL context per texture format, because each context can only operate on a single pixelformat or FBConfig. All of these characteristics make ARB_render_texture both inefficient and cumbersome to use. ARB_framebuffer_object, on the other hand, is both simpler to use and more efficient than ARB_render_texture. The ARB_framebuffer_object API is contained wholly within the GL API and has no (non-portable) window-system components. Under ARB_framebuffer_object, it is not necessary to create a second GL context when rendering to a texture image whose format differs from that of the window. Finally, unlike the pbuffers of ARB_render_texture, a single framebuffer object can facilitate rendering to an unlimited number of texture objects. This extension differs from EXT_framebuffer_object by splitting the framebuffer object binding point into separate DRAW and READ bindings (incorporating functionality introduced by EXT_framebuffer_blit). This allows copying directly from one framebuffer to another. In addition, a new high performance blit function is added to facilitate these blits and perform some data conversion where allowed. This extension also enables usage of multisampling in conjunction with renderbuffers (incorporating functionality from EXT_packed_depth_stencil), as follows: The new operation RenderbufferStorageMultisample() allocates storage for a renderbuffer object that can be used as a multisample buffer. A multisample render buffer image differs from a single-sample render buffer image in that a multisample image has a number of SAMPLES that is greater than zero. No method is provided for creating multisample texture images. All of the framebuffer-attachable images attached to a framebuffer object must have the same number of SAMPLES or else the framebuffer object is not "framebuffer complete". If a framebuffer object with multisample attachments is "framebuffer complete", then the framebuffer object behaves as if SAMPLE_BUFFERS is one. In traditional multisample rendering, where DRAW_FRAMEBUFFER_BINDING is zero and SAMPLE_BUFFERS is one, the GL spec states that "the color sample values are resolved to a single, displayable color each time a pixel is updated." There are, however, several modern hardware implementations that do not actually resolve for each sample update, but instead postpones the resolve operation to a later time and resolve a batch of sample updates at a time. This is OK as long as the implementation behaves "as if" it had resolved a sample-at-a-time. Unfortunately, however, honoring the "as if" rule can sometimes degrade performance. In contrast, when DRAW_FRAMEBUFFER_BINDING is an application-created framebuffer object, MULTISAMPLE is enabled, and SAMPLE_BUFFERS is one, there is no implicit per-sample-update resolve. Instead, the application explicitly controls when the resolve operation is performed. The resolve operation is affected by calling BlitFramebuffer where the source is a multisample application-created framebuffer object and the destination is a single-sample framebuffer object (either application-created or window-system provided). This design for multisample resolve more closely matches current hardware, but still permits implementations which choose to resolve a single sample at a time. If hardware that implements the multisample resolution "one sample at a time" exposes ARB_framebuffer_object, it could perform the implicit resolve to a driver-managed hidden surface, then read from that surface when the application calls BlitFramebuffer. Another motivation for granting the application explicit control over the multisample resolve operation has to do with the flexibility afforded by ARB_framebuffer_object. Previously, a drawable (window or pbuffer) had exclusive access to all of its buffers. There was no mechanism for sharing a buffer across multiple drawables. Under ARB_framebuffer_object, however, a mechanism exists for sharing a framebuffer-attachable image across several framebuffer objects, as well as sharing an image between a framebuffer object and a texture. If we had retained the "implicit" resolve from traditional multisampled rendering, and allowed the creation of "multisample" format renderbuffers, then this type of sharing would have lead to two problematic situations: * Two contexts, which shared renderbuffers, might perform competing resolve operations into the same single-sample buffer with ambiguous results. * It would have introduced the unfortunate ability to use the single-sample buffer as a texture while MULTISAMPLE is ENABLED. Using BlitFramebuffer as an explicit resolve to serialize access to the multisampled contents and eliminate the implicit per-sample resolve operation, we avoid both of these problems. This extension also enables usage of packed depth-stencil formats in renderbuffers (incorporating functionality from EXT_packed_depth_stencil), as follows: Many OpenGL implementations have chosen to interleave the depth and stencil buffers into one buffer, often with 24 bits of depth precision and 8 bits of stencil data. 32 bits is more than is needed for the depth buffer much of the time; a 24-bit depth buffer, on the other hand, requires that reads and writes of depth data be unaligned with respect to power-of-two boundaries. On the other hand, 8 bits of stencil data is more than sufficient for most applications, so it is only natural to pack the two buffers into a single buffer with both depth and stencil data. OpenGL never provides direct access to the buffers, so the OpenGL implementation can provide an interface to applications where it appears the one merged buffer is composed of two logical buffers. One disadvantage of this scheme is that OpenGL lacks any means by which this packed data can be handled efficiently. For example, when an application reads from the 24-bit depth buffer, using the type GL_UNSIGNED_SHORT will lose 8 bits of data, while GL_UNSIGNED_INT has 8 too many. Both require expensive format conversion operations. A 24-bit format would be no more suitable, because it would also suffer from the unaligned memory accesses that made the standalone 24-bit depth buffer an unattractive proposition in the first place. Many applications, such as parallel rendering applications, may also wish to draw to or read back from both the depth and stencil buffers at the same time. Currently this requires two separate operations, reducing performance. Since the buffers are interleaved, drawing to or reading from both should be no more expensive than using just one; in some cases, it may even be cheaper. This extension provides a new data format, GL_DEPTH_STENCIL, that can be used with the glDrawPixels, glReadPixels, and glCopyPixels commands, as well as a packed data type, GL_UNSIGNED_INT_24_8, that is meant to be used with GL_DEPTH_STENCIL. No other data types are supported with GL_DEPTH_STENCIL. If ARB_depth_texture or SGIX_depth_texture is supported, GL_DEPTH_STENCIL/GL_UNSIGNED_INT_24_8 data can also be used for textures; this provides a more efficient way to supply data for a 24-bit depth texture. GL_DEPTH_STENCIL data, when passed through the pixel path, undergoes both depth and stencil operations. The depth data is scaled and biased by the current GL_DEPTH_SCALE and GL_DEPTH_BIAS, while the stencil data is shifted and offset by the current GL_INDEX_SHIFT and GL_INDEX_OFFSET. The stencil data is also put through the stencil-to-stencil pixel map. glDrawPixels of GL_DEPTH_STENCIL data operates similarly to that of GL_STENCIL_INDEX data, bypassing the OpenGL fragment pipeline entirely, unlike the treatment of GL_DEPTH_COMPONENT data. The stencil and depth masks are applied, as are the pixel ownership and scissor tests, but all other operations are skipped. glReadPixels of GL_DEPTH_STENCIL data reads back a rectangle from both the depth and stencil buffers. glCopyPixels of GL_DEPTH_STENCIL data copies a rectangle from both the depth and stencil buffers. Like glDrawPixels, it applies both the stencil and depth masks but skips the remainder of the OpenGL fragment pipeline. glTex[Sub]Image[1,2,3]D of GL_DEPTH_STENCIL data loads depth and stencil data into a depth_stencil texture. glGetTexImage of GL_DEPTH_STENCIL data can be used to retrieve depth and stencil data from a depth/stencil texture. In addition, a new base internal format, GL_DEPTH_STENCIL, can be used by both texture images and renderbuffer storage. When an image with a DEPTH_STENCIL internal format is attached to both the depth and stencil attachment points of a framebuffer object, then it becomes both the depth and stencil buffers of the framebuffer. This fits nicely with hardware that interleaves both depth and stencil data into a single buffer. When a texture with DEPTH_STENCIL data is bound for texturing, only the depth component is accessible through the texture fetcher. The stencil data can be written with TexImage or CopyTexImage, and can be read with GetTexImage. When a DEPTH_STENCIL image is attached to the stencil attachment of the bound framebuffer object, the stencil data can be accessed through any operation that reads from or writes to the framebuffer's stencil buffer. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/framebuffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.framebuffer_object import * ### END AUTOGENERATED SECTION from OpenGL.lazywrapper import lazy glGenFramebuffers = wrapper.wrapper(glGenFramebuffers).setOutput( 'framebuffers', lambda x: (x,), 'n') glGenRenderbuffers = wrapper.wrapper(glGenRenderbuffers).setOutput( 'renderbuffers', lambda x: (x,), 'n') @lazy( glDeleteFramebuffers ) def glDeleteFramebuffers( baseOperation, n, framebuffers=None ): """glDeleteFramebuffers( framebuffers ) -> None """ if framebuffers is None: framebuffers = arrays.GLuintArray.asArray( n ) n = arrays.GLuintArray.arraySize( framebuffers ) return baseOperation( n, framebuffers ) # Setup the GL_UNSIGNED_INT_24_8 image type from OpenGL import images from OpenGL.constants import GL_UNSIGNED_INT images.TYPE_TO_ARRAYTYPE[ GL_UNSIGNED_INT_24_8 ] = GL_UNSIGNED_INT images.TIGHT_PACK_FORMATS[ GL_UNSIGNED_INT_24_8 ] = 4 # The extensions actually use the _EXT forms, which is a bit confusing # for users, IMO. GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = constant.Constant( 'GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS', 0x8CD9 ) GL_FRAMEBUFFER_INCOMPLETE_FORMATS = constant.Constant( 'GL_FRAMEBUFFER_INCOMPLETE_FORMATS', 0x8CDA ) GL_FRAMEBUFFER_UNSUPPORTED = constant.Constant( 'GL_FRAMEBUFFER_UNSUPPORTED', 0x8CDD ) del images del GL_UNSIGNED_INT PyOpenGL-3.0.2/OpenGL/GL/ARB/compatibility.py0000644000175000001440000000075512025001653021373 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.compatibility This module customises the behaviour of the OpenGL.raw.GL.ARB.compatibility to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/compatibility.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.compatibility import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_non_power_of_two.py0000644000175000001440000000263412025001653023663 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_non_power_of_two This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_non_power_of_two to provide a more Python-friendly API Overview (from the spec) Conventional OpenGL texturing is limited to images with power-of-two dimensions and an optional 1-texel border. ARB_texture_non_power_of_two extension relaxes the size restrictions for the 1D, 2D, cube map, and 3D texture targets. There is no additional procedural or enumerant api introduced by this extension except that an implementation which exports the extension string will allow an application to pass in texture dimensions for the 1D, 2D, cube map, and 3D targets that may or may not be a power of two. An implementation which supports relaxing traditional GL's power-of-two size restrictions across all texture targets will export the extension string: "ARB_texture_non_power_of_two". When this extension is supported, mipmapping, automatic mipmap generation, and all the conventional wrap modes are supported for non-power-of-two textures The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_non_power_of_two.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_non_power_of_two import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/cl_event.py0000644000175000001440000000156612025001653020322 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.cl_event This module customises the behaviour of the OpenGL.raw.GL.ARB.cl_event to provide a more Python-friendly API Overview (from the spec) This extension allows creating OpenGL sync objects linked to OpenCL event objects, potentially improving efficiency of sharing images and buffers between the two APIs. The companion cl_khr_gl_event OpenCL extension provides the complementary functionality of creating an OpenCL event object from an OpenGL fence sync object. That extension is located in the OpenCL API Registry. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/cl_event.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.cl_event import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/clear_buffer_object.py0000644000175000001440000000246312025001653022465 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.clear_buffer_object This module customises the behaviour of the OpenGL.raw.GL.ARB.clear_buffer_object to provide a more Python-friendly API Overview (from the spec) Buffer objects are fundamental to the operation of OpenGL. Buffers are used as a source of data for vertices and indices, read through buffer textures in shaders, used to transfer texture and image data into and out of textures and framebuffers, and may be written to by operations such as transform feedback. OpenGL contains mechanisms to copy sections of buffers from one to another, but it has no mechanism to initialize the content of a buffer to a known value. In effect, it has memcpy, but not memset. This extension adds such a mechanism and has several use cases. Examples include clearing a pixel unpack buffer before transferring data to a texture or resetting buffer data to a known value before sparse updates through shader image stores or transform feedback. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/clear_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.clear_buffer_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shader_image_size.py0000644000175000001440000000117112025001653022155 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_image_size This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_image_size to provide a more Python-friendly API Overview (from the spec) This extension provides GLSL built-in functions allowing shaders to query the size of an image. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_image_size.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_image_size import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/debug_output2.py0000644000175000001440000000350512025001653021306 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.debug_output2 This module customises the behaviour of the OpenGL.raw.GL.ARB.debug_output2 to provide a more Python-friendly API Overview (from the spec) This extension specifies how the existing ARB_debug_output functionality operates in both debug and non-debug contexts to allow the inclusion of ARB_debug_output into the OpenGL 4.3 core specification. Some existing implementations of ARB_debug_output only expose the ARB_debug_output extension string if the context was created with the debug flag {GLX|WGL}_CONTEXT_DEBUG_BIT_ARB as specified in {GLX|WGL}_ARB_create_context. The behavior is not obvious when the functionality is brought into the OpenGL core specification because the extension string and function entry points must always exist. This extension modifies the existing ARB_debug_output extension to allow implementations to always have an empty message log. The specific messages written to the message log or callback routines are already implementation defined, so this specification simply makes it explicit that it's fine for there to be zero messages generated, which is useful if the context is non-debug. Debug output can be enabled and disabled by changing the DEBUG_OUTPUT state. It is implementation defined how much debug output is generated if the context was created without the CONTEXT_DEBUG_BIT set. There is a new query bit added to the existing GL_CONTEXT_FLAGS state to specify whether the context was created with debug enabled. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/debug_output2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.debug_output2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/depth_texture.py0000644000175000001440000000215212025001653021377 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.depth_texture This module customises the behaviour of the OpenGL.raw.GL.ARB.depth_texture to provide a more Python-friendly API Overview (from the spec) This is a clarification of the GL_SGIX_depth_texture extension. The original overview follows: This extension defines a new depth texture format. An important application of depth texture images is shadow casting, but separating this from the shadow extension allows for the potential use of depth textures in other applications such as image-based rendering or displacement mapping. This extension does not define new depth-texture environment functions, such as filtering or applying the depth values computed from a texture but leaves this to other extensions, such as the shadow extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/depth_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.depth_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/stencil_texturing.py0000644000175000001440000000152212025001653022265 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.stencil_texturing This module customises the behaviour of the OpenGL.raw.GL.ARB.stencil_texturing to provide a more Python-friendly API Overview (from the spec) This extension allows texturing of the stencil component of a packed depth stencil texture. Stencil values are returned as unsigned integers. It is not possible to sample both depth and stencil values from the same texture, and this extension allows the app to select which is sampled for the bound texture. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/stencil_texturing.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.stencil_texturing import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/vertex_blend.py0000644000175000001440000000243012025001653021173 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.vertex_blend This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_blend to provide a more Python-friendly API Overview (from the spec) This extension provides the ability to replace the single modelview transformation with a set of n vertex units. (Where n is constrained to an implementation defined maximum.) Each unit has its own modelview transform matrix. For each unit, there is a current weight associated with the vertex. When this extension is enabled the vertices are transformed by the modelview matrices of all of the enabled units. Afterward, these results are scaled by the weights for the respective units and then summed to create the eye-space vertex. A similar procedure is followed for the normals, except they are transformed by the inverse transpose of the modelview matrices. This extension is an orthoganalized version of functionality already provided by other 3D graphics API's. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/vertex_blend.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.vertex_blend import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shading_language_packing.py0000644000175000001440000000273512025001653023476 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shading_language_packing This module customises the behaviour of the OpenGL.raw.GL.ARB.shading_language_packing to provide a more Python-friendly API Overview (from the spec) This extension provides the GLSL built-in functions to convert a 32-bit unsigned integer holding a pair of 16-bit floating-point values to or from a two-component floating-point vector (vec2). This mechanism allows GLSL shaders to read and write 16-bit floating-point encodings (via 32-bit unsigned integers) without introducing a full set of 16-bit floating-point data types. This extension also adds the GLSL built-in packing functions included in GLSL version 4.00 and the ARB_gpu_shader5 extension which pack and unpack vectors of small fixed-point data types into a larger scalar. By putting these packing functions in this separate extension it allows implementations to provide these functions in hardware that supports them independent of the other ARB_gpu_shader5 features. In addition to the packing functions from ARB_gpu_shader5 this extension also adds the missing [un]packSnorm2x16 for completeness. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shading_language_packing.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shading_language_packing import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_cube_map.py0000644000175000001440000000630312025001653022050 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_cube_map This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_cube_map to provide a more Python-friendly API Overview (from the spec) This extension provides a new texture generation scheme for cube map textures. Instead of the current texture providing a 1D, 2D, or 3D lookup into a 1D, 2D, or 3D texture image, the texture is a set of six 2D images representing the faces of a cube. The (s,t,r) texture coordinates are treated as a direction vector emanating from the center of a cube. At texture generation time, the interpolated per-fragment (s,t,r) selects one cube face 2D image based on the largest magnitude coordinate (the major axis). A new 2D (s,t) is calculated by dividing the two other coordinates (the minor axes values) by the major axis value. Then the new (s,t) is used to lookup into the selected 2D texture image face of the cube map. Unlike a standard 1D, 2D, or 3D texture that have just one target, a cube map texture has six targets, one for each of its six 2D texture image cube faces. All these targets must be consistent, complete, and have equal width and height (ie, square dimensions). This extension also provides two new texture coordinate generation modes for use in conjunction with cube map texturing. The reflection map mode generates texture coordinates (s,t,r) matching the vertex's eye-space reflection vector. The reflection map mode is useful for environment mapping without the singularity inherent in sphere mapping. The normal map mode generates texture coordinates (s,t,r) matching the vertex's transformed eye-space normal. The normal map mode is useful for sophisticated cube map texturing-based diffuse lighting models. The intent of the new texgen functionality is that an application using cube map texturing can use the new texgen modes to automatically generate the reflection or normal vectors used to look up into the cube map texture. An application note: When using cube mapping with dynamic cube maps (meaning the cube map texture is re-rendered every frame), by keeping the cube map's orientation pointing at the eye position, the texgen-computed reflection or normal vector texture coordinates can be always properly oriented for the cube map. However if the cube map is static (meaning that when view changes, the cube map texture is not updated), the texture matrix must be used to rotate the texgen-computed reflection or normal vector texture coordinates to match the orientation of the cube map. The rotation can be computed based on two vectors: 1) the direction vector from the cube map center to the eye position (both in world coordinates), and 2) the cube map orientation in world coordinates. The axis of rotation is the cross product of these two vectors; the angle of rotation is the arcsin of the dot product of these two vectors. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_cube_map.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_cube_map import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/fragment_program_shadow.py0000644000175000001440000000274412025001653023421 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.fragment_program_shadow This module customises the behaviour of the OpenGL.raw.GL.ARB.fragment_program_shadow to provide a more Python-friendly API Overview (from the spec) This extension extends ARB_fragment_program to remove the interaction with ARB_shadow. This extension defines the program option "ARB_fragment_program_shadow". If a fragment program specifies the option "ARB_fragment_program_shadow" SHADOW1D, SHADOW2D, SHADOWRECT are added as texture targets. When shadow map comparisons are desired, specify the SHADOW1D, SHADOW2D, or SHADOWRECT texture targets in texture instructions. Programs must assure that the comparison mode for each depth texture (TEXTURE_COMPARE_MODE) and/or the internal texture format (DEPTH_COMPONENT) and the targets of the texture lookup instructions match. Otherwise, if the comparison mode and/or the internal texture format are inconsistent with the texture target, the results of the texture lookup are undefined. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/fragment_program_shadow.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.fragment_program_shadow import * ### END AUTOGENERATED SECTION # This extension is entirely within the fragment program functionality, # it doesn't affect the function-level operations AFAICS.PyOpenGL-3.0.2/OpenGL/GL/ARB/explicit_uniform_location.py0000644000175000001440000000156412025001653023771 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.explicit_uniform_location This module customises the behaviour of the OpenGL.raw.GL.ARB.explicit_uniform_location to provide a more Python-friendly API Overview (from the spec) This extension provides a method to pre-assign uniform locations to uniform variables in the default uniform block, including subroutine uniforms. This allows an application to modify the uniform values without requiring a GL query like GetUniformLocation, GetSubroutineUniformLocation and GetSubroutineIndex. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/explicit_uniform_location.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.explicit_uniform_location import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/half_float_vertex.py0000644000175000001440000000200712025001653022206 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.half_float_vertex This module customises the behaviour of the OpenGL.raw.GL.ARB.half_float_vertex to provide a more Python-friendly API Overview (from the spec) This extension extends the usage of the half-precision (16-bit) floating- point quantities introduced in ARB_half_float_pixel for usage in specifying vertex array data. This extension allows applications to use half-precision floating point data when specifying vertices. This can allow applications to reduce their memory footprint, as well as the memory bandwidth required for vertex data. This extension extends the existing vertex array commands to accept the new data type. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/half_float_vertex.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.half_float_vertex import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/uniform_buffer_object.py0000644000175000001440000001206012025001653023050 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.uniform_buffer_object This module customises the behaviour of the OpenGL.raw.GL.ARB.uniform_buffer_object to provide a more Python-friendly API Overview (from the spec) This extension introduces the concept of a group of GLSL uniforms known as a "uniform block", and the API mechanisms to store "uniform blocks" in GL buffer objects. The extension also defines both a standard cross-platform layout in memory for uniform block data, as well as mechanisms to allow the GL to optimize the data layout in an implementation-defined manner. Prior to this extension, the existing interface for modification of uniform values allowed modification of large numbers of values using glUniform* calls, but only for a single uniform name (or a uniform array) at a time. However, updating uniforms in this manner may not map well to heterogenous uniform data structures defined for a GL application and in these cases, the application is forced to either: A) restructure their uniform data definitions into arrays or B) make an excessive number of calls through the GL interface to one of the Uniform* variants. These solutions have their disadvantages. Solution A imposes considerable development overhead on the application developer. Solution B may impose considerable run-time overhead on the application if the number of uniforms modified in a given frame of rendering is sufficiently large. This extension provides a better alternative to either (A) or (B) by allowing buffer object backing for the storage associated with all uniforms of a given GLSL program. Storing uniform blocks in buffer objects enables several key use cases: - sharing of uniform data storage between program objects and between program stages - rapid swapping of sets of previously defined uniforms by storing sets of uniform data on the GL server - rapid updates of uniform data from both the client and the server The data storage for a uniform block can be declared to use one of three layouts in memory: packed, shared, or std140. - "packed" uniform blocks have an implementation-dependent data layout for efficiency, and unused uniforms may be eliminated by the compiler to save space. - "shared" uniform blocks, the default layout, have an implementation- dependent data layout for efficiency, but the layout will be uniquely determined by the structure of the block, allowing data storage to be shared across programs. - "std140" uniform blocks have a standard cross-platform cross-vendor layout (see below). Unused uniforms will not be eliminated. Any uniforms not declared in a named uniform block are said to be part of the "default uniform block". While uniforms in the default uniform block are updated with glUniform* entry points and can have static initializers, uniforms in named uniform blocks are not. Instead, uniform block data is updated using the routines that update buffer objects and can not use static initializers. Rules and Concepts Guiding this Specification: For reference, a uniform has a "uniform index" (subsequently referred to as "u_index) and also a "uniform location" to efficiently identify it in the uniform data store of the implementation. We subsequently refer to this uniform data store of the implementation as the "uniform database". A "uniform block" only has a "uniform block index" used for queries and connecting the "uniform block" to a buffer object. A "uniform block" has no "location" because "uniform blocks" are not updated directly. The buffer object APIs are used instead. Properties of Uniforms and uniform blocks: a) A uniform is "active" if it exists in the database and has a valid u_index. b) A "uniform block" is "active" if it exists in the database and has a valid ub_index. c) Uniforms and "uniform blocks" can be inactive because they don't exist in the source, or because they have been removed by dead code elimination. d) An inactive uniform has u_index == INVALID_INDEX. e) An inactive uniform block has ub_index == INVALID_INDEX. f) A u_index or ub_index of INVALID_INDEX generates the INVALID_VALUE error if given as a function argument. g) The default uniform block, which is not assigned any ub_index, uses a private, internal data storage, and does not have any buffer object associated with it. h) An active uniform that is a member of the default uniform block has location >= 0 and it has offset == stride == -1. i) An active uniform that is a member of a named uniform block has location == -1. j) A uniform location of -1 is silently ignored if given as a function argument. k) Uniform block declarations may not be nested The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/uniform_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.uniform_buffer_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_gather.py0000644000175000001440000000145512025001653021552 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_gather This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_gather to provide a more Python-friendly API Overview (from the spec) This extension provides a new set of texture functions (textureGather) to the shading language that determine 2x2 footprint that are used for linear filtering in a texture lookup, and return a vector consisting of the first component from each of the four texels in the footprint. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_gather.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_gather import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/point_sprite.py0000644000175000001440000000265412025001653021241 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.point_sprite This module customises the behaviour of the OpenGL.raw.GL.ARB.point_sprite to provide a more Python-friendly API Overview (from the spec) Applications such as particle systems have tended to use OpenGL quads rather than points to render their geometry, since they would like to use a custom-drawn texture for each particle, rather than the traditional OpenGL round antialiased points, and each fragment in a point has the same texture coordinates as every other fragment. Unfortunately, specifying the geometry for these quads can be expensive, since it quadruples the amount of geometry required, and may also require the application to do extra processing to compute the location of each vertex. The purpose of this extension is to allow such applications to use points rather than quads. When GL_POINT_SPRITE_ARB is enabled, the state of point antialiasing is ignored. For each texture unit, the app can then specify whether to replace the existing texture coordinates with point sprite texture coordinates, which are interpolated across the point. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/point_sprite.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.point_sprite import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_rectangle.py0000644000175000001440000000404312025001653022240 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_rectangle This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_rectangle to provide a more Python-friendly API Overview (from the spec) OpenGL texturing is limited to images with power-of-two dimensions and an optional 1-texel border. The ARB_texture_rectangle extension adds a new texture target that supports 2D textures without requiring power-of-two dimensions. Non-power-of-two sized (NPOTS) textures are useful for storing video images that do not have power-of-two sized (POTS). Re-sampling artifacts are avoided and less texture memory may be required by using non-power-of-two sized textures. Non-power-of-two sized textures are also useful for shadow maps and window-space texturing. However, non-power-of-two sized textures have limitations that do not apply to power-of-two sized textures. NPOTS textures may not use mipmap filtering; POTS textures support both mipmapped and non-mipmapped filtering. NPOTS textures support only the GL_CLAMP, GL_CLAMP_TO_EDGE, and GL_CLAMP_TO_BORDER wrap modes; POTS textures support GL_CLAMP_TO_EDGE, GL_REPEAT, GL_CLAMP, GL_MIRRORED_REPEAT, and GL_CLAMP_TO_BORDER (and GL_MIRROR_CLAMP_ATI and GL_MIRROR_CLAMP_TO_EDGE_ATI if ATI_texture_mirror_once is supported) . NPOTS textures do not support an optional 1-texel border; POTS textures do support an optional 1-texel border. NPOTS textures are accessed by dimension-dependent (aka non-normalized) texture coordinates. So instead of thinking of the texture image lying in a [0..1]x[0..1] range, the NPOTS texture image lies in a [0..w]x[0..h] range. This extension adds a new texture target and related state (proxy, binding, max texture size). The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_rectangle.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_rectangle import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/robust_buffer_access_behavior.py0000644000175000001440000000227612025001653024571 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.robust_buffer_access_behavior This module customises the behaviour of the OpenGL.raw.GL.ARB.robust_buffer_access_behavior to provide a more Python-friendly API Overview (from the spec) This extension specifies the behavior of out-of-bounds buffer and array accesses. This is an improvement over the existing ARB_robustness extension which stated that the application should not crash, but the behavior is otherwise undefined. This extension specifies the access protection provided by the GL to ensure that out-of-bounds accesses cannot read from or write to data not owned by the application. All accesses are contained within the buffer object and program area they reference. These additional robustness guarantees apply to contexts created with the CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB feature enabled. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/robust_buffer_access_behavior.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.robust_buffer_access_behavior import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_storage_multisample.py0000644000175000001440000000247112025001653024357 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_storage_multisample This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_storage_multisample to provide a more Python-friendly API Overview (from the spec) The ARB_texture_storage extension and OpenGL 4.2 introduced the concept of immutable texture objects. With these objects, once their data store has been sized and allocated, it could not be resized for the lifetime of the objects (although its content could be updated). OpenGL implementations may be able to take advantage of the knowledge that the underlying data store of certain objects cannot be deleted or otherwise reallocated without destruction of the whole object (normally, a much heavier weight and less frequent operation). Immutable storage for all types of textures besides multisample and buffer textures was introduced by ARB_texture_storage. For completeness, this extension introduces immutable storage for multisampled textures. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_storage_multisample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_storage_multisample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shader_atomic_counters.py0000644000175000001440000000401212025001653023234 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_atomic_counters This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_atomic_counters to provide a more Python-friendly API Overview (from the spec) This extension provides a set of atomic counters. This extension provides GLSL built-in functions to query and increment/decrement these atomic counters. This enables a shader to write to unique offsets (append to a buffer object) or read from unique offsets (consume from a buffer object). Opaque handles to atomic counters are declared at global scope and are qualified with the uniform qualifier. Unlike other user-defined uniforms declared at global scope, they take NO storage from the default partition, they have NO location, and they may NOT be set with the Uniform* commands. Atomic counters may also NOT be grouped into uniform blocks. Active atomic counters can be discovered by the commands GetUniformIndices, GetActiveUniformName, GetActiveUniform and GetActiveUniformsiv. Like samplers, the opaque handles of the atomic counters and are ONLY used in some GLSL built-in functions. The atomic counters pointed to by the opaque handles are bound to buffer binding points and buffer offsets through the layout qualifiers in the shading language, or they are implicitly assigned by the compiler. Through the OpenGL API, buffer objects may be bound to these binding points with BindBufferBase or BindBufferRange. The contents of the atomic counters are stored in the buffer objects. The contents of atomic counters may be set and queried with buffer object manipulation functions (e.g. BufferData, BufferSubData, MapBuffer or MapBufferRange). The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_atomic_counters.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_atomic_counters import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shading_language_100.py0000644000175000001440000000141712025001653022356 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shading_language_100 This module customises the behaviour of the OpenGL.raw.GL.ARB.shading_language_100 to provide a more Python-friendly API Overview (from the spec) This extension string indicates that the OpenGL Shading Language is supported. The Shading Language is defined by a separate specification document which can be downloaded from http://www.opengl.org/documentation/oglsl.html The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shading_language_100.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shading_language_100 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_multisample.py0000644000175000001440000000211112025001653022622 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_multisample This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_multisample to provide a more Python-friendly API Overview (from the spec) This extension provides support for two new types of "multisample textures" - two-dimensional and two-dimensional array - as well as mechanisms to fetch a specific sample from such a texture in a shader, and to attach such textures to FBOs for rendering. This extension also includes the following functionality, first described in NV_explicit_multisample: * A query in the API to query the location of samples within the pixel * An explicit control for the multisample sample mask to augment the control provided by SampleCoverage The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_multisample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_multisample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/explicit_attrib_location.py0000644000175000001440000000166212025001653023576 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.explicit_attrib_location This module customises the behaviour of the OpenGL.raw.GL.ARB.explicit_attrib_location to provide a more Python-friendly API Overview (from the spec) This extension provides a method to pre-assign attribute locations to named vertex shader inputs and color numbers to named fragment shader outputs. This allows applications to globally assign a particular semantic meaning, such as diffuse color or vertex normal, to a particular attribute location without knowing how that attribute will be named in any particular shader. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/explicit_attrib_location.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.explicit_attrib_location import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/framebuffer_sRGB.py0000644000175000001440000000414112025001653021654 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.framebuffer_sRGB This module customises the behaviour of the OpenGL.raw.GL.ARB.framebuffer_sRGB to provide a more Python-friendly API Overview (from the spec) Conventionally, OpenGL assumes framebuffer color components are stored in a linear color space. In particular, framebuffer blending is a linear operation. The sRGB color space is based on typical (non-linear) monitor characteristics expected in a dimly lit office. It has been standardized by the International Electrotechnical Commission (IEC) as IEC 61966-2-1. The sRGB color space roughly corresponds to 2.2 gamma correction. This extension adds a framebuffer capability for sRGB framebuffer update and blending. When blending is disabled but the new sRGB updated mode is enabled (assume the framebuffer supports the capability), high-precision linear color component values for red, green, and blue generated by fragment coloring are encoded for sRGB prior to being written into the framebuffer. When blending is enabled along with the new sRGB update mode, red, green, and blue framebuffer color components are treated as sRGB values that are converted to linear color values, blended with the high-precision color values generated by fragment coloring, and then the blend result is encoded for sRGB just prior to being written into the framebuffer. The primary motivation for this extension is that it allows OpenGL applications to render into a framebuffer that is scanned to a monitor configured to assume framebuffer color values are sRGB encoded. This assumption is roughly true of most PC monitors with default gamma correction. This allows applications to achieve faithful color reproduction for OpenGL rendering without adjusting the monitor's gamma correction. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/framebuffer_sRGB.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.framebuffer_sRGB import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shader_objects.py0000644000175000001440000002022412025001653021472 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_objects This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_objects to provide a more Python-friendly API Overview (from the spec) This extension adds API calls that are necessary to manage shader objects and program objects as defined in the OpenGL 2.0 white papers by 3Dlabs. The generation of an executable that runs on one of OpenGL's programmable units is modeled to that of developing a typical C/C++ application. There are one or more source files, each of which are stored by OpenGL in a shader object. Each shader object (source file) needs to be compiled and attached to a program object. Once all shader objects are compiled successfully, the program object needs to be linked to produce an executable. This executable is part of the program object, and can now be loaded onto the programmable units to make it part of the current OpenGL state. Both the compile and link stages generate a text string that can be queried to get more information. This information could be, but is not limited to, compile errors, link errors, optimization hints, etc. Values for uniform variables, declared in a shader, can be set by the application and used to control a shader's behavior. This extension defines functions for creating shader objects and program objects, for compiling shader objects, for linking program objects, for attaching shader objects to program objects, and for using a program object as part of current state. Functions to load uniform values are also defined. Some house keeping functions, like deleting an object and querying object state, are also provided. Although this extension defines the API for creating shader objects, it does not define any specific types of shader objects. It is assumed that this extension will be implemented along with at least one such additional extension for creating a specific type of OpenGL 2.0 shader (e.g., the ARB_fragment_shader extension or the ARB_vertex_shader extension). The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_objects.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_objects import * ### END AUTOGENERATED SECTION EXTENSION_NAME = 'GL_ARB_shader_objects' import OpenGL from OpenGL._bytes import bytes, _NULL_8_BYTE from OpenGL.lazywrapper import lazy from OpenGL import converters, error GL_INFO_LOG_LENGTH_ARB = constant.Constant( 'GL_INFO_LOG_LENGTH_ARB', 0x8B84 ) glShaderSourceARB = platform.createExtensionFunction( 'glShaderSourceARB', dll=platform.GL, resultType=None, argTypes=(constants.GLhandleARB, constants.GLsizei, ctypes.POINTER(ctypes.c_char_p), arrays.GLintArray,), doc = 'glShaderSourceARB( GLhandleARB(shaderObj), [str(string),...] ) -> None', argNames = ('shaderObj', 'count', 'string', 'length',), extension = EXTENSION_NAME, ) conv = converters.StringLengths( name='string' ) glShaderSourceARB = wrapper.wrapper( glShaderSourceARB ).setPyConverter( 'count' # number of strings ).setPyConverter( 'length' # lengths of strings ).setPyConverter( 'string', conv.stringArray ).setCResolver( 'string', conv.stringArrayForC, ).setCConverter( 'length', conv, ).setCConverter( 'count', conv.totalCount, ) try: del conv except NameError, err: pass for size in (1,2,3,4): for format,arrayType in ( ('f',arrays.GLfloatArray), ('i',arrays.GLintArray), ): name = 'glUniform%(size)s%(format)svARB'%globals() globals()[name] = arrays.setInputArraySizeType( globals()[name], None, # don't want to enforce size... arrayType, 'value', ) try: del format, arrayType except NameError, err: pass try: del size except NameError, err: pass @lazy( glGetObjectParameterivARB ) def glGetObjectParameterivARB( baseOperation, shader, pname ): """Retrieve the integer parameter for the given shader""" status = arrays.GLintArray.zeros( (1,)) status[0] = 1 baseOperation( shader, pname, status ) return status[0] @lazy( glGetObjectParameterfvARB ) def glGetObjectParameterfvARB( baseOperation, shader, pname ): """Retrieve the float parameter for the given shader""" status = arrays.GLfloatArray.zeros( (1,)) status[0] = 1.0 baseOperation(shader, pname,status) return status[0] def _afterCheck( key ): """Generate an error-checking function for compilation operations""" def GLSLCheckError( result, baseOperation=None, cArguments=None, *args ): result = error.glCheckError( result, baseOperation, cArguments, *args ) status = glGetObjectParameterivARB( cArguments[0], key ) if not status: raise error.GLError( result = result, baseOperation = baseOperation, cArguments = cArguments, description= glGetInfoLogARB( cArguments[0] ) ) return result return GLSLCheckError if OpenGL.ERROR_CHECKING: glCompileShaderARB.errcheck = _afterCheck( GL_OBJECT_COMPILE_STATUS_ARB ) if OpenGL.ERROR_CHECKING: glLinkProgramARB.errcheck = _afterCheck( GL_OBJECT_LINK_STATUS_ARB ) ## Not sure why, but these give invalid operation :( ##if glValidateProgramARB and OpenGL.ERROR_CHECKING: ## glValidateProgramARB.errcheck = _afterCheck( GL_OBJECT_VALIDATE_STATUS_ARB ) @lazy( glGetInfoLogARB ) def glGetInfoLogARB( baseOperation, obj ): """Retrieve the program/shader's error messages as a Python string returns string which is '' if no message """ length = int(glGetObjectParameterivARB(obj, GL_INFO_LOG_LENGTH_ARB)) if length > 0: log = ctypes.create_string_buffer(length) baseOperation(obj, length, None, log) return log.value.strip(_NULL_8_BYTE) # null-termination return '' @lazy( glGetAttachedObjectsARB ) def glGetAttachedObjectsARB( baseOperation, obj ): """Retrieve the attached objects as an array of GLhandleARB instances""" length= glGetObjectParameterivARB( obj, GL_OBJECT_ATTACHED_OBJECTS_ARB ) if length > 0: storage = arrays.GLuintArray.zeros( (length,)) baseOperation( obj, length, None, storage ) return storage return arrays.GLuintArray.zeros( (0,)) @lazy( glGetShaderSourceARB ) def glGetShaderSourceARB( baseOperation, obj ): """Retrieve the program/shader's source code as a Python string returns string which is '' if no source code """ length = int(glGetObjectParameterivARB(obj, GL_OBJECT_SHADER_SOURCE_LENGTH_ARB)) if length > 0: source = ctypes.create_string_buffer(length) baseOperation(obj, length, None, source) return source.value.strip(_NULL_8_BYTE) # null-termination return '' @lazy( glGetActiveUniformARB ) def glGetActiveUniformARB(baseOperation, program, index): """Retrieve the name, size and type of the uniform of the index in the program""" max_index = int(glGetObjectParameterivARB( program, GL_OBJECT_ACTIVE_UNIFORMS_ARB )) length = int(glGetObjectParameterivARB( program, GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB)) if index < max_index and index >= 0: if length > 0: name = ctypes.create_string_buffer(length) namelen = arrays.GLsizeiArray.zeros( (1,)) size = arrays.GLintArray.zeros( (1,)) gl_type = arrays.GLenumArray.zeros( (1,)) baseOperation(program, index, length,namelen,size, gl_type, name) return name.value[:int(namelen[0])], size[0], gl_type[0] raise ValueError( """No currently specified uniform names""" ) raise IndexError, 'Index %s out of range 0 to %i' % (index, max_index - 1, ) @lazy( glGetUniformLocationARB ) def glGetUniformLocationARB( baseOperation, program, name ): """Check that name is a string with a null byte at the end of it""" if not name: raise ValueError( """Non-null name required""" ) elif name[-1] != _NULL_8_BYTE: name = name + _NULL_8_BYTE return baseOperation( program, name ) PyOpenGL-3.0.2/OpenGL/GL/ARB/shader_bit_encoding.py0000644000175000001440000000146012025001653022466 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_bit_encoding This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_bit_encoding to provide a more Python-friendly API Overview (from the spec) This extension trivially adds built-in functions for getting/setting the bit encoding for floating-point values in the OpenGL Shading Language. These functions are pulled out of ARB_gpu_shader5, since support for such built-in functions exists in current hardware. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_bit_encoding.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_bit_encoding import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/compute_shader.py0000644000175000001440000000541012025001653021515 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.compute_shader This module customises the behaviour of the OpenGL.raw.GL.ARB.compute_shader to provide a more Python-friendly API Overview (from the spec) Recent graphics hardware has become extremely powerful and a strong desire to harness this power for work (both graphics and non-graphics) that does not fit the traditional graphics pipeline well has emerged. To address this, this extension adds a new single-stage program type known as a compute program. This program may contain one or more compute shaders which may be launched in a manner that is essentially stateless. This allows arbitrary workloads to be sent to the graphics hardware with minimal disturbance to the GL state machine. In most respects, a compute program is identical to a traditional OpenGL program object, with similar status, uniforms, and other such properties. It has access to many of the same resources as fragment and other shader types, such as textures, image variables, atomic counters, and so on. However, it has no predefined inputs nor any fixed-function outputs. It cannot be part of a pipeline and its visible side effects are through its actions on images and atomic counters. OpenCL is another solution for using graphics processors as generalized compute devices. This extension addresses a different need. For example, OpenCL is designed to be usable on a wide range of devices ranging from CPUs, GPUs, and DSPs through to FPGAs. While one could implement GL on these types of devices, the target here is clearly GPUs. Another difference is that OpenCL is more full featured and includes features such as multiple devices, asynchronous queues and strict IEEE semantics for floating point operations. This extension follows the semantics of OpenGL - implicitly synchronous, in-order operation with single-device, single queue logical architecture and somewhat more relaxed numerical precision requirements. Although not as feature rich, this extension offers several advantages for applications that can tolerate the omission of these features. Compute shaders are written in GLSL, for example and so code may be shared between compute and other shader types. Objects are created and owned by the same context as the rest of the GL, and therefore no interoperability API is required and objects may be freely used by both compute and graphics simultaneously without acquire-release semantics or object type translation. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/compute_shader.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.compute_shader import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/depth_clamp.py0000644000175000001440000000412112025001653020771 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.depth_clamp This module customises the behaviour of the OpenGL.raw.GL.ARB.depth_clamp to provide a more Python-friendly API Overview (from the spec) Conventional OpenGL clips geometric primitives to a clip volume with six faces, two of which are the near and far clip planes. Clipping to the near and far planes of the clip volume ensures that interpolated depth values (after the depth range transform) must be in the [0,1] range. In some rendering applications such as shadow volumes, it is useful to allow line and polygon primitives to be rasterized without clipping the primitive to the near or far clip volume planes (side clip volume planes clip normally). Without the near and far clip planes, rasterization (pixel coverage determination) in X and Y can proceed normally if we ignore the near and far clip planes. The one major issue is that fragments of a primitive may extend beyond the conventional window space depth range for depth values (typically the range [0,1]). Rather than discarding fragments that defy the window space depth range (effectively what near and far plane clipping accomplish), the depth values can be clamped to the current depth range. This extension provides exactly such functionality. This functionality is useful to obviate the need for near plane capping of stenciled shadow volumes. The functionality may also be useful for rendering geometry "beyond" the far plane if an alternative algorithm (rather than depth testing) for hidden surface removal is applied to such geometry (specifically, the painter's algorithm). Similar situations at the near clip plane can be avoided at the near clip plane where apparently solid objects can be "seen through" if they intersect the near clip plane. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/depth_clamp.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.depth_clamp import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_buffer_range.py0000644000175000001440000000220012025001653022712 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_buffer_range This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_buffer_range to provide a more Python-friendly API Overview (from the spec) ARB_texture_buffer_object (which was promoted to core in OpenGL 3.1) introduced the ability to attach the data store of a buffer object to a buffer texture and access it from shaders. The extension only allows the entire store of the buffer object to the texture. This extension expands on this and allows a sub-range of the buffer's data store to be attached to a texture. This can be used, for example, to allow multiple buffer textures to be backed by independent sub-ranges of the same buffer object, or for different sub-ranges of a single buffer object to be used for different purposes. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_buffer_range.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_buffer_range import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shader_subroutine.py0000644000175000001440000000165512025001653022247 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shader_subroutine This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_subroutine to provide a more Python-friendly API Overview (from the spec) This extension adds support to shaders for "indirect subroutine calls", where a single shader can include many subroutines and dynamically select through the API which subroutine is called from each call site. Switching subroutines dynamically in this fashion can avoid the cost of recompiling and managing multiple shaders, while still retaining most of the performance of specialized shaders. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_subroutine.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shader_subroutine import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/multitexture.py0000644000175000001440000000202312025001653021263 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.multitexture This module customises the behaviour of the OpenGL.raw.GL.ARB.multitexture to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/multitexture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.multitexture import * ### END AUTOGENERATED SECTION for typ,arrayType in ( ('d',arrays.GLdoubleArray), ('f',arrays.GLfloatArray), ('i',arrays.GLintArray), ('s',arrays.GLshortArray), ): for size in (1,2,3,4): name = 'glMultiTexCoord%(size)s%(typ)svARB'%globals() globals()[name] = arrays.setInputArraySizeType( globals()[name], size, arrayType, 'v', ) try: del size,name except NameError, err: pass try: del typ,arrayType except NameError, err: pass PyOpenGL-3.0.2/OpenGL/GL/ARB/separate_shader_objects.py0000644000175000001440000001031312031734157023365 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.separate_shader_objects This module customises the behaviour of the OpenGL.raw.GL.ARB.separate_shader_objects to provide a more Python-friendly API Overview (from the spec) Conventional GLSL requires multiple shader stages (vertex, fragment, geometry, tessellation control, and tessellation evaluation) to be linked into a single monolithic program object to specify a GLSL shader for each stage. While GLSL's monolithic approach has some advantages for optimizing shaders as a unit that span multiple stages, all existing GPU hardware supports the more flexible mix-and-match approach. Shaders written for HLSL9, Cg, the prior OpenGL assembly program extensions, and game console favor a more flexible "mix-and-match" approach to specifying shaders independently for these different shader stages. Many developers build their shader content around the mix-and-match approach where they can use a single vertex shader with multiple fragment shaders (or vice versa). This extension adopts a "mix-and-match" shader stage model for GLSL allowing multiple different GLSL program objects to be bound at once each to an individual rendering pipeline stage independently of other stage bindings. This allows program objects to contain only the shader stages that best suit the applications needs. This extension introduces the program pipeline object that serves as a container for the program bound to any particular rendering stage. It can be bound, unbound, and rebound to simply save and restore the complete shader stage to program object bindings. Like framebuffer and vertex array objects, program pipeline objects are "container" objects that are not shared between contexts. To bind a program object to a specific shader stage or set of stages, UseProgramStages is used. The VERTEX_SHADER_BIT, GEOMETRY_SHADER_BIT, FRAGMENT_SHADER_BIT, TESS_CONTROL_SHADER_BIT, and TESS_EVALUATION_SHADER_BIT tokens refer to the conventional vertex, geometry, fragment, tessellation control and tessellation evaluation stages respectively. ActiveShaderProgram specifies the program that Uniform* commands will update. While ActiveShaderProgram allows the use of conventional Uniform* commands to update uniform variable values for separable program objects, this extension provides a preferrable interface in a set of ProgramUniform* commands that update the same uniform variables but take a parameter indicating the program object to be updated, rather than updating the currently active program object. These commands mirror those introduced in EXT_direct_state_access. While glActiveShaderProgram provides a selector for setting and querying uniform values of a program object, the glProgramUniform* commands provide a selector-free way to modify uniforms of a GLSL program object without an explicit bind. This selector-free model reduces API overhead and provides a cleaner interface for applications. Separate linking creates the possibility that certain output varyings of a shader may go unread by the subsequent shader inputting varyings. In this case, the output varyings are simply ignored. It is also possible input varyings from a shader may not be written as output varyings of a preceding shader. In this case, the unwritten input varying values are undefined. This extension builds on the proof-of-concept provided by EXT_separate_shader_objects which demonstrated that separate shader objects can work for GLSL. EXT_separate_shader_objects was a response to repeated requests for this functionality from 3D developers. This ARB version addresses several "loose ends" in the prior EXT extension. In particular, it allows user-defined varyings with explicitly defined locations or implicitly assigned locations. This ARB extension extends the GLSL language's use of layout qualifiers to provide cross-stage interfacing. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/separate_shader_objects.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.separate_shader_objects import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/map_buffer_alignment.py0000644000175000001440000000141712025001653022662 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.map_buffer_alignment This module customises the behaviour of the OpenGL.raw.GL.ARB.map_buffer_alignment to provide a more Python-friendly API Overview (from the spec) This extension adds a requirement to the pointer returned by MapBuffer and MapBufferRange that they provide a minimum of 64 byte alignment to support processing of the data directly with special CPU instructions like SSE and AVX. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/map_buffer_alignment.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.map_buffer_alignment import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/color_buffer_float.py0000644000175000001440000000365012025001653022353 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.color_buffer_float This module customises the behaviour of the OpenGL.raw.GL.ARB.color_buffer_float to provide a more Python-friendly API Overview (from the spec) The standard OpenGL pipeline is based on a fixed-point pipeline. While color components are nominally floating-point values in the pipeline, components are frequently clamped to the range [0,1] to accomodate the fixed-point color buffer representation and allow for fixed-point computational hardware. This extension adds pixel formats or visuals with floating-point RGBA color components and controls for clamping of color components within the pipeline. For a floating-point RGBA pixel format, the size of each float components is specified using the same attributes that are used for defining the size of fixed-point components. 32-bit floating-point components are in the standard IEEE float format. 16-bit floating-point components have 1 sign bit, 5 exponent bits, and 10 mantissa bits. Clamping control provides a way to disable certain color clamps and allow programs, and the fixed-function pipeline, to deal in unclamped colors. There are controls to modify clamping of vertex colors, clamping of fragment colors throughout the pipeline, and for pixel return data. The default state for fragment clamping is "FIXED_ONLY", which has the behavior of clamping colors for fixed-point color buffers and not clamping colors for floating-pont color buffers. Vertex colors are clamped by default. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/color_buffer_float.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.color_buffer_float import * ### END AUTOGENERATED SECTION from OpenGL.GL import glget glget.addGLGetConstant( GL_RGBA_FLOAT_MODE_ARB, (1,) )PyOpenGL-3.0.2/OpenGL/GL/ARB/get_program_binary.py0000644000175000001440000000351112025001653022365 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.get_program_binary This module customises the behaviour of the OpenGL.raw.GL.ARB.get_program_binary to provide a more Python-friendly API Overview (from the spec) This extension introduces new commands to retrieve and set the binary representation of a program object. GetProgramBinary allows an application to cache compiled and linked programs to avoid compiling and linking when used again. This may even allow the GL itself to act as an offline compiler. The resulting program binary can be reloaded into the GL via ProgramBinary. This is a very useful path for applications that wish to remain portable by shipping pure GLSL source shaders, yet would like to avoid the cost of compiling their shaders at runtime. Instead an application can supply its GLSL source shaders during first application run, or even during installation. The application then compiles and links its shaders and reads back the program binaries. On subsequent runs, only the program binaries need be supplied. ProgramBinary may also accept binaries in vendor-specific formats produced by specialized offline compilation tools. This extension does not add any such formats, but allows for them in further extensions. Though the level of optimization may not be identical -- the offline shader compiler may have the luxury of more aggressive optimization at its disposal -- program binaries generated online by the GL are interchangeable with those generated offline by an SDK tool. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/get_program_binary.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.get_program_binary import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/geometry_shader4.py0000644000175000001440000000422312025001653021761 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.geometry_shader4 This module customises the behaviour of the OpenGL.raw.GL.ARB.geometry_shader4 to provide a more Python-friendly API Overview (from the spec) ARB_geometry_shader4 defines a new shader type available to be run on the GPU, called a geometry shader. Geometry shaders are run after vertices are transformed, but prior to color clamping, flat shading and clipping. A geometry shader begins with a single primitive (point, line, triangle). It can read the attributes of any of the vertices in the primitive and use them to generate new primitives. A geometry shader has a fixed output primitive type (point, line strip, or triangle strip) and emits vertices to define a new primitive. A geometry shader can emit multiple disconnected primitives. The primitives emitted by the geometry shader are clipped and then processed like an equivalent OpenGL primitive specified by the application. Furthermore, ARB_geometry_shader4 provides four additional primitive types: lines with adjacency, line strips with adjacency, separate triangles with adjacency, and triangle strips with adjacency. Some of the vertices specified in these new primitive types are not part of the ordinary primitives, instead they represent neighboring vertices that are adjacent to the two line segment end points (lines/strips) or the three triangle edges (triangles/tstrips). These vertices can be accessed by geometry shaders and used to match up the vertices emitted by the geometry shader with those of neighboring primitives. Since geometry shaders expect a specific input primitive type, an error will occur if the application presents primitives of a different type. For example, if a geometry shader expects points, an error will occur at Begin() time, if a primitive mode of TRIANGLES is specified. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/geometry_shader4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.geometry_shader4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/shading_language_include.py0000644000175000001440000000151012025001653023473 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shading_language_include This module customises the behaviour of the OpenGL.raw.GL.ARB.shading_language_include to provide a more Python-friendly API Overview (from the spec) This extension introduces a #include GLSL directive to allow reusing the same shader text in multiple shaders and defines the semantics and syntax of the names allowed in #include directives. It also defines API mechanisms to define the named string backing a #include. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shading_language_include.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shading_language_include import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/transform_feedback2.py0000644000175000001440000000373512025001653022424 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.transform_feedback2 This module customises the behaviour of the OpenGL.raw.GL.ARB.transform_feedback2 to provide a more Python-friendly API Overview (from the spec) The EXT_transform_feedback extension allows applications to capture primitives to one or more buffer objects when transformed by the GL. This extension provides a few additional capabilities to these extensions, making transform feedback mode more useful. First, it provides transform feedback objects which encapsulate transform feedback-related state, allowing applications to replace the entire transform feedback configuration in a single bind call. Second, it provides the ability to pause and resume transform feedback operations. When transform feedback is paused, applications may render without transform feedback or may use transform feedback with different state and a different transform feedback object. When transform feedback is resumed, additional primitives are captured and appended to previously captured primitives for the object. Additionally, this extension provides the ability to draw primitives captured in transform feedback mode without querying the captured primitive count. The command DrawTransformFeedback() is equivalent to glDrawArrays(, 0, ), where is the number of vertices captured to buffer objects during the last transform feedback capture operation on the transform feedback object used. This draw operation only provides a vertex count -- it does not automatically set up vertex array state or vertex buffer object bindings, which must be done separately by the application. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/transform_feedback2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.transform_feedback2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/imaging.py0000644000175000001440000000072512025001653020132 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.imaging This module customises the behaviour of the OpenGL.raw.GL.ARB.imaging to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/imaging.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.imaging import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_buffer_object.py0000644000175000001440000000455612025001653023104 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_buffer_object This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_buffer_object to provide a more Python-friendly API Overview (from the spec) This extension provides a new texture type, called a buffer texture. Buffer textures are one-dimensional arrays of texels whose storage comes from an attached buffer object. When a buffer object is bound to a buffer texture, a format is specified, and the data in the buffer object is treated as an array of texels of the specified format. The use of a buffer object to provide storage allows the texture data to be specified in a number of different ways: via buffer object loads (BufferData), direct CPU writes (MapBuffer), framebuffer readbacks (EXT_pixel_buffer_object extension). A buffer object can also be loaded by transform feedback (NV_transform_feedback extension), which captures selected transformed attributes of vertices processed by the GL. Several of these mechanisms do not require an extra data copy, which would be required when using conventional TexImage-like entry points. Buffer textures do not support mipmapping, texture lookups with normalized floating-point texture coordinates, and texture filtering of any sort, and may not be used in fixed-function fragment processing. They can be accessed via single texel fetch operations in programmable shaders. For assembly shaders (NV_gpu_program4), the TXF instruction is used. For GLSL (EXT_gpu_shader4), a new sampler type and texel fetch function are used. While buffer textures can be substantially larger than equivalent one-dimensional textures; the maximum texture size supported for buffer textures in the initial implementation of this extension is 2^27 texels, versus 2^13 (8192) texels for otherwise equivalent one-dimensional textures. When a buffer object is attached to a buffer texture, a size is not specified; rather, the number of texels in the texture is taken by dividing the size of the buffer object by the size of each texel. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_buffer_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_env_crossbar.py0000644000175000001440000000163312025001653022764 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_env_crossbar This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_env_crossbar to provide a more Python-friendly API Overview (from the spec) This extension adds the capability to use the texture color from other texture units as sources to the COMBINE_ARB enviornment function. The ARB_texture_env_combine extension defined texture enviornment functions which could use the color from the current texture unit as a source. This extension adds the ability to use the color from any texture unit as a source. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_env_crossbar.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_env_crossbar import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/map_buffer_range.py0000644000175000001440000000345612025001653022005 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.map_buffer_range This module customises the behaviour of the OpenGL.raw.GL.ARB.map_buffer_range to provide a more Python-friendly API Overview (from the spec) ARB_map_buffer_range expands the buffer object API to allow greater performance when a client application only needs to write to a sub-range of a buffer object. To that end, this extension introduces two new buffer object features: non-serialized buffer modification and explicit sub-range flushing for mapped buffer objects. OpenGL requires that commands occur in a FIFO manner meaning that any changes to buffer objects either block until the data has been processed by the OpenGL pipeline or else create extra copies to avoid such a block. By providing a method to asynchronously modify buffer object data, an application is then able to manage the synchronization points themselves and modify ranges of data contained by a buffer object even though OpenGL might still be using other parts of it. This extension also provides a method for explicitly flushing ranges of a mapped buffer object so OpenGL does not have to assume that the entire range may have been modified. Further, it allows the application to more precisely specify its intent with respect to reading, writing, and whether the previous contents of a mapped range of interest need be preserved prior to modification. Affects ARB_vertex_buffer_object, ARB_pixel_buffer_object and OpenGL 1.5 Buffer Objects. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/map_buffer_range.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.map_buffer_range import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_env_combine.py0000644000175000001440000000254112025001653022561 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_env_combine This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_env_combine to provide a more Python-friendly API Overview (from the spec) New texture environment function COMBINE_ARB allows programmable texture combiner operations, including: REPLACE Arg0 MODULATE Arg0 * Arg1 ADD Arg0 + Arg1 ADD_SIGNED_ARB Arg0 + Arg1 - 0.5 SUBTRACT_ARB Arg0 - Arg1 INTERPOLATE_ARB Arg0 * (Arg2) + Arg1 * (1-Arg2) where Arg0, Arg1 and Arg2 are derived from PRIMARY_COLOR_ARB primary color of incoming fragment TEXTURE texture color of corresponding texture unit CONSTANT_ARB texture environment constant color PREVIOUS_ARB result of previous texture environment; on texture unit 0, this maps to PRIMARY_COLOR_ARB In addition, the result may be scaled by 1.0, 2.0 or 4.0. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_env_combine.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_env_combine import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/sampler_objects.py0000644000175000001440000000411312025001653021666 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.sampler_objects This module customises the behaviour of the OpenGL.raw.GL.ARB.sampler_objects to provide a more Python-friendly API Overview (from the spec) In unextended OpenGL textures are considered to be sets of image data (mip-chains, arrays, cube-map face sets, etc.) and sampling state (sampling mode, mip-mapping state, coordinate wrapping and clamping rules, etc.) combined into a single object. It is typical for an application to use many textures with a limited set of sampling states that are the same between them. In order to use textures in this way, an application must generate and configure many texture names, adding overhead both to applications and to implementations. Furthermore, should an application wish to sample from a texture in more than one way (with and without mip-mapping, for example) it must either modify the state of the texture or create two textures, each with a copy of the same image data. This can introduce runtime and memory costs to the application. This extension separates sampler state from texture image data. A new object type is introduced, the sampler (representing generic sampling parameters). The new sampler objects are represented by a new named type encapsulating the sampling parameters of a traditional texture object. Sampler objects may be bound to texture units to supplant the bound texture's sampling state. A single sampler may be bound to more than one texture unit simultaneously, allowing different textures to be accessed with a single set of shared sampling parameters. Also, by binding different sampler objects to texture units to which the same texture has been bound, the same texture image data may be sampled with different sampling parameters. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/sampler_objects.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.sampler_objects import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/transpose_matrix.py0000644000175000001440000000324112025001653022115 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.transpose_matrix This module customises the behaviour of the OpenGL.raw.GL.ARB.transpose_matrix to provide a more Python-friendly API Overview (from the spec) New functions and tokens are added allowing application matrices stored in row major order rather than column major order to be transferred to the OpenGL implementation. This allows an application to use standard C-language 2-dimensional arrays (m[row][col]) and have the array indices match the expected matrix row and column indexes. These arrays are referred to as transpose matrices since they are the transpose of the standard matrices passed to OpenGL. This extension adds an interface for transfering data to and from the OpenGL pipeline, it does not change any OpenGL processing or imply any changes in state representation. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/transpose_matrix.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.transpose_matrix import * ### END AUTOGENERATED SECTION for typ,arrayType in ( ('d',arrays.GLdoubleArray), ('f',arrays.GLfloatArray), ): for function in ('glLoadTransposeMatrix','glMultTransposeMatrix'): name = '%s%sARB'%(function,typ) globals()[name] = arrays.setInputArraySizeType( globals()[name], 16, arrayType, 'm', ) try: del function,name except NameError, err: pass try: del typ,arrayType except NameError, err: pass PyOpenGL-3.0.2/OpenGL/GL/ARB/fragment_shader.py0000644000175000001440000000234712025001653021652 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.fragment_shader This module customises the behaviour of the OpenGL.raw.GL.ARB.fragment_shader to provide a more Python-friendly API Overview (from the spec) This extension adds functionality to define fragment shader objects. A fragment shader object is a shader object (see the ARB_shader_objects extension) that, when attached to a program object, can be compiled and linked to produce an executable that runs on the fragment processor in OpenGL. The fragment processor is a programmable unit that replaces the OpenGL 1.4 fixed-function texturing, color sum and fog stages. This extension also defines how such an executable interacts with the fixed functionality fragment processing of OpenGL 1.4. The language used to write fragment shaders is not discussed here. That language is defined in the OpenGL Shading Language specification as the Fragment Shading Language. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/fragment_shader.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.fragment_shader import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/vertex_buffer_object.py0000644000175000001440000001445312025001653022716 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.vertex_buffer_object This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_buffer_object to provide a more Python-friendly API Overview (from the spec) This extension defines an interface that allows various types of data (especially vertex array data) to be cached in high-performance graphics memory on the server, thereby increasing the rate of data transfers. Chunks of data are encapsulated within "buffer objects", which conceptually are nothing more than arrays of bytes, just like any chunk of memory. An API is provided whereby applications can read from or write to buffers, either via the GL itself (glBufferData, glBufferSubData, glGetBufferSubData) or via a pointer to the memory. The latter technique is known as "mapping" a buffer. When an application maps a buffer, it is given a pointer to the memory. When the application finishes reading from or writing to the memory, it is required to "unmap" the buffer before it is once again permitted to use that buffer as a GL data source or sink. Mapping often allows applications to eliminate an extra data copy otherwise required to access the buffer, thereby enhancing performance. In addition, requiring that applications unmap the buffer to use it as a data source or sink ensures that certain classes of latent synchronization bugs cannot occur. Although this extension only defines hooks for buffer objects to be used with OpenGL's vertex array APIs, the API defined in this extension permits buffer objects to be used as either data sources or sinks for any GL command that takes a pointer as an argument. Normally, in the absence of this extension, a pointer passed into the GL is simply a pointer to the user's data. This extension defines a mechanism whereby this pointer is used not as a pointer to the data itself, but as an offset into a currently bound buffer object. The buffer object ID zero is reserved, and when buffer object zero is bound to a given target, the commands affected by that buffer binding behave normally. When a nonzero buffer ID is bound, then the pointer represents an offset. In the case of vertex arrays, this extension defines not merely one binding for all attributes, but a separate binding for each individual attribute. As a result, applications can source their attributes from multiple buffers. An application might, for example, have a model with constant texture coordinates and variable geometry. The texture coordinates might be retrieved from a buffer object with the usage mode "STATIC_DRAW", indicating to the GL that the application does not expect to update the contents of the buffer frequently or even at all, while the vertices might be retrieved from a buffer object with the usage mode "STREAM_DRAW", indicating that the vertices will be updated on a regular basis. In addition, a binding is defined by which applications can source index data (as used by DrawElements, DrawRangeElements, and MultiDrawElements) from a buffer object. On some platforms, this enables very large models to be rendered with no more than a few small commands to the graphics device. It is expected that a future extension will allow sourcing pixel data from and writing pixel data to a buffer object. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.vertex_buffer_object import * ### END AUTOGENERATED SECTION from OpenGL.lazywrapper import lazy from OpenGL.arrays import ArrayDatatype glDeleteBuffersARB = arrays.setInputArraySizeType( glDeleteBuffersARB, None, arrays.GLuintArray, 'buffers', ) glGenBuffersARB = wrapper.wrapper( glGenBuffersARB ).setOutput( 'buffers', lambda n: (n,), 'n', ) def _sizeOfArrayInput( pyArgs, index, wrapper ): return ( arrays.ArrayDatatype.arrayByteCount( pyArgs[index] ) ) @lazy( glBufferDataARB ) def glBufferDataARB( baseOperation, target, size, data=None, usage=None ): """Copy given data into the currently bound vertex-buffer-data object target -- the symbolic constant indicating which buffer type is intended size -- if provided, the count-in-bytes of the array data -- data-pointer to be used, may be None to initialize without copying over a data-set usage -- hint to the driver as to how to set up access to the buffer Note: parameter "size" can be omitted, which makes the signature glBufferData( target, data, usage ) instead of: glBufferData( target, size, data, usage ) """ if usage is None: usage = data data = size size = None data = ArrayDatatype.asArray( data ) if size is None: size = ArrayDatatype.arrayByteCount( data ) return baseOperation( target, size, data, usage ) @lazy( glBufferSubDataARB ) def glBufferSubDataARB( baseOperation, target, offset, size=None, data=None ): """Copy subset of data into the currently bound vertex-buffer-data object target -- the symbolic constant indicating which buffer type is intended offset -- offset from beginning of buffer at which to copy bytes size -- the count-in-bytes of the array (if an int/long), if None, calculate size from data, if an array and data is None, use as data (i.e. the parameter can be omitted and calculated) data -- data-pointer to be used, may be None to initialize without copying over a data-set Note that if size is not an int/long it is considered to be data *iff* data is None """ if size is None: if data is None: raise TypeError( "Need data or size" ) elif (not isinstance( size, (int,long))) and (data is None): data = size size = None try: if size is not None: size = int( size ) except TypeError, err: if data is not None: raise TypeError( """Expect an integer size *or* a data-array, not both""" ) data = size size = None data = ArrayDatatype.asArray( data ) if size is None: size = ArrayDatatype.arrayByteCount( data ) return baseOperation( target, offset, size, data ) PyOpenGL-3.0.2/OpenGL/GL/ARB/invalidate_subdata.py0000644000175000001440000000463212025001653022343 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.invalidate_subdata This module customises the behaviour of the OpenGL.raw.GL.ARB.invalidate_subdata to provide a more Python-friendly API Overview (from the spec) This extension adds a mechanism for an application to tell the GL that the previous contents of a subregion of an image or a range of a buffer may be invalidated. GL implementations often include several memory spaces, each with distinct performance characteristics, and the implementations transparently move allocations between memory spaces. With this extension, an application can tell the GL that the contents of a texture or buffer are no longer needed, and the implementation can avoid transferring the data unnecessarily. Examples of when this may be useful include: (1) invalidating a multisample texture after resolving it into a non- multisample texture. (2) invalidating depth/stencil buffers after using them to generate a color buffer. (3) invalidating a subregion of a framebuffer rather than clearing it before rendering to it, when the whole subregion will be overwritten. (4) invalidating dynamically generated data (e.g. textures written by FBO rendering or CopyTexSubImage, buffers written by transform feedback, etc.) after it is no longer needed but before the end of the frame. It is expected that the situations in which the GL will take advantage of this knowledge and achieve increased performance as a result of its use will be implementation-dependent. The first three examples may show benefit on tiled renderers where some data won't need to be copied into or out of on-chip memory. The fourth example may show a benefit in multi- GPU systems where some data won't need to be copied between GPUs. This extension is a superset of the EXT_discard_framebuffer extension with the following additions: - The parameters to InvalidateFramebufferEXT are extended for MRT support and Desktop-GL-only buffer enums. - New functions to invalidate a region of a texture image or buffer object data store. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/invalidate_subdata.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.invalidate_subdata import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/sync.py0000644000175000001440000000515512025001653017475 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.sync This module customises the behaviour of the OpenGL.raw.GL.ARB.sync to provide a more Python-friendly API Overview (from the spec) This extension introduces the concept of "sync objects". Sync objects are a synchronization primitive - a representation of events whose completion status can be tested or waited upon. One specific type of sync object, the "fence sync object", is supported in this extension, and additional types can easily be added in the future. Fence sync objects have corresponding fences, which are inserted into the OpenGL command stream at the time the sync object is created. A sync object can be queried for a given condition. The only condition supported for fence sync objects is completion of the corresponding fence command. Fence completion allows applications to request a partial Finish, wherein all commands prior to the fence will be forced to complete before control is returned to the calling process. These new mechanisms allow for synchronization between the host CPU and the GPU, which may be accessing the same resources (typically memory), as well as between multiple GL contexts bound to multiple threads in the host CPU. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/sync.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.sync import * ### END AUTOGENERATED SECTION from OpenGL.constants import GLint from OpenGL.arrays import GLintArray from OpenGL.lazywrapper import lazy def glGetSync( sync, pname, bufSize=1,length=None,values=None ): """Wrapper around glGetSynciv that auto-allocates buffers sync -- the GLsync struct pointer (see glGetSynciv) pname -- constant to retrieve (see glGetSynciv) bufSize -- defaults to 1, maximum number of items to retrieve, currently all constants are defined to return a single value length -- None or a GLint() instance (ONLY!), must be a byref() capable object with a .value attribute which retrieves the set value values -- None or an array object, if None, will be a default return-array-type of length bufSize returns values[:length.value], i.e. an array with the values set by the call, currently always a single-value array. """ if values is None: values = GLintArray.zeros( (bufSize,) ) if length is None: length = GLint() glGetSynciv( sync, pname, bufSize, length, values ) written = length.value return values[:written] PyOpenGL-3.0.2/OpenGL/GL/ARB/shading_language_420pack.py0000644000175000001440000000432312025001653023221 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.shading_language_420pack This module customises the behaviour of the OpenGL.raw.GL.ARB.shading_language_420pack to provide a more Python-friendly API Overview (from the spec) This is a language feature only extension formed from changes made to version 4.20 of GLSL. It includes: * Add line-continuation using '\', as in C++. * Change from ASCII to UTF-8 for the language character set and also allow any characters inside comments. * Allow implicit conversions of return values to the declared type of the function. * The *const* keyword can be used to declare variables within a function body with initializer expressions that are not constant expressions. * Qualifiers on variable declarations no longer have to follow a strict order. The layout qualifier can be used multiple times, and multiple parameter qualifiers can be used. However, this is not as straightforward as saying declarations have arbitrary lists of initializers. Typically, one qualifier from each class of qualifiers is allowed, so care is now taken to classify them and say so. Then, of these, order restrictions are removed. * Add layout qualifier identifier "binding" to bind the location of a uniform block. This requires version 1.4 of GLSL. If this extension is used with an earlier version than 1.4, this feature is not present. * Add layout qualifier identifier "binding" to bind units to sampler and image variable declarations. * Add C-style curly brace initializer lists syntax for initializers. Full initialization of aggregates is required when these are used. * Allow ".length()" to be applied to vectors and matrices, returning the number of components or columns. * Allow swizzle operations on scalars. * Built-in constants for gl_MinProgramTexelOffset and gl_MaxProgramTexelOffset. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shading_language_420pack.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.shading_language_420pack import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/window_pos.py0000644000175000001440000000445012025001653020706 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.window_pos This module customises the behaviour of the OpenGL.raw.GL.ARB.window_pos to provide a more Python-friendly API Overview (from the spec) In order to set the current raster position to a specific window coordinate with the RasterPos command, the modelview matrix, projection matrix and viewport must be set very carefully. Furthermore, if the desired window coordinate is outside of the window's bounds one must rely on a subtle side-effect of the Bitmap command in order to avoid frustum clipping. This extension provides a set of functions to directly set the current raster position in window coordinates, bypassing the modelview matrix, the projection matrix and the viewport-to-window mapping. Furthermore, clip testing is not performed, so that the current raster position is always valid. This greatly simplifies the process of setting the current raster position to a specific window coordinate prior to calling DrawPixels, CopyPixels or Bitmap. Many matrix operations can be avoided when mixing 2D and 3D rendering. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/window_pos.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.window_pos import * ### END AUTOGENERATED SECTION glWindowPos2dvARB = arrays.setInputArraySizeType( glWindowPos2dvARB, 2, arrays.GLdoubleArray, 'v', ) glWindowPos2fvARB = arrays.setInputArraySizeType( glWindowPos2fvARB, 2, arrays.GLfloatArray, 'v', ) glWindowPos2ivARB = arrays.setInputArraySizeType( glWindowPos2ivARB, 2, arrays.GLintArray, 'v', ) glWindowPos2svARB = arrays.setInputArraySizeType( glWindowPos2svARB, 2, arrays.GLshortArray, 'v', ) glWindowPos3dvARB = arrays.setInputArraySizeType( glWindowPos3dvARB, 3, arrays.GLdoubleArray, 'v', ) glWindowPos3fvARB = arrays.setInputArraySizeType( glWindowPos3fvARB, 3, arrays.GLfloatArray, 'v', ) glWindowPos3ivARB = arrays.setInputArraySizeType( glWindowPos3ivARB, 3, arrays.GLintArray, 'v', ) glWindowPos3svARB = arrays.setInputArraySizeType( glWindowPos3svARB, 3, arrays.GLshortArray, 'v', )PyOpenGL-3.0.2/OpenGL/GL/ARB/instanced_arrays.py0000644000175000001440000000336512025001653022053 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.instanced_arrays This module customises the behaviour of the OpenGL.raw.GL.ARB.instanced_arrays to provide a more Python-friendly API Overview (from the spec) A common use case in GL for some applications is to be able to draw the same object, or groups of similar objects that share vertex data, primitive count and type, multiple times. This extension provides a means of accelerating such use cases while restricting the number of API calls, and keeping the amount of duplicate data to a minimum. In particular, this extension specifies an alternative to the read-only shader variable introduced by ARB_draw_instanced. It uses the same draw calls introduced by that extension, but redefines them so that a vertex shader can instead use vertex array attributes as a source of instance data. This extension introduces an array "divisor" for generic vertex array attributes, which when non-zero specifies that the attribute is "instanced." An instanced attribute does not advance per-vertex as usual, but rather after every conceptual draw calls. (Attributes which aren't instanced are repeated in their entirety for every conceptual draw call.) By specifying transform data in an instanced attribute or series of instanced attributes, vertex shaders can, in concert with the instancing draw calls, draw multiple instances of an object with one draw call. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/instanced_arrays.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.instanced_arrays import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/conservative_depth.py0000644000175000001440000000242512025001653022412 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.conservative_depth This module customises the behaviour of the OpenGL.raw.GL.ARB.conservative_depth to provide a more Python-friendly API Overview (from the spec) There is a common optimization for hardware accelerated implementation of OpenGL which relies on an early depth test to be run before the fragment shader so that the shader evaluation can be skipped if the fragment ends up being discarded because it is occluded. This optimization does not affect the final rendering, and is typically possible when the fragment does not change the depth programmatically. (i.e.: it does not write to the built-in gl_FragDepth output). There are, however a class of operations on the depth in the shader which could still be performed while allowing the early depth test to operate. This extension allows the application to pass enough information to the GL implementation to activate such optimizations safely. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/conservative_depth.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.conservative_depth import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_view.py0000644000175000001440000000327312025001653021252 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_view This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_view to provide a more Python-friendly API Overview (from the spec) This extension allows a texture's data store to be "viewed" in multiple ways, either reinterpreting the data format/type as a different format/ type with the same element size, or by clamping the mipmap level range or array slice range. The goals of this extension are to avoid having these alternate views become shared mutable containers of shared mutable objects, and to add the views to the API in a minimally invasive way. No new object types are added. Conceptually, a texture object is split into the following parts: - A data store holding texel data. - State describing which portions of the data store to use, and how to interpret the data elements. - An embedded sampler object. - Various other texture parameters. With this extension, multiple textures can share a data store and have different state describing which portions of the data store to use and how to interpret the data elements. The data store is refcounted and not destroyed until the last texture sharing it is deleted. This extension leverages the ARB_texture_storage concept of an "immutable texture". Views can only be created of textures created with TexStorage. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_view.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_view import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/compressed_texture_pixel_storage.py0000644000175000001440000000355712025001653025376 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.compressed_texture_pixel_storage This module customises the behaviour of the OpenGL.raw.GL.ARB.compressed_texture_pixel_storage to provide a more Python-friendly API Overview (from the spec) This extension expands the functionality of the PixelStore modes to allow UNPACK_ROW_LENGTH, UNPACK_SKIP_ROWS, UNPACK_SKIP_PIXELS, UNPACK_IMAGE_HEIGHT and UNPACK_SKIP_IMAGES to affect the operation of CompressedTexImage*D and CompressedTexSubImage*D. Similarly, it also allows PACK_ROW_LENGTH, PACK_SKIP_ROWS, PACK_SKIP_PIXELS, PACK_IMAGE_HEIGHT and PACK_SKIP_IMAGES to affect the operation of GetCompressedTexImage*D. This allows data to be transferred to or from a specified sub-rectangle of a larger compressed image. This extension is designed primarily to support compressed image formats with fixed-size blocks. To use this new mechanism, an application should program new parameters UNPACK_COMPRESSED_BLOCK_ {WIDTH,HEIGHT,DEPTH,SIZE} to indicate the number of texels in each dimension of the fixed-size block as well as the number of bytes consumed by each block. These parameters, in addition to the existing PixelStore parameters, are used to identify a collection of bytes in client memory or a buffer object's data store to use as compressed texture data. This operation is unlikely to have the desired results if the client programs a block size inconsistent with the underlying compressed image format, or if the compressed image format has variable-sized blocks. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/compressed_texture_pixel_storage.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.compressed_texture_pixel_storage import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/framebuffer_object_DEPRECATED.py0000644000175000001440000000105512025001653024006 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.framebuffer_object_DEPRECATED This module customises the behaviour of the OpenGL.raw.GL.ARB.framebuffer_object_DEPRECATED to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/framebuffer_object_DEPRECATED.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.framebuffer_object_DEPRECATED import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/provoking_vertex.py0000644000175000001440000000341712025001653022133 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.provoking_vertex This module customises the behaviour of the OpenGL.raw.GL.ARB.provoking_vertex to provide a more Python-friendly API Overview (from the spec) This extension provides an alternative provoking vertex convention for rendering lines, triangles, and (optionally depending on the implementation) quads. The provoking vertex of a primitive is the vertex that determines the constant primary and secondary colors when flat shading is enabled. In OpenGL, the provoking vertex for triangle, quad, line, and (trivially) point primitives is the last vertex used to assemble the primitive. The polygon primitive is an exception in OpenGL where the first vertex of a polygon primitive determines the color of the polygon, even if actually broken into triangles and/or quads. See section 2.14.7 (Flatshading) of the OpenGL 2.1 specification, particularly Table 2.12 for more details. Alternatively the provoking vertex could be the first vertex of the primitive. Other APIs with flat-shading functionality such as Reality Lab and Direct3D have adopted the "first vertex of the primitive" convention to determine the provoking vertex. However, these APIs lack quads so do not have a defined provoking vertex convention for quads. The motivation for this extension is to allow applications developed for APIs with a "first vertex of the primitive" provoking vertex to be easily converted to OpenGL. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/provoking_vertex.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.provoking_vertex import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/program_interface_query.py0000644000175000001440000000525012025001653023431 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.program_interface_query This module customises the behaviour of the OpenGL.raw.GL.ARB.program_interface_query to provide a more Python-friendly API Overview (from the spec) This extension provides a single unified set of query commands that can be used by applications to determine properties of various interfaces and resources used by program objects to communicate with application code, fixed-function OpenGL pipeline stages, and other programs. In unextended OpenGL 4.2, there is a separate set of query commands for each different type of interface or resource used by the program. These different sets of queries are structured nearly identically, but the queries for some interfaces have limited capability (e.g., there is no ability to enumerate fragment shader outputs). With the single set of query commands provided by this extension, a consistent set of queries is available for all interfaces, and a new interface can be added without having to introduce a completely new set of query commands. These queries are intended to provide a superset of the capabilities provided by similar queries in OpenGL 4.2, and should allow for the deprecation of the existing queries. This extension defines two terms: interfaces and active resources. Each interface of a program object provides a way for the program to communicate with application code, fixed-function OpenGL pipeline stages, and other programs. Examples of interfaces for a program object include inputs (receiving values from vertex attributes or outputs of other programs), outputs (sending values to other programs or per-fragment operations), uniforms (receiving values from API calls), uniform blocks (receiving values from bound buffer objects), subroutines and subroutine uniforms (receiving API calls to indicate functions to call during program execution), and atomic counter buffers (holding values to be manipulated by atomic counter shader functions). Each interface of a program has a set of active resources used by the program. For example, the resources of a program's input interface includes all active input variables used by the first stage of the program. The resources of a program's uniform block interface consists of the set of uniform blocks with at least one member used by any shader in the program. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/program_interface_query.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.program_interface_query import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/transform_feedback_instanced.py0000644000175000001440000000217512025001653024367 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.transform_feedback_instanced This module customises the behaviour of the OpenGL.raw.GL.ARB.transform_feedback_instanced to provide a more Python-friendly API Overview (from the spec) Multiple instances of geometry may be specified to the GL by calling functions such as DrawArraysInstanced and DrawElementsInstanced. Further, the results of a transform feedback operation may be returned to the GL by calling DrawTransformFeedback, or DrawTransformFeedbackStream. However, it is not presently possible to draw multiple instances of data transform feedback without using a query and the resulting round trip from server to client. This extension adds functionality to draw multiple instances of the result of a transform feedback operation. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/transform_feedback_instanced.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.transform_feedback_instanced import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/draw_indirect.py0000644000175000001440000000243612025001653021336 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.draw_indirect This module customises the behaviour of the OpenGL.raw.GL.ARB.draw_indirect to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism for supplying the arguments to a DrawArraysInstanced or DrawElementsInstancedBaseVertex from buffer object memory. This is not particularly useful for applications where the CPU knows the values of the arguments beforehand, but is helpful when the values will be generated on the GPU through any mechanism that can write to a buffer object including image stores, atomic counters, or compute interop. This allows the GPU to consume these arguments without a round- trip to the CPU or the expensive synchronization that would involve. This is similar to the DrawTransformFeedbackEXT command from EXT_transform_feedback2, but offers much more flexibility in both generating the arguments and in the type of Draws that can be accomplished. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/draw_indirect.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.draw_indirect import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_cube_map_array.py0000644000175000001440000000355212025001653023251 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_cube_map_array This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_cube_map_array to provide a more Python-friendly API Overview (from the spec) The GL_EXT_texture_array extension, and subsequently OpenGL 3.0 have introduced the concept of one- and two-dimensional array textures. An array texture is an ordered set of images with the same size and format. Each image in an array texture has a unique level. This extension expands texture array support to include cube map textures. A cube map array texture is a 2-dimensional array texture that may contain many cube map layers. Each cube map layer is a unique cube map image set. Images in a cube map array have the same size and format limitations as one- and two-dimensional array textures. A cube map array texture is specified using TexImage3D in a similar manner to two-dimensional arrays. Cube map array textures can be bound to a render targets of a frame buffer object as two-dimensional arrays are using FramebufferTextureLayer. When accessed by a programmable shader, a cube map array texture acts as a single unit. The "s", "t", "r" texture coordinates are treated as a regular cube map texture fetch. The "q" texture is treated as an unnormalized floating-point value identifying the layer of the cube map array texture. Cube map array texture lookups do not filter between layers. This extension does not provide for the use of cube map array textures with fixed-function fragment processing. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_cube_map_array.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_cube_map_array import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/fragment_program.py0000644000175000001440000000625712025001653022057 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.fragment_program This module customises the behaviour of the OpenGL.raw.GL.ARB.fragment_program to provide a more Python-friendly API Overview (from the spec) Unextended OpenGL mandates a certain set of configurable per- fragment computations defining texture application, texture environment, color sum, and fog operations. Several extensions have added further per-fragment computations to OpenGL. For example, extensions have defined new texture environment capabilities (ARB_texture_env_add, ARB_texture_env_combine, ARB_texture_env_dot3, ARB_texture_env_crossbar), per-fragment depth comparisons (ARB_depth_texture, ARB_shadow, ARB_shadow_ambient, EXT_shadow_funcs), per-fragment lighting (EXT_fragment_lighting, EXT_light_texture), and environment mapped bump mapping (ATI_envmap_bumpmap). Each such extension adds a small set of relatively inflexible per- fragment computations. This inflexibility is in contrast to the typical flexibility provided by the underlying programmable floating point engines (whether micro-coded fragment engines, DSPs, or CPUs) that are traditionally used to implement OpenGL's texturing computations. The purpose of this extension is to expose to the OpenGL application writer a significant degree of per-fragment programmability for computing fragment parameters. For the purposes of discussing this extension, a fragment program is a sequence of floating-point 4-component vector operations that determines how a set of program parameters (not specific to an individual fragment) and an input set of per-fragment parameters are transformed to a set of per-fragment result parameters. The per-fragment computations for standard OpenGL given a particular set of texture and fog application modes (along with any state for extensions defining per-fragment computations) is, in essence, a fragment program. However, the sequence of operations is defined implicitly by the current OpenGL state settings rather than defined explicitly as a sequence of instructions. This extension provides an explicit mechanism for defining fragment program instruction sequences for application-defined fragment programs. In order to define such fragment programs, this extension defines a fragment programming model including a floating-point 4-component vector instruction set and a relatively large set of floating-point 4-component registers. The extension's fragment programming model is designed for efficient hardware implementation and to support a wide variety of fragment programs. By design, the entire set of existing fragment programs defined by existing OpenGL per-fragment computation extensions can be implemented using the extension's fragment programming model. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/fragment_program.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.fragment_program import * ### END AUTOGENERATED SECTION from OpenGL.GL import glget glget.addGLGetConstant( GL_FRAGMENT_PROGRAM_ARB, (1,) )PyOpenGL-3.0.2/OpenGL/GL/ARB/gpu_shader_fp64.py0000644000175000001440000000536612025001653021505 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.gpu_shader_fp64 This module customises the behaviour of the OpenGL.raw.GL.ARB.gpu_shader_fp64 to provide a more Python-friendly API Overview (from the spec) This extension allows GLSL shaders to use double-precision floating-point data types, including vectors and matrices of doubles. Doubles may be used as inputs, outputs, and uniforms. The shading language supports various arithmetic and comparison operators on double-precision scalar, vector, and matrix types, and provides a set of built-in functions including: * square roots and inverse square roots; * fused floating-point multiply-add operations; * splitting a floating-point number into a significand and exponent (frexp), or building a floating-point number from a significand and exponent (ldexp); * absolute value, sign tests, various functions to round to an integer value, modulus, minimum, maximum, clamping, blending two values, step functions, and testing for infinity and NaN values; * packing and unpacking doubles into a pair of 32-bit unsigned integers; * matrix component-wise multiplication, and computation of outer products, transposes, determinants, and inverses; and * vector relational functions. Double-precision versions of angle, trigonometry, and exponential functions are not supported. Implicit conversions are supported from integer and single-precision floating-point values to doubles, and this extension uses the relaxed function overloading rules specified by the ARB_gpu_shader5 extension to resolve ambiguities. This extension provides API functions for specifying double-precision uniforms in the default uniform block, including functions similar to the uniform functions added by EXT_direct_state_access (if supported). This extension provides an "LF" suffix for specifying double-precision constants. Floating-point constants without a suffix in GLSL are treated as single-precision values for backward compatibility with versions not supporting doubles; similar constants are treated as double-precision values in the "C" programming language. This extension does not support interpolation of double-precision values; doubles used as fragment shader inputs must be qualified as "flat". Additionally, this extension does not allow vertex attributes with 64-bit components. That support is added separately by EXT_vertex_attrib_64bit. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/gpu_shader_fp64.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.gpu_shader_fp64 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_env_add.py0000644000175000001440000000154012025001653021673 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_env_add This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_env_add to provide a more Python-friendly API Overview (from the spec) New texture environment function ADD is supported with the following equation: Cv = min(1, Cf + Ct) New function may be specified by calling TexEnv with ADD token. One possible application is to add a specular highlight texture to a Gouraud-shaded primitive to emulate Phong shading, in a single pass. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_env_add.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_env_add import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/debug_label.py0000644000175000001440000000224512025001653020743 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.debug_label This module customises the behaviour of the OpenGL.raw.GL.ARB.debug_label to provide a more Python-friendly API Overview (from the spec) This extension defines a mechanism for OpenGL applications to label their objects (textures, buffers, shaders, etc.) with a descriptive string. When profiling or debugging an OpenGL application within an external or built-in (debut output API) debugger or profiler it is difficult to identify objects from their object names. Even when the object itself is viewed it can be problematic to differentiate between similar objects. Attaching a label to an object helps obviate this difficulty. The intended purpose of this is purely to improve the user experience within OpenGL development tools and application built-in profilers and debuggers. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/debug_label.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.debug_label import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/copy_image.py0000644000175000001440000000250712025001653020633 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.copy_image This module customises the behaviour of the OpenGL.raw.GL.ARB.copy_image to provide a more Python-friendly API Overview (from the spec) This extension enables efficient image data transfer between image objects (i.e. textures and renderbuffers) without the need to bind the objects or otherwise configure the rendering pipeline. This is accomplised by adding a new entry-point CopyImageSubData, which takes a named source and destination. CopyImageSubData does not perform general-purpose conversions such as scaling, resizing, blending, color-space, or format conversions. It should be considered to operate in a manner similar to a CPU memcpy, but using the GPU for the copy. CopyImageSubData supports copies between images with different internal formats, if the formats are compatible for TextureViews. CopyImageSubData also supports copying between compressed and uncompressed images if the compressed block / uncompressed texel sizes are the same. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/copy_image.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.copy_image import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_compression_rgtc.py0000644000175000001440000000270012025001653023652 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_compression_rgtc This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_compression_rgtc to provide a more Python-friendly API Overview (from the spec) This extension introduces four new block-based texture compression formats suited for unsigned and signed red and red-green textures (hence the name "rgtc" for Red-Green Texture Compression). These formats are designed to reduce the storage requirements and memory bandwidth required for red and red-green textures by a factor of 2-to-1 over conventional uncompressed luminance and luminance-alpha textures with 8-bit components (GL_LUMINANCE8 and GL_LUMINANCE8_ALPHA8). The compressed signed red-green format is reasonably suited for storing compressed normal maps. This extension uses the same compression format as the EXT_texture_compression_latc extension except the color data is stored in the red and green components rather than luminance and alpha. Representing compressed red and green components is consistent with the BC4 and BC5 compressed formats supported by DirectX 10. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_compression_rgtc.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_compression_rgtc import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/vertex_attrib_binding.py0000644000175000001440000000366012025001653023074 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.vertex_attrib_binding This module customises the behaviour of the OpenGL.raw.GL.ARB.vertex_attrib_binding to provide a more Python-friendly API Overview (from the spec) OpenGL currently supports (at least) 16 vertex attributes and 16 vertex buffer bindings, with a fixed mapping between vertex attributes and vertex buffer bindings. This extension allows the application to change the mapping between attributes and bindings, which can make it more efficient to update vertex buffer bindings for interleaved vertex formats where many attributes share the same buffer. This extension also separates the vertex binding update from the vertex attribute format update, which saves applications the effort of redundantly specifying the same format state over and over. Conceptually, this extension splits the state for generic vertex attribute arrays into: - An array of vertex buffer binding points, each of which specifies: - a bound buffer object, - a starting offset for the vertex attribute data in that buffer object, - a stride used by all attributes using that binding point, and - a frequency divisor used by all attributes using that binding point. - An array of generic vertex attribute format information records, each of which specifies: - a reference to one of the new buffer binding points above, - a component count and format, and a normalization flag for the attribute data, and - the offset of the attribute data relative to the base offset of each vertex found at the associated binding point. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/vertex_attrib_binding.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.vertex_attrib_binding import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/framebuffer_no_attachments.py0000644000175000001440000000645312025001653024076 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.framebuffer_no_attachments This module customises the behaviour of the OpenGL.raw.GL.ARB.framebuffer_no_attachments to provide a more Python-friendly API Overview (from the spec) Framebuffer objects as introduced by ARB_framebuffer_object and OpenGL 3.0 provide a generalized mechanism for rendering to off-screen surfaces. Each framebuffer object may have depth, stencil and zero or more color attachments that can be written to by the GL. The size of the framebuffer (width, height, layer count, sample count) is derived from the attachments of that framebuffer. In unextended OpenGL 4.2, it is not legal to render into a framebuffer object that has no attachments. Such a framebuffer would be considered incomplete with the FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT status. With OpenGL 4.2 and ARB_shader_image_load_store, fragment shaders are capable of doing random access writes to buffer and texture memory via image loads, stores, and atomics. This ability enables algorithms using the conventional rasterizer to generate a collection of fragments, where each fragment shader invocation will write its outputs to buffer or texture memory using image stores or atomics. Such algorithms may have no need to write color or depth values to a conventional framebuffer. However, a framebuffer with no attachments will be considered incomplete and no rasterization or fragment shader exectuion will occur. To avoid such errors, an application may be required to create an otherwise unnecessary "dummy" texture and attach it to the framebuffer (possibly with color writes masked off). If the algorithm requires the rasterizer to operate over a large number of pixels, this dummy texture will needlessly consume a significant amount of memory. This extension enables the algorithms described above to work even with a framebuffer with no attachments. Applications can specify default width, height, layer count, and sample count parameters for a framebuffer object. When a framebuffer with no attachments is bound, it will be considered complete as long as the application has specified non-zero default width and height parameters. For the purposes of rasterization, the framebuffer will be considered to have a width, height, layer count, and sample count derived from its default parameters. Framebuffers with one or more attachments are not affected by these default parameters; the size of the framebuffer will still be derived from the sizes of the attachments in that case. Additionally, this extension provides queryable implementation-dependent maximums for framebuffer width, height, layer count, and sample count, which may differ from similar limits on textures and renderbuffers. These maximums will be used to error-check the default framebuffer parameters and also permit implementations to expose the ability to rasterize to an attachment-less framebuffer larger than the maximum supported texture size. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/framebuffer_no_attachments.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.framebuffer_no_attachments import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/imaging_DEPRECATED.py0000644000175000001440000000100112025001653021576 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.imaging_DEPRECATED This module customises the behaviour of the OpenGL.raw.GL.ARB.imaging_DEPRECATED to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/imaging_DEPRECATED.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.imaging_DEPRECATED import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ARB/texture_compression.py0000644000175000001440000001062012025001653022633 0ustar mcfletchusers00000000000000'''OpenGL extension ARB.texture_compression This module customises the behaviour of the OpenGL.raw.GL.ARB.texture_compression to provide a more Python-friendly API Overview (from the spec) Compressing texture images can reduce texture memory utilization and improve performance when rendering textured primitives. This extension allows OpenGL applications to use compressed texture images by providing: (1) A framework upon which extensions providing specific compressed image formats can be built. (2) A set of generic compressed internal formats that allow applications to specify that texture images should be stored in compressed form without needing to code for specific compression formats. An application can define compressed texture images by providing a texture image stored in a specific compressed image format. This extension does not define any specific compressed image formats, but it does provide the mechanisms necessary to enable other extensions that do. An application can also define compressed texture images by providing an uncompressed texture image but specifying a compressed internal format. In this case, the GL will automatically compress the texture image using the appropriate image format. Compressed internal formats can either be specific (as above) or generic. Generic compressed internal formats are not actual image formats, but are instead mapped into one of the specific compressed formats provided by the GL (or to an uncompressed base internal format if no appropriate compressed format is available). Generic compressed internal formats allow applications to use texture compression without needing to code to any particular compression algorithm. Generic compressed formats allow the use of texture compression across a wide range of platforms with differing compression algorithms and also allow future GL implementations to substitute improved compression methods transparently. Compressed texture images can be obtained from the GL in uncompressed form by calling GetTexImage and in compressed form by calling GetCompressedTexImageARB. Queried compressed images can be saved and later reused by calling CompressedTexImage[123]DARB. Pre-compressed texture images do not need to be processed by the GL and should significantly improve texture loading performance relative to uncompressed images. This extension does not define specific compressed image formats (e.g., S3TC, FXT1), nor does it provide means to encode or decode such images. To support images in a specific compressed format, a hardware vendor would: (1) Provide a new extension defininig specific compressed and tokens for TexImage[123]D, TexSubImage[123]D, CopyTexImage[12]D, CompressedTexImage[123]DARB, CompressedTexSubImage[123]DARB, and GetCompressedTexImageARB calls. (2) Specify the encoding of compressed images of that specific format. (3) Specify a method for deriving the size of compressed images of that specific format, using the , , , parameters, and (if necessary) the compressed image itself. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/texture_compression.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ARB.texture_compression import * ### END AUTOGENERATED SECTION from OpenGL.GL import images for dimensions in (1,2,3): for function in ('glCompressedTexImage%sDARB','glCompressedTexSubImage%sDARB'): name = function%(dimensions,) globals()[ name ] = images.compressedImageFunction( globals()[ name ] ) try: del name, function except NameError, err: pass try: del dimensions except NameError, err: pass if glGetCompressedTexImageARB: def glGetCompressedTexImageARB( target, level, img=None ): """Retrieve a compressed texture image""" if img is None: length = glget.glGetTexLevelParameteriv( target, 0, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB, ) img = arrays.ArrayDataType.zeros( (length,), constants.GL_UNSIGNED_BYTE ) return glGetCompressedTexImageARB(target, 0, img); PyOpenGL-3.0.2/OpenGL/GL/INTEL/0000755000175000001440000000000012032640120016404 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/INTEL/parallel_arrays.py0000644000175000001440000000114312025001653022136 0ustar mcfletchusers00000000000000'''OpenGL extension INTEL.parallel_arrays This module customises the behaviour of the OpenGL.raw.GL.INTEL.parallel_arrays to provide a more Python-friendly API Overview (from the spec) This extension adds the ability to format vertex arrays in a way that's The official definition of this extension is available here: http://www.opengl.org/registry/specs/INTEL/parallel_arrays.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.INTEL.parallel_arrays import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/INTEL/__init__.py0000644000175000001440000000002712025001653020520 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/INTEL/texture_scissor.py0000644000175000001440000000103012025001653022221 0ustar mcfletchusers00000000000000'''OpenGL extension INTEL.texture_scissor This module customises the behaviour of the OpenGL.raw.GL.INTEL.texture_scissor to provide a more Python-friendly API Overview (from the spec) The official definition of this extension is available here: http://www.opengl.org/registry/specs/INTEL/texture_scissor.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.INTEL.texture_scissor import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/OML/0000755000175000001440000000000012032640120016160 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/OML/__init__.py0000644000175000001440000000002712025001653020274 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/OML/subsample.py0000644000175000001440000000376212025001653020541 0ustar mcfletchusers00000000000000'''OpenGL extension OML.subsample This module customises the behaviour of the OpenGL.raw.GL.OML.subsample to provide a more Python-friendly API Overview (from the spec) Many video image formats and compression techniques utilize various component subsamplings, so it is necessary to provide a mechanism to specify the up- and down-sampling of components as pixel data is drawn from and read back to the client. Though subsampled components are normally associated with the video color space, YCrCb, use of subsampling in OpenGL does not imply a specific color space. Color space conversion may be performed using other extensions or core capabilities such as the color matrix. This extension defines two new pixel storage formats representing subsampled data on the client. It is loosely based on the SGIX_subsample extension, but specifies subsampling with the data format parameter rather than pixel packing parameters. It also adds support for CYA subsampled data. When pixel data is received from the client and an unpacking upsampling mode other than PIXEL_SUBSAMPLE_NONE_OML is specified, upsampling is performed via replication, unless otherwise specified by UNPACK_RESAMPLE_OML. Similarly, when pixel data is read back to the client and a packing downsampling mode other than PIXEL_SUBSAMPLE_NONE_OML is specified, downsampling is performed via simple component decimation (point sampling), unless otherwise specified by PACK_RESAMPLE_OML. The official definition of this extension is available here: http://www.opengl.org/registry/specs/OML/subsample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.OML.subsample import * ### END AUTOGENERATED SECTION from OpenGL import images as _i _i.COMPONENT_COUNTS[ GL_FORMAT_SUBSAMPLE_24_24_OML ] = 1 # must be GL_UNSIGNED_INT_10_10_10_2 _i.COMPONENT_COUNTS[ GL_FORMAT_SUBSAMPLE_244_244_OML ] = 1 # must be GL_UNSIGNED_INT_10_10_10_2 PyOpenGL-3.0.2/OpenGL/GL/OML/interlace.py0000644000175000001440000000222412025001653020504 0ustar mcfletchusers00000000000000'''OpenGL extension OML.interlace This module customises the behaviour of the OpenGL.raw.GL.OML.interlace to provide a more Python-friendly API Overview (from the spec) This extension provides a way to interlace rows of pixels when drawing, reading, or copying pixel rectangles or texture images. In this context, interlacing means skiping over rows of pixels or texels in the destination. This is useful for dealing with video data since a single frame of video is typically composed from two images or fields: one image specifying the data for even rows of the frame and the other image specifying the data for odd rows of the frame. The functionality provided by this extension is a combination of the older SGIX_interlace and INGR_interlace_read extensions, with changes applying interlacing to texture image queries. The official definition of this extension is available here: http://www.opengl.org/registry/specs/OML/interlace.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.OML.interlace import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/OML/resample.py0000644000175000001440000000234612025001653020353 0ustar mcfletchusers00000000000000'''OpenGL extension OML.resample This module customises the behaviour of the OpenGL.raw.GL.OML.resample to provide a more Python-friendly API Overview (from the spec) This extension enhances the resampling capabilities of the OML_subsample extension. It is loosely based on the SGIX_resample extension. When converting data from subsampled to uniform sampling, upsampling may be performed by one of three methods: component replication, zero fill, or adjacent neighbor averaging. When converting data from uniform sampling to subsampled form, downsampling may be performed only by component decimation (point sampling) or averaging. Upsampling and downsampling filters other than those defined by this extension may be performed by appropriate use of convolution and other pixel transfer operations. The zero fill unpacking mode is included to assist applications wanting to define their own filters. The official definition of this extension is available here: http://www.opengl.org/registry/specs/OML/resample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.OML.resample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/IBM/0000755000175000001440000000000012032640120016140 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/IBM/texture_mirrored_repeat.py0000644000175000001440000000172612025001653023467 0ustar mcfletchusers00000000000000'''OpenGL extension IBM.texture_mirrored_repeat This module customises the behaviour of the OpenGL.raw.GL.IBM.texture_mirrored_repeat to provide a more Python-friendly API Overview (from the spec) IBM_texture_mirrored_repeat extends the set of texture wrap modes to include a mode (GL_MIRRORED_REPEAT_IBM) that effectively uses a texture map twice as large at the original image in which the additional half of the new image is a mirror image of the original image. This new mode relaxes the need to generate images whose opposite edges match by using the original image to generate a matching "mirror image". The official definition of this extension is available here: http://www.opengl.org/registry/specs/IBM/texture_mirrored_repeat.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.IBM.texture_mirrored_repeat import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/IBM/__init__.py0000644000175000001440000000002712025001653020254 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/IBM/multimode_draw_arrays.py0000644000175000001440000000200412025001653023107 0ustar mcfletchusers00000000000000'''OpenGL extension IBM.multimode_draw_arrays This module customises the behaviour of the OpenGL.raw.GL.IBM.multimode_draw_arrays to provide a more Python-friendly API Overview (from the spec) These functions behave identically to the standard OpenGL 1.1 functions glDrawArrays() and glDrawElements() except they handle multiple lists of vertices and multiple primitive modes in one call. Their main purpose is to allow one function call to render more than one primitive regardless of the primitive mode. This extension is similar to the EXT_multi_draw_arrays extension except that it accomodates the specification of a unique mode for each primitive. The official definition of this extension is available here: http://www.opengl.org/registry/specs/IBM/multimode_draw_arrays.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.IBM.multimode_draw_arrays import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/IBM/cull_vertex.py0000644000175000001440000000160012025001653021047 0ustar mcfletchusers00000000000000'''OpenGL extension IBM.cull_vertex This module customises the behaviour of the OpenGL.raw.GL.IBM.cull_vertex to provide a more Python-friendly API Overview (from the spec) IBM_cull_vertex provides a subset of the vertex culling functionality found in EXT_cull_vertex without providing a guarantee that faces will be culled because of it. EXT_cull_vertex is a technically superior solution, but the vertex culling aspect of IBM_cull_vertex provides generally useful function cheaply (without imposing the mandated culling found in EXT_cull_vertex). The official definition of this extension is available here: http://www.opengl.org/registry/specs/IBM/cull_vertex.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.IBM.cull_vertex import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/IBM/rasterpos_clip.py0000644000175000001440000000173512025001653021555 0ustar mcfletchusers00000000000000'''OpenGL extension IBM.rasterpos_clip This module customises the behaviour of the OpenGL.raw.GL.IBM.rasterpos_clip to provide a more Python-friendly API Overview (from the spec) IBM_rasterpos_clip extends the semantics of the RasterPos functions. It provides an enable that allows a raster position that would normally be clipped to be treated as a valid (albeit out-of-viewport) position. This extension allows applications to specify geometry-aligned pixel primitives that may be partially off-screen. These primitives are tested on a pixel-by-pixel basis without being rejected completely because of an invalid raster position. The official definition of this extension is available here: http://www.opengl.org/registry/specs/IBM/rasterpos_clip.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.IBM.rasterpos_clip import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/IBM/vertex_array_lists.py0000644000175000001440000000470612025001653022456 0ustar mcfletchusers00000000000000'''OpenGL extension IBM.vertex_array_lists This module customises the behaviour of the OpenGL.raw.GL.IBM.vertex_array_lists to provide a more Python-friendly API Overview (from the spec) This extension introduces seven (7) new functions that set the vertex array pointers. However, instead of a single pointer, these functions provide a list of array pointers that can be used by the EXT_multi_draw_arrays and IBM_multimode_draw_arrays extension functions to draw from multiple of vertex arrays. The first primitive will use the first array in the list, the second primitive will use the second array in the list, and so forth. If a glDrawArray, DrawElements, or DrawRangeElements function is used, then only the first vertex array in the list is used. When a vertex array list is specified, only the list pointer is kept by the underlying OpenGL function. Therefore, the list must be staticly defined for the entire duration of its usage, much in the same manner as the vertex arrays themselves. Also note that the list function can therefore also be used to change array pointers without making a OpenGL API function call. A value of zero (0) can be used to force all primitives of a multi-vertex array to use only the first vertex array in the list. The parameter of the list pointer functions differs from that of the non-list vertex array pointer functions in that 1) both negative and positive strides are accepted thusly allowing vertex lists to be rendered in reverse order; 2) a of zero (0) results in no stride and can be used to specify a single vertex attribute for each vertex of the primitive. These new functions are a superset of the standard OpenGL 1.2 vertex array (non-list) pointer functions and share common state. Therefore, the list pointer and non-list pointer functions can be used interchangably. New queries are provided by this extension so that ZAPdb can be extended to query the list pointer state whenever a vertex array function is traced. The pointer returned by a query of *_ARRAY_POINTER returns the first entry in the array list. The official definition of this extension is available here: http://www.opengl.org/registry/specs/IBM/vertex_array_lists.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.IBM.vertex_array_lists import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/0000755000175000001440000000000012032640120016054 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/NV/texture_shader2.py0000644000175000001440000000225512025001653021546 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texture_shader2 This module customises the behaviour of the OpenGL.raw.GL.NV.texture_shader2 to provide a more Python-friendly API Overview (from the spec) This extension extends the NV_texture_shader functionality to support texture shader operations for 3D textures. See the NV_texture_shader extension for information about the texture shader operational model. The two new texture shader operations are: 22. TEXTURE_3D - Accesses a 3D texture via (s/q,t/q,r/q). 23. DOT_PRODUCT_TEXTURE_3D_NV - When preceded by two DOT_PRODUCT_NV programs in the previous two texture shader stages, computes a third similar dot product and composes the three dot products into (s,t,r) texture coordinate set to access a 3D non-projective texture. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texture_shader2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texture_shader2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/conditional_render.py0000644000175000001440000000372412025001653022302 0ustar mcfletchusers00000000000000'''OpenGL extension NV.conditional_render This module customises the behaviour of the OpenGL.raw.GL.NV.conditional_render to provide a more Python-friendly API Overview (from the spec) This extension provides support for conditional rendering based on the results of an occlusion query. This mechanism allows an application to potentially reduce the latency between the completion of an occlusion query and the rendering commands depending on its result. It additionally allows the decision of whether to render to be made without application intervention. This extension defines two new functions, BeginConditionalRenderNV and EndConditionalRenderNV, between which rendering commands may be discarded based on the results of an occlusion query. If the specified occlusion query returns a non-zero value, rendering commands between these calls are executed. If the occlusion query returns a value of zero, all rendering commands between the calls are discarded. If the occlusion query results are not available when BeginConditionalRenderNV is executed, the parameter specifies whether the GL should wait for the query to complete or should simply render the subsequent geometry unconditionally. Additionally, the extension provides a set of "by region" modes, allowing for implementations that divide rendering work by screen regions to perform the conditional query test on a region-by-region basis without checking the query results from other regions. Such a mode is useful for cases like split-frame SLI, where a frame is divided between multiple GPUs, each of which has its own occlusion query hardware. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/conditional_render.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.conditional_render import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/present_video.py0000644000175000001440000000244712025001653021307 0ustar mcfletchusers00000000000000'''OpenGL extension NV.present_video This module customises the behaviour of the OpenGL.raw.GL.NV.present_video to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism for displaying textures and renderbuffers on auxiliary video output devices. It allows an application to specify separate buffers for the individual fields used with interlaced output. It also provides a way to present frames or field pairs simultaneously in two separate video streams. It also allows an application to request when images should be displayed, and to obtain feedback on exactly when images are actually first displayed. This specification attempts to avoid language that would tie it to any particular hardware or vendor. However, it should be noted that it has been designed specifically for use with NVIDIA SDI products and the features and limitations of the spec compliment those of NVIDIA's line of SDI video output devices. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/present_video.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.present_video import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texture_compression_vtc.py0000644000175000001440000000157012025001653023432 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texture_compression_vtc This module customises the behaviour of the OpenGL.raw.GL.NV.texture_compression_vtc to provide a more Python-friendly API Overview (from the spec) This extension adds support for the VTC 3D texture compression formats, which are analogous to the S3TC texture compression formats, with the addition of some retiling in the Z direction. VTC has the same compression ratio as S3TC and uses 4x4x1, 4x4x2, (4x4x3 when non-power-of-two textures are supported), or 4x4x4 blocks. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texture_compression_vtc.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texture_compression_vtc import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_program.py0000644000175000001440000000605712025001653021506 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_program This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_program to provide a more Python-friendly API Overview (from the spec) Unextended OpenGL mandates a certain set of configurable per-vertex computations defining vertex transformation, texture coordinate generation and transformation, and lighting. Several extensions have added further per-vertex computations to OpenGL. For example, extensions have defined new texture coordinate generation modes (ARB_texture_cube_map, NV_texgen_reflection, NV_texgen_emboss), new vertex transformation modes (EXT_vertex_weighting), new lighting modes (OpenGL 1.2's separate specular and rescale normal functionality), several modes for fog distance generation (NV_fog_distance), and eye-distance point size attenuation (EXT_point_parameters). Each such extension adds a small set of relatively inflexible per-vertex computations. This inflexibility is in contrast to the typical flexibility provided by the underlying programmable floating point engines (whether micro-coded vertex engines, DSPs, or CPUs) that are traditionally used to implement OpenGL's per-vertex computations. The purpose of this extension is to expose to the OpenGL application writer a significant degree of per-vertex programmability for computing vertex parameters. For the purposes of discussing this extension, a vertex program is a sequence of floating-point 4-component vector operations that determines how a set of program parameters (defined outside of OpenGL's begin/end pair) and an input set of per-vertex parameters are transformed to a set of per-vertex output parameters. The per-vertex computations for standard OpenGL given a particular set of lighting and texture coordinate generation modes (along with any state for extensions defining per-vertex computations) is, in essence, a vertex program. However, the sequence of operations is defined implicitly by the current OpenGL state settings rather than defined explicitly as a sequence of instructions. This extension provides an explicit mechanism for defining vertex program instruction sequences for application-defined vertex programs. In order to define such vertex programs, this extension defines a vertex programming model including a floating-point 4-component vector instruction set and a relatively large set of floating-point 4-component registers. The extension's vertex programming model is designed for efficient hardware implementation and to support a wide variety of vertex programs. By design, the entire set of existing vertex programs defined by existing OpenGL per-vertex computation extensions can be implemented using the extension's vertex programming model. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_program.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_program import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/pixel_data_range.py0000644000175000001440000000664112025001653021727 0ustar mcfletchusers00000000000000'''OpenGL extension NV.pixel_data_range This module customises the behaviour of the OpenGL.raw.GL.NV.pixel_data_range to provide a more Python-friendly API Overview (from the spec) The vertex array range extension is intended to improve the efficiency of OpenGL vertex arrays. OpenGL vertex arrays' coherency model and ability to access memory from arbitrary locations in memory prevented implementations from using DMA (Direct Memory Access) operations. Many image-intensive applications, such as those that use dynamically generated textures, face similar problems. These applications would like to be able to sustain throughputs of hundreds of millions of pixels per second through DrawPixels and hundreds of millions of texels per second through TexSubImage. However, the same restrictions that limited vertex throughput also limit pixel throughput. By the time that any pixel operation that reads data from user memory returns, OpenGL requires that it must be safe for the application to start using that memory for a different purpose. This coherency model prevents asynchronous DMA transfers directly out of the user's buffer. There are also no restrictions on the pointer provided to pixel operations or on the size of the data. To facilitate DMA implementations, the driver needs to know in advance what region of the address space to lock down. Vertex arrays faced both of these restrictions already, but pixel operations have one additional complicating factor -- they are bidirectional. Vertex array data is always being transfered from the application to the driver and the HW, whereas pixel operations sometimes transfer data to the application from the driver and HW. Note that the types of memory that are suitable for DMA for reading and writing purposes are often different. For example, on many PC platforms, DMA pulling is best accomplished with write-combined (uncached) AGP memory, while pushing data should use cached memory so that the application can read the data efficiently once it has been read back over the AGP bus. This extension defines an API where an application can specify two pixel data ranges, which are analogous to vertex array ranges, except that one is for operations where the application is reading data (e.g. glReadPixels) and one is for operations where the application is writing data (e.g. glDrawPixels, glTexSubImage2D, etc.). Each pixel data range has a pointer to its start and a length in bytes. When the pixel data range is enabled, and if the pointer specified as the argument to a pixel operation is inside the corresponding pixel data range, the implementation may choose to asynchronously pull data from the pixel data range or push data to the pixel data range. Data pulled from outside the pixel data range is undefined, while pushing data to outside the pixel data range produces undefined results. The application may synchronize with the hardware in one of two ways: by flushing the pixel data range (or causing an implicit flush) or by using the NV_fence extension to insert fences in the command stream. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/pixel_data_range.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.pixel_data_range import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/parameter_buffer_object2.py0000644000175000001440000000437612025001653023365 0ustar mcfletchusers00000000000000'''OpenGL extension NV.parameter_buffer_object2 This module customises the behaviour of the OpenGL.raw.GL.NV.parameter_buffer_object2 to provide a more Python-friendly API Overview (from the spec) This extension builds on the NV_parameter_buffer_object extension to provide additional flexibility in sourcing data from buffer objects. The original NV_parameter_buffer_object (PaBO) extension provided the ability to bind buffer objects to a set of numbered binding points and access them in assembly programs as though they were arrays of 32-bit scalars (via the BUFFER variable type) or arrays of four-component vectors with 32-bit scalar components (via the BUFFER4 variable type). However, the functionality it provided had some significant limits on flexibility. Since any given buffer binding point could be used either as a BUFFER or BUFFER4, but not both, programs couldn't do both 32- and 128-bit fetches from a single binding point. Additionally, No support was provided for 8-, 16-, or 64-bit fetches, though they could be emulated using a larger loads, with bitfield operations and/or write masking to put components in the right places. Indexing was supported, but strides were limited to 4- and 16-byte multiples, depending on whether BUFFER or BUFFER4 is used. This new extension provides the buffer variable declaration type CBUFFER to specify a buffer that is treated as an array of bytes, rather than an array of words or vectors. The LDC instruction allows programs to extract a vector of data from a CBUFFER variable, using a size and component count specified in the opcode modifier. 1-, 2-, and 4-component fetches are supported. The LDC instruction supports byte offsets using normal array indexing mechanisms; both run-time and immediate offsets are supported. Offsets used for a buffer object fetch are required to be aligned to the size of the fetch (1, 2, 4, 8, or 16 bytes). The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/parameter_buffer_object2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.parameter_buffer_object2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/depth_buffer_float.py0000644000175000001440000000333612025001653022261 0ustar mcfletchusers00000000000000'''OpenGL extension NV.depth_buffer_float This module customises the behaviour of the OpenGL.raw.GL.NV.depth_buffer_float to provide a more Python-friendly API Overview (from the spec) This extension provides new texture internal formats whose depth components are stored as 32-bit floating-point values, rather than the normalized unsigned integers used in existing depth formats. Floating-point depth textures support all the functionality supported for fixed-point depth textures, including shadow mapping and rendering support via EXT_framebuffer_object. Floating-point depth textures can store values outside the range [0,1]. By default, OpenGL entry points taking depth values implicitly clamp the values to the range [0,1]. This extension provides new DepthClear, DepthRange, and DepthBoundsEXT entry points that allow applications to specify depth values that are not clamped. Additionally, this extension provides new packed depth/stencil pixel formats (see EXT_packed_depth_stencil) that have 64-bit pixels consisting of a 32-bit floating-point depth value, 8 bits of stencil, and 24 unused bites. A packed depth/stencil texture internal format is also provided. This extension does not provide support for WGL or GLX pixel formats with floating-point depth buffers. The existing (but not commonly used) WGL_EXT_depth_float extension could be used for this purpose. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/depth_buffer_float.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.depth_buffer_float import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/blend_square.py0000644000175000001440000000202112025001653021071 0ustar mcfletchusers00000000000000'''OpenGL extension NV.blend_square This module customises the behaviour of the OpenGL.raw.GL.NV.blend_square to provide a more Python-friendly API Overview (from the spec) It is useful to be able to multiply a number by itself in the blending stages -- for example, in certain types of specular lighting effects where a result from a dot product needs to be taken to a high power. This extension provides four additional blending factors to permit this and other effects: SRC_COLOR and ONE_MINUS_SRC_COLOR for source blending factors, and DST_COLOR and ONE_MINUS_DST_COLOR for destination blending factors. Direct3D provides capability bits for advertising these additional blend modes. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/blend_square.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.blend_square import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_program2.py0000644000175000001440000001055512025001653021566 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_program2 This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_program2 to provide a more Python-friendly API Overview (from the spec) This extension further enhances the concept of vertex programmability introduced by the NV_vertex_program extension, and extended by NV_vertex_program1_1. These extensions create a separate vertex program mode where the configurable vertex transformation operations in unextended OpenGL are replaced by a user-defined program. This extension introduces the VP2 execution environment, which extends the VP1 execution environment introduced in NV_vertex_program. The VP2 environment provides several language features not present in previous vertex programming execution environments: * Branch instructions allow a program to jump to another instruction specified in the program. * Branching support allows for up to four levels of subroutine calls/returns. * A four-component condition code register allows an application to compute a component-wise write mask at run time and apply that mask to register writes. * Conditional branches are supported, where the condition code register is used to determine if a branch should be taken. * Programmable user clipping is supported support (via the CLP0-CLP5 clip distance registers). Primitives are clipped to the area where the interpolated clip distances are greater than or equal to zero. * Instructions can perform a component-wise absolute value operation on any operand load. The VP2 execution environment provides a number of new instructions, and extends the semantics of several instructions already defined in NV_vertex_program. * ARR: Operates like ARL, except that float-to-int conversion is done by rounding. Equivalent results could be achieved (less efficiently) in NV_vertex program using an ADD/ARL sequence and a program parameter holding the value 0.5. * BRA, CAL, RET: Branch, subroutine call, and subroutine return instructions. * COS, SIN: Adds support for high-precision sine and cosine computations. * FLR, FRC: Adds support for computing the floor and fractional portion of floating-point vector components. Equivalent results could be achieved (less efficiently) in NV_vertex_program using the EXP instruction to compute the fractional portion of one component at a time. * EX2, LG2: Adds support for high-precision exponentiation and logarithm computations. * ARA: Adds pairs of components of an address register; useful for looping and other operations. * SEQ, SFL, SGT, SLE, SNE, STR: Add six new "set on" instructions, similar to the SLT and SGE instructions defined in NV_vertex_program. Equivalent results could be achieved (less efficiently) in NV_vertex_program with multiple SLT, SGE, and arithmetic instructions. * SSG: Adds a new "set sign" operation, which produces a vector holding negative one for negative components, zero for components with a value of zero, and positive one for positive components. Equivalent results could be achieved (less efficiently) in NV_vertex_program with multiple SLT, SGE, and arithmetic instructions. * The ARL instruction is extended to operate on four components instead of a single component. * All instructions that produce integer or floating-point result vectors have variants that update the condition code register based on the result vector. This extension also raises some of the resource limitations in the NV_vertex_program extension. * 256 program parameter registers (versus 96 in NV_vertex_program). * 16 temporary registers (versus 12 in NV_vertex_program). * Two four-component integer address registers (versus one single-component register in NV_vertex_program). * 256 total vertex program instructions (versus 128 in NV_vertex_program). * Including loops, programs can execute up to 64K instructions. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_program2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_program2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/evaluators.py0000644000175000001440000000667312025001653020633 0ustar mcfletchusers00000000000000'''OpenGL extension NV.evaluators This module customises the behaviour of the OpenGL.raw.GL.NV.evaluators to provide a more Python-friendly API Overview (from the spec) OpenGL evaluators provide applications with the capability to specify polynomial or rational curves and surfaces using control points relative to the Bezier basis. The curves and surfaces are then drawn by evaluating the polynomials provided at various values for the u parameter of a curve or the (u,v) parameters of a surface. A tensor product formulation is used for the surfaces. For various historical reasons, evaluators have not been particularly popular as an interface for drawing curves and surfaces. This extension proposes a new interface for surfaces that provides a number of significant enhancements to the functionality provided by the original OpenGL evaluators. Many implementations never optimized evaluators, so applications often implemented their own algorithms instead. This extension relaxes some restrictions that make it difficult to optimize evaluators. Also, new vertex attributes have been added to OpenGL through extensions, including multiple sets of texture coordinates, a secondary color, a fog coordinate, a vertex weight, and others. The extensions which added these vertex attributes never bothered to update the functionality of evaluators, since they were used so little in the first place. In turn, evaluators have become more and more out of date, making it even less likely that developers will want to use them. Most of the attributes are not a big loss, but support for multiple sets of texture coordinates would be absolutely essential to developers considering the use of evaluators. OpenGL evaluators only support rectangular patches, not triangular patches. Although triangular patches can be converted into rectangular patches, direct support for triangular patches is likely to be more efficient. The tessellation algorithm used is too inflexible for most purposes; only the number of rows and columns can be specified. Adjacent patches must then have identical numbers of rows and columns, or severe cracking will occur. Ideally, a number of subdivisions could be specified for all four sides of a rectangular patch and for all three of a triangular patch. This extension goes one step further and allows those numbers to be specified in floating-point, providing a mechanism for smoothly changing the level of detail of the surface. Meshes evaluated with EvalMesh are required to match up exactly with equivalent meshes evaluated with EvalCoord or EvalPoint. This makes it difficult or impossible to use optimizations such as forward differencing. Finally, little attention is given to some of the difficult problems that can arise when multiple patches are drawn. Depending on the way evaluators are implemented, and depending on the orientation of edges, numerical accuracy problems can cause cracks to appear between patches with the same boundary control points. This extension makes guarantees that an edge shared between two patches will match up exactly under certain conditions. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/evaluators.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.evaluators import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/gpu_shader5.py0000644000175000001440000000657612025001653020656 0ustar mcfletchusers00000000000000'''OpenGL extension NV.gpu_shader5 This module customises the behaviour of the OpenGL.raw.GL.NV.gpu_shader5 to provide a more Python-friendly API Overview (from the spec) This extension provides a set of new features to the OpenGL Shading Language and related APIs to support capabilities of new GPUs. Shaders using the new functionality provided by this extension should enable this functionality via the construct #extension GL_NV_gpu_shader5 : require (or enable) This extension was developed concurrently with the ARB_gpu_shader5 extension, and provides a superset of the features provided there. The features common to both extensions are documented in the ARB_gpu_shader5 specification; this document describes only the addition language features not available via ARB_gpu_shader5. A shader that enables this extension via an #extension directive also implicitly enables the common capabilities provided by ARB_gpu_shader5. In addition to the capabilities of ARB_gpu_shader5, this extension provides a variety of new features for all shader types, including: * support for a full set of 8-, 16-, 32-, and 64-bit scalar and vector data types, including uniform API, uniform buffer object, and shader input and output support; * the ability to aggregate samplers into arrays, index these arrays with arbitrary expressions, and not require that non-constant indices be uniform across all shader invocations; * new built-in functions to pack and unpack 64-bit integer types into a two-component 32-bit integer vector; * new built-in functions to pack and unpack 32-bit unsigned integer types into a two-component 16-bit floating-point vector; * new built-in functions to convert double-precision floating-point values to or from their 64-bit integer bit encodings; * new built-in functions to compute the composite of a set of boolean conditions a group of shader threads; * vector relational functions supporting comparisons of vectors of 8-, 16-, and 64-bit integer types or 16-bit floating-point types; and * extending texel offset support to allow loading texel offsets from regular integer operands computed at run-time, except for lookups with gradients (textureGrad*). This extension also provides additional support for processing patch primitives (introduced by ARB_tessellation_shader). ARB_tessellation_shader requires the use of a tessellation evaluation shader when processing patches, which means that patches will never survive past the tessellation pipeline stage. This extension lifts that restriction, and allows patches to proceed further in the pipeline and be used * as input to a geometry shader, using a new "patches" layout qualifier; * as input to transform feedback; * by fixed-function rasterization stages, in which case the patches are drawn as independent points. Additionally, it allows geometry shaders to read per-patch attributes written by a tessellation control shader using input variables declared with "patch in". The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/gpu_shader5.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.gpu_shader5 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texture_barrier.py0000644000175000001440000000123612025001653021642 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texture_barrier This module customises the behaviour of the OpenGL.raw.GL.NV.texture_barrier to provide a more Python-friendly API Overview (from the spec) This extension relaxes the restrictions on rendering to a currently bound texture and provides a mechanism to avoid read-after-write hazards. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texture_barrier.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texture_barrier import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/parameter_buffer_object.py0000644000175000001440000000327112025001653023274 0ustar mcfletchusers00000000000000'''OpenGL extension NV.parameter_buffer_object This module customises the behaviour of the OpenGL.raw.GL.NV.parameter_buffer_object to provide a more Python-friendly API Overview (from the spec) This extension, in conjunction with NV_gpu_program4, provides a new type of program parameter than can be used as a constant during vertex, fragment, or geometry program execution. Each program target has a set of parameter buffer binding points to which buffer objects can be attached. A vertex, fragment, or geometry program can read data from the attached buffer objects using a binding of the form "program.buffer[a][b]". This binding reads data from the buffer object attached to binding point . The buffer object attached is treated either as an array of 32-bit words or an array of four-component vectors, and the binding above reads the array element numbered . The use of buffer objects allows applications to change large blocks of program parameters at once, simply by binding a new buffer object. It also provides a number of new ways to load parameter values, including readback from the frame buffer (EXT_pixel_buffer_object), transform feedback (NV_transform_feedback), buffer object loading functions such as MapBuffer and BufferData, as well as dedicated parameter buffer update functions provided by this extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/parameter_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.parameter_buffer_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texture_env_combine4.py0000644000175000001440000000247712025001653022574 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texture_env_combine4 This module customises the behaviour of the OpenGL.raw.GL.NV.texture_env_combine4 to provide a more Python-friendly API Overview (from the spec) New texture environment function COMBINE4_NV allows programmable texture combiner operations, including ADD Arg0 * Arg1 + Arg2 * Arg3 ADD_SIGNED_EXT Arg0 * Arg1 + Arg2 * Arg3 - 0.5 where Arg0, Arg1, Arg2 and Arg3 are derived from ZERO the value 0 PRIMARY_COLOR_EXT primary color of incoming fragment TEXTURE texture color of corresponding texture unit CONSTANT_EXT texture environment constant color PREVIOUS_EXT result of previous texture environment; on texture unit 0, this maps to PRIMARY_COLOR_EXT TEXTURE_ARB texture color of the th texture unit In addition, the result may be scaled by 1.0, 2.0 or 4.0. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texture_env_combine4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texture_env_combine4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/fog_distance.py0000644000175000001440000000430712025001653021063 0ustar mcfletchusers00000000000000'''OpenGL extension NV.fog_distance This module customises the behaviour of the OpenGL.raw.GL.NV.fog_distance to provide a more Python-friendly API Overview (from the spec) Ideally, the fog distance (used to compute the fog factor as described in Section 3.10) should be computed as the per-fragment Euclidean distance to the fragment center from the eye. In practice, implementations "may choose to approximate the eye-coordinate distance from the eye to each fragment center by abs(ze). Further, [the fog factor] f need not be computed at each fragment, but may be computed at each vertex and interpolated as other data are." This extension provides the application specific control over how OpenGL computes the distance used in computing the fog factor. The extension supports three fog distance modes: "eye plane absolute", where the fog distance is the absolute planar distance from the eye plane (i.e., OpenGL's standard implementation allowance as cited above); "eye plane", where the fog distance is the signed planar distance from the eye plane; and "eye radial", where the fog distance is computed as a Euclidean distance. In the case of the eye radial fog distance mode, the distance may be computed per-vertex and then interpolated per-fragment. The intent of this extension is to provide applications with better control over the tradeoff between performance and fog quality. The "eye planar" modes (signed or absolute) are straightforward to implement with good performance, but scenes are consistently under-fogged at the edges of the field of view. The "eye radial" mode can provide for more accurate fog at the edges of the field of view, but this assumes that either the eye radial fog distance is computed per-fragment, or if the fog distance is computed per-vertex and then interpolated per-fragment, then the scene must be sufficiently tessellated. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/fog_distance.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.fog_distance import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/multisample_coverage.py0000644000175000001440000000342212031734266022654 0ustar mcfletchusers00000000000000'''OpenGL extension NV.multisample_coverage This module customises the behaviour of the OpenGL.raw.GL.NV.multisample_coverage to provide a more Python-friendly API Overview (from the spec) The ARB_multisample extension provides a mechanism for antialiasing primitives. This mechanism allows an application to request an additional buffer, the multisample buffer, that is added to the framebuffer. An application can request the number of samples per fragment that are stored in the multisample buffer. Rendering proceeds by writing color, depth, and stencil values for each sample to the multisample buffer. The results are automatically resolved to a single displayable color each time a pixel is updated. Coverage Sample Anti-Aliasing (CSAA) is an extension to multisample antialiasing. The technique separates "samples" into two types of samples. "Color samples" are samples with color, depth, and stencil information stored in the multisample buffer. "Coverage samples" include both color samples and additional samples that only provide pixel coverage information. This extension follows the example of the NV_framebuffer_multisample_coverage extension, which adds CSAA support for framebuffer objects. The base description of multisample rendering is written in terms of coverage samples and color samples. The windows system notion of "samples" (SAMPLES_ARB) is layered on top of coverage and color samples. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/multisample_coverage.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.multisample_coverage import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/occlusion_query.py0000644000175000001440000000677012025001653021667 0ustar mcfletchusers00000000000000'''OpenGL extension NV.occlusion_query This module customises the behaviour of the OpenGL.raw.GL.NV.occlusion_query to provide a more Python-friendly API Overview (from the spec) The HP_occlusion_test extension defines a mechanism whereby an application can query the visibility of an object, where "visible" means that at least one pixel passes the depth and stencil tests. The HP extension has two major shortcomings. - It returns the result as a simple GL_TRUE/GL_FALSE result, when in fact it is often useful to know exactly how many pixels passed. - It provides only a simple "stop-and-wait" model for using multiple queries. The application begins an occlusion test and ends it; then, at some later point, it asks for the result, at which point the driver must stop and wait until the result from the previous test is back before the application can even begin the next one. This is a very simple model, but its performance is mediocre when an application wishes to perform many queries, and it eliminates most of the opportunites for parallelism between the CPU and GPU. This extension solves both of those problems. It returns as its result the number of pixels that pass, and it provides an interface conceptually similar to that of NV_fence that allows applications to issue many occlusion queries before asking for the result of any one. As a result, they can overlap the time it takes for the occlusion query results to be returned with other, more useful work, such as rendering other parts of the scene or performing other computations on the CPU. There are many situations where a pixel count, rather than a boolean result, is useful. - If the visibility test is an object bounding box being used to decide whether to skip the object, sometimes it can be acceptable, and beneficial to performance, to skip an object if less than some threshold number of pixels could be visible. - Knowing the number of pixels visible in the bounding box may also help decide what level of detail a model should be drawn with. If only a few pixels are visible, a low-detail model may be acceptable. In general, this allows level-of-detail mechanisms to be slightly less ad hoc. - "Depth peeling" techniques, such as order-independent transparency, would typically like to know when to stop rendering more layers; it is difficult to come up with a way to determine a priori how many layers to use. A boolean count allows applications to stop when more layers will not affect the image at all, but this will likely be unacceptable for performance, with minimal gains to image quality. Instead, it makes more sense to stop rendering when the number of pixels goes below a threshold; this should provide better results than any of these other algorithms. - Occlusion queries can be used as a replacement for glReadPixels of the depth buffer to determine whether, say, a light source is visible for the purposes of a lens flare effect or a halo to simulate glare. Pixel counts allow you to compute the percentage of the light source that is visible, and the brightness of these effects can be modulated accordingly. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/occlusion_query.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.occlusion_query import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_program1_1.py0000644000175000001440000000334712025001653022006 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_program1_1 This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_program1_1 to provide a more Python-friendly API Overview (from the spec) This extension adds four new vertex program instructions (DPH, RCC, SUB, and ABS). This extension also supports a position-invariant vertex program option. A vertex program is position-invariant when it generates the _exact_ same homogenuous position and window space position for a vertex as conventional OpenGL transformation (ignoring vertex blending and weighting). By default, vertex programs are _not_ guaranteed to be position-invariant because there is no guarantee made that the way a vertex program might compute its homogenous position is exactly identical to the way conventional OpenGL transformation computes its homogenous positions. In a position-invariant vertex program, the homogeneous position (HPOS) is not output by the program. Instead, the OpenGL implementation is expected to compute the HPOS for position-invariant vertex programs in a manner exactly identical to how the homogenous position and window position are computed for a vertex by conventional OpenGL transformation. In this way position-invariant vertex programs guarantee correct multi-pass rendering semantics in cases where multiple passes are rendered and the second and subsequent passes use a GL_EQUAL depth test. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_program1_1.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_program1_1 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/__init__.py0000644000175000001440000000002712025001653020170 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/NV/float_buffer.py0000644000175000001440000001012312025001653021065 0ustar mcfletchusers00000000000000'''OpenGL extension NV.float_buffer This module customises the behaviour of the OpenGL.raw.GL.NV.float_buffer to provide a more Python-friendly API Overview (from the spec) This extension builds upon NV_fragment_program to provide a framebuffer and texture format that allows fragment programs to read and write unconstrained floating point data. In unextended OpenGL, most computations dealing with color or depth buffers are typically constrained to operate on values in the range [0,1]. Computational results are also typically clamped to the range [0,1]. Color, texture, and depth buffers themselves also hold values mapped to the range [0,1]. The NV_fragment_program extension provides a general computational model that supports floating-point numbers constrained only by the precision of the underlying data types. The quantites computed by fragment programs do not necessarily correspond in number or in range to conventional attributes such as RGBA colors or depth values. Because of the range and precision constraints imposed by conventional fixed-point color buffers, it may be difficult (if not impossible) to use them to implement certain multi-pass algorithms. To enhance the extended range and precision available through fragment programs, this extension provides floating-point RGBA color buffers that can be used instead of conventional fixed-point RGBA color buffers. A floating-point RGBA color buffer consists of one to four floating-point components stored in the 16- or 32-bit floating-point formats (fp16 or fp32) defined in the NV_half_float and NV_fragment_program extensions. When a floating-point color buffer is used, the results of fragment programs, as written to the "x", "y", "z", and "w" components of the o[COLR] or o[COLH] output registers, are written directly to the color buffer without any clamping or modification. Certain per-fragment operations are bypassed when rendering to floating-point color buffers. A floating-point color buffer can also be used as a texture map, either by reading back the contents and then using conventional TexImage calls, or by using the buffer directly via the ARB_render_texture extension or the EXT_framebuffer_object extension. This extension has many uses. Some possible uses include: (1) Multi-pass algorithms with arbitrary intermediate results that don't have to be artifically forced into the range [0,1]. In addition, intermediate results can be written without having to worry about out-of-range values. (2) Deferred shading algorithms where an expensive fragment program is executed only after depth testing is fully complete. Instead, a simple program is executed, which stores the parameters necessary to produce a final result. After the entire scene is rendered, a second pass is executed over the entire frame buffer to execute the complex fragment program using the results written to the floating-point color buffer in the first pass. This will save the cost of applying complex fragment programs to fragments that will not appear in the final image. (3) Use floating-point texture maps to evaluate functions with arbitrary ranges. Arbitrary functions with a finite domain can be approximated using a texture map holding sample results and piecewise linear approximation. There are several significant limitations on the use of floating-point color buffers. First, floating-point color buffers do not support frame buffer blending. Second, floating-point texture maps do not support mipmapping or any texture filtering other than NEAREST. Third, floating-point texture maps must be 2D, and must use the NV_texture_rectangle extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/float_buffer.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.float_buffer import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_program3.py0000644000175000001440000000235612025001653021567 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_program3 This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_program3 to provide a more Python-friendly API Overview (from the spec) This extension, like the NV_vertex_program2_option extension, provides additional vertex program functionality to extend the standard ARB_vertex_program language and execution environment. ARB programs wishing to use this added functionality need only add: OPTION NV_vertex_program3; to the beginning of their vertex programs. New functionality provided by this extension, above and beyond that already provided by NV_vertex_program2_option extension, includes: * texture lookups in vertex programs, * ability to push and pop address registers on the stack, * address register-relative addressing for vertex attribute and result arrays, and * a second four-component condition code. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_program3.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_program3 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_array_range2.py0000644000175000001440000000212512025001653022403 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_array_range2 This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_array_range2 to provide a more Python-friendly API Overview (from the spec) Enabling and disabling the vertex array range is specified by the original NV_vertex_array_range extension specification to flush the vertex array range implicitly. In retrospect, this semantic is extremely misconceived and creates terrible performance problems for any application that wishes to mix conventional vertex arrays with vertex arrange range-enabled vertex arrays. This extension provides a new token for enabling/disabling the vertex array range that does NOT perform an implicit vertex array range flush when the enable/disable is performed. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_array_range2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_array_range2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/shader_buffer_store.py0000644000175000001440000000362712025001653022455 0ustar mcfletchusers00000000000000'''OpenGL extension NV.shader_buffer_store This module customises the behaviour of the OpenGL.raw.GL.NV.shader_buffer_store to provide a more Python-friendly API Overview (from the spec) This extension builds upon the mechanisms added by the NV_shader_buffer_load extension to allow shaders to perform random-access reads to buffer object memory without using dedicated buffer object binding points. Instead, it allowed an application to make a buffer object resident, query a GPU address (pointer) for the buffer object, and then use that address as a pointer in shader code. This approach allows shaders to access a large number of buffer objects without needing to repeatedly bind buffers to a limited number of fixed-functionality binding points. This extension lifts the restriction from NV_shader_buffer_load that disallows writes. In particular, the MakeBufferResidentNV function now allows READ_WRITE and WRITE_ONLY access modes, and the shading language is extended to allow shaders to write through (GPU address) pointers. Additionally, the extension provides built-in functions to perform atomic memory transactions to buffer object memory. As with the shader writes provided by the EXT_shader_image_load_store extension, writes to buffer object memory using this extension are weakly ordered to allow for parallel or distributed shader execution. The EXT_shader_image_load_store extension provides mechanisms allowing for finer control of memory transaction order, and those mechanisms apply equally to buffer object stores using this extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/shader_buffer_store.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.shader_buffer_store import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/transform_feedback.py0000644000175000001440000000501212025001653022247 0ustar mcfletchusers00000000000000'''OpenGL extension NV.transform_feedback This module customises the behaviour of the OpenGL.raw.GL.NV.transform_feedback to provide a more Python-friendly API Overview (from the spec) This extension provides a new mode to the GL, called transform feedback, which records vertex attributes of the primitives processed by the GL. The selected attributes are written into buffer objects, and can be written with each attribute in a separate buffer object or with all attributes interleaved into a single buffer object. If a geometry program or shader is active, the primitives recorded are those emitted by the geometry program. Otherwise, transform feedback captures primitives whose vertex are transformed by a vertex program or shader, or by fixed-function vertex processing. In either case, the primitives captured are those generated prior to clipping. Transform feedback mode is capable of capturing transformed vertex data generated by fixed-function vertex processing, outputs from assembly vertex or geometry programs, or varying variables emitted from GLSL vertex or geometry shaders. The vertex data recorded in transform feedback mode is stored into buffer objects as an array of vertex attributes. The regular representation and the use of buffer objects allows the recorded data to be processed directly by the GL without requiring CPU intervention to copy data. In particular, transform feedback data can be used for vertex arrays (via vertex buffer objects), as the source for pixel data (via pixel buffer objects), as program constant data (via the NV_parameter_buffer_object or EXT_bindable_uniform extension), or via any other extension that makes use of buffer objects. This extension introduces new query object support to allow transform feedback mode to operate asynchronously. Query objects allow applications to determine when transform feedback results are complete, as well as the number of primitives processed and written back to buffer objects while in transform feedback mode. This extension also provides a new rasterizer discard enable, which allows applications to use transform feedback to capture vertex attributes without rendering anything. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/transform_feedback.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.transform_feedback import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_program2_option.py0000644000175000001440000000267012025001653023155 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_program2_option This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_program2_option to provide a more Python-friendly API Overview (from the spec) This extension provides additional vertex program functionality to extend the standard ARB_vertex_program language and execution environment. ARB programs wishing to use this added functionality need only add: OPTION NV_vertex_program2; to the beginning of their vertex programs. The functionality provided by this extension, which is roughly equivalent to that provided by the NV_vertex_program2 extension, includes: * general purpose dynamic branching, * subroutine calls, * data-dependent conditional write masks, * programmable user clip distances, * address registers with four components (instead of just one), * absolute value operator on scalar and swizzled operand loads, * rudimentary address register math, * SIN and COS trigonometry instructions, and * fully orthogonal "set on" instructions, including a "set sign" instruction. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_program2_option.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_program2_option import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/explicit_multisample.py0000644000175000001440000000240612025001653022671 0ustar mcfletchusers00000000000000'''OpenGL extension NV.explicit_multisample This module customises the behaviour of the OpenGL.raw.GL.NV.explicit_multisample to provide a more Python-friendly API Overview (from the spec) In traditional multisample specs, the API only allows access to the samples indirectly through methods such as coverage values and downsampled readbacks. NV_explicit_multisample adds a set of new capabilities to allow more precise control over the use of multisamples. Specifically, it adds: * A query in the API to query the location of samples within the pixel * An explicit control for the multisample sample mask to augment the control provided by SampleCoverage * A new texture target to wrap a renderbuffer and allow a restricted class of accesses to the samples * The ability to fetch a specific sample from a multisampled texture from within a shader * A program option to enable the new behavior The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/explicit_multisample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.explicit_multisample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texture_shader.py0000644000175000001440000002056312025001653021466 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texture_shader This module customises the behaviour of the OpenGL.raw.GL.NV.texture_shader to provide a more Python-friendly API Overview (from the spec) Standard OpenGL and the ARB_multitexture extension define a straightforward direct mechanism for mapping sets of texture coordinates to filtered colors. This extension provides a more functional mechanism. OpenGL's standard texturing mechanism defines a set of texture targets. Each texture target defines how the texture image is specified and accessed via a set of texture coordinates. OpenGL 1.0 defines the 1D and 2D texture targets. OpenGL 1.2 (and/or the EXT_texture3D extension) defines the 3D texture target. The ARB_texture_cube_map extension defines the cube map texture target. Each texture unit's texture coordinate set is mapped to a color using the unit's highest priority enabled texture target. This extension introduces texture shader stages. A sequence of texture shader stages provides a more flexible mechanism for mapping sets of texture coordinates to texture unit RGBA results than standard OpenGL. When the texture shader enable is on, the extension replaces the conventional OpenGL mechanism for mapping sets of texture coordinates to filtered colors with this extension's sequence of texture shader stages. Each texture shader stage runs one of 21 canned texture shader programs. These programs support conventional OpenGL texture mapping but also support dependent texture accesses, dot product texture programs, and special modes. (3D texture mapping texture shader operations are NOT provided by this extension; 3D texture mapping texture shader operations are added by the NV_texture_shader2 extension that is layered on this extension. See the NV_texture_shader2 specification.) To facilitate the new texture shader programs, this extension introduces several new texture formats and variations on existing formats. Existing color texture formats are extended by introducing new signed variants. Two new types of texture formats (beyond colors) are also introduced. Texture offset groups encode two signed offsets, and optionally a magnitude or a magnitude and an intensity. The new HILO (pronounced high-low) formats provide possibly signed, high precision (16-bit) two-component textures. Each program takes as input the stage's interpolated texture coordinate set (s,t,r,q). Each program generates two results: a shader stage result that may be used as an input to subsequent shader stage programs, and a texture unit RGBA result that becomes the texture color used by the texture unit's texture environment function or becomes the initial value for the corresponding texture register for register combiners. The texture unit RGBA result is always an RGBA color, but the shader stage result may be one of an RGBA color, a HILO value, a texture offset group, a floating-point value, or an invalid result. When both results are RGBA colors, the shader stage result and the texture unit RGBA result are usually identical (though not in all cases). Additionally, certain programs have a side-effect such as culling the fragment or replacing the fragment's depth value. The twenty-one programs are briefly described: 1. NONE - Always generates a (0,0,0,0) texture unit RGBA result. Equivalent to disabling all texture targets in conventional OpenGL. 2. TEXTURE_1D - Accesses a 1D texture via (s/q). 3. TEXTURE_2D - Accesses a 2D texture via (s/q,t/q). 4. TEXTURE_RECTANGLE_NV - Accesses a rectangular texture via (s/q,t/q). 5. TEXTURE_CUBE_MAP_ARB - Accesses a cube map texture via (s,t,r). 6. PASS_THROUGH_NV - Converts a texture coordinate (s,t,r,q) directly to a [0,1] clamped (r,g,b,a) texture unit RGBA result. 7. CULL_FRAGMENT_NV - Culls the fragment based on the whether each (s,t,r,q) is "greater than or equal to zero" or "less than zero". 8. OFFSET_TEXTURE_2D_NV - Transforms the signed (ds,dt) components of a previous texture unit by a 2x2 floating-point matrix and then uses the result to offset the stage's texture coordinates for a 2D non-projective texture. 9. OFFSET_TEXTURE_2D_SCALE_NV - Same as above except the magnitude component of the previous texture unit result scales the red, green, and blue components of the unsigned RGBA texture 2D access. 10. OFFSET_TEXTURE_RECTANGLE_NV - Similar to OFFSET_TEXTURE_2D_NV except that the texture access is into a rectangular non-projective texture. 11. OFFSET_TEXTURE_RECTANGLE_SCALE_NV - Similar to OFFSET_TEXTURE_2D_SCALE_NV except that the texture access is into a rectangular non-projective texture. 12. DEPENDENT_AR_TEXTURE_2D_NV - Converts the alpha and red components of a previous shader result into an (s,t) texture coordinate set to access a 2D non-projective texture. 13. DEPENDENT_GB_TEXTURE_2D_NV - Converts the green and blue components of a previous shader result into an (s,t) texture coordinate set to access a 2D non-projective texture. 14. DOT_PRODUCT_NV - Computes the dot product of the texture shader's texture coordinate set (s,t,r) with some mapping of the components of a previous texture shader result. The component mapping depends on the type (RGBA or HILO) and signedness of the stage's previous texture input. Other dot product texture programs use the result of this program to compose a texture coordinate set for a dependent texture access. The color result is undefined. 15. DOT_PRODUCT_TEXTURE_2D_NV - When preceded by a DOT_PRODUCT_NV program in the previous texture shader stage, computes a second similar dot product and composes the two dot products into (s,t) texture coordinate set to access a 2D non-projective texture. 16. DOT_PRODUCT_TEXTURE_RECTANGLE_NV - Similar to DOT_PRODUCT_TEXTURE_2D_NV except that the texture acces is into a rectangular non-projective texture. 17. DOT_PRODUCT_TEXTURE_CUBE_MAP_NV - When preceded by two DOT_PRODUCT_NV programs in the previous two texture shader stages, computes a third similar dot product and composes the three dot products into (s,t,r) texture coordinate set to access a cube map texture. 18. DOT_PRODUCT_REFLECT_CUBE_MAP_NV - When preceded by two DOT_PRODUCT_NV programs in the previous two texture shader stages, computes a third similar dot product and composes the three dot products into a normal vector (Nx,Ny,Nz). An eye vector (Ex,Ey,Ez) is composed from the q texture coordinates of the three stages. A reflection vector (Rx,Ry,Rz) is computed based on the normal and eye vectors. The reflection vector forms an (s,t,r) texture coordinate set to access a cube map texture. 19. DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV - Operates like DOT_PRODUCT_REFLECT_CUBE_MAP_NV except that the eye vector (Ex,Ey,Ez) is a user-defined constant rather than composed from the q coordinates of the three stages. 20. DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV - When used instead of the second DOT_PRODUCT_NV program preceding a DOT_PRODUCT_REFLECT_CUBE_MAP_NV or DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV stage, the normal vector forms an (s,t,r) texture coordinate set to access a cube map texture. 21. DOT_PRODUCT_DEPTH_REPLACE_NV - When preceded by a DOT_PRODUCT_NV program in the previous texture shader stage, computes a second similar dot product and replaces the fragment's window-space depth value with the first dot product results divided by the second. The texture unit RGBA result is (0,0,0,0). The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texture_shader.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texture_shader import * ### END AUTOGENERATED SECTION GL_OFFSET_TEXTURE_2D_BIAS_NV = GL_OFFSET_TEXTURE_BIAS_NV # alias GL_OFFSET_TEXTURE_2D_MATRIX_NV = GL_OFFSET_TEXTURE_MATRIX_NV # alias GL_OFFSET_TEXTURE_2D_SCALE_NV = GL_OFFSET_TEXTURE_SCALE_NV # alias PyOpenGL-3.0.2/OpenGL/GL/NV/shader_atomic_float.py0000644000175000001440000000251312025001653022422 0ustar mcfletchusers00000000000000'''OpenGL extension NV.shader_atomic_float This module customises the behaviour of the OpenGL.raw.GL.NV.shader_atomic_float to provide a more Python-friendly API Overview (from the spec) This extension provides GLSL built-in functions and assembly opcodes allowing shaders to perform atomic read-modify-write operations to buffer or texture memory with floating-point components. The set of atomic operations provided by this extension is limited to adds and exchanges. Providing atomic add support allows shaders to atomically accumulate the sum of floating-point values into buffer or texture memory across multiple (possibly concurrent) shader invocations. This extension provides GLSL support for atomics targeting image uniforms (if GLSL 4.20, ARB_shader_image_load_store, or EXT_shader_image_load_store is supported) or floating-point pointers (if NV_gpu_shader5 is supported). Additionally, assembly opcodes for these operations is also provided if NV_gpu_program5 is supported. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/shader_atomic_float.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.shader_atomic_float import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/half_float.py0000644000175000001440000000254712025001653020541 0ustar mcfletchusers00000000000000'''OpenGL extension NV.half_float This module customises the behaviour of the OpenGL.raw.GL.NV.half_float to provide a more Python-friendly API Overview (from the spec) This extension introduces a new storage format and data type for half-precision (16-bit) floating-point quantities. The floating-point format is very similar to the IEEE single-precision floating-point standard, except that it has only 5 exponent bits and 10 mantissa bits. Half-precision floats are smaller than full precision floats and provide a larger dynamic range than similarly-sized normalized scalar data types. This extension allows applications to use half-precision floating point data when specifying vertices or pixel data. It adds new commands to specify vertex attributes using the new data type, and extends the existing vertex array and image specification commands to accept the new data type. This storage format is also used to represent 16-bit components in the floating-point frame buffers, as defined in the NV_float_buffer extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/half_float.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.half_float import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/register_combiners.py0000644000175000001440000000747312025001653022332 0ustar mcfletchusers00000000000000'''OpenGL extension NV.register_combiners This module customises the behaviour of the OpenGL.raw.GL.NV.register_combiners to provide a more Python-friendly API Overview (from the spec) NVIDIA's next-generation graphics processor and its derivative designs support an extremely configurable mechanism know as "register combiners" for computing fragment colors. The register combiner mechanism is a significant redesign of NVIDIA's original TNT combiner mechanism as introduced by NVIDIA's RIVA TNT graphics processor. Familiarity with the TNT combiners will help the reader appreciate the greatly enhanced register combiners functionality (see the NV_texture_env_combine4 OpenGL extension specification for this background). The register combiner mechanism has the following enhanced functionality: The numeric range of combiner computations is from [-1,1] (instead of TNT's [0,1] numeric range), The set of available combiner inputs is expanded to include the secondary color, fog color, fog factor, and a second combiner constant color (TNT's available combiner inputs consist of only zero, a single combiner constant color, the primary color, texture 0, texture 1, and, in the case of combiner 1, the result of combiner 0). Each combiner variable input can be independently scaled and biased into several possible numeric ranges (TNT can only complement combiner inputs). Each combiner stage computes three distinct outputs (instead TNT's single combiner output). The output operations include support for computing dot products (TNT has no support for computing dot products). After each output operation, there is a configurable scale and bias applied (TNT's combiner operations builds in a scale and/or bias into some of its combiner operations). Each input variable for each combiner stage is fetched from any entry in a combiner register set. Moreover, the outputs of each combiner stage are written into the register set of the subsequent combiner stage (TNT could only use the result from combiner 0 as a possible input to combiner 1; TNT lacks the notion of an input/output register set). The register combiner mechanism supports at least two general combiner stages and then a special final combiner stage appropriate for applying a color sum and fog computation (TNT provides two simpler combiner stages, and TNT's color sum and fog stages are hard-wired and not subsumed by the combiner mechanism as in register combiners). The register combiners fit into the OpenGL pipeline as a rasterization processing stage operating in parallel to the traditional OpenGL texture environment, color sum, AND fog application. Enabling this extension bypasses OpenGL's existing texture environment, color sum, and fog application processing and instead use the register combiners. The combiner and texture environment state is orthogonal so modifying combiner state does not change the traditional OpenGL texture environment state and the texture environment state is ignored when combiners are enabled. OpenGL application developers can use the register combiner mechanism for very sophisticated shading techniques. For example, an approximation of Blinn's bump mapping technique can be achieved with the combiner mechanism. Additionally, multi-pass shading models that require several passes with unextended OpenGL 1.2 functionality can be implemented in several fewer passes with register combiners. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/register_combiners.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.register_combiners import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/video_capture.py0000644000175000001440000000141612025001653021265 0ustar mcfletchusers00000000000000'''OpenGL extension NV.video_capture This module customises the behaviour of the OpenGL.raw.GL.NV.video_capture to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism for streaming video data directly into texture objects and buffer objects. Applications can then display video streams in interactive 3D scenes and/or manipulate the video data using the GL's image processing capabilities. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/video_capture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.video_capture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_array_range.py0000644000175000001440000001064612025001653022330 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_array_range This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_array_range to provide a more Python-friendly API Overview (from the spec) The goal of this extension is to permit extremely high vertex processing rates via OpenGL vertex arrays even when the CPU lacks the necessary data movement bandwidth to keep up with the rate at which the vertex engine can consume vertices. CPUs can keep up if they can just pass vertex indices to the hardware and let the hardware "pull" the actual vertex data via Direct Memory Access (DMA). Unfortunately, the current OpenGL 1.1 vertex array functionality has semantic constraints that make such an approach hard. Hence, the vertex array range extension. This extension provides a mechanism for deferring the pulling of vertex array elements to facilitate DMAed pulling of vertices for fast, efficient vertex array transfers. The OpenGL client need only pass vertex indices to the hardware which can DMA the actual index's vertex data directly out of the client address space. The OpenGL 1.1 vertex array functionality specifies a fairly strict coherency model for when OpenGL extracts vertex data from a vertex array and when the application can update the in memory vertex array data. The OpenGL 1.1 specification says "Changes made to array data between the execution of Begin and the corresponding execution of End may affect calls to ArrayElement that are made within the same Begin/End period in non-sequential ways. That is, a call to ArrayElement that precedes a change to array data may access the changed data, and a call that follows a change to array data may access the original data." This means that by the time End returns (and DrawArrays and DrawElements return since they have implicit Ends), the actual vertex array data must be transferred to OpenGL. This strict coherency model prevents us from simply passing vertex element indices to the hardware and having the hardware "pull" the vertex data out (which is often long after the End for the primitive has returned to the application). Relaxing this coherency model and bounding the range from which vertex array data can be pulled is key to making OpenGL vertex array transfers faster and more efficient. The first task of the vertex array range extension is to relax the coherency model so that hardware can indeed "pull" vertex data from the OpenGL client's address space long after the application has completed sending the geometry primitives requiring the vertex data. The second problem with the OpenGL 1.1 vertex array functionality is the lack of any guidance from the API about what region of memory vertices can be pulled from. There is no size limit for OpenGL 1.1 vertex arrays. Any vertex index that points to valid data in all enabled arrays is fair game. This makes it hard for a vertex DMA engine to pull vertices since they can be potentially pulled from anywhere in the OpenGL client address space. The vertex array range extension specifies a range of the OpenGL client's address space where vertices can be pulled. Vertex indices that access any array elements outside the vertex array range are specified to be undefined. This permits hardware to DMA from finite regions of OpenGL client address space, making DMA engine implementation tractable. The extension is specified such that an (error free) OpenGL client using the vertex array range functionality could no-op its vertex array range commands and operate equivalently to using (if slower than) the vertex array range functionality. Because different memory types (local graphics memory, AGP memory) have different DMA bandwidths and caching behavior, this extension includes a window system dependent memory allocator to allocate cleanly the most appropriate memory for constructing a vertex array range. The memory allocator provided allows the application to tradeoff the desired CPU read frequency, CPU write frequency, and memory priority while still leaving it up to OpenGL implementation the exact memory type to be allocated. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_array_range.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_array_range import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/fragment_program2.py0000644000175000001440000000324712025001653022054 0ustar mcfletchusers00000000000000'''OpenGL extension NV.fragment_program2 This module customises the behaviour of the OpenGL.raw.GL.NV.fragment_program2 to provide a more Python-friendly API Overview (from the spec) This extension, like the NV_fragment_program_option extension, provides additional fragment program functionality to extend the standard ARB_fragment_program language and execution environment. ARB programs wishing to use this added functionality need only add: OPTION NV_fragment_program2; to the beginning of their fragment programs. New functionality provided by this extension, above and beyond that already provided by the NV_fragment_program_option extension, includes: * structured branching support, including data-dependent IF tests, loops supporting a fixed number of iterations, and a data-dependent loop exit instruction (BRK), * subroutine calls, * instructions to perform vector normalization, divide vector components by a scalar, and perform two-component dot products (with or without a scalar add), * an instruction to perform a texture lookup with an explicit LOD, * a loop index register for indirect access into the texture coordinate attribute array, and * a facing attribute that indicates whether the fragment is generated from a front- or back-facing primitive. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/fragment_program2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.fragment_program2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/tessellation_program5.py0000644000175000001440000001174012025001653022757 0ustar mcfletchusers00000000000000'''OpenGL extension NV.tessellation_program5 This module customises the behaviour of the OpenGL.raw.GL.NV.tessellation_program5 to provide a more Python-friendly API Overview (from the spec) This extension, in conjunction with the ARB_tessellation_shader extension, introduces a new tessellation stage to the OpenGL primitive processing pipeline. The ARB_tessellation_shader extension provides programmable shading functionality using the OpenGL Shading Language as its base; this extension provides assembly programmable shaders building on the family of assembly programmability extensions including ARB_vertex_program, ARB_fragment_program, NV_gpu_program4, and NV_geometry_program4. This extension adds a new basic primitive type, called a patch, which consists of an array of vertices plus some associated per-patch state. It also adds two new assembly program types: a tessellation control program that transforms a patch into a new patch and a tessellation evaluation program that computes the position and attributes of each vertex produced by the tesselator. When tessellation is active, it begins by running the optional tessellation control program, if enabled. This program consumes a variable-size input patch and produces a new fixed-size output patch. The output patch consists of an array of vertices, and a set of per-patch attributes. The per-patch attributes include tessellation levels that control how finely the patch will be tessellated. For each patch processed, multiple tessellation control program invocations are performed -- one per output patch vertex. Each tessellation control program invocation writes all the attributes of its corresponding output patch vertex. A tessellation control program may also read the per-vertex outputs of other tessellation control program invocations, as well as read and write shared per-patch outputs. The tessellation control program invocations for a single patch effectively run as a group. The GL automatically synchronizes threads to ensure that when executing a given instruction, all previous instructions have completed for all program invocations in the group. The tessellation primitive generator then decomposes a patch into a new set of primitives using the tessellation levels to determine how finely tessellated the output should be. The primitive generator begins with either a triangle or a quad, and splits each outer edge of the primitive into a number of segments approximately equal to the corresponding element of the outer tessellation level array. The interior of the primitive is tessellated according to elements of the inner tessellation level array. The primitive generator has three modes: TRIANGLES and QUADS split a triangular or quad-shaped patch into a set of triangles that cover the original patch; ISOLINES_NV splits a quad-shaped patch into a set of line strips spanning the patch. Each vertex generated by the tessellation primitive generator is assigned a (u,v) or (u,v,w) coordinate indicating its relative location in the subdivided triangle or quad. For each vertex produced by the tessellation primitive generator, the tessellation evaluation program is run to compute its position and other attributes of the vertex, using its (u,v) or (u,v,w) coordinate. When computing the final vertex attributes, the tessellation evaluation program can also read the attributes of any of the vertices of the patch written by the tessellation control program. Tessellation evaluation program invocations are completely independent, although all invocations for a single patch share the same collection of input vertices and per-patch attributes. The tessellator operates on vertices after they have been transformed by a vertex program or fixed-function vertex processing. The primitives generated by the tessellator are passed further down the OpenGL pipeline, where they can be used as inputs to geometry programs, transform feedback, and the rasterizer. The tessellation control and evaluation programs are both optional. If neither program type is present, the tessellation stage has no effect. If no tessellation control program is present, the input patch provided by the application is passed directly to the tessellation primitive generator, and a set of fixed tessellation level parameters (specified via the PatchParameterfv function) is used to control primitive generation. If no tessellation evaluation program is present, the output patch produced by the tessellation control program is passed as a patch to subsequent pipeline stages, where it can be consumed by geometry programs, transform feedback, or the rasterizer. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/tessellation_program5.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.tessellation_program5 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/register_combiners2.py0000644000175000001440000000357212025001653022410 0ustar mcfletchusers00000000000000'''OpenGL extension NV.register_combiners2 This module customises the behaviour of the OpenGL.raw.GL.NV.register_combiners2 to provide a more Python-friendly API Overview (from the spec) The NV_register_combiners extension provides a powerful fragment coloring mechanism. This specification extends the register combiners functionality to support more color constant values that are unique for each general combiner stage. The base register combiners functionality supports only two color constants. These two constants are available in every general combiner stage and in the final combiner. When many general combiner stages are supported, more than two unique color constants is often required. The obvious way to extend the register combiners is to add several more color constant registers. But adding new unique color constant registers is expensive for hardware implementation because every color constant register must be available as an input to any stage. In practice however, it is the total set of general combiner stages that requires more color constants, not each and every individual general combiner stage. Each individual general combiner stage typically requires only one or two color constants. By keeping two color constant registers but making these two registers contain two unique color constant values for each general combiner stage, the hardware expense of supporting multiple color constants is minimized. Additionally, this scheme scales appropriately as more general combiner stages are added. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/register_combiners2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.register_combiners2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/geometry_program4.py0000644000175000001440000000574412025001653022112 0ustar mcfletchusers00000000000000'''OpenGL extension NV.geometry_program4 This module customises the behaviour of the OpenGL.raw.GL.NV.geometry_program4 to provide a more Python-friendly API Overview (from the spec) NV_geometry_program4 defines a new type of program available to be run on the GPU, called a geometry program. Geometry programs are run on full primitives after vertices are transformed, but prior to flat shading and clipping. A geometry program begins with a single primitive - a point, line, or triangle. Quads and polygons are allowed, but are decomposed into individual triangles prior to geometry program execution. It can read the attributes of any of the vertex in the primitive and use them to generate new primitives. A geometry program has a fixed output primitive type, either a point, a line strip, or a triangle strip. It emits vertices (using the EMIT opcode) to define the output primitive. The attributes of emitted vertices are specified by writing to the same set of result bindings (e.g., "result.position") provided for vertex programs. Additionally, a geometry program can emit multiple disconnected primitives by using the ENDPRIM opcode, which is roughly equivalent to calling End and then Begin again. The primitives emitted by the geometry program are then clipped and then processed like an equivalent OpenGL primitive specified by the application. This extension provides four additional primitive types: lines with adjacency, line strips with adjacency, separate triangles with adjacency, and triangle strips with adjacency. Some of the vertices specified in these new primitive types are not part of the ordinary primitives. Instead, they represent neighboring vertices that are adjacent to the two line segment end points (lines/strips) or the three triangle edges (triangles/tstrips). These "adjacency" vertices can be accessed by geometry programs and used to match up the outputs of the geometry program with those of neighboring primitives. Additionally, geometry programs allow for layered rendering, where entire three-dimensional, cube map, or array textures (EXT_texture_array) can be bound to the current framebuffer. Geometry programs can use the "result.layer" binding to select a layer or cube map face to render to. Each primitive emitted by such a geometry program is rendered to the layer taken from its provoking vertex. Since geometry programs expect a specific input primitive type, an error will occur if the application presents primtives of a different type. For example, if an enabled geometry program expects points, an error will occur at Begin() time, if a primitive mode of TRIANGLES is specified. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/geometry_program4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.geometry_program4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/fragment_program4.py0000644000175000001440000000370412025001653022054 0ustar mcfletchusers00000000000000'''OpenGL extension NV.fragment_program4 This module customises the behaviour of the OpenGL.raw.GL.NV.fragment_program4 to provide a more Python-friendly API Overview (from the spec) This extension builds on the common assembly instruction set infrastructure provided by NV_gpu_program4, adding fragment program-specific features. This extension provides interpolation modifiers to fragment program attributes allowing programs to specify that specified attributes be flat-shaded (constant over a primitive), centroid-sampled (multisample rendering), or interpolated linearly in screen space. The set of input and output bindings provided includes all bindings supported by ARB_fragment_program. Additional input bindings are provided to determine whether fragments were generated by front- or back-facing primitives ("fragment.facing"), to identify the individual primitive used to generate the fragment ("primitive.id"), and to determine distances to user clip planes ("fragment.clip[n]"). Additionally generic input attributes allow a fragment program to receive a greater number of attributes from previous pipeline stages than possible using only the pre-defined fixed-function attributes. By and large, programs written to ARB_fragment_program can be ported directly by simply changing the program header from "!!ARBfp1.0" to "!!NVfp4.0", and then modifying instructions to take advantage of the expanded feature set. There are a small number of areas where this extension is not a functional superset of previous fragment program extensions, which are documented in the NV_gpu_program4 specification. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/fragment_program4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.fragment_program4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/point_sprite.py0000644000175000001440000000337612025001653021162 0ustar mcfletchusers00000000000000'''OpenGL extension NV.point_sprite This module customises the behaviour of the OpenGL.raw.GL.NV.point_sprite to provide a more Python-friendly API Overview (from the spec) Applications such as particle systems usually must use OpenGL quads rather than points to render their geometry, since they would like to use a custom-drawn texture for each particle, rather than the traditional OpenGL round antialiased points, and each fragment in a point has the same texture coordinates as every other fragment. Unfortunately, specifying the geometry for these quads can be quite expensive, since it quadruples the amount of geometry required, and it may also require the application to do extra processing to compute the location of each vertex. The goal of this extension is to allow such apps to use points rather than quads. When GL_POINT_SPRITE_NV is enabled, the state of point antialiasing is ignored. For each texture unit, the app can then specify whether to replace the existing texture coordinates with point sprite texture coordinates, which are interpolated across the point. Finally, the app can set a global parameter for the way to generate the R coordinate for point sprites; the R coordinate can either be zero, the input S coordinate, or the input R coordinate. This allows applications to use a 3D texture to represent a point sprite that goes through an animation, with filtering between frames, for example. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/point_sprite.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.point_sprite import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texture_rectangle.py0000644000175000001440000000370312025001653022161 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texture_rectangle This module customises the behaviour of the OpenGL.raw.GL.NV.texture_rectangle to provide a more Python-friendly API Overview (from the spec) OpenGL texturing is limited to images with power-of-two dimensions and an optional 1-texel border. NV_texture_rectangle extension adds a new texture target that supports 2D textures without requiring power-of-two dimensions. Non-power-of-two dimensioned textures are useful for storing video images that do not have power-of-two dimensions. Re-sampling artifacts are avoided and less texture memory may be required by using non-power-of-two dimensioned textures. Non-power-of-two dimensioned textures are also useful for shadow maps and window-space texturing. However, non-power-of-two dimensioned (NPOTD) textures have limitations that do not apply to power-of-two dimensioned (POT) textures. NPOTD textures may not use mipmap filtering; POTD textures support both mipmapped and non-mipmapped filtering. NPOTD textures support only the GL_CLAMP, GL_CLAMP_TO_EDGE, and GL_CLAMP_TO_BORDER_ARB wrap modes; POTD textures support GL_CLAMP_TO_EDGE, GL_REPEAT, GL_CLAMP, GL_MIRRORED_REPEAT_IBM, and GL_CLAMP_TO_BORDER. NPOTD textures do not support an optional 1-texel border; POTD textures do support an optional 1-texel border. NPOTD textures are accessed by non-normalized texture coordinates. So instead of thinking of the texture image lying in a [0..1]x[0..1] range, the NPOTD texture image lies in a [0..w]x[0..h] range. This extension adds a new texture target and related state (proxy, binding, max texture size). The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texture_rectangle.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texture_rectangle import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/shader_buffer_load.py0000644000175000001440000001135112025001653022231 0ustar mcfletchusers00000000000000'''OpenGL extension NV.shader_buffer_load This module customises the behaviour of the OpenGL.raw.GL.NV.shader_buffer_load to provide a more Python-friendly API Overview (from the spec) At a very coarse level, GL has evolved in a way that allows applications to replace many of the original state machine variables with blocks of user-defined data. For example, the current vertex state has been augmented by vertex buffer objects, fixed-function shading state and parameters have been replaced by shaders/programs and constant buffers, etc.. Applications switch between coarse sets of state by binding objects to the context or to other container objects (e.g. vertex array objects) instead of manipulating state variables of the context. In terms of the number of GL commands required to draw an object, modern applications are orders of magnitude more efficient than legacy applications, but this explosion of objects bound to other objects has led to a new bottleneck - pointer chasing and CPU L2 cache misses in the driver, and general L2 cache pollution. This extension provides a mechanism to read from a flat, 64-bit GPU address space from programs/shaders, to query GPU addresses of buffer objects at the API level, and to bind buffer objects to the context in such a way that they can be accessed via their GPU addresses in any shader stage. The intent is that applications can avoid re-binding buffer objects or updating constants between each Draw call and instead simply use a VertexAttrib (or TexCoord, or InstanceID, or...) to "point" to the new object's state. In this way, one of the cheapest "state" updates (from the CPU's point of view) can be used to effect a significant state change in the shader similarly to how a pointer change may on the CPU. At the same time, this relieves the limits on how many buffer objects can be accessed at once by shaders, and allows these buffer object accesses to be exposed as C-style pointer dereferences in the shading language. As a very simple example, imagine packing a group of similar objects' constants into a single buffer object and pointing your program at object by setting "glVertexAttribI1iEXT(attrLoc, i);" and using a shader as such: struct MyObjectType { mat4x4 modelView; vec4 materialPropertyX; // etc. }; uniform MyObjectType *allObjects; in int objectID; // bound to attrLoc ... mat4x4 thisObjectsMatrix = allObjects[objectID].modelView; // do transform, shading, etc. This is beneficial in much the same way that texture arrays allow choosing between similar, but independent, texture maps with a single coordinate identifying which slice of the texture to use. It also resembles instancing, where a lightweight change (incrementing the instance ID) can be used to generate a different and interesting result, but with additional flexibility over instancing because the values are app-controlled and not a single incrementing counter. Dependent pointer fetches are allowed, so more complex scene graph structures can be built into buffer objects providing significant new flexibility in the use of shaders. Another simple example, showing something you can't do with existing functionality, is to do dependent fetches into many buffer objects: GenBuffers(N, dataBuffers); GenBuffers(1, &pointerBuffer); GLuint64EXT gpuAddrs[N]; for (i = 0; i < N; ++i) { BindBuffer(target, dataBuffers[i]); BufferData(target, size[i], myData[i], STATIC_DRAW); // get the address of this buffer and make it resident. GetBufferParameterui64vNV(target, BUFFER_GPU_ADDRESS, gpuaddrs[i]); MakeBufferResidentNV(target, READ_ONLY); } GLuint64EXT pointerBufferAddr; BindBuffer(target, pointerBuffer); BufferData(target, sizeof(GLuint64EXT)*N, gpuAddrs, STATIC_DRAW); GetBufferParameterui64vNV(target, BUFFER_GPU_ADDRESS, &pointerBufferAddr); MakeBufferResidentNV(target, READ_ONLY); // now in the shader, we can use a double indirection vec4 **ptrToBuffers = pointerBufferAddr; vec4 *ptrToBufferI = ptrToBuffers[i]; This allows simultaneous access to more buffers than EXT_bindable_uniform (MAX_VERTEX_BINDABLE_UNIFORMS, etc.) and each can be larger than MAX_BINDABLE_UNIFORM_SIZE. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/shader_buffer_load.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.shader_buffer_load import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texture_multisample.py0000644000175000001440000000213412025001653022546 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texture_multisample This module customises the behaviour of the OpenGL.raw.GL.NV.texture_multisample to provide a more Python-friendly API Overview (from the spec) This specification extends NV_gpu_program4 to support per-sample fetching from multisample textures described in ARB_texture_multisample. Specifically, it adds: * The TXFMS sample fetch instruction. * Texture targets corresponding to the multisample textures added by ARB_texture_multisample. * A program option to enable these features. This specification also extends the ARB_texture_multisample extension by adding support for EXT_direct_state_access and VCAA multisample coverage with seperate and parameters. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texture_multisample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texture_multisample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texgen_emboss.py0000644000175000001440000000271612025001653021302 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texgen_emboss This module customises the behaviour of the OpenGL.raw.GL.NV.texgen_emboss to provide a more Python-friendly API Overview (from the spec) This extension provides a new texture coordinate generation mode suitable for multitexture-based embossing (or bump mapping) effects. Given two texture units, this extension generates the texture coordinates of a second texture unit (an odd-numbered texture unit) as a perturbation of a first texture unit (an even-numbered texture unit one less than the second texture unit). The perturbation is based on the normal, tangent, and light vectors. The normal vector is supplied by glNormal; the light vector is supplied as a direction vector to a specified OpenGL light's position; and the tanget vector is supplied by the second texture unit's current texture coordinate. The perturbation is also scaled by program-supplied scaling constants. If both texture units are bound to the same texture representing a height field, by subtracting the difference between the resulting two filtered texels, programs can achieve a per-pixel embossing effect. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texgen_emboss.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texgen_emboss import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texture_shader3.py0000644000175000001440000001072212025001653021545 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texture_shader3 This module customises the behaviour of the OpenGL.raw.GL.NV.texture_shader3 to provide a more Python-friendly API Overview (from the spec) NV_texture_shader3 extends the NV_texture_shader functionality by adding several new texture shader operations, extending several existing texture shader operations, adding a new HILO8 internal format, and adding new and more flexible re-mapping modes for dot product and dependent texture shader operations. See the NV_texture_shader extension for information about the texture shader operational model. The fourteen new texture shader operations are: 24. OFFSET_PROJECTIVE_TEXTURE_2D_NV - Transforms the signed (ds,dt) components of a previous texture unit by a 2x2 floating-point matrix and then uses the result to offset the stage's texture coordinates for a 2D non-projective texture. 25. OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV - Same as above except the magnitude component of the previous texture unit result scales the red, green, and blue components of the unsigned RGBA texture 2D access. 26. OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV - Similar to OFFSET_TEXTURE_2D_NV except that the texture access is into a rectangular non-projective texture. 27. OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV - Similar to OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV except that the texture access is into a rectangular non-projective texture. 28. OFFSET_HILO_TEXTURE_2D_NV - Similar to OFFSET_TEXTURE_2D_NV but uses a (higher-precision) HILO base format texture rather than a DSDT-type base format. 29. OFFSET_HILO_TEXTURE_RECTANGLE_NV - Similar to OFFSET_TEXTURE_RECTANGLE_NV but uses a (higher-precision) HILO base format texture rather than a DSDT-type base format. 30. OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV - Similar to OFFSET_PROJECTIVE_TEXTURE_2D_NV but uses a (higher-precision) HILO base format texture rather than a DSDT-type base format. 31. OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV - Similar to OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV but uses a (higher-precision) HILO base format texture rather than a DSDT-type base format. (There are no "offset HILO texture scale" operations because HILO textures have only two components with no third component for scaling.) 32. DEPENDENT_HILO_TEXTURE_2D_NV - Converts the hi and lo components of a previous shader HILO result into an (s,t) texture coordinate set to access a 2D non-projective texture. 33. DEPENDENT_RGB_TEXTURE_3D_NV - Converts the red, green, and blue components of a previous shader RGBA result into an (s,t,r) texture coordinate set to access a 3D non-projective texture. 34. DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV - Converts the red, green, and blue components of a previous shader RGBA result into an (s,t,r) texture coordinate set to access a cube map texture. 35. DOT_PRODUCT_PASS_THROUGH_NV - Computes a dot product in the manner of the DOT_PRODUCT_NV operation and the result is [0,1] clamped and smeared to generate the texture unit RGBA result. 36. DOT_PRODUCT_TEXTURE_1D_NV - Computes a dot product in the manner of the DOT_PRODUCT_NV operation and uses the result as the s texture coordinate to access a 2D non-projective texture. 37. DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV - Computes a dot product in the manner of the DOT_PRODUCT_NV operation and the result is [0,1] clamped and replaces the fragment's window-space depth value. The texture unit RGBA result is (0,0,0,0). Two new internal texture formats have been added: HILO8_NV and SIGNED_HILO8_NV. These texture formats allow HILO textures to be stored in half the space; still the filtering for these internal texture formats is done with 16-bit precision. One new unsigned RGBA dot product mapping mode (FORCE_BLUE_TO_ONE_NV) forces the blue component to be 1.0 before computing a dot product. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texture_shader3.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texture_shader3 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/light_max_exponent.py0000644000175000001440000000200312025001653022321 0ustar mcfletchusers00000000000000'''OpenGL extension NV.light_max_exponent This module customises the behaviour of the OpenGL.raw.GL.NV.light_max_exponent to provide a more Python-friendly API Overview (from the spec) Default OpenGL does not permit a shininess or spot exponent over 128.0. This extension permits implementations to support and advertise a maximum shininess and spot exponent beyond 128.0. Note that extremely high exponents for shininess and/or spot light cutoff will require sufficiently high tessellation for acceptable lighting results. Paul Deifenbach's thesis suggests that higher exponents are necessary to approximate BRDFs with per-vertex ligthing and multiple passes. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/light_max_exponent.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.light_max_exponent import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/depth_clamp.py0000644000175000001440000000411712025001653020715 0ustar mcfletchusers00000000000000'''OpenGL extension NV.depth_clamp This module customises the behaviour of the OpenGL.raw.GL.NV.depth_clamp to provide a more Python-friendly API Overview (from the spec) Conventional OpenGL clips geometric primitives to a clip volume with six faces, two of which are the near and far clip planes. Clipping to the near and far planes of the clip volume ensures that interpolated depth values (after the depth range transform) must be in the [0,1] range. In some rendering applications such as shadow volumes, it is useful to allow line and polygon primitives to be rasterized without clipping the primitive to the near or far clip volume planes (side clip volume planes clip normally). Without the near and far clip planes, rasterization (pixel coverage determination) in X and Y can proceed normally if we ignore the near and far clip planes. The one major issue is that fragments of a primitive may extend beyond the conventional window space depth range for depth values (typically the range [0,1]). Rather than discarding fragments that defy the window space depth range (effectively what near and far plane clipping accomplish), the depth values can be clamped to the current depth range. This extension provides exactly such functionality. This functionality is useful to obviate the need for near plane capping of stenciled shadow volumes. The functionality may also be useful for rendering geometry "beyond" the far plane if an alternative algorithm (rather than depth testing) for hidden surface removal is applied to such geometry (specifically, the painter's algorithm). Similar situations at the near clip plane can be avoided at the near clip plane where apparently solid objects can be "seen through" if they intersect the near clip plane. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/depth_clamp.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.depth_clamp import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/fragment_program_option.py0000644000175000001440000000303112025001653023351 0ustar mcfletchusers00000000000000'''OpenGL extension NV.fragment_program_option This module customises the behaviour of the OpenGL.raw.GL.NV.fragment_program_option to provide a more Python-friendly API Overview (from the spec) This extension provides additional fragment program functionality to extend the standard ARB_fragment_program language and execution environment. ARB programs wishing to use this added functionality need only add: OPTION NV_fragment_program; to the beginning of their fragment programs. The functionality provided by this extension, which is roughly equivalent to that provided by the NV_fragment_program extension, includes: * increased control over precision in arithmetic computations and storage, * data-dependent conditional writemasks, * an absolute value operator on scalar and swizzled operand loads, * instructions to compute partial derivatives, and perform texture lookups using specified partial derivatives, * fully orthogonal "set on" instructions, * instructions to compute reflection vector and perform a 2D coordinate transform, and * instructions to pack and unpack multiple quantities into a single component. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/fragment_program_option.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.fragment_program_option import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_program4.py0000644000175000001440000000370012025001653021562 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_program4 This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_program4 to provide a more Python-friendly API Overview (from the spec) This extension builds on the common assembly instruction set infrastructure provided by NV_gpu_program4, adding vertex program-specific features. This extension provides the ability to specify integer vertex attributes that are passed to vertex programs using integer data types, rather than being converted to floating-point values as in existing vertex attribute functions. The set of input and output bindings provided includes all bindings supported by ARB_vertex_program. This extension provides additional input bindings identifying the index of the vertex when vertex arrays are used ("vertex.id") and the instance number when instanced arrays are used ("vertex.instance", requires EXT_draw_instanced). It also provides output bindings allowing vertex programs to directly specify clip distances (for user clipping) plus a set of generic attributes that allow programs to pass a greater number of attributes to subsequent pipeline stages than is possible using only the pre-defined fixed-function vertex outputs. By and large, programs written to ARB_vertex_program can be ported directly by simply changing the program header from "!!ARBvp1.0" to "!!NVvp4.0", and then modifying instructions to take advantage of the expanded feature set. There are a small number of areas where this extension is not a functional superset of previous vertex program extensions, which are documented in the NV_gpu_program4 specification. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_program4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_program4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_buffer_unified_memory.py0000644000175000001440000000207312025001653024375 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_buffer_unified_memory This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_buffer_unified_memory to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism to specify vertex attrib and element array locations using GPU addresses. Binding vertex buffers is one of the most frequent and expensive operations in many GL applications, due to the cost of chasing pointers and binding objects described in the Overview of NV_shader_buffer_load. The intent of this extension is to enable a way for the application to specify vertex attrib state that alleviates the overhead of object binds and driver memory management. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_buffer_unified_memory.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_buffer_unified_memory import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vdpau_interop.py0000644000175000001440000000173512025001653021317 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vdpau_interop This module customises the behaviour of the OpenGL.raw.GL.NV.vdpau_interop to provide a more Python-friendly API Overview (from the spec) This extension allows VDPAU video and output surfaces to be used for texturing and rendering. This allows the GL to process and display the content of video streams decoded using VDPAU. Alternatively, the GL may modify VDPAU surfaces in-place, and VDPAU may then process and/or display those surfaces itself. This allows the GL to be used to combine application user-interface elements with decoded video, implement custom video-processing algorithms, etc. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vdpau_interop.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vdpau_interop import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/gpu_program5.py0000644000175000001440000001352312025001653021045 0ustar mcfletchusers00000000000000'''OpenGL extension NV.gpu_program5 This module customises the behaviour of the OpenGL.raw.GL.NV.gpu_program5 to provide a more Python-friendly API Overview (from the spec) This specification documents the common instruction set and basic functionality provided by NVIDIA's 5th generation of assembly instruction sets supporting programmable graphics pipeline stages. The instruction set builds upon the basic framework provided by the ARB_vertex_program and ARB_fragment_program extensions to expose considerably more capable hardware. In addition to new capabilities for vertex and fragment programs, this extension provides new functionality for geometry programs as originally described in the NV_geometry_program4 specification, and serves as the basis for the new tessellation control and evaluation programs described in the NV_tessellation_program5 extension. Programs using the functionality provided by this extension should begin with the program headers "!!NVvp5.0" (vertex programs), "!!NVtcp5.0" (tessellation control programs), "!!NVtep5.0" (tessellation evaluation programs), "!!NVgp5.0" (geometry programs), and "!!NVfp5.0" (fragment programs). This extension provides a variety of new features, including: * support for 64-bit integer operations; * the ability to dynamically index into an array of texture units or program parameter buffers; * extending texel offset support to allow loading texel offsets from regular integer operands computed at run-time, instead of requiring that the offsets be constants encoded in texture instructions; * extending TXG (texture gather) support to return the 2x2 footprint from any component of the texture image instead of always returning the first (x) component; * extending TXG to support shadow comparisons in conjunction with a depth texture, via the SHADOW* targets; * further extending texture gather support to provide a new opcode (TXGO) that applies a separate texel offset vector to each of the four samples returned by the instruction; * bit manipulation instructions, including ones to find the position of the most or least significant set bit, bitfield insertion and extraction, and bit reversal; * a general data conversion instruction (CVT) supporting conversion between any two data types supported by this extension; and * new instructions to compute the composite of a set of boolean conditions a group of shader threads. This extension also provides some new capabilities for individual program types, including: * support for instanced geometry programs, where a geometry program may be run multiple times for each primitive; * support for emitting vertices in a geometry program where each vertex emitted may be directed at a specified vertex stream and captured using the ARB_transform_feedback3 extension; * support for interpolating an attribute at a programmable offset relative to the pixel center (IPAO), at a programmable sample number (IPAS), or at the fragment's centroid location (IPAC) in a fragment program; * support for reading a mask of covered samples in a fragment program; * support for reading a point sprite coordinate directly in a fragment program, without overriding a texture coordinate; * support for reading patch primitives and per-patch attributes (introduced by ARB_tessellation_shader) in a geometry program; and * support for multiple output vectors for a single color output in a fragment program (as used by ARB_blend_func_extended). This extension also provides optional support for 64-bit-per-component variables and 64-bit floating-point arithmetic. These features are supported if and only if "NV_gpu_program_fp64" is found in the extension string. This extension incorporates the memory access operations from the NV_shader_buffer_load and NV_parameter_buffer_object2 extensions, originally built as add-ons to NV_gpu_program4. It also provides the following new capabilities: * support for the features without requiring a separate OPTION keyword; * support for indexing into an array of constant buffers using the LDC opcode added by NV_parameter_buffer_object2; * support for storing into buffer objects at a specified GPU address using the STORE opcode, an allowing applications to create READ_WRITE and WRITE_ONLY mappings when making a buffer object resident using the API mechanisms in the NV_shader_buffer_store extension; * storage instruction modifiers to allow loading and storing 64-bit component values; * support for atomic memory transactions using the ATOM opcode, where the instruction atomically reads the memory pointed to by a pointer, performs a specified computation, stores the results of that computation, and returns the original value read; * support for memory barrier transactions using the MEMBAR opcode, which ensures that all memory stores issued prior to the opcode complete prior to any subsequent memory transactions; and * a fragment program option to specify that depth and stencil tests are performed prior to fragment program execution. Additionally, the assembly program languages supported by this extension include support for reading, writing, and performing atomic memory operations on texture image data using the opcodes and mechanisms documented in the "Dependencies on NV_gpu_program5" section of the EXT_shader_image_load_store extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/gpu_program5.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.gpu_program5 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/packed_depth_stencil.py0000644000175000001440000001027712025001653022575 0ustar mcfletchusers00000000000000'''OpenGL extension NV.packed_depth_stencil This module customises the behaviour of the OpenGL.raw.GL.NV.packed_depth_stencil to provide a more Python-friendly API Overview (from the spec) Many OpenGL implementations have chosen to interleave the depth and stencil buffers into one buffer, often with 24 bits of depth precision and 8 bits of stencil data. 32 bits is more than is needed for the depth buffer much of the time; a 24-bit depth buffer, on the other hand, requires that reads and writes of depth data be unaligned with respect to power-of-two boundaries. On the other hand, 8 bits of stencil data is more than sufficient for most applications, so it is only natural to pack the two buffers into a single buffer with both depth and stencil data. OpenGL never provides direct access to the buffers, so the OpenGL implementation can provide an interface to applications where it appears the one merged buffer is composed of two logical buffers. One disadvantage of this scheme is that OpenGL lacks any means by which this packed data can be handled efficiently. For example, when an application reads from the 24-bit depth buffer, using the type GL_UNSIGNED_SHORT will lose 8 bits of data, while GL_UNSIGNED_INT has 8 too many. Both require expensive format conversion operations. A 24-bit format would be no more suitable, because it would also suffer from the unaligned memory accesses that made the standalone 24-bit depth buffer an unattractive proposition in the first place. Many applications, such as parallel rendering applications, may also wish to draw to or read back from both the depth and stencil buffers at the same time. Currently this requires two separate operations, reducing performance. Since the buffers are interleaved, drawing to or reading from both should be no more expensive than using just one; in some cases, it may even be cheaper. This extension provides a new data format, GL_DEPTH_STENCIL_NV, that can be used with the glDrawPixels, glReadPixels, and glCopyPixels commands, as well as a packed data type, GL_UNSIGNED_INT_24_8_NV, that is meant to be used with GL_DEPTH_STENCIL_NV. No other formats are supported with GL_DEPTH_STENCIL_NV. If SGIX_depth_texture is supported, GL_DEPTH_STENCIL_NV/GL_UNSIGNED_INT_24_8_NV data can also be used for textures; this provides a more efficient way to supply data for a 24-bit depth texture. GL_DEPTH_STENCIL_NV data, when passed through the pixel path, undergoes both depth and stencil operations. The depth data is scaled and biased by the current GL_DEPTH_SCALE and GL_DEPTH_BIAS, while the stencil data is shifted and offset by the current GL_INDEX_SHIFT and GL_INDEX_OFFSET. The stencil data is also put through the stencil-to-stencil pixel map. glDrawPixels of GL_DEPTH_STENCIL_NV data operates similarly to that of GL_STENCIL_INDEX data, bypassing the OpenGL fragment pipeline entirely, unlike the treatment of GL_DEPTH_COMPONENT data. The stencil and depth masks are applied, as are the pixel ownership and scissor tests, but all other operations are skipped. glReadPixels of GL_DEPTH_STENCIL_NV data reads back a rectangle from both the depth and stencil buffers. glCopyPixels of GL_DEPTH_STENCIL_NV data copies a rectangle from both the depth and stencil buffers. Like glDrawPixels, it applies both the stencil and depth masks but skips the remainder of the OpenGL fragment pipeline. glTex[Sub]Image[1,2,3]D of GL_DEPTH_STENCIL_NV data loads depth data into a depth texture. glGetTexImage of GL_DEPTH_STENCIL_NV data can be used to retrieve depth data from a depth texture. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/packed_depth_stencil.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.packed_depth_stencil import * ### END AUTOGENERATED SECTION # Setup the new image types from OpenGL import images from OpenGL.constants import GL_UNSIGNED_INT images.TYPE_TO_ARRAYTYPE[ GL_UNSIGNED_INT_24_8_NV ] = GL_UNSIGNED_INT images.TIGHT_PACK_FORMATS[ GL_UNSIGNED_INT_24_8_NV ] = 4 images.COMPONENT_COUNTS[ GL_DEPTH_STENCIL_NV ] = 4 PyOpenGL-3.0.2/OpenGL/GL/NV/geometry_shader4.py0000644000175000001440000000205312025001653021677 0ustar mcfletchusers00000000000000'''OpenGL extension NV.geometry_shader4 This module customises the behaviour of the OpenGL.raw.GL.NV.geometry_shader4 to provide a more Python-friendly API Overview (from the spec) This extension builds upon the EXT_geometry_shader4 specification to provide two additional capabilities: * Support for QUADS, QUAD_STRIP, and POLYGON primitive types when geometry shaders are enabled. Such primitives will be tessellated into individual triangles. * Setting the value of GEOMETRY_VERTICES_OUT_EXT will take effect immediately. It is not necessary to link the program object in order for this change to take effect, as is the case in the EXT version of this extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/geometry_shader4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.geometry_shader4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/path_rendering.py0000644000175000001440000004073312031734270021437 0ustar mcfletchusers00000000000000'''OpenGL extension NV.path_rendering This module customises the behaviour of the OpenGL.raw.GL.NV.path_rendering to provide a more Python-friendly API Overview (from the spec) Conventional OpenGL supports rendering images (pixel rectangles and bitmaps) and simple geometric primitives (points, lines, polygons). This extension adds a new rendering paradigm, known as path rendering, for rendering filled and stroked paths. Path rendering is not novel but rather a standard part of most resolution-independent 2D rendering systems such as Flash, PDF, Silverlight, SVG, Java 2D, Office drawings, TrueType fonts, PostScript and its fonts, Quartz 2D, XML Paper Specification (XPS), and OpenVG. What is novel is the ability to mix path rendering with arbitrary OpenGL 3D rendering and imaging. With this extension, path rendering becomes a first-class rendering mode within the OpenGL graphics system that can be arbitrarily mixed with existing OpenGL rendering and can take advantage of OpenGL's existing mechanisms for texturing, programmability, and per-fragment operations. Unlike geometric primitive rendering, paths are specified on a 2D (non-projective) plane rather than in 3D (projective) space. Even though the path is defined in a 2D plane, every path can be transformed into 3D clip space allowing for 3D view frustum & user-defined clipping, depth offset, and depth testing in the same manner as geometric primitive rendering. Both geometric primitive rendering and path rendering support rasterization of edges defined by line segments; however, path rendering also allows path segments to be specified by Bezier (cubic or quadratic) curves or partial elliptical arcs. This allows path rendering to define truly curved primitive boundaries unlike the straight edges of line and polygon primitives. Whereas geometric primitive rendering requires convex polygons for well-defined rendering results, path rendering allows (and encourages!) concave and curved outlines to be specified. These paths are even allowed to self-intersect. When filling closed paths, the winding of paths (counterclockwise or clockwise) determines whether pixels are inside or outside of the path. Paths can also be stroked whereby, conceptually, a fixed-width "brush" is pulled along the path such that the brush remains orthogonal to the gradient of each path segment. Samples within the sweep of this brush are considered inside the stroke of the path. This extension supports path rendering through a sequence of three operations: 1. Path specification is the process of creating and updating a path object consisting of a set of path commands and a corresponding set of 2D vertices. Path commands can be specified explicitly from path command and coordinate data, parsed from a string based on standard grammars for representing paths, or specified by a particular glyph of standard font representations. Also new paths can be specified by weighting one or more existing paths so long as all the weighted paths have consistent command sequences. Each path object contains zero or more subpaths specified by a sequence of line segments, partial elliptical arcs, and (cubic or quadratic) Bezier curve segments. Each path may contain multiple subpaths that can be closed (forming a contour) or open. 2. Path stenciling is the process of updating the stencil buffer based on a path's coverage transformed into window space. Path stenciling can determine either the filled or stroked coverage of a path. The details of path stenciling are explained within the core of the specification. Stenciling a stroked path supports all the standard embellishments for path stroking such as end caps, join styles, miter limits, dashing, and dash caps. These stroking properties specified are parameters of path objects. 3. Path covering is the process of emitting simple (convex & planar) geometry that (conservatively) "covers" the path's sample coverage in the stencil buffer. During path covering, stencil testing can be configured to discard fragments not within the actual coverage of the path as determined by prior path stenciling. Path covering can cover either the filled or stroked coverage of a path. The details of path covering are explained within the core of the specification. To render a path object into the color buffer, an application specifies a path object and then uses a two-step rendering process. First, the path object is stenciled whereby the path object's stroked or filled coverage is rasterized into the stencil buffer. Second, the path object is covered whereby conservative bounding geometry for the path is transformed and rasterized with stencil testing configured to test against the coverage information written to the stencil buffer in the first step so that only fragments covered by the path are written during this second step. Also during this second step written pixels typically have their stencil value reset (so there's no need for clearing the stencil buffer between rendering each path). Here is an example of specifying and then rendering a five-point star and a heart as a path using Scalable Vector Graphics (SVG) path description syntax: GLuint pathObj = 42; const char *svgPathString = // star "M100,180 L40,10 L190,120 L10,120 L160,10 z" // heart "M300 300 C 100 400,100 200,300 100,500 200,500 400,300 300Z"; glPathStringNV(pathObj, GL_PATH_FORMAT_SVG_NV, (GLsizei)strlen(svgPathString), svgPathString); Alternatively applications oriented around the PostScript imaging model can use the PostScript user path syntax instead: const char *psPathString = // star "100 180 moveto" " 40 10 lineto 190 120 lineto 10 120 lineto 160 10 lineto closepath" // heart " 300 300 moveto" " 100 400 100 200 300 100 curveto" " 500 200 500 400 300 300 curveto closepath"; glPathStringNV(pathObj, GL_PATH_FORMAT_PS_NV, (GLsizei)strlen(psPathString), psPathString); The PostScript path syntax also supports compact and precise binary encoding and includes PostScript-style circular arcs. Or the path's command and coordinates can be specified explicitly: static const GLubyte pathCommands[10] = { GL_MOVE_TO_NV, GL_LINE_TO_NV, GL_LINE_TO_NV, GL_LINE_TO_NV, GL_LINE_TO_NV, GL_CLOSE_PATH_NV, 'M', 'C', 'C', 'Z' }; // character aliases static const GLshort pathCoords[12][2] = { {100, 180}, {40, 10}, {190, 120}, {10, 120}, {160, 10}, {300,300}, {100,400}, {100,200}, {300,100}, {500,200}, {500,400}, {300,300} }; glPathCommandsNV(pathObj, 10, pathCommands, 24, GL_SHORT, pathCoords); Before rendering to a window with a stencil buffer, clear the stencil buffer to zero and the color buffer to black: glClearStencil(0); glClearColor(0,0,0,0); glStencilMask(~0); glClear(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); Use an orthographic path-to-clip-space transform to map the [0..500]x[0..400] range of the star's path coordinates to the [-1..1] clip space cube: glMatrixLoadIdentityEXT(GL_PROJECTION); glMatrixLoadIdentityEXT(GL_MODELVIEW); glMatrixOrthoEXT(GL_MODELVIEW, 0, 500, 0, 400, -1, 1); Stencil the path: glStencilFillPathNV(pathObj, GL_COUNT_UP_NV, 0x1F); The 0x1F mask means the counting uses modulo-32 arithmetic. In principle the star's path is simple enough (having a maximum winding number of 2) that modulo-4 arithmetic would be sufficient so the mask could be 0x3. Or a mask of all 1's (~0) could be used to count with all available stencil bits. Now that the coverage of the star and the heart have been rasterized into the stencil buffer, cover the path with a non-zero fill style (indicated by the GL_NOTEQUAL stencil function with a zero reference value): glEnable(GL_STENCIL_TEST); glStencilFunc(GL_NOTEQUAL, 0, 0x1F); glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO); glColor3f(1,1,0); // yellow glCoverFillPathNV(pathObj, GL_BOUNDING_BOX_NV); The result is a yellow star (with a filled center) to the left of a yellow heart. The GL_ZERO stencil operation ensures that any covered samples (meaning those with non-zero stencil values) are zero'ed when the path cover is rasterized. This allows subsequent paths to be rendered without clearing the stencil buffer again. A similar two-step rendering process can draw a white outline over the star and heart. Before rendering, configure the path object with desirable path parameters for stroking. Specify a wider 6.5-unit stroke and the round join style: glPathParameteriNV(pathObj, GL_PATH_JOIN_STYLE_NV, GL_ROUND_NV); glPathParameterfNV(pathObj, GL_PATH_STROKE_WIDTH_NV, 6.5); Now stencil the path's stroked coverage into the stencil buffer, setting the stencil to 0x1 for all stencil samples within the transformed path. glStencilStrokePathNV(pathObj, 0x1, ~0); Cover the path's stroked coverage (with a hull this time instead of a bounding box; the choice doesn't really matter here) while stencil testing that writes white to the color buffer and again zero the stencil buffer. glColor3f(1,1,1); // white glCoverStrokePathNV(pathObj, GL_CONVEX_HULL_NV); In this example, constant color shading is used but the application can specify their own arbitrary shading and/or blending operations, whether with Cg compiled to fragment program assembly, GLSL, or fixed-function fragment processing. More complex path rendering is possible such as clipping one path to another arbitrary path. This is because stencil testing (as well as depth testing, depth bound test, clip planes, and scissoring) can restrict path stenciling. Now let's render the word "OpenGL" atop the star and heart. First create a sequence of path objects for the glyphs for the characters in "OpenGL": GLuint glyphBase = glGenPathsNV(6); const unsigned char *word = "OpenGL"; const GLsizei wordLen = (GLsizei)strlen(word); const GLfloat emScale = 2048; // match TrueType convention GLuint templatePathObject = ~0; // Non-existent path object glPathGlyphsNV(glyphBase, GL_SYSTEM_FONT_NAME_NV, "Helvetica", GL_BOLD_BIT_NV, wordLen, GL_UNSIGNED_BYTE, word, GL_SKIP_MISSING_GLYPH_NV, ~0, emScale); glPathGlyphsNV(glyphBase, GL_SYSTEM_FONT_NAME_NV, "Arial", GL_BOLD_BIT_NV, wordLen, GL_UNSIGNED_BYTE, word, GL_SKIP_MISSING_GLYPH_NV, ~0, emScale); glPathGlyphsNV(glyphBase, GL_STANDARD_FONT_NAME_NV, "Sans", GL_BOLD_BIT_NV, wordLen, GL_UNSIGNED_BYTE, word, GL_USE_MISSING_GLYPH_NV, ~0, emScale); Glyphs are loaded for three different fonts in priority order: Helvetica first, then Arial, and if neither of those loads, use the standard sans-serif font. If a prior glPathGlyphsNV is successful and specifies the path object range, the subsequent glPathGlyphsNV commands silently avoid re-specifying the already existent path objects. Now query the (kerned) separations for the word "OpenGL" and build a set of horizontal translations advancing each successive glyph by its kerning distance with the following glyph. GLfloat xtranslate[6+1]; // wordLen+1 glGetPathSpacingNV(GL_ACCUM_ADJACENT_PAIRS_NV, wordLen+1, GL_UNSIGNED_BYTE, "\000\001\002\003\004\005\005", // repeat last letter twice glyphBase, 1.0f, 1.0f, GL_TRANSLATE_X_NV, xtranslate); Next determine the font-wide vertical minimum and maximum for the font face by querying the per-font metrics of any one of the glyphs from the font face. GLfloat yMinMax[2]; glGetPathMetricRangeNV(GL_FONT_Y_MIN_BOUNDS_NV|GL_FONT_Y_MAX_BOUNDS_NV, glyphBase, /*count*/1, 2*sizeof(GLfloat), yMinMax); Use an orthographic path-to-clip-space transform to map the word's bounds to the [-1..1] clip space cube: glMatrixLoadIdentityEXT(GL_PROJECTION); glMatrixOrthoEXT(GL_MODELVIEW, 0, xtranslate[6], yMinMax[0], yMinMax[1], -1, 1); Stencil the filled paths of the sequence of glyphs for "OpenGL", each transformed by the appropriate 2D translations for spacing. glStencilFillPathInstancedNV(6, GL_UNSIGNED_BYTE, "\000\001\002\003\004\005", glyphBase, GL_PATH_FILL_MODE_NV, 0xFF, GL_TRANSLATE_X_NV, xtranslate); Cover the bounding box union of the glyphs with 50% gray. glEnable(GL_STENCIL_TEST); glStencilFunc(GL_NOTEQUAL, 0, 0xFF); glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO); glColor3f(0.5,0.5,0.5); // 50% gray glCoverFillPathInstancedNV(6, GL_UNSIGNED_BYTE, "\000\001\002\003\004\005", glyphBase, GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV, GL_TRANSLATE_2D_NV, xtranslate); Voila, the word "OpenGL" in gray is now stenciled into the framebuffer. Instead of solid 50% gray, the cover operation can apply a linear gradient that changes from green (RGB=0,1,0) at the top of the word "OpenGL" to blue (RGB=0,0,1) at the bottom of "OpenGL": GLfloat rgbGen[3][3] = { 0, 0, 0, // red = constant zero 0, 1, 0, // green = varies with y from bottom (0) to top (1) 0, -1, 1 // blue = varies with y from bottom (1) to top (0) }; glPathColorGenNV(GL_PRIMARY_COLOR, GL_PATH_OBJECT_BOUNDING_BOX_NV, GL_RGB, &rgbGen[0][0]); Instead of loading just the glyphs for the characters in "OpenGL", the entire character set could be loaded. This allows the characters of the string to be mapped (offset by the glyphBase) to path object names. A range of glyphs can be loaded like this: const int numChars = 256; // ISO/IEC 8859-1 8-bit character range GLuint glyphBase = glGenPathsNV(numChars); glPathGlyphRangeNV(glyphBase, GL_SYSTEM_FONT_NAME_NV, "Helvetica", GL_BOLD_BIT_NV, 0, numChars, GL_SKIP_MISSING_GLYPH_NV, ~0, emScale); glPathGlyphRangeNV(glyphBase, GL_SYSTEM_FONT_NAME_NV, "Arial", GL_BOLD_BIT_NV, 0, numChars, GL_SKIP_MISSING_GLYPH_NV, ~0, emScale); glPathGlyphRangeNV(glyphBase, GL_STANDARD_FONT_NAME_NV, "Sans", GL_BOLD_BIT_NV, 0, numChars, GL_USE_MISSING_GLYPH_NV, ~0, emScale); Given a range of glyphs loaded as path objects, (kerned) spacing information can now be queried for the string: glGetPathSpacingNV(GL_ACCUM_ADJACENT_PAIRS_NV, 7, GL_UNSIGNED_BYTE, "OpenGLL", // repeat L to get final spacing glyphBase, 1.0f, 1.0f, GL_TRANSLATE_X_NV, kerning); Using the range of glyphs, stenciling and covering the instanced paths for "OpenGL" can be done this way: glStencilFillPathInstancedNV(6, glyphBase, GL_UNSIGNED_BYTE, "OpenGL", GL_PATH_FILL_MODE_NV, 0xFF, GL_TRANSLATE_2D_NV, xtranslate); glCoverFillPathInstancedNV(6, glyphBase, GL_UNSIGNED_BYTE, "OpenGL", GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV, GL_TRANSLATE_2D_NV, xtranslate); XXX add path clipping example to demonstrate glPathStencilFuncNV. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/path_rendering.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.path_rendering import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/transform_feedback2.py0000644000175000001440000000376212025001653022343 0ustar mcfletchusers00000000000000'''OpenGL extension NV.transform_feedback2 This module customises the behaviour of the OpenGL.raw.GL.NV.transform_feedback2 to provide a more Python-friendly API Overview (from the spec) The NV_transform_feedback and EXT_transform_feedback extensions allow applications to capture primitives to one or more buffer objects when transformed by the GL. This extension provides a few additional capabilities to these extensions, making transform feedback mode more useful. First, it provides transform feedback objects encapsulating transform feedback-related state, allowing applications to replace the entire transform feedback configuration in a single bind call. Second, it provides the ability to pause and resume transform feedback operations. When transform feedback is paused, applications may render without transform feedback or may use transform feedback with different state and a different transform feedback object. When transform feedback is resumed, additional primitives are captured and appended to previously captured primitives for the object. Additionally, this extension provides the ability to draw primitives captured in transform feedback mode without querying the captured primitive count. The command DrawTransformFeedbackNV() is equivalent to glDrawArrays(, 0, ), where is the number of vertices captured to buffer objects during the last transform feedback capture operation on the transform feedback object used. This draw operation only provides a vertex count -- it does not automatically set up vertex array state or vertex buffer object bindings, which must be done separately by the application. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/transform_feedback2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.transform_feedback2 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/bindless_texture.py0000644000175000001440000000621112025001653022015 0ustar mcfletchusers00000000000000'''OpenGL extension NV.bindless_texture This module customises the behaviour of the OpenGL.raw.GL.NV.bindless_texture to provide a more Python-friendly API Overview (from the spec) This extension allows OpenGL applications to access texture objects in shaders without first binding each texture to one of a limited number of texture image units. Using this extension, an application can query an 64-bit unsigned integer texture handle for each texture that it wants to access and then use that handle directly in GLSL or assembly-based shaders. The ability to access textures without having to bind and/or re-bind them is similar to the capability provided by the NV_shader_buffer_load extension that allows shaders to access buffer objects without binding them. In both cases, these extensions significantly reduce the amount of API and internal GL driver overhead needed to manage resource bindings. This extension also provides similar capability for the image load, store, and atomic functionality provided by OpenGL 4.2 and the ARB_shader_image_load_store and EXT_shader_image_load_store extensions, where a texture can be accessed without first binding it to an image unit. An image handle can be extracted from a texture object using an API with a set of parameters similar to those for BindImageTextureEXT. This extension adds no new data types to GLSL. Instead, it uses existing sampler and image data types and allows them to be populated with texture and image handles. This extension does permit sampler and image data types to be used in more contexts than in unextended GLSL 4.00. In particular, sampler and image types may be used as shader inputs/outputs, temporary variables, and uniform block members, and may be assigned to by shader code. Constructors are provided to convert 64-bit unsigned integer handles to and from sampler and image data types. Additionally, new APIs are provided to load values for sampler and image uniforms with 64-bit handle inputs. The use of existing integer-based Uniform* APIs is still permitted, in which case the integer specified will identify a texture image or image unit. For samplers and images with values specified as texture image or image units, the GL implemenation will translate the unit number to an internal handle as required. To access texture or image resources using handles, the handles must first be made resident. Accessing a texture or image by handle without first making it resident can result in undefined results, including program termination. Since the amount of texture memory required by an application may exceed the amount of memory available to the system, this extension provides API calls allowing applications to manage overall texture memory consumption by making a texture resident and non-resident as required. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/bindless_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.bindless_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/framebuffer_multisample_coverage.py0000644000175000001440000000303412025001653025205 0ustar mcfletchusers00000000000000'''OpenGL extension NV.framebuffer_multisample_coverage This module customises the behaviour of the OpenGL.raw.GL.NV.framebuffer_multisample_coverage to provide a more Python-friendly API Overview (from the spec) This extension extends the EXT_framebuffer_multisample specification by providing a new function, RenderBufferStorageMultisampleCoverageNV, that distinguishes between color samples and coverage samples. EXT_framebuffer_multisample introduced the function RenderbufferStorageMultisampleEXT as a method of defining the storage parameters for a multisample render buffer. This function takes a parameter. Using rules provided by the specification, the parameter is resolved to an actual number of samples that is supported by the underlying hardware. EXT_framebuffer_multisample does not specify whether refers to coverage samples or color samples. This extension adds the function RenderbufferStorageMultisamplCoverageNV, which takes a parameter as well as a parameter. These two parameters give developers more fine grained control over the quality of multisampled images. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/framebuffer_multisample_coverage.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.framebuffer_multisample_coverage import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/primitive_restart.py0000644000175000001440000000336512025001653022215 0ustar mcfletchusers00000000000000'''OpenGL extension NV.primitive_restart This module customises the behaviour of the OpenGL.raw.GL.NV.primitive_restart to provide a more Python-friendly API Overview (from the spec) This extension allows applications to easily and inexpensively restart a primitive in its middle. A "primitive restart" is simply the same as an End command, followed by another Begin command with the same mode as the original. The typical expected use of this feature is to draw a mesh with many triangle strips, though primitive restarts are legal for all primitive types, even for points (where they are not useful). Although the EXT_multi_draw_arrays extension did reduce the overhead of such drawing techniques, they still remain more expensive than one would like. This extension provides an extremely lightweight primitive restart, which is accomplished by allowing the application to choose a special index number that signals that a primitive restart should occur, rather than a vertex being provoked. This index can be an arbitrary 32-bit integer for maximum application convenience. In addition, for full orthogonality, a special OpenGL command is provided to restart primitives when in immediate mode. This command is not likely to increase performance in any significant fashion, but providing it greatly simplifies the specification and implementation of display list compilation and indirect rendering. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/primitive_restart.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.primitive_restart import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texture_expand_normal.py0000644000175000001440000000177212025001653023050 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texture_expand_normal This module customises the behaviour of the OpenGL.raw.GL.NV.texture_expand_normal to provide a more Python-friendly API Overview (from the spec) This extension provides a remapping mode where unsigned texture components (in the range [0,1]) can be treated as though they contained signed data (in the range [-1,+1]). This allows applications to easily encode signed data into unsigned texture formats. The functionality of this extension is nearly identical to the EXPAND_NORMAL_NV remapping mode provided in the NV_register_combiners extension, although it applies even if register combiners are used. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texture_expand_normal.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texture_expand_normal import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/fence.py0000644000175000001440000000410212025001653017507 0ustar mcfletchusers00000000000000'''OpenGL extension NV.fence This module customises the behaviour of the OpenGL.raw.GL.NV.fence to provide a more Python-friendly API Overview (from the spec) The goal of this extension is provide a finer granularity of synchronizing GL command completion than offered by standard OpenGL, which offers only two mechanisms for synchronization: Flush and Finish. Since Flush merely assures the user that the commands complete in a finite (though undetermined) amount of time, it is, thus, of only modest utility. Finish, on the other hand, stalls CPU execution until all pending GL commands have completed. This extension offers a middle ground - the ability to "finish" a subset of the command stream, and the ability to determine whether a given command has completed or not. This extension introduces the concept of a "fence" to the OpenGL command stream. Once the fence is inserted into the command stream, it can be queried for a given condition - typically, its completion. Moreover, the application may also request a partial Finish -- that is, all commands prior to the fence will be forced to complete until control is returned to the calling process. These new mechanisms allow for synchronization between the host CPU and the GPU, which may be accessing the same resources (typically memory). This extension is useful in conjunction with NV_vertex_array_range to determine when vertex information has been pulled from the vertex array range. Once a fence has been tested TRUE or finished, all vertex indices issued before the fence must have been pulled. This ensures that the vertex data memory corresponding to the issued vertex indices can be safely modified (assuming no other outstanding vertex indices are issued subsequent to the fence). The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/fence.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.fence import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/texgen_reflection.py0000644000175000001440000000212412025001653022135 0ustar mcfletchusers00000000000000'''OpenGL extension NV.texgen_reflection This module customises the behaviour of the OpenGL.raw.GL.NV.texgen_reflection to provide a more Python-friendly API Overview (from the spec) This extension provides two new texture coordinate generation modes that are useful texture-based lighting and environment mapping. The reflection map mode generates texture coordinates (s,t,r) matching the vertex's eye-space reflection vector. The reflection map mode is useful for environment mapping without the singularity inherent in sphere mapping. The normal map mode generates texture coordinates (s,t,r) matching the vertex's transformed eye-space normal. The normal map mode is useful for sophisticated cube map texturing-based diffuse lighting models. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/texgen_reflection.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.texgen_reflection import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/fragment_program.py0000644000175000001440000000675012025001653021774 0ustar mcfletchusers00000000000000'''OpenGL extension NV.fragment_program This module customises the behaviour of the OpenGL.raw.GL.NV.fragment_program to provide a more Python-friendly API Overview (from the spec) OpenGL mandates a certain set of configurable per-fragment computations defining texture lookup, texture environment, color sum, and fog operations. Each of these areas provide a useful but limited set of fixed operations. For example, unextended OpenGL 1.2.1 provides only four texture environment modes, color sum, and three fog modes. Many OpenGL extensions have either improved existing functionality or introduced new configurable fragment operations. While these extensions have enabled new and interesting rendering effects, the set of effects is limited by the set of special modes introduced by the extension. This lack of flexibility is in contrast to the high-level of programmability of general-purpose CPUs and other (frequently software-based) shading languages. The purpose of this extension is to expose to the OpenGL application writer an unprecedented degree of programmability in the computation of final fragment colors and depth values. This extension provides a mechanism for defining fragment program instruction sequences for application-defined fragment programs. When in fragment program mode, a program is executed each time a fragment is produced by rasterization. The inputs for the program are the attributes (position, colors, texture coordinates) associated with the fragment and a set of constant registers. A fragment program can perform mathematical computations and texture lookups using arbitrary texture coordinates. The results of a fragment program are new color and depth values for the fragment. This extension defines a programming model including a 4-component vector instruction set, 16- and 32-bit floating-point data types, and a relatively large set of temporary registers. The programming model also includes a condition code vector which can be used to mask register writes at run-time or kill fragments altogether. The syntax, program instructions, and general semantics are similar to those in the NV_vertex_program and NV_vertex_program2 extensions, which provide for the execution of an arbitrary program each time the GL receives a vertex. The fragment program execution environment is designed for efficient hardware implementation and to support a wide variety of programs. By design, the entire set of existing fragment programs defined by existing OpenGL per-fragment computation extensions can be implemented using the extension's programming model. The fragment program execution environment accesses textures via arbitrarily computed texture coordinates. As such, there is no necessary correspondence between the texture coordinates and texture maps previously lumped into a single "texture unit". This extension separates the notion of "texture coordinate sets" and "texture image units" (texture maps and associated parameters), allowing implementations with a different number of each. The initial implementation of this extension will support 8 texture coordinate sets and 16 texture image units. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/fragment_program.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.fragment_program import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/copy_depth_to_color.py0000644000175000001440000000414212025001653022471 0ustar mcfletchusers00000000000000'''OpenGL extension NV.copy_depth_to_color This module customises the behaviour of the OpenGL.raw.GL.NV.copy_depth_to_color to provide a more Python-friendly API Overview (from the spec) Some applications, especially systems for distributed OpenGL rendering, would like to have a fast way of copying their depth buffer into a color buffer; for example, this allows the depth buffer to be scanned out, allowing downstream compositing operations. To do this operation in unextended OpenGL, the app must use glReadPixels of GL_DEPTH_COMPONENT data, followed by glDrawPixels of RGBA data. However, this typically will not provide adequate performance. This extension provides a way to copy the depth data directly into the color buffer, by adding two new options for the "type" parameter of glCopyPixels: GL_DEPTH_STENCIL_TO_RGBA_NV and GL_DEPTH_STENCIL_TO_BGRA_NV. Typically, OpenGL implementations support many more bits of depth precision than color precision per channel. On many PC platforms, it is common, for example, to have 24 bits of depth, 8 bits of stencil, and 8 bits of red, green, blue, and alpha. In such a framebuffer configuration, the most effective way to copy the data without this extension would be to perform a glReadPixels of GL_UNSIGNED_INT_24_8_NV/GL_DEPTH_STENCIL_NV (using the existing NV_packed_depth_stencil extension), followed by a glDrawPixels of GL_UNSIGNED_INT_8_8_8_8/GL_RGBA or GL_BGRA data. This places the depth data in the color channels and the stencil data in the alpha channel. This extension's new operations concatenates these two operations, providing a CopyPixels command that does both of these steps in one. This provides a large performance speedup, since no pixel data must be transfered across the bus. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/copy_depth_to_color.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.copy_depth_to_color import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/copy_image.py0000644000175000001440000000155012025001653020547 0ustar mcfletchusers00000000000000'''OpenGL extension NV.copy_image This module customises the behaviour of the OpenGL.raw.GL.NV.copy_image to provide a more Python-friendly API Overview (from the spec) This extension enables efficient image data transfer between image objects (i.e. textures and renderbuffers) without the need to bind the objects or otherwise configure the rendering pipeline. The WGL and GLX versions allow copying between images in different contexts, even if those contexts are in different sharelists or even on different physical devices. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/copy_image.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.copy_image import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/multisample_filter_hint.py0000644000175000001440000000236512025001653023363 0ustar mcfletchusers00000000000000'''OpenGL extension NV.multisample_filter_hint This module customises the behaviour of the OpenGL.raw.GL.NV.multisample_filter_hint to provide a more Python-friendly API Overview (from the spec) OpenGL multisampling typically assumes that the samples of a given pixel are weighted uniformly and averaged to compute the pixel's resolved color. This extension provides a hint that permits implementations to provide an alternative method of resolving the color of multisampled pixels. As an example of such an alternative method, NVIDIA's GeForce3 GPU provides a technique known as Quincunx filtering. This technique is used in two-sample multisampling, but it blends the pixel's two samples and three additional samples from adjacent pixels. The sample pattern is analogous to the 5 pattern on a die. The quality of this technique is widely regarded as comparable to 4 sample multisampling. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/multisample_filter_hint.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.multisample_filter_hint import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/gpu_program4.py0000644000175000001440000000471612025001653021050 0ustar mcfletchusers00000000000000'''OpenGL extension NV.gpu_program4 This module customises the behaviour of the OpenGL.raw.GL.NV.gpu_program4 to provide a more Python-friendly API Overview (from the spec) This specification documents the common instruction set and basic functionality provided by NVIDIA's 4th generation of assembly instruction sets supporting programmable graphics pipeline stages. The instruction set builds upon the basic framework provided by the ARB_vertex_program and ARB_fragment_program extensions to expose considerably more capable hardware. In addition to new capabilities for vertex and fragment programs, this extension provides a new program type (geometry programs) further described in the NV_geometry_program4 specification. NV_gpu_program4 provides a unified instruction set -- all instruction set features are available for all program types, except for a small number of features that make sense only for a specific program type. It provides fully capable signed and unsigned integer data types, along with a set of arithmetic, logical, and data type conversion instructions capable of operating on integers. It also provides a uniform set of structured branching constructs (if tests, loops, and subroutines) that fully support run-time condition testing. This extension provides several new texture mapping capabilities. Shadow cube maps are supported, where cube map faces can encode depth values. Texture lookup instructions can include an immediate texel offset, which can assist in advanced filtering. New instructions are provided to fetch a single texel by address in a texture map (TXF) and query the size of a specified texture level (TXQ). By and large, vertex and fragment programs written to ARB_vertex_program and ARB_fragment_program can be ported directly by simply changing the program header from "!!ARBvp1.0" or "!!ARBfp1.0" to "!!NVvp4.0" or "!!NVfp4.0", and then modifying the code to take advantage of the expanded feature set. There are a small number of areas where this extension is not a functional superset of previous vertex program extensions, which are documented in this specification. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/gpu_program4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.gpu_program4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/NV/vertex_attrib_integer_64bit.py0000644000175000001440000000173212025001653024044 0ustar mcfletchusers00000000000000'''OpenGL extension NV.vertex_attrib_integer_64bit This module customises the behaviour of the OpenGL.raw.GL.NV.vertex_attrib_integer_64bit to provide a more Python-friendly API Overview (from the spec) This extension provides support for specifying vertex attributes with 64-bit integer components, analagous to the 64-bit floating point support added in EXT_vertex_attrib_64bit. Additionally, it provides the VertexAttribLFormatNV entry point to specify bindless vertex attribute arrays with 64-bit integer or floating-point components in conjunction with the NV_vertex_buffer_unified_memory extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/NV/vertex_attrib_integer_64bit.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.NV.vertex_attrib_integer_64bit import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/REND/0000755000175000001440000000000012032640120016261 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/REND/__init__.py0000644000175000001440000000002712025001653020375 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/REND/screen_coordinates.py0000644000175000001440000000445312025001653022516 0ustar mcfletchusers00000000000000'''OpenGL extension REND.screen_coordinates This module customises the behaviour of the OpenGL.raw.GL.REND.screen_coordinates to provide a more Python-friendly API Overview (from the spec) This extension allows the specification of screen coordinate vertex data. Screen coordinate vertices completely bypass transformation, texture generation, lighting and frustum clipping. It also allow for fewer floating point computations to the performed by OpenGL. If we get screen coordinate inputs then in order to perspectively correct data (eg texture), the input data currently has to be specified in one of the following manners 1. Specify all the data normally eg. glTexture2T(s, t); and the coordinates as glVertex4T(x*w, y*w, z*w, w); or 2. Divide each data by w eg. glTexture4T(s/w, t/w, r/w, q/w); and the coordinates as glVertex3T(x, y, z); Most hardware already performs some form of correction of the coordinate data with respect to the w term prior to interpolation. This is normally in the form of a multiplication of the terms by the inverse w. It would be much more efficient to simply specify screen coordinates as shown in the following example glTexture2T(s, t, r, q); and the coordinates as glVertex4T(x, y, z, w); and allow the hardware to bring the interpolated terms into a linear screen space. Additionally if the application derives screen coordinates it is also highly likely that the 1/w term may already be computed. So it would be advantageous to be able to specify 1/w directly instead of w in the input screen coordinates. For hardware that linearly interpolates data, the hardware interpolates the following data: s/w, t/w, r/w, q/w, x, y, z If the input w represents the original 1/w, then the hardware can avoid the division and instead interpolate: s*w, t*w, r*w, q*w, x, y, z The official definition of this extension is available here: http://www.opengl.org/registry/specs/REND/screen_coordinates.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.REND.screen_coordinates import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/WIN/0000755000175000001440000000000012032640120016166 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/WIN/__init__.py0000644000175000001440000000002712025001653020302 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/WIN/phong_shading.py0000644000175000001440000000222012025001653021350 0ustar mcfletchusers00000000000000'''OpenGL extension WIN.phong_shading This module customises the behaviour of the OpenGL.raw.GL.WIN.phong_shading to provide a more Python-friendly API Overview (from the spec) WIN_phong_shading enables rendering Phong shaded primitives using OpenGL. Phong shading is a well known shading technique documented in most graphics texts. As opposed to Gouraud (or smooth) shading, which simply calculates the normals at the vertices and then interpolates the colors of the pixels, Phong shading involves interpolating an individual normal for every pixel, and then applying the shading model to each pixel based on its normal component. While Phong shading requires substantially more computation than does Gouraud shading, the resulting images are more realistic, especially if the primitives are large. The official definition of this extension is available here: http://www.opengl.org/registry/specs/WIN/phong_shading.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.WIN.phong_shading import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/WIN/specular_fog.py0000644000175000001440000000354012025001653021217 0ustar mcfletchusers00000000000000'''OpenGL extension WIN.specular_fog This module customises the behaviour of the OpenGL.raw.GL.WIN.specular_fog to provide a more Python-friendly API Overview (from the spec) Specularly lit textures enhance the realism of a scene greatly. Using the current OpenGL lighting model, one cannot obtain specularly lit textures. This is because in the current OpenGL lighting model lighting is done ahead of texturing and texture-functions such as modulate are inadequate for such a simulation. What needs to be addressed is that, somehow an additional interpolant (specular color of that material) needs to be propagated till that stage of the pipeline where texture-mapping is performed. This interpolant is then added on to the fragment's color resulting from the texturing process before proceeding with the rest of the pipeline. This can be addressed very easily in software, but hardware is not so malleable. Currently most hardware does not support such a lighting model. However, some current hardware does support fogging, which takes place in the pipeline after texturing. This hardware assumes that the fog blend factor f is computed per-vertex and interpolates the value across the primitive. The WIN_specular_fog extension enables the use of such existing fog circuitry to obtain specularly lit textures without much performance degradation. To use it the programmer simply enables the extension with a call to Enable with the appropriate enumerant and sets the fog color to the desired specular color. The official definition of this extension is available here: http://www.opengl.org/registry/specs/WIN/specular_fog.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.WIN.specular_fog import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/shaders.py0000644000175000001440000001774312025001653017554 0ustar mcfletchusers00000000000000"""Convenience module providing common shader entry points The point of this module is to allow client code to use OpenGL Core names to reference shader-related operations even if the local hardware only supports ARB extension-based shader rendering. There are also two utility methods compileProgram and compileShader which make it easy to create demos which are shader-using. """ import logging logging.basicConfig() log = logging.getLogger( 'OpenGL.GL.shaders' ) from OpenGL import GL from OpenGL.GL.ARB import ( shader_objects, fragment_shader, vertex_shader, vertex_program, geometry_shader4, separate_shader_objects, get_program_binary, ) from OpenGL.extensions import alternate __all__ = [ 'glAttachShader', 'glDeleteShader', 'glGetProgramInfoLog', 'glGetShaderInfoLog', 'glGetProgramiv', 'glGetShaderiv', 'compileProgram', 'compileShader', 'GL_VALIDATE_STATUS', 'GL_LINK_STATUS', # automatically added stuff here... ] def _alt( base, name ): if hasattr( GL, base ): root = getattr( GL, base ) if hasattr(root,'__call__'): globals()[base] = alternate( getattr(GL,base), getattr(module,name) ) __all__.append( base ) else: globals()[base] = root __all__.append( base ) return True return False _excludes = ['glGetProgramiv'] for module in ( shader_objects,fragment_shader,vertex_shader,vertex_program, geometry_shader4, ): for name in dir(module): found = None for suffix in ('ObjectARB','_ARB','ARB'): if name.endswith( suffix ): found = False base = name[:-(len(suffix))] if base not in _excludes: if _alt( base, name ): found = True break if found is False: log.debug( '''Found no alternate for: %s.%s''', module.__name__,name, ) glAttachShader = alternate( GL.glAttachShader,shader_objects.glAttachObjectARB ) glDetachShader = alternate( GL.glDetachShader,shader_objects.glDetachObjectARB ) glDeleteShader = alternate( GL.glDeleteShader,shader_objects.glDeleteObjectARB ) glGetAttachedShaders = alternate( GL.glGetAttachedShaders, shader_objects.glGetAttachedObjectsARB ) glGetProgramInfoLog = alternate( GL.glGetProgramInfoLog, shader_objects.glGetInfoLogARB ) glGetShaderInfoLog = alternate( GL.glGetShaderInfoLog, shader_objects.glGetInfoLogARB ) glGetShaderiv = alternate( GL.glGetShaderiv, shader_objects.glGetObjectParameterivARB ) glGetProgramiv = alternate( GL.glGetProgramiv, shader_objects.glGetObjectParameterivARB ) GL_VALIDATE_STATUS = GL.GL_VALIDATE_STATUS GL_COMPILE_STATUS = GL.GL_COMPILE_STATUS GL_LINK_STATUS = GL.GL_LINK_STATUS GL_FALSE = GL.GL_FALSE GL_TRUE = GL.GL_TRUE class ShaderProgram( int ): """Integer sub-class with context-manager operation""" def __enter__( self ): """Start use of the program""" glUseProgram( self ) def __exit__( self, typ, val, tb ): """Stop use of the program""" glUseProgram( 0 ) def check_validate( self ): """Check that the program validates Validation has to occur *after* linking/loading raises RuntimeError on failures """ glValidateProgram( self ) validation = glGetProgramiv( self, GL_VALIDATE_STATUS ) if validation == GL_FALSE: raise RuntimeError( """Validation failure (%s): %s"""%( validation, glGetProgramInfoLog( self ), )) return self def check_linked( self ): """Check link status for this program raises RuntimeError on failures """ link_status = glGetProgramiv( self, GL_LINK_STATUS ) if link_status == GL_FALSE: raise RuntimeError( """Link failure (%s): %s"""%( link_status, glGetProgramInfoLog( self ), )) return self def retrieve( self ): """Attempt to retrieve binary for this compiled shader Note that binaries for a program are *not* generally portable, they should be used solely for caching compiled programs for local use; i.e. to reduce compilation overhead. returns (format,binaryData) for the shader program """ from OpenGL.constants import GLint,GLenum from OpenGL.arrays import GLbyteArray size = GLint() glGetProgramiv( self, get_program_binary.GL_PROGRAM_BINARY_LENGTH, size ) result = GLbyteArray.zeros( (size.value,)) size2 = GLint() format = GLenum() get_program_binary.glGetProgramBinary( self, size.value, size2, format, result ) return format.value, result def load( self, format, binary ): """Attempt to load binary-format for a pre-compiled shader See notes in retrieve """ get_program_binary.glProgramBinary( self, format, binary, len(binary)) self.check_validate() self.check_linked() return self def compileProgram(*shaders, **named): """Create a new program, attach shaders and validate shaders -- arbitrary number of shaders to attach to the generated program. separable (keyword only) -- set the separable flag to allow for partial installation of shader into the pipeline (see glUseProgramStages) retrievable (keyword only) -- set the retrievable flag to allow retrieval of the program binary representation, (see glProgramBinary, glGetProgramBinary) This convenience function is *not* standard OpenGL, but it does wind up being fairly useful for demos and the like. You may wish to copy it to your code base to guard against PyOpenGL changes. Usage: shader = compileProgram( compileShader( source, GL_VERTEX_SHADER ), compileShader( source2, GL_FRAGMENT_SHADER ), ) glUseProgram( shader ) Note: If (and only if) validation of the linked program *passes* then the passed-in shader objects will be deleted from the GL. returns ShaderProgram() (GLuint) program reference raises RuntimeError when a link/validation failure occurs """ program = glCreateProgram() if named.get('separable'): glProgramParameteri( program, separate_shader_objects.GL_PROGRAM_SEPARABLE, GL_TRUE ) if named.get('retrievable'): glProgramParameteri( program, get_program_binary.GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE ) for shader in shaders: glAttachShader(program, shader) program = ShaderProgram( program ) glLinkProgram(program) program.check_validate() program.check_linked() for shader in shaders: glDeleteShader(shader) return program def as_bytes( s ): """Utility to retrieve s as raw string (8-bit)""" if isinstance( s, unicode ): s = s.encode( ) # TODO: can we use latin-1 or utf-8? return s def compileShader( source, shaderType ): """Compile shader source of given type source -- GLSL source-code for the shader shaderType -- GLenum GL_VERTEX_SHADER, GL_FRAGMENT_SHADER, etc, returns GLuint compiled shader reference raises RuntimeError when a compilation failure occurs """ if isinstance( source, (str,unicode)): source = [ source ] source = [ as_bytes(s) for s in source ] shader = glCreateShader(shaderType) glShaderSource( shader, source ) glCompileShader( shader ) result = glGetShaderiv( shader, GL_COMPILE_STATUS ) if not(result): # TODO: this will be wrong if the user has # disabled traditional unpacking array support. raise RuntimeError( """Shader compile failure (%s): %s"""%( result, glGetShaderInfoLog( shader ), ), source, shaderType, ) return shader PyOpenGL-3.0.2/OpenGL/GL/HP/0000755000175000001440000000000012032640120016040 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/HP/texture_lighting.py0000644000175000001440000000127512025001653022010 0ustar mcfletchusers00000000000000'''OpenGL extension HP.texture_lighting This module customises the behaviour of the OpenGL.raw.GL.HP.texture_lighting to provide a more Python-friendly API Overview (from the spec) This extension defines a mechanism for applications to request that color originating from specular lighting be added to the fragment color _after_ texture application. The official definition of this extension is available here: http://www.opengl.org/registry/specs/HP/texture_lighting.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.HP.texture_lighting import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/HP/__init__.py0000644000175000001440000000002712025001653020154 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/HP/image_transform.py0000644000175000001440000000212012025001653021566 0ustar mcfletchusers00000000000000'''OpenGL extension HP.image_transform This module customises the behaviour of the OpenGL.raw.GL.HP.image_transform to provide a more Python-friendly API Overview (from the spec) This extension provides support for scaling, rotation, and translation of two-dimensional pixel rectangles at a fixed location in the pixel transfer process. The 2D image transformation attributes are specified as individual values so that that implementations may easily detect scaling and rotation values that lend themselves to optimization. 2D image transformation occurs immediately after the post-convolution color table stage of the pixel pipeline. This extension also defines a color table that is applied immediately after the image transformation operation. The official definition of this extension is available here: http://www.opengl.org/registry/specs/HP/image_transform.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.HP.image_transform import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/HP/convolution_border_modes.py0000644000175000001440000000121312025001653023516 0ustar mcfletchusers00000000000000'''OpenGL extension HP.convolution_border_modes This module customises the behaviour of the OpenGL.raw.GL.HP.convolution_border_modes to provide a more Python-friendly API Overview (from the spec) This extension provides some additional border modes for the EXT_convolution extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/HP/convolution_border_modes.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.HP.convolution_border_modes import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/HP/occlusion_test.py0000644000175000001440000000101012025001653021443 0ustar mcfletchusers00000000000000'''OpenGL extension HP.occlusion_test This module customises the behaviour of the OpenGL.raw.GL.HP.occlusion_test to provide a more Python-friendly API Overview (from the spec) The official definition of this extension is available here: http://www.opengl.org/registry/specs/HP/occlusion_test.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.HP.occlusion_test import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/pointers.py0000644000175000001440000003322012025001653017752 0ustar mcfletchusers00000000000000"""Implementations for "held-pointers" of various types This argument type is special because it is stored, that is, it needs to be cached on our side so that the memory address does not go out-of-scope storedPointers = {} def glVertexPointerd( array ): "Natural writing of glVertexPointerd using standard ctypes" arg2 = GL_DOUBLE arg3 = 0 # stride arg4 = arrays.asArray(array, GL_DOUBLE) arg1 = arrays.arraySize( arg4, 'd' ) platform.OpenGL.glVertexPointer( arg1, arg2, arg3, arrays.ArrayDatatype.dataPointer(arg4) ) glCheckError() # only store if we successfully set the value... storedPointers[ GL_VERTEX_ARRAY ] = arg4 return arg4 """ from OpenGL import platform, arrays, error, wrapper, contextdata, converters, constant from OpenGL.raw.GL.VERSION import GL_1_1 as simple import ctypes import weakref GLsizei = ctypes.c_int GLenum = ctypes.c_uint GLint = ctypes.c_int # OpenGL-ctypes variables that mimic OpenGL constant operation... GL_INTERLEAVED_ARRAY_POINTER = constant.Constant( 'GL_INTERLEAVED_ARRAY_POINTER', -32910 ) __all__ = ( 'glColorPointer', 'glColorPointerb','glColorPointerd','glColorPointerf','glColorPointeri', 'glColorPointers','glColorPointerub','glColorPointerui','glColorPointerus', 'glEdgeFlagPointer', 'glEdgeFlagPointerb', 'glIndexPointer', 'glIndexPointerb','glIndexPointerd','glIndexPointerf', 'glIndexPointeri','glIndexPointers','glIndexPointerub', 'glNormalPointer', 'glNormalPointerb', 'glNormalPointerd','glNormalPointerf','glNormalPointeri','glNormalPointers', 'glTexCoordPointer', 'glTexCoordPointerb','glTexCoordPointerd','glTexCoordPointerf', 'glTexCoordPointeri','glTexCoordPointers', 'glVertexPointer', 'glVertexPointerb','glVertexPointerd','glVertexPointerf','glVertexPointeri', 'glVertexPointers', 'glDrawElements','glDrawElementsui','glDrawElementsub','glDrawElementsus', 'glFeedbackBuffer', 'glSelectBuffer', 'glRenderMode', 'glGetPointerv', 'glInterleavedArrays', 'GL_INTERLEAVED_ARRAY_POINTER', ) # Have to create *new* ctypes wrappers for the platform object! # We can't just alter the default one since we have different ways of # calling it POINTER_FUNCTION_DATA = [ ('glColorPointerd', simple.glColorPointer, simple.GL_DOUBLE, simple.GL_COLOR_ARRAY_POINTER, 0, 3), ('glColorPointerf', simple.glColorPointer, simple.GL_FLOAT, simple.GL_COLOR_ARRAY_POINTER, 0, 3), ('glColorPointeri', simple.glColorPointer, simple.GL_INT, simple.GL_COLOR_ARRAY_POINTER, 0, 3), ('glColorPointers', simple.glColorPointer, simple.GL_SHORT, simple.GL_COLOR_ARRAY_POINTER, 0, 3), ('glColorPointerub', simple.glColorPointer, simple.GL_UNSIGNED_BYTE, simple.GL_COLOR_ARRAY_POINTER, 0, 3), # these data-types are mapped from diff Numeric types ('glColorPointerb', simple.glColorPointer, simple.GL_BYTE, simple.GL_COLOR_ARRAY_POINTER, 0, 3), ('glColorPointerui', simple.glColorPointer, simple.GL_UNSIGNED_INT, simple.GL_COLOR_ARRAY_POINTER, 0, 3), ('glColorPointerus', simple.glColorPointer, simple.GL_UNSIGNED_SHORT, simple.GL_COLOR_ARRAY_POINTER, 0, 3), ('glEdgeFlagPointerb', simple.glEdgeFlagPointer, simple.GL_BYTE, simple.GL_EDGE_FLAG_ARRAY_POINTER, 2, None), ('glIndexPointerd', simple.glIndexPointer, simple.GL_DOUBLE, simple.GL_INDEX_ARRAY_POINTER, 1, None), ('glIndexPointerf', simple.glIndexPointer, simple.GL_FLOAT, simple.GL_INDEX_ARRAY_POINTER, 1, None), ('glIndexPointeri', simple.glIndexPointer, simple.GL_INT, simple.GL_INDEX_ARRAY_POINTER, 1, None), ('glIndexPointerub', simple.glIndexPointer, simple.GL_UNSIGNED_BYTE, simple.GL_INDEX_ARRAY_POINTER, 1, None), ('glIndexPointers', simple.glIndexPointer, simple.GL_SHORT, simple.GL_INDEX_ARRAY_POINTER, 1, None), # these data-types are mapped from diff Numeric types ('glIndexPointerb', simple.glIndexPointer, simple.GL_BYTE, simple.GL_INDEX_ARRAY_POINTER, 1, None), ('glNormalPointerd', simple.glNormalPointer, simple.GL_DOUBLE, simple.GL_NORMAL_ARRAY_POINTER, 1, None), ('glNormalPointerf', simple.glNormalPointer, simple.GL_FLOAT, simple.GL_NORMAL_ARRAY_POINTER, 1, None), ('glNormalPointeri', simple.glNormalPointer, simple.GL_INT, simple.GL_NORMAL_ARRAY_POINTER, 1, None), ('glNormalPointerb', simple.glNormalPointer, simple.GL_BYTE, simple.GL_NORMAL_ARRAY_POINTER, 1, None), ('glNormalPointers', simple.glNormalPointer, simple.GL_SHORT, simple.GL_NORMAL_ARRAY_POINTER, 1, None), ('glTexCoordPointerd', simple.glTexCoordPointer, simple.GL_DOUBLE, simple.GL_TEXTURE_COORD_ARRAY_POINTER, 0, 2), ('glTexCoordPointerf', simple.glTexCoordPointer, simple.GL_FLOAT, simple.GL_TEXTURE_COORD_ARRAY_POINTER, 0, 2), ('glTexCoordPointeri', simple.glTexCoordPointer, simple.GL_INT, simple.GL_TEXTURE_COORD_ARRAY_POINTER, 0, 2), ('glTexCoordPointerb', simple.glTexCoordPointer, simple.GL_BYTE, simple.GL_TEXTURE_COORD_ARRAY_POINTER, 0, 2), ('glTexCoordPointers', simple.glTexCoordPointer, simple.GL_SHORT, simple.GL_TEXTURE_COORD_ARRAY_POINTER, 0, 2), ('glVertexPointerd', simple.glVertexPointer, simple.GL_DOUBLE, simple.GL_VERTEX_ARRAY_POINTER, 0, 3), ('glVertexPointerf', simple.glVertexPointer, simple.GL_FLOAT, simple.GL_VERTEX_ARRAY_POINTER, 0, 3), ('glVertexPointeri', simple.glVertexPointer, simple.GL_INT, simple.GL_VERTEX_ARRAY_POINTER, 0, 3), ('glVertexPointerb', simple.glVertexPointer, simple.GL_INT, simple.GL_VERTEX_ARRAY_POINTER, 0, 3), ('glVertexPointers', simple.glVertexPointer, simple.GL_SHORT, simple.GL_VERTEX_ARRAY_POINTER, 0, 3), ] def wrapPointerFunction( name, baseFunction, glType, arrayType,startArgs, defaultSize ): """Wrap the given pointer-setting function""" function= wrapper.wrapper( baseFunction ) if 'ptr' in baseFunction.argNames: pointer_name = 'ptr' else: pointer_name = 'pointer' assert not getattr( function, 'pyConverters', None ), """Reusing wrappers?""" if arrayType: arrayModuleType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ glType ] function.setPyConverter( pointer_name, arrays.asArrayType(arrayModuleType) ) else: function.setPyConverter( pointer_name, arrays.AsArrayOfType(pointer_name,'type') ) function.setCConverter( pointer_name, converters.getPyArgsName( pointer_name ) ) if 'size' in function.argNames: function.setPyConverter( 'size' ) function.setCConverter( 'size', arrays.arraySizeOfFirstType(arrayModuleType,defaultSize) ) if 'type' in function.argNames: function.setPyConverter( 'type' ) function.setCConverter( 'type', glType ) if 'stride' in function.argNames: function.setPyConverter( 'stride' ) function.setCConverter( 'stride', 0 ) function.setStoreValues( arrays.storePointerType( pointer_name, arrayType ) ) function.setReturnValues( wrapper.returnPyArgument( pointer_name ) ) return name,function for name,function in [ wrapPointerFunction( *args ) for args in POINTER_FUNCTION_DATA ]: globals()[name] = function try: del name, function except NameError, err: pass glVertexPointer = wrapper.wrapper( simple.glVertexPointer ).setPyConverter( 'pointer', arrays.AsArrayOfType( 'pointer', 'type' ), ).setStoreValues( arrays.storePointerType( 'pointer', simple.GL_VERTEX_ARRAY_POINTER ) ).setReturnValues( wrapper.returnPyArgument( 'pointer' ) ) glTexCoordPointer = wrapper.wrapper( simple.glTexCoordPointer ).setPyConverter( 'pointer', arrays.AsArrayOfType( 'pointer', 'type' ), ).setStoreValues( arrays.storePointerType( 'pointer', simple.GL_TEXTURE_COORD_ARRAY_POINTER ) ).setReturnValues( wrapper.returnPyArgument( 'pointer' ) ) glNormalPointer = wrapper.wrapper( simple.glNormalPointer ).setPyConverter( 'pointer', arrays.AsArrayOfType( 'pointer', 'type' ), ).setStoreValues( arrays.storePointerType( 'pointer', simple.GL_NORMAL_ARRAY_POINTER ) ).setReturnValues( wrapper.returnPyArgument( 'pointer' ) ) glIndexPointer = wrapper.wrapper( simple.glIndexPointer ).setPyConverter( 'pointer', arrays.AsArrayOfType( 'pointer', 'type' ), ).setStoreValues( arrays.storePointerType( 'pointer', simple.GL_INDEX_ARRAY_POINTER ) ).setReturnValues( wrapper.returnPyArgument( 'pointer' ) ) glEdgeFlagPointer = wrapper.wrapper( simple.glEdgeFlagPointer ).setPyConverter( # XXX type is wrong! 'pointer', arrays.AsArrayTyped( 'pointer', arrays.GLushortArray ), ).setStoreValues( arrays.storePointerType( 'pointer', simple.GL_EDGE_FLAG_ARRAY_POINTER ) ).setReturnValues( wrapper.returnPyArgument( 'pointer' ) ) glColorPointer = wrapper.wrapper( simple.glColorPointer ).setPyConverter( 'pointer', arrays.AsArrayOfType( 'pointer', 'type' ), ).setStoreValues( arrays.storePointerType( 'pointer', simple.GL_COLOR_ARRAY_POINTER ) ).setReturnValues( wrapper.returnPyArgument( 'pointer' ) ) glInterleavedArrays = wrapper.wrapper( simple.glInterleavedArrays ).setStoreValues( arrays.storePointerType( 'pointer', GL_INTERLEAVED_ARRAY_POINTER ) ).setReturnValues( wrapper.returnPyArgument( 'pointer' ) ) glDrawElements = wrapper.wrapper( simple.glDrawElements ).setPyConverter( 'indices', arrays.AsArrayOfType( 'indices', 'type' ), ).setReturnValues( wrapper.returnPyArgument( 'indices' ) ) def glDrawElementsTyped( type, suffix ): arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ type ] function = wrapper.wrapper( simple.glDrawElements ).setPyConverter('type').setCConverter( 'type', type ).setPyConverter('count').setCConverter( 'count', arrays.AsArrayTypedSize( 'indices', arrayType ), ).setPyConverter( 'indices', arrays.AsArrayTyped( 'indices', arrayType ), ).setReturnValues( wrapper.returnPyArgument( 'indices' ) ) return function for type,suffix in ((simple.GL_UNSIGNED_BYTE,'ub'),(simple.GL_UNSIGNED_INT,'ui'),(simple.GL_UNSIGNED_SHORT,'us')): globals()['glDrawElements%(suffix)s'%globals()] = glDrawElementsTyped( type,suffix ) try: del type,suffix,glDrawElementsTyped except NameError, err: pass # create buffer of given size and return it for future reference # keep a per-context weakref around to allow us to return the original # array we returned IFF the user has kept a reference as well... def glSelectBuffer( size, buffer = None ): """Create a selection buffer of the given size """ if buffer is None: buffer = arrays.GLuintArray.zeros( (size,) ) simple.glSelectBuffer( size, buffer ) contextdata.setValue( simple.GL_SELECTION_BUFFER_POINTER, buffer ) return buffer def glFeedbackBuffer( size, type, buffer = None ): """Create a selection buffer of the given size """ if buffer is None: buffer = arrays.GLfloatArray.zeros( (size,) ) simple.glFeedbackBuffer( size, type, buffer ) contextdata.setValue( simple.GL_FEEDBACK_BUFFER_POINTER, buffer ) contextdata.setValue( "GL_FEEDBACK_BUFFER_TYPE", type ) return buffer def glRenderMode( newMode ): """Change to the given rendering mode If the current mode is GL_FEEDBACK or GL_SELECT, return the current buffer appropriate to the mode """ # must get the current mode to determine operation... from OpenGL.GL import glGetIntegerv from OpenGL.GL import selection, feedback currentMode = glGetIntegerv( simple.GL_RENDER_MODE ) try: currentMode = currentMode[0] except (TypeError,ValueError,IndexError), err: pass if currentMode in (simple.GL_RENDER,0): # no array needs to be returned... return simple.glRenderMode( newMode ) result = simple.glRenderMode( newMode ) # result is now an integer telling us how many elements were copied... if result < 0: if currentMode == simple.GL_SELECT: raise error.GLError( simple.GL_STACK_OVERFLOW, "glSelectBuffer too small to hold selection results", ) elif currentMode == simple.GL_FEEDBACK: raise error.GLError( simple.GL_STACK_OVERFLOW, "glFeedbackBuffer too small to hold selection results", ) else: raise error.GLError( simple.GL_STACK_OVERFLOW, "Unknown glRenderMode buffer (%s) too small to hold selection results"%( currentMode, ), ) # Okay, now that the easy cases are out of the way... # Do we have a pre-stored pointer about which the user already knows? context = platform.GetCurrentContext() if context == 0: raise error.Error( """Returning from glRenderMode without a valid context!""" ) arrayConstant, wrapperFunction = { simple.GL_FEEDBACK: (simple.GL_FEEDBACK_BUFFER_POINTER,feedback.parseFeedback), simple.GL_SELECT: (simple.GL_SELECTION_BUFFER_POINTER, selection.GLSelectRecord.fromArray), }[ currentMode ] current = contextdata.getValue( arrayConstant ) # XXX check to see if it's the *same* array we set currently! if current is None: current = glGetPointerv( arrayConstant ) # XXX now, can turn the array into the appropriate wrapper type... if wrapperFunction: current = wrapperFunction( current, result ) return current # XXX this belongs in the GL module, not here! def glGetPointerv( constant ): """Retrieve a stored pointer constant""" # do we have a cached version of the pointer? # get the base pointer from the underlying operation vp = ctypes.voidp() simple.glGetPointerv( constant, ctypes.byref(vp) ) current = contextdata.getValue( constant ) if current is not None: if arrays.ArrayDatatype.dataPointer( current ) == vp.value: return current # XXX should be coercing to the proper type and converting to an array return vp PyOpenGL-3.0.2/OpenGL/GL/__init__.py0000644000175000001440000000213712025001653017651 0ustar mcfletchusers00000000000000"""OpenGL.GL, the core GL library and extensions to it""" # early import of our modules to prevent import loops... from OpenGL.GL.VERSION.GL_1_1 import * from OpenGL.GL.glget import * from OpenGL.GL.pointers import * from OpenGL.GL.images import * from OpenGL.GL.exceptional import * from OpenGL.error import * from OpenGL.GL.glget import * from OpenGL.GL.VERSION.GL_1_2 import * from OpenGL.GL.VERSION.GL_1_3 import * from OpenGL.GL.VERSION.GL_1_4 import * from OpenGL.GL.VERSION.GL_1_5 import * from OpenGL.GL.VERSION.GL_2_0 import * from OpenGL.GL.VERSION.GL_2_1 import * from OpenGL.GL.VERSION.GL_3_0 import * from OpenGL.GL.VERSION.GL_3_1 import * from OpenGL.GL.VERSION.GL_3_2 import * from OpenGL.GL.VERSION.GL_3_3 import * from OpenGL.GL.VERSION.GL_4_0 import * from OpenGL.GL.VERSION.GL_4_1 import * from OpenGL.GL.VERSION.GL_4_2 import * from OpenGL.GL.VERSION.GL_4_3 import * from OpenGL.constants import * GLerror = GLError # Now the aliases... glRotate = glRotated glTranslate = glTranslated glLight = glLightfv glTexCoord = glTexCoord2d glScale = glScaled #glColor = glColor3f glNormal = glNormal3d PyOpenGL-3.0.2/OpenGL/GL/S3/0000755000175000001440000000000012032640120016016 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/S3/__init__.py0000644000175000001440000000002712025001653020132 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/S3/s3tc.py0000644000175000001440000000105412025001653017250 0ustar mcfletchusers00000000000000'''OpenGL extension S3.s3tc This module customises the behaviour of the OpenGL.raw.GL.S3.s3tc to provide a more Python-friendly API Overview (from the spec) This extension allows specifying texture data in compressed S3TC format. The official definition of this extension is available here: http://www.opengl.org/registry/specs/S3/s3tc.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.S3.s3tc import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/selection.py0000644000175000001440000000443212025001653020077 0ustar mcfletchusers00000000000000"""Selection-buffer handling code This code is resonsible for turning gluint * arrays into structured representations for use by Python-level code. """ def uintToLong( value ): if value < 0: # array type without a uint, so represented as an int value = (value & 0x7fffffff) + 0x80000000 return value class GLSelectRecord( object ): """Minimalist object for storing an OpenGL selection-buffer record Provides near and far as *float* values by dividing by self.DISTANCE_DIVISOR (2**32-1) From the spec: Depth values (which are in the range [0,1]) are multiplied by 2^32 - 1, before being placed in the hit record. Names are unmodified, so normally are slices of the array passed in to GLSelectRecord.fromArray( array ) """ DISTANCE_DIVISOR = float((2L**32)-1) __slots__ = ('near','far','names') def fromArray( cls, array, total ): """Produce list with all records from the array""" result = [] index = 0 arrayLength = len(array) for item in xrange( total ): if index + 2 >= arrayLength: break count = array[index] near = array[index+1] far = array[index+2] names = map(uintToLong, array[index+3:index+3+count]) result.append( cls( near, far, names ) ) index += 3+count return result fromArray = classmethod( fromArray ) def __init__( self, near, far, names ): """Initialise/store the values""" self.near = self.convertDistance( near ) self.far = self.convertDistance( far ) self.names = names def convertDistance( self, value ): """Convert a distance value from array uint to 0.0-1.0 range float""" return uintToLong( value ) / self.DISTANCE_DIVISOR def __getitem__( self, key ): """Allow for treating the record as a three-tuple""" if isinstance( key, (int,long)): return (self.near,self.far,self.names)[key] elif key in self.__slots__: try: return getattr( self, key ) except AttributeError, err: raise KeyError( """Don't have an index/key %r for %s instant"""%( key, self.__class__, ))PyOpenGL-3.0.2/OpenGL/GL/SUN/0000755000175000001440000000000012032640120016176 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/SUN/global_alpha.py0000644000175000001440000000331012025001653021156 0ustar mcfletchusers00000000000000'''OpenGL extension SUN.global_alpha This module customises the behaviour of the OpenGL.raw.GL.SUN.global_alpha to provide a more Python-friendly API Overview (from the spec) Transparency is done in OpenGL using alpha blending. An alpha value of 0.0 is used for fully transparent objects, while an alpha value of 1.0 is used for fully opaque objects. A value of 0.25 is 75% transparent, and so on. OpenGL defines alpha as a component of the vertex color state. Whenever a color is set, the alpha component is set along with the red, green, and blue components. This means that transparency can't be changed for primitives with per-vertex colors without modifying the color of each vertex, replacing the old alpha component with the new alpha component. This can be very expensive for objects that are drawn using vertex arrays; it all but precludes the use of display lists. This extension defines a new global alpha attribute that can be used to specify an alpha factor that is independent from the alpha component of the color value. The global alpha factor is multiplied by the fragment's alpha value after primitive rasterization and prior to texture mapping, replacing the fragment's alpha value. The global alpha extension is only specified in RGBA mode and must be applied prior to any texture mapping operation. It is enabled by a new GLOBAL_ALPHA flag. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SUN/global_alpha.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SUN.global_alpha import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SUN/__init__.py0000644000175000001440000000002712025001653020312 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/SUN/slice_accum.py0000644000175000001440000000135012025001653021022 0ustar mcfletchusers00000000000000'''OpenGL extension SUN.slice_accum This module customises the behaviour of the OpenGL.raw.GL.SUN.slice_accum to provide a more Python-friendly API Overview (from the spec) This extension defines a new accumulation operation which enables the accumulation buffer to be used for alpha compositing. This enables higher precision alpha blending than what can be accomplished using the blend operation. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SUN/slice_accum.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SUN.slice_accum import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SUN/vertex.py0000644000175000001440000000131512025001653020071 0ustar mcfletchusers00000000000000'''OpenGL extension SUN.vertex This module customises the behaviour of the OpenGL.raw.GL.SUN.vertex to provide a more Python-friendly API Overview (from the spec) This extension provides new GL commands to specify vertex data such as color and normal along with the vertex in one single GL command in order to minimize the overhead in making GL commands for each set of vertex data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SUN/vertex.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SUN.vertex import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SUN/convolution_border_modes.py0000644000175000001440000000121412025001653023655 0ustar mcfletchusers00000000000000'''OpenGL extension SUN.convolution_border_modes This module customises the behaviour of the OpenGL.raw.GL.SUN.convolution_border_modes to provide a more Python-friendly API Overview (from the spec) This extension provides an additional border mode for the EXT_convolution extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SUN/convolution_border_modes.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SUN.convolution_border_modes import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SUN/mesh_array.py0000644000175000001440000000155112025001653020710 0ustar mcfletchusers00000000000000'''OpenGL extension SUN.mesh_array This module customises the behaviour of the OpenGL.raw.GL.SUN.mesh_array to provide a more Python-friendly API Overview (from the spec) This extension defines a new mesh primitive. The primitive can only be used with vertex arrays and cannot be used in immediate mode. The application must arrange the vertices in row major format. For example if a quad mesh is 4 vertices wide the, vertices in the first row are the first 4 vertices and vertices in the second row are vertices 5 through 8. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SUN/mesh_array.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SUN.mesh_array import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SUN/triangle_list.py0000644000175000001440000000512612025001653021420 0ustar mcfletchusers00000000000000'''OpenGL extension SUN.triangle_list This module customises the behaviour of the OpenGL.raw.GL.SUN.triangle_list to provide a more Python-friendly API Overview (from the spec) OpenGL has two chained triangle primitives, TRIANGLE_STRIP and TRIANGLE_FAN. For multiple, consecutive triangle strips or triangle fans, the overhead of Begin and End, or separate calls to DrawArrays, can be significant depending on the number of triangles per strip or fan. Many surface tessellators produce triangle strips with very few triangles per strip before needing to restart a new strip. Even sophisticated tessellators typically need to restart a new strip, or switch from a triangle strip to a triangle fan, many times within a single object. Such tessellators can often produce a more efficient tessellation--one with fewer vertices--by mixing strips and fans within the same object. The ability to switch from one to the other without restarting the strip or fan yields even more savings. Unfortunately, the overhead of switching from a triangle strip to a triangle fan, or vice versa, can reduce, or even eliminate the benefit gained from reducing the number of vertices. A new triangle list primitive, along with an associated replacement code attribute, is defined by this extension to allow multiple triangle strips and fans to be specified within the same Begin/End pair or from a single call to DrawArrays. The triangle list extension also provides the means to switch between triangle strips and triangle fans with or without restarting the strip or fan. TRIANGLE_LIST is a new primitive type (i.e., new Begin mode) that uses the ReplacementCodeSUN state attribute to determine whether the current vertex replaces the oldest vertex, as in a triangle strip, the middle vertex, as in a triangle fan, or restarts a new chained triangle list. The first vertex of a new triangle list is implicitly treated as a RESTART. The first three vertices complete the first triangle, after which the replacement codes of the vertex are used. The two vertices immediately following a restart--including the implicit restart on the first vertex--are ignored. The ReplacementCodeSUN attribute is part of the vertex state, and is only used by the TRIANGLE_LIST primitive. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SUN/triangle_list.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SUN.triangle_list import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/0000755000175000001440000000000012032640120016372 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/APPLE/aux_depth_stencil.py0000644000175000001440000000346212025001653022457 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.aux_depth_stencil This module customises the behaviour of the OpenGL.raw.GL.APPLE.aux_depth_stencil to provide a more Python-friendly API Overview (from the spec) Normally, each OpenGL drawable allocates at most one depth buffer and one stencil buffer, regardless of how many aux buffers there are. When the APPLE_aux_depth_stencil extension is used, and the depth buffer size is non-zero, the GL silently allocates a separate depth buffer for the color buffer and for each aux buffer. Similarly, if the stencil buffer size is non-zero, a separate stencil buffer is allocated for the color buffer and each aux buffer. This extension does not cause separate depth or stencil buffers to be allocated for the left and right buffers of a stereo drawable. A context with no aux buffers will be unaffected by this extension. Switching the draw or read buffer from the color buffer to an aux buffer, or switching between two aux buffers, simultaneously switches the associated depth and stencil buffers, for drawing or reading. For example, if an OpenGL context has two aux buffers and non-zero depth buffer size, it will have a total of three depth buffers - one associated with the color buffer and one associated with each aux buffer. If that context is used to render to AUX0, then to render to AUX1, the changes to the depth buffer made by the rendering to AUX1 will not affect the depth buffer associated with AUX0, and vice versa. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/aux_depth_stencil.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.aux_depth_stencil import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/client_storage.py0000644000175000001440000001336012025001653021755 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.client_storage This module customises the behaviour of the OpenGL.raw.GL.APPLE.client_storage to provide a more Python-friendly API Overview (from the spec) This extension provides a simple mechanism to optimize texture data handling by clients. GL implementations normally maintain a copy of texture image data supplied clients when any of the various texturing commands, such as TexImage2D, are invoked. This extension eliminates GL's internal copy of the texture image data and allows a client to maintain this data locally for textures when the UNPACK_CLIENT_STORAGE_APPLE pixel storage parameter is TRUE at the time of texture specification. Local texture data storage is especially useful in cases where clients maintain internal copies of textures used in any case. This results in what could be considered an extra copy of the texture image data. Assuming all operations are error free, the use of client storage has no affect on the result of texturing operations and will not affect rendering results. APPLE_client_storage allows clients to optimize memory requirements and copy operations it also requires adherence to specific rules in maintaining texture image data. Clients using this extension are agreeing to preserve a texture's image data for the life of the texture. The life of the texture is defined, in this case, as the time from first issuing the TexImage3D, TexImage2D or TexImage1D command, for the specific texture object with the UNPACK_CLIENT_STORAGE_APPLE pixel storage parameter set to TRUE, until the DeleteTextures command or another TexImage command for that same object. Only after DeleteTextures has completed, or new texture is specified, can the local texture memory be released, as it will no longer be utilized by OpenGL. Changing the UNPACK_CLIENT_STORAGE_APPLE pixel storage parameter will have no additional effect once the texturing command has been issued and specifically will not alleviate the client from maintaining the texture data. Client storage is implemented as a pixel storage parameter which affects texture image storage at the time the texturing command is issued. As with other pixel storage parameters this state may differ from the time the texturing command in executed if the command is placed in a display list. The PixelStore command is used to set the parameter UNPACK_CLIENT_STORAGE_APPLE. Values can either be TRUE or FALSE, with TRUE representing the use of client local storage and FALSE indicating the OpenGL engine and not the client will be responsible for maintaining texture storage for future texturing commands issued per the OpenGL specification. The default state for the UNPACK_CLIENT_STORAGE_APPLE parameter is FALSE Client storage is only available for texture objects and not the default texture (of any target type). This means that a texture object has to generated and bound to be used with client storage. Setting UNPACK_CLIENT_STORAGE_APPLE to TRUE and texturing with the default texture will result in normally texturing with GL maintaining a copy of the texture image data. Normally, client storage will be used in conjunction with normal texturing techniques. An application would use GenTextures to generate texture objects as needed. BindTexture to the texture object name of interest. Enable client storage via the PixelStore command setting the UNPACK_CLIENT_STORAGE_APPLE parameter to TRUE. Then use TexImage3D, TexImage2D or TexImage1D to specify the texture image. If no further use of client storage is desired, it is recommended to again use the PixelStore command, in this case setting the UNPACK_CLIENT_STORAGE_APPLE parameter to FALSE to disable client storage, since this pixel state is maintained unless explicitly set by the PixelStore command. If an application needs to modify the texture, using TexSubImage for example, it should be noted that the pointer passed to TexSubImage1D, TexSubImage2D or TexSubImage3D does not have to the same, or within the original texture memory. It if is not, there is the likelihood of GL copying the new data to the original texture memory owned by the client, thus actually modifying this texture image data. This does not affect requirement to maintain the original texture memory but also does not add the requirement to maintain the sub image data, due to the copy. Once a client has completed use of the texture stored in client memory, it should issue a DeleteTextures command to delete the texture object or issue a texture command, with the same target type, for the object, with either a different data pointer, or UNPACK_CLIENT_STORAGE_APPLE set to false, in any case, breaking the tie between GL and the texture buffer. An implicit Flush command is issued in these cases, ensuring all access to the texture by OpenGL is complete. Only at this point can the texture buffer be safely released. Releasing the texture buffer prior has undefined results and will very possibly display texel anomalies at run time. System level memory management and paging schemes should not affect the use of client storage. Consider in any case, that GL has an alias of the base pointer for this block of texture memory which is maintained until GL is finished rendering with the texture and it has been deleted or reassigned to another set of texture data. As long as this alias exists, applications must not de-allocate, move or purge this memory. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/client_storage.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.client_storage import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/element_array.py0000644000175000001440000000304112025001653021575 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.element_array This module customises the behaviour of the OpenGL.raw.GL.APPLE.element_array to provide a more Python-friendly API Overview (from the spec) This extension provides facilities to improve DrawElements style vertex indices submission performance by allowing index arrays. Using this extension these arrays can be contained inside a vertex array range and thus pulled directly by the graphics processor, avoiding the CPU overhead of touching the index data. This extension is most useful when used in conjunction with the APPLE_vertex_array_range extension. APPLE_vertex_array_range provides an interface for storing vertex array data. In cases where large amounts of vertex data are in use, the index data used to construct primitives (typically as passed to the GL through DrawElements) can impose a significant bandwidth burden. APPLE_element_array allows the application to specify independent arrays of elements, which can then be cached using APPLE_vertex_array_range. In effect this creates a more orthogonal interface for both vertex indices and data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/element_array.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.element_array import * ### END AUTOGENERATED SECTION from OpenGL.GL import glget glget.addGLGetConstant( GL_ELEMENT_ARRAY_TYPE_APPLE, (1,) ) # check size...PyOpenGL-3.0.2/OpenGL/GL/APPLE/__init__.py0000644000175000001440000000002712025001653020506 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/APPLE/vertex_program_evaluators.py0000644000175000001440000000303612025001653024263 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.vertex_program_evaluators This module customises the behaviour of the OpenGL.raw.GL.APPLE.vertex_program_evaluators to provide a more Python-friendly API Overview (from the spec) This extension allows the one- and two-dimensional evaluators to be used with vertex program attributes. The operation of this extension is precisely analogous to the operation of the normal evaluators. Where normal evaluators are enabled with Enable(MAP1_VERTEX_3), for example, attribute evaluators are enabled with EnableVertexAttribAPPLE(index, VERTEX_ATTRIB_MAP1_APPLE). Where the size (1, 2, 3, or 4) of a normal evaluator is embedded in the token for that evaluator (for example, MAP1_VERTEX_3 has size 3), attribute evaluators give the size as an argument to MapVertexAttrib**APPLE. The 1D and 2D evaluator order, domain, and coefficients are given as arguments to MapVertexAttrib**APPLE, with exactly the same meaning and restrictions as the same arguments to Map1f, Map2f, Map1d, & Map2d. The evaluator order, domain, and coefficients may be queried with GetVertexAttrib*vARB, with the same operation as GetMap*v. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/vertex_program_evaluators.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.vertex_program_evaluators import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/rgb_422.py0000644000175000001440000000506112025001653020113 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.rgb_422 This module customises the behaviour of the OpenGL.raw.GL.APPLE.rgb_422 to provide a more Python-friendly API Overview (from the spec) A common storage format for video data is 8-bit 422, with every four bytes encoding two pixels. Within the four bytes there are two luminance samples, and two chrominance samples that are shared between both pixels. There is a previous extension, namely GL_APPLE_ycbcr_422 that provided transparent support for this kind of data. However, that extension left the exact conversion from Y'CbCr to RGB undefined. In reality, it really had always been based on the ITU-R BT.601 standard, which meant it was not particularly useful for dealing with high definition video data, which is encoded using the Rec. 709 standard. In some cases the original extension was implemented via fixed function hardware, but on more modern graphics processors this is done via a combination of 422 sampling formats and fragment shader instructions. This extension essentially exposes a "raw" 422 texture format that allows developers to access the raw pre-converted Y'CbCr components so that they have full control over the colorspace conversion. In order to avoid defining entirely new color channels within GL, the Y, Cb and Cr color channels within the 422 data are mapped into the existing green, blue and red color channels, respectively. Developers must write their own fragment shader/program to perform the desired color space transformation. Note: Because of the use of the packed UNSIGNED_SHORT_8_8[_REV] types, the correct type to use based on the layout of the data in memory (Cb Y Cr Y versus Y Cb Y Cr) will necessarily be sensitive to host endianness. This extension differs from the EXT_422_pixels extension in a couple of ways. First, this extension defines only a single new format, while relying on two new type arguments to differentiate between the two component orderings. Second, this extension provides no defined method of filtering the chroma values between adjacent pixels. And lastly, the color channel assignments are slightly different, essentially to match more closely the rough meanings of the Y, Cb and Cr values in 422 video data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/rgb_422.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.rgb_422 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/specular_vector.py0000644000175000001440000000350012025001653022146 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.specular_vector This module customises the behaviour of the OpenGL.raw.GL.APPLE.specular_vector to provide a more Python-friendly API Overview (from the spec) An alternative specular lighting model is enabled by passing the LIGHT_MODEL_SPECULAR_VECTOR token as the parameter to LightModel, and TRUE as the parameter. The specular vector lighting model calculates the specular intensity as the dot product of the true reflection vector of the light source and the vector from the vertex to the viewpoint. This yields results that are visually similar to but often more realistic than the existing lighting model. Mathematically, the specular component s.n in the existing lighting model calculation is replaced with the following alternative calculation. Given three vectors, n, l, and p, where n is the unit normal vector at the vertex, l is the unit vector from the vertex to the light position, and p is the unit vector from the vertex to the viewpoint (or the vector {0,0,1} if LIGHT_MODEL_LOCAL_VIEWER is false), the specular component is given by (2 * cross(n, cross(n, l)) + l) . p All other lighting model and material parameters (shininess, spotlight, attenuation, local viewer, and direction/positional sources) operate normally. The specular vector lighting model affects both rgba and index modes. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/specular_vector.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.specular_vector import * ### END AUTOGENERATED SECTION from OpenGL.GL import glget glget.addGLGetConstant( GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE, (1,) ) # check size...PyOpenGL-3.0.2/OpenGL/GL/APPLE/vertex_array_object.py0000644000175000001440000000322012031734130023006 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.vertex_array_object This module customises the behaviour of the OpenGL.raw.GL.APPLE.vertex_array_object to provide a more Python-friendly API Overview (from the spec) This extension introduces named vertex array objects which encapsulate vertex array state on the client side. The main purpose of these objects is to keep pointers to static vertex data and provide a name for different sets of static vertex data. By extending vertex array range functionality this extension allows multiple vertex array ranges to exist at one time, including their complete sets of state, in manner analogous to texture objects. GenVertexArraysAPPLE creates a list of n number of vertex array object names. After creating a name, BindVertexArrayAPPLE associates the name with a vertex array object and selects this vertex array and its associated state as current. To get back to the default vertex array and its associated state the client should bind to vertex array named 0. Once a client is done using a vertex array object it can be deleted with DeleteVertexArraysAPPLE. The client is responsible for allocating and deallocating the memory used by the vertex array data, while the DeleteVertexArraysAPPLE command deletes vertex array object names and associated state only. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/vertex_array_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.vertex_array_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/row_bytes.py0000644000175000001440000000405712025001653020773 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.row_bytes This module customises the behaviour of the OpenGL.raw.GL.APPLE.row_bytes to provide a more Python-friendly API Overview (from the spec) The APPLE_row_bytes extension was developed to relax the limitations within GL regarding the packing and unpacking of pixel data from arbitrary arrangements in memory. Prior to this extension, similar, albeit more restrictive, functionality existed in GL using pixel storage modes for unpacking, packing, and alignment. The limitation of the existing mechanism lies primarily in how packing or unpacking of data is specified with pixel atomicity rather than basic machine units. To some extent, this pixel granularity can be overcome using pixel storage modes GL_UNPACK_ALIGNMENT and GL_PACK_ALIGNMENT. Both of these parameters are specified in basic machine units but their range of possible values is restricted and even then they do not allow for the packing and unpacking of pixel data in a fully arbitrary manner. Consider this simple example: Consider a column of pixels in memory. The pixels are of GL_RGB format and GL_UNSIGNED_BYTE type resulting in 3 bytes per pixel. Now consider that this column of pixel data was arranged in memory such that each row of the image (in this case each pixel) has two bytes padding or space between them. Each row of 1 pixel then has 5 bytes. An attempting to express this memory arrangement with existing pixel storage semantics would naturally start with a GL_UNPACK_ROW_LENGTH of 1 because there is one pixel per row. However, no valid value of GL_UNPACK_ALIGNMENT, 1, 2, 4, or 8, will allow the proper row padding to express this memory arrangement. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/row_bytes.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.row_bytes import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/vertex_array_range.py0000644000175000001440000002006012025001653022635 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.vertex_array_range This module customises the behaviour of the OpenGL.raw.GL.APPLE.vertex_array_range to provide a more Python-friendly API Overview (from the spec) This extension is designed to allow very high vertex processing rates which are facilitated both by relieving the CPU of as much processing burden as possible and by allowing graphics hardware to directly access vertex data. Because this extension is implemented as an addition to the vertex array specification provided by OpenGL 1.1, applications can continue to use existing vertex submission logic while taking advantage of vertex array ranges to more efficiently process those arrays. The vertex array coherency model provided by OpenGL 1.1 requires that vertex data specified in vertex arrays be transferred from system memory each time Begin, DrawArrays, or DrawElements is called. Further, OpenGL 1.1 requires that the transfer of data be completed by the time End, DrawArrays, or DrawElements returns. Both of these requirements are relaxed by the vertex array range extension. Vertex data may be cached by the GL so there is no guarantee that changes to the vertex data will be reflected in following drawing commands unless it is flushed with FlushVertexArrayRangeAPPLE. The reading of vertex data may be deferred by the GL so there is no guarantee that the GL will be finished reading the data until completion is forced by the use of Finish or the APPLE_fence extension. Vertex array range can be enabled in two ways. EnableClientState can be used with the VERTEX_ARRAY_RANGE_APPLE param to enable vertex array range for the client context. One can also simply set the vertex array storage hint to either STORAGE_CACHED_APPLE or STORAGE_SHARED_APPLE (as discussed below) to enable a particular vertex array range. Once this is done, use of vertex array range requires the definition of a specific memory range for vertex data through VertexArrayRangeAPPLE. It is recommended this data be page aligned (4096 byte boundaries) and a multiple of page size in length for maximum efficiency in data handling and internal flushing, but this is not a requirement and any location and length of data can be defined as a vertex array. This extension provides no memory allocators as any convenient memory allocator can be used. Once a data set is established, using VertexArrayRangeAPPLE, it can be can be drawn using standard OpenGL vertex array commands, as one would do without this extension. Note, if any the data for any enabled array for a given array element index falls outside of the vertex array range, an undefined vertex is generated. One should also understand removing or replacing all calls to vertex array range functions with no-ops or disabling the vertex array range by disabling the VERTEX_ARRAY_RANGE_APPLE client state should not change the results of an application's OpenGL drawing. For static data no additional coherency nor synchronization must be done and the client is free to draw with the specified draw as it sees fit. If data is dynamic, thus to be modified, FlushVertexArrayRangeAPPLE should be used. The command is issued when data has been modified since the last call to VertexArrayRangeAPPLE or FlushVertexArrayRangeAPPLE and prior to drawing with such data. FlushVertexArrayRangeAPPLE only provides memory coherency prior to drawing (such as ensuring CPU caches are flushed or VRAM cached copies are updated) and does not provide any synchronization with previously issued drawing commands. The range flushed can be the specific range modified and does not have to be the entire vertex array range. Additionally, data maybe read immediately after a flush without need for further synchronization, thus overlapping areas of data maybe read, modified and written between two successive flushes and the data will be consistent. To synchronize data modification after drawing two methods can be used. A Finish command can be issued which will not return until all previously issued commands are complete, forcing completely synchronous operation. While this guarantees all drawing is complete it may not be the optimal solution for clients which just need to ensure drawing with the vertex array range or a specific range with the array is compete. The APPLE_fence extension can be used when dynamic data modifications need to be synchronized with drawing commands. Specifically, if data is to be modified, a fence can be set immediately after drawing with the data. Once it comes time to modify the data, the application must test (or finish) this fence to ensure the drawing command has completed. Failure to do this could result in new data being used by the previously issued drawing commands. It should be noted that providing the maximum time between the drawing set fence and the modification test/finish fence allows the most asynchronous behavior and will result in the least stalling waiting for drawing completion. Techniques such as double buffering vertex data can be used to help further prevent stalls based on fence completion but are beyond the scope of this extension. Once an application is finished with a specific vertex array range or at latest prior to exit, and prior to freeing the memory associated with this vertex array, the client should call VertexArrayRangeAPPLE with a data location and length of 0 to allow the internal memory managers to complete any commitments for the array range. In this case once VertexArrayRangeAPPLE returns it is safe to de-allocate the memory. Three types of storage hints are available for vertex array ranges; client, shared, and cached. These hints are set by passing the STORAGE_CLIENT_APPLE, STORAGE_SHARED_APPLE, or STORAGE_CACHED_APPLE param to VertexArrayParameteriAPPLE with VERTEX_ARRAY_STORAGE_HINT_APPLE pname. Client storage, the default OpenGL behavior, occurs when VERTEX_ARRAY_RANGE_APPLE is disabled AND the STORAGE_CLIENT_APPLE hint is set. Note, STORAGE_CLIENT_APPLE is also the default hint setting. Shared memory usage is normally used for dynamic data that is expected to be modified and is likely mapped to AGP memory space for access by both the graphics hardware and client. It is set when either VERTEX_ARRAY_RANGE_APPLE is enabled, without the STORAGE_CACHED_APPLE hint being set, or in all cases when the STORAGE_SHARED_APPLE hint is set. Finally, the cached storage is designed to support static data and data which could be cached in VRAM. This provides maximum access bandwidth for the vertex array and occurs when the STORAGE_CACHED_APPLE hint is set. The following pseudo-code represents the treatment of a vertex array range memory depending on the hint setting and whether vertex array range is enabled for the client context: if (VERTEX_ARRAY_STORAGE_HINT_APPLE == STORAGE_CACHED_APPLE) vertex array is treated as cached else if (VERTEX_ARRAY_STORAGE_HINT_APPLE == STORAGE_SHARED_APPLE) vertex array is treated as shared else if (VERTEX_ARRAY_RANGE_APPLE enabled) vertex array is treated as shared else vertex array is treated as client Note, these hints can affect how array flushes are handled and the overhead associated with flushing the array, it is recommended that data be handled as shared unless it really is static and there are no plans to modify it. To summarize the vertex array range extension provides relaxed synchronization rules for handling vertex array data allowing high bandwidth asynchronous data transfer from client memory to graphics hardware. Different flushing and synchronization rules are required to ensure data coherency when modifying data. Lastly, memory handling hints are provided to allow the tunning of memory storage and access for maximum efficiency. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/vertex_array_range.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.vertex_array_range import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/texture_range.py0000644000175000001440000000253512025001653021631 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.texture_range This module customises the behaviour of the OpenGL.raw.GL.APPLE.texture_range to provide a more Python-friendly API Overview (from the spec) This extension provides a method to specify the range of client address space that may be used by a texture. In general, the storage size of a texture may be easily determined by the texture's data type and geometry. However, driver optimizations may be realized if an extended address range is specified to encompass the storage of multiple textures, or to encompass potential future changes in the size of a texture. A typical usage of this extension is to specify an identical address range for several textures in a particular working set that encompasses the storage of all the textures in the set. This allows the driver to make a single memory mapping for all of the textures. Further, a mechanism is provided to allow the application to give the GL driver a hint regarding the storage requirements of the texture data. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/texture_range.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.texture_range import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/transform_hint.py0000644000175000001440000000260312025001653022006 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.transform_hint This module customises the behaviour of the OpenGL.raw.GL.APPLE.transform_hint to provide a more Python-friendly API Overview (from the spec) The transform_hint extension provides a new target, TRANSFORM_HINT_APPLE, for the Hint procedure. When the transform hint is set to FASTEST the GL may choose to implement certain state dependent algebraic simplifications in the geometry transformation that affect the sub-pixel precision of the transformed vertex coordinates. For example, if two polygons are rendered with identical object coordinates, different GL state settings, and the transform hint set to FASTEST, there is no gaurantee that the resulting window coordinates of the two polygons will be precisely identical. Therefore, precise tests of the window coordinates, such as a depth test setting of EQUAL, should not be used. If the transform hint is set to NICEST or DONT_CARE, two polygons with identical object coordinates will always be transformed to identical window coordinates. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/transform_hint.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.transform_hint import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/object_purgeable.py0000644000175000001440000000657412025001653022260 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.object_purgeable This module customises the behaviour of the OpenGL.raw.GL.APPLE.object_purgeable to provide a more Python-friendly API Overview (from the spec) This extension provides the ability to mark the storage of OpenGL objects as "purgeable". Many of today's modern virtual memory systems include the concept of purgeability in order to avoid unnecessary paging when the object contents are no longer needed. In OpenGL, objects such as textures, vertex buffers, pixel buffers, and renderbuffers all have significant storage requirements. By default, the OpenGL is required to preserve the contents of these objects regardless of system resource stress, such as vram shortage or physical memory shortage. Often this is accomplished by temporarily paging the contents of objects that are not currently needed to some kind of secondary storage area. This paging operation can be an unnecessary computational expense in the cases where the data is not going to be used again or where the content can be reproduced by the application with less expense than the paging operation would require. This extension defines a mechanism for the application to mark the storage of OpenGL objects as "purgeable" in order to influence these paging operations. The application can further control the semantics of making object storage "purgeable" with two options ("volatile" and "released") and "unpurgeable" with two options ("undefined" and "retained") Applications that use this extension will typically follow one of two operational models. The typical model for most applications is to mark an object storage as "purgeable" with the "volatile" option, and then later mark the storage as "unpurgeable" with the "retained" option. When this happens, the application may or may not need to respecify the object contents, depending on the whether the object storage was actually released. The application can find out whether the storage was released by examining the return value of the function which marks the storage as "unpurgeable". This model is useful when the application does not know at the time it marks the object storage as "purgeable" whether it will later need those contents to be valid. Another operational model is for an application to mark the storage for an object as "purgeable" with the "released" option, and then later mark the object "unpurgeable" with the "undefined" option. In this latter model, the application intends to unconditionally reload the object contents later on, and so it tells the GL that it is okay if the contents are "undefined" when the storage is re-allocated. Note that in both models, it is possible for the contents to become undefined since they could have actually been purged from the system in either case. The various options are still useful, however, since they give more information to the GL about what the application expects to happen and the GL can use this information to make better predictions about which paging choices will be more efficient. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/object_purgeable.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.object_purgeable import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/ycbcr_422.py0000644000175000001440000000535012025001653020444 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.ycbcr_422 This module customises the behaviour of the OpenGL.raw.GL.APPLE.ycbcr_422 to provide a more Python-friendly API Overview (from the spec) This extension provides a method for GL to read, store and optionally process textures that are defined in Y'CbCr 422 video formats. This extension supports the two common Y'CbCr 422 video formats (known by QuickTime FourCC as '2vuy' and 'yuvs'). These formats represent one of the most common 16 bit Y'CbCr formats in both standard and reverse byte ordering. From a client stand point these can be assumed to be decoded immediately (even though the implementation is free to optimize the data storage and keep it in the native format) and otherwise function as any other texture format. The texture command parameter normally be should be specified as RGB, since Y'CbCr is just a form of RGB data. This extension can be supported with either hardware or software decoding and it is up to the specific implementation to determine which is used. A new is added, YCBCR_422_APPLE. Additionally, to handle the difference in pixel size and byte ordering for 422 video, the pixel storage operations treat YCBCR_422_APPLE as a 2 component format using the UNSIGNED_SHORT_8_8_APPLE or UNSIGNED_SHORT_8_8_REV_APPLE . The '2vuy' or k2vuyPixelFormat pixel format is an 8-bit 4:2:2 Component Y'CbCr format. Each 16 bit pixel is represented by an unsigned eight bit luminance component and two unsigned eight bit chroma components. Each pair of pixels shares a common set of chroma values. The components are ordered in memory; Cb, Y0, Cr, Y1. The luminance components have a range of [16, 235], while the chroma value has a range of [16, 240]. This is consistent with the CCIR601 spec. This format is fairly prevalent on both Mac and Win32 platforms. The equivalent Microsoft fourCC is OUYVYO. This format is supported with the UNSIGNED_SHORT_8_8_REV_APPLE type for pixel storage operations. The 'yuvs' or kYUVSPixelFormat is an 8-bit 4:2:2 Component Y'CbCr format. Identical to the k2vuyPixelFormat except each 16 bit word has been byte swapped. This results in a component ordering of; Y0, Cb, Y1, Cr. This is most prevalent yuv 4:2:2 format on both Mac and Win32 platforms. The equivalent Microsoft fourCC is 'YUY2'. This format is supported with the UNSIGNED_SHORT_8_8_APPLE type for pixel storage operations. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/ycbcr_422.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.ycbcr_422 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/fence.py0000644000175000001440000000674012025001653020037 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.fence This module customises the behaviour of the OpenGL.raw.GL.APPLE.fence to provide a more Python-friendly API Overview (from the spec) This extension is provided a finer granularity of synchronizing GL command completion than offered by standard OpenGL, which currently offers only two mechanisms for synchronization: Flush and Finish. Since Flush merely assures the user that the commands complete in a finite (though undetermined) amount of time, it is, thus, of only modest utility. Finish, on the other hand, stalls CPU execution until all pending GL commands have completed forcing completely synchronous operation, which most often not the desired result. This extension offers a middle ground - the ability to "finish" a subset of the command stream, and the ability to determine whether a given command has completed or not. This extension introduces the concept of a "fence" to the OpenGL command stream with SetFenceAPPLE. Once the fence is inserted into the command stream, it can be tested for its completion with TestFenceAPPLE. Moreover, the application may also request a partial Finish up to a particular "fence" using the FinishFenceAPPLE command -- that is, all commands prior to the fence will be forced to complete until control is returned to the calling process. These new mechanisms allow for synchronization between the host CPU and the GPU, which may be accessing the same resources (typically memory). Fences are created and deleted, as are other objects in OpenGL, specifically with GenFencesAPPLE and DeleteFencesAPPLE. The former returns a list of unused fence names and the later deletes the provided list of fence names. In addition to being able to test or finish a fence this extension allows testing for other types of completion, including texture objects, vertex array objects, and draw pixels. This allows the client to use TestObjectAPPLE or FinishObjectAPPLE with FENCE_APPLE, TEXTURE, VERTEX_ARRAY, or DRAW_PIXELS_APPLE with the same type of results as TestFenceAPPLE and FinishFenceAPPLE. Specifically, using the FENCE_APPLE type is equivalent to calling TestFenceAPPLE or FinishFenceAPPLE with the particular fence name. Using TEXTURE as the object type tests or waits for completion of a specific texture, meaning when there are no pending rendering commands which use that texture object. Using the VERTEX_ARRAY type will test or wait for drawing commands using that particular vertex array object name. Finally, DRAW_PIXELS_APPLE will wait or test for completion of all pending DrawPixels commands. These tests and finishes operate with the same limitations and results as test and finish fence. One use of this extension is in conjunction with APPLE_vertex_array_range to determine when graphics hardware has completed accessing vertex data from a vertex array range. Once a fence has been tested TRUE or finished, all vertex indices issued before the fence must have completed being accessed. This ensures that the vertex data memory corresponding to the issued vertex indices can be safely modified (assuming no other outstanding vertex indices are issued subsequent to the fence). The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/fence.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.fence import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/float_pixels.py0000644000175000001440000000552012025001653021443 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.float_pixels This module customises the behaviour of the OpenGL.raw.GL.APPLE.float_pixels to provide a more Python-friendly API Overview (from the spec) This extensions adds texture types, texture internal formats and color buffers composed of both 32 bit and 16 floating point numbers. 16 bit floats (half float) are very similar to the IEEE single-precision floating-point standard, except that it has only 5 exponent bits and 10 mantissa bits. All floating point numbers are clamped to the limits of the range representable by their respective format. Specifically, APPLE_float_pixels adds four pieces of functionality to OpenGL. First, it provides an HALF_APPLE texture type allowing clients to pass textures in the half float format. Second, it adds 12 additional sized internal formats to allow OpenGL to process and maintain texture data in the requested format if possible. Next, it provides the COLOR_FLOAT_APPLE pixel format to allow creation of floating point and half float color buffers. Lastly, it provides an additional query to allow clients to verify that they have a floating point color buffer. The HALF_APPLE texture type allows clients to use source textures composed of half float color components. This constant is use in the type parameter in DrawPixels, ReadPixels and texturing commands with a corresponding GL half data type, which corresponds to a 16 bit half float, and has no special interpretation. Clients can use the 12 additional (6 floating point and 6 half float) sized internal texture formats to specify the mapping of R, G, B and A values to texture components, as they would with any other sized internal texture format. Note, as is the standard practice with OpenGL, implementations should map the sized internal texture R, G, B and A values to internal components with memory allocations as close as possible to those specified in the sized internal format. Floating point color buffers are created by specifying the appropriate color floating point pixel format attribute for the windowing system API in use by the client. Both 128 bit and 64 bit floating point color buffers can be supported, the former with full 32 bit floating point components and the latter with 16 bit half float components. Additionally, clients can query to see if they have a floating point color buffer using GetBooleanv with COLOR_FLOAT_APPLE as the get value. The number of bits per color buffer component can be determined in the usual manner. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/float_pixels.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.float_pixels import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/APPLE/flush_buffer_range.py0000644000175000001440000000315112025001653022576 0ustar mcfletchusers00000000000000'''OpenGL extension APPLE.flush_buffer_range This module customises the behaviour of the OpenGL.raw.GL.APPLE.flush_buffer_range to provide a more Python-friendly API Overview (from the spec) APPLE_flush_buffer_range expands the buffer object API to allow greater performance when a client application only needs to write to a sub-range of a buffer object. To that end, this extension introduces two new buffer object features: non-serialized buffer modification and explicit sub-range flushing for mapped buffer objects. OpenGL requires that commands occur in a FIFO manner meaning that any changes to buffer objects either block until the data has been processed by the OpenGL pipeline or else create extra copies to avoid such a block. By providing a method to asynchronously modify buffer object data, an application is then able to manage the synchronization points themselves and modify ranges of data contained by a buffer object even though OpenGL might still be using other parts of it. This extension also provides a method for explicitly flushing ranges of a mapped buffer object so OpenGL does not have to assume that the entire range may have been modified. Affects ARB_vertex_buffer_object, ARB_pixel_buffer_object and OpenGL 1.5 Buffer Objects. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/flush_buffer_range.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.APPLE.flush_buffer_range import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/VERSION/0000755000175000001440000000000012032640120016656 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_3_0_DEPRECATED.py0000644000175000001440000000101512025001653021654 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_3_0_DEPRECATED This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_3_0_DEPRECATED to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_3_0_DEPRECATED.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_3_0_DEPRECATED import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_5.py0000644000175000001440000001101412025001653020177 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_1_5 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_5 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_5.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_5 import * ### END AUTOGENERATED SECTION from OpenGL.lazywrapper import lazy from OpenGL.arrays import ArrayDatatype glDeleteBuffers = arrays.setInputArraySizeType( glDeleteBuffers, None, arrays.GLuintArray, 'buffers', ) glGenBuffers = wrapper.wrapper( glGenBuffers ).setOutput( 'buffers', lambda n: (n,), 'n', ) def _sizeOfArrayInput( pyArgs, index, wrapper ): return ( arrays.ArrayDatatype.arrayByteCount( pyArgs[index] ) ) @lazy( glBufferData ) def glBufferData( baseOperation, target, size, data=None, usage=None ): """Copy given data into the currently bound vertex-buffer-data object target -- the symbolic constant indicating which buffer type is intended size -- if provided, the count-in-bytes of the array data -- data-pointer to be used, may be None to initialize without copying over a data-set usage -- hint to the driver as to how to set up access to the buffer Note: parameter "size" can be omitted, which makes the signature glBufferData( target, data, usage ) instead of: glBufferData( target, size, data, usage ) """ if usage is None: usage = data data = size size = None data = ArrayDatatype.asArray( data ) if size is None: size = ArrayDatatype.arrayByteCount( data ) return baseOperation( target, size, data, usage ) @lazy( glBufferSubData ) def glBufferSubData( baseOperation, target, offset, size=None, data=None ): """Copy subset of data into the currently bound vertex-buffer-data object target -- the symbolic constant indicating which buffer type is intended offset -- offset from beginning of buffer at which to copy bytes size -- the count-in-bytes of the array (if an int/long), if None, calculate size from data, if an array and data is None, use as data (i.e. the parameter can be omitted and calculated) data -- data-pointer to be used, may be None to initialize without copying over a data-set Note that if size is not an int/long it is considered to be data *iff* data is None """ if size is None: if data is None: raise TypeError( "Need data or size" ) elif (not isinstance( size, (int,long))) and (data is None): data = size size = None try: if size is not None: size = int( size ) except TypeError, err: if data is not None: raise TypeError( """Expect an integer size *or* a data-array, not both""" ) data = size size = None data = ArrayDatatype.asArray( data ) if size is None: size = ArrayDatatype.arrayByteCount( data ) return baseOperation( target, offset, size, data ) glGetBufferParameteriv = wrapper.wrapper(glGetBufferParameteriv).setOutput( "params",(1,), ) @lazy( glGetBufferPointerv ) def glGetBufferPointerv( baseOperation, target, pname, params=None ): """Retrieve a ctypes pointer to buffer's data""" if params is None: size = glGetBufferParameteriv( target, GL_BUFFER_SIZE ) data = arrays.ArrayDatatype.zeros( (size,), GL_UNSIGNED_BYTE ) result = baseOperation( target, pname, ctypes.byref( data ) ) return data else: return baseOperation( target, pname, params ) @lazy( glDeleteQueries ) def glDeleteQueries( baseOperation, n, ids=None ): if ids is None: ids = arrays.GLuintArray.asArray( n ) n = arrays.GLuintArray.arraySize( ids ) else: ids = arrays.GLuintArray.asArray( ids ) return baseOperation( n,ids ) @lazy( glGenQueries ) def glGenQueries( baseOperation, n, ids=None ): """Generate n queries, if ids is None, is allocated returns array of ids """ if ids is None: ids = arrays.GLuintArray.zeros( (n,)) else: ids = arrays.GLuintArray.asArray( ids ) baseOperation( n, ids ) return ids for func in ( 'glGetQueryiv','glGetQueryObjectiv','glGetQueryObjectuiv', ): globals()[func] = wrapper.wrapper(globals()[func]).setOutput( "params", (1,) ) try: del func, glget except NameError, err: pass PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_2_1.py0000644000175000001440000000074112025001653020201 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_2_1 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_2_1 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_2_1.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_2_1 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_3_0.py0000644000175000001440000000162512025001653020203 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_3_0 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_3_0 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_3_0.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_3_0 import * ### END AUTOGENERATED SECTION glget.addGLGetConstant( GL_NUM_EXTENSIONS, (1,)) from ctypes import c_char_p glGetStringi.restype = c_char_p from OpenGL.GL.ARB.vertex_array_object import * from OpenGL.GL.ARB.texture_buffer_object import * from OpenGL.GL.ARB.framebuffer_object import * from OpenGL.GL.ARB.map_buffer_range import * GL_DEPTH_BUFFER = constant.Constant( 'GL_DEPTH_BUFFER', 0x8223 ) GL_STENCIL_BUFFER = constant.Constant( 'GL_STENCIL_BUFFER', 0x8224 ) PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_4.py0000644000175000001440000000156412025001653020207 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_1_4 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_4 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_4 import * ### END AUTOGENERATED SECTION GL_CURRENT_FOG_COORD = GL_CURRENT_FOG_COORDINATE # alias GL_FOG_COORD = GL_FOG_COORDINATE # alias GL_FOG_COORD_ARRAY = GL_FOG_COORDINATE_ARRAY # alias GL_FOG_COORD_ARRAY_POINTER = GL_FOG_COORDINATE_ARRAY_POINTER # alias GL_FOG_COORD_ARRAY_STRIDE = GL_FOG_COORDINATE_ARRAY_STRIDE # alias GL_FOG_COORD_ARRAY_TYPE = GL_FOG_COORDINATE_ARRAY_TYPE # alias GL_FOG_COORD_SRC = GL_FOG_COORDINATE_SOURCE # alias PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_2_0_DEPRECATED.py0000644000175000001440000000101512025001653021653 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_2_0_DEPRECATED This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_2_0_DEPRECATED to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_2_0_DEPRECATED.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_2_0_DEPRECATED import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_4_DEPRECATED.py0000644000175000001440000000101512025001653021656 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_1_4_DEPRECATED This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_4_DEPRECATED to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_4_DEPRECATED.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_4_DEPRECATED import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/VERSION/__init__.py0000644000175000001440000000000012025001653020761 0ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_2_1_DEPRECATED.py0000644000175000001440000000101512025001653021654 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_2_1_DEPRECATED This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_2_1_DEPRECATED to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_2_1_DEPRECATED.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_2_1_DEPRECATED import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_4_3.py0000644000175000001440000000320612025001653020204 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_4_3 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_4_3 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_4_3.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_4_3 import * ### END AUTOGENERATED SECTION from OpenGL.GL.ARB.arrays_of_arrays import * from OpenGL.GL.ARB.fragment_layer_viewport import * from OpenGL.GL.ARB.shader_image_size import * from OpenGL.GL.ARB.ES3_compatibility import * from OpenGL.GL.ARB.clear_buffer_object import * from OpenGL.GL.ARB.compute_shader import * from OpenGL.GL.ARB.copy_image import * from OpenGL.GL.ARB.debug_group import * from OpenGL.GL.ARB.debug_label import * from OpenGL.GL.KHR.debug import * from OpenGL.GL.ARB.debug_output2 import * from OpenGL.GL.ARB.explicit_uniform_location import * from OpenGL.GL.ARB.framebuffer_no_attachments import * from OpenGL.GL.ARB.internalformat_query2 import * from OpenGL.GL.ARB.invalidate_subdata import * from OpenGL.GL.ARB.multi_draw_indirect import * from OpenGL.GL.ARB.program_interface_query import * from OpenGL.GL.ARB.robust_buffer_access_behavior import * from OpenGL.GL.ARB.shader_storage_buffer_object import * from OpenGL.GL.ARB.stencil_texturing import * from OpenGL.GL.ARB.texture_buffer_range import * from OpenGL.GL.ARB.texture_query_levels import * from OpenGL.GL.ARB.texture_storage_multisample import * from OpenGL.GL.ARB.texture_view import * from OpenGL.GL.ARB.vertex_attrib_binding import * PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_5_DEPRECATED.py0000644000175000001440000000114212025001653021660 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_1_5_DEPRECATED This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_5_DEPRECATED to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_5_DEPRECATED.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_5_DEPRECATED import * ### END AUTOGENERATED SECTION GL_FOG_COORD_ARRAY_BUFFER_BINDING = GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING # alias PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_3_images.py0000644000175000001440000000206012025001653021523 0ustar mcfletchusers00000000000000"""OpenGL version 1.3 imaging-handling routines""" from OpenGL import wrapper, constants, arrays from OpenGL.raw.GL.VERSION import GL_1_3 as simple from OpenGL.GL import images, glget for dimensions in (1,2,3): for function in ('glCompressedTexImage%sD','glCompressedTexSubImage%sD'): name = function%(dimensions,) globals()[ name ] = images.compressedImageFunction( getattr( simple, name ) ) try: del name, function except NameError, err: pass try: del dimensions except NameError, err: pass if simple.glGetCompressedTexImage: def glGetCompressedTexImage( target, level, img=None ): """Retrieve a compressed texture image""" if img is None: length = glget.glGetTexLevelParameteriv( target, 0, simple.GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB, ) img = arrays.ArrayDataType.zeros( (length,), constants.GL_UNSIGNED_BYTE ) return simple.glGetCompressedTexImage(target, 0, img); PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_3_2.py0000644000175000001440000000122612025001653020202 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_3_2 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_3_2 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_3_2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_3_2 import * ### END AUTOGENERATED SECTION from OpenGL.GL.ARB.draw_elements_base_vertex import * from OpenGL.GL.ARB.provoking_vertex import * from OpenGL.GL.ARB.sync import * from OpenGL.GL.ARB.texture_multisample import * PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_2_DEPRECATED.py0000644000175000001440000000101512025001653021654 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_1_2_DEPRECATED This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_2_DEPRECATED to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_2_DEPRECATED.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_2_DEPRECATED import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_2_images.py0000644000175000001440000001655612025001653021541 0ustar mcfletchusers00000000000000"""Version 1.2 Image-handling functions Almost all of the 1.2 enhancements are image-handling-related, so this is, most of the 1.2 wrapper code... Note that the functions that manually wrap certain operations are guarded by if simple.functionName checks, so that you can use if functionName to see if the function is available at run-time. """ from OpenGL import wrapper, constants, arrays from OpenGL.lazywrapper import lazy from OpenGL.raw.GL.VERSION import GL_1_2 as simple from OpenGL.GL.ARB.imaging import * from OpenGL.GL import images import ctypes glGetHistogramParameterfv = wrapper.wrapper(simple.glGetHistogramParameterfv).setOutput( "params",(1,), ) glGetHistogramParameteriv = wrapper.wrapper(simple.glGetHistogramParameteriv).setOutput( "params",(1,), ) for suffix,arrayConstant in [ ('b', constants.GL_BYTE), ('f', constants.GL_FLOAT), ('i', constants.GL_INT), ('s', constants.GL_SHORT), ('ub', constants.GL_UNSIGNED_BYTE), ('ui', constants.GL_UNSIGNED_INT), ('us', constants.GL_UNSIGNED_SHORT), ]: for functionName in ( 'glTexImage3D', 'glTexSubImage3D', # extension/1.2 standard ): functionName, function = images.typedImageFunction( suffix, arrayConstant, getattr(simple, functionName), ) globals()[functionName] = function try: del function, functionName except NameError, err: pass try: del suffix,arrayConstant except NameError, err: pass glTexImage3D = images.setDimensionsAsInts( images.setImageInput( simple.glTexImage3D, typeName = 'type', ) ) glTexSubImage3D = images.setDimensionsAsInts( images.setImageInput( simple.glTexSubImage3D, typeName = 'type', ) ) glColorTable = images.setDimensionsAsInts( images.setImageInput( simple.glColorTable, pixelName = 'table', typeName = 'type', ) ) glColorSubTable = images.setDimensionsAsInts( images.setImageInput( simple.glColorSubTable, pixelName = 'data', ) ) glSeparableFilter2D = images.setDimensionsAsInts( images.setImageInput( images.setImageInput( simple.glSeparableFilter2D, pixelName = 'row', typeName = 'type', ), pixelName = 'column', typeName = 'type', ) ) glConvolutionFilter1D = images.setDimensionsAsInts( images.setImageInput( simple.glConvolutionFilter1D, pixelName = 'image', typeName = 'type', ) ) glConvolutionFilter2D = images.setDimensionsAsInts( images.setImageInput( simple.glConvolutionFilter2D, pixelName = 'image', typeName = 'type', ) ) @lazy( simple.glGetConvolutionFilter ) def glGetConvolutionFilter( baseFunction, target, format, type ): """Retrieve 1 or 2D convolution parameter "kernels" as pixel data""" from OpenGL.error import glCheckError glCheckError(None) dims = ( glGetConvolutionParameteriv( target, GL_CONVOLUTION_WIDTH )[0], ) if target != GL_CONVOLUTION_1D: dims += ( glGetConvolutionParameteriv( target, GL_CONVOLUTION_HEIGHT )[0], ) # is it always 4? Seems to be, but the spec/man-page isn't really clear about it... dims += (4,) array = images.images.SetupPixelRead( format, dims, type ) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.images.TYPE_TO_ARRAYTYPE.get(type,type) ] baseFunction( target, format, type, ctypes.c_void_p( arrayType.dataPointer(array)) ) return array @lazy( simple.glGetSeparableFilter ) def glGetSeparableFilter( baseFunction, target, format, type ): """Retrieve 2 1D convolution parameter "kernels" as pixel data""" rowDims = ( glGetConvolutionParameteriv( GL_CONVOLUTION_WIDTH )[0], 4, ) columnDims = ( glGetConvolutionParameteriv( GL_CONVOLUTION_HEIGHT )[0], 4, ) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.images.TYPE_TO_ARRAYTYPE.get(type,type) ] row = images.images.SetupPixelRead( format, rowDims, type ) column = images.images.SetupPixelRead( format, columnDims, type ) baseFunction( target, format, type, ctypes.c_void_p( arrayType.dataPointer(row)), ctypes.c_void_p( arrayType.dataPointer(column)), None # span ) return row, column @lazy( simple.glGetColorTable ) def glGetColorTable( baseFunction, target, format, type ): """Retrieve the current 1D color table as a bitmap""" dims = ( glGetColorTableParameteriv(target, GL_COLOR_TABLE_WIDTH), 4, # Grr, spec *seems* to say that it's different sizes, but it doesn't really say... ) array = images.images.SetupPixelRead( format, dims, type ) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.images.TYPE_TO_ARRAYTYPE.get(type,type) ] baseFunction( target, format, type, ctypes.c_void_p( arrayType.dataPointer(array)) ) return array @lazy( simple.glGetHistogram ) def glGetHistogram( baseFunction, target, reset, format, type, values=None): """Retrieve current 1D histogram as a 1D bitmap""" if values is None: width = glGetHistogramParameteriv( target, GL_HISTOGRAM_WIDTH, ) values = images.images.SetupPixelRead( format, (width,4), type ) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.images.TYPE_TO_ARRAYTYPE.get(type,type) ] baseFunction( target, reset, format, type, ctypes.c_void_p( arrayType.dataPointer(values)) ) return values @lazy( simple.glGetMinmax ) def glGetMinmax( baseFunction, target, reset, format, type, values=None): """Retrieve minimum and maximum values as a 2-element image""" if values is None: width = 2 values = images.images.SetupPixelRead( format, (width,4), type ) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.images.TYPE_TO_ARRAYTYPE.get(type,type) ] baseFunction( target, reset, format, type, ctypes.c_void_p( arrayType.dataPointer(values)) ) return values # 4-items, specified in spec... glColorTableParameterfv = arrays.setInputArraySizeType( simple.glColorTableParameterfv, 4, arrays.GLfloatArray, 'params', ) GL_GET_CTP_SIZES = { GL_COLOR_TABLE_FORMAT :1, GL_COLOR_TABLE_WIDTH :1, GL_COLOR_TABLE_RED_SIZE :1, GL_COLOR_TABLE_GREEN_SIZE :1, GL_COLOR_TABLE_BLUE_SIZE :1, GL_COLOR_TABLE_ALPHA_SIZE :1, GL_COLOR_TABLE_LUMINANCE_SIZE :1, GL_COLOR_TABLE_INTENSITY_SIZE :1, } glGetColorTableParameterfv = wrapper.wrapper(simple.glGetColorTableParameterfv).setOutput( "params",GL_GET_CTP_SIZES, "pname", ) glGetColorTableParameteriv = wrapper.wrapper(simple.glGetColorTableParameteriv).setOutput( "params",GL_GET_CTP_SIZES, "pname", ) GL_GET_CP_SIZES = { GL_CONVOLUTION_BORDER_MODE: 1, GL_CONVOLUTION_BORDER_COLOR: 4, GL_CONVOLUTION_FILTER_SCALE: 4, GL_CONVOLUTION_FILTER_BIAS: 4, GL_CONVOLUTION_FORMAT: 1, GL_CONVOLUTION_WIDTH: 1, GL_CONVOLUTION_HEIGHT: 1, GL_MAX_CONVOLUTION_WIDTH: 1, GL_MAX_CONVOLUTION_HEIGHT: 1, } glGetConvolutionParameteriv = wrapper.wrapper(simple.glGetConvolutionParameteriv).setOutput( "params",GL_GET_CP_SIZES, "pname", ) glGetConvolutionParameterfv = wrapper.wrapper(simple.glGetConvolutionParameterfv).setOutput( "params",GL_GET_CP_SIZES, "pname", ) PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_2.py0000644000175000001440000000246012025001653020201 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_1_2 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_2 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_2 import * ### END AUTOGENERATED SECTION from OpenGL.GL.VERSION.GL_1_2_images import * from OpenGL.GL.ARB.imaging import * GL_POINT_SIZE_GRANULARITY = GL_SMOOTH_POINT_SIZE_GRANULARITY # alias GL_POINT_SIZE_RANGE = GL_SMOOTH_POINT_SIZE_RANGE # alias GL_LINE_WIDTH_GRANULARITY = GL_SMOOTH_LINE_WIDTH_GRANULARITY # alias GL_LINE_WIDTH_RANGE = GL_SMOOTH_LINE_WIDTH_RANGE # alias glget.addGLGetTexParameterConstant(GL_TEXTURE_MIN_LOD,(1,)) glget.addGLGetTexParameterConstant(GL_TEXTURE_MAX_LOD,(1,)) glget.addGLGetTexParameterConstant(GL_TEXTURE_BASE_LEVEL,(1,)) glget.addGLGetTexParameterConstant(GL_TEXTURE_MAX_LEVEL,(1,)) glget.addGLGetTexParameterConstant(GL_TEXTURE_WRAP_R,(1,)) glDrawRangeElements = wrapper.wrapper( simple.glDrawRangeElements ).setPyConverter( 'indices', arrays.AsArrayOfType( 'indices', 'type' ), ).setReturnValues( wrapper.returnPyArgument( 'indices' ) ) PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_2_0.py0000644000175000001440000002340512025001653020202 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_2_0 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_2_0 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_2_0.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_2_0 import * ### END AUTOGENERATED SECTION import OpenGL from OpenGL import _configflags from OpenGL._bytes import bytes, _NULL_8_BYTE from OpenGL.raw.GL.ARB.shader_objects import GL_OBJECT_COMPILE_STATUS_ARB as GL_OBJECT_COMPILE_STATUS from OpenGL.raw.GL.ARB.shader_objects import GL_OBJECT_LINK_STATUS_ARB as GL_OBJECT_LINK_STATUS from OpenGL.raw.GL.ARB.shader_objects import GL_OBJECT_ACTIVE_UNIFORMS_ARB as GL_OBJECT_ACTIVE_UNIFORMS from OpenGL.raw.GL.ARB.shader_objects import GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB as GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH from OpenGL.GL.ARB.shader_objects import glGetInfoLogARB as glGetInfoLog from OpenGL.lazywrapper import lazy from OpenGL import converters, error, contextdata from OpenGL.arrays.arraydatatype import ArrayDatatype, GLenumArray GL_INFO_LOG_LENGTH = constant.Constant( 'GL_INFO_LOG_LENGTH', 0x8B84 ) glShaderSource = platform.createExtensionFunction( 'glShaderSource', dll=platform.GL, resultType=None, argTypes=(constants.GLhandle, constants.GLsizei, ctypes.POINTER(ctypes.c_char_p), arrays.GLintArray,), doc = 'glShaderSource( GLhandle(shaderObj),[str(string),...]) -> None', argNames = ('shaderObj', 'count', 'string', 'length',), extension = EXTENSION_NAME, ) conv = converters.StringLengths( name='string' ) glShaderSource = wrapper.wrapper( glShaderSource ).setPyConverter( 'count' # number of strings ).setPyConverter( 'length' # lengths of strings ).setPyConverter( 'string', conv.stringArray ).setCResolver( 'string', conv.stringArrayForC, ).setCConverter( 'length', conv, ).setCConverter( 'count', conv.totalCount, ) try: del conv except NameError, err: pass for size in (1,2,3,4): for format,arrayType in ( ('f',arrays.GLfloatArray), ('i',arrays.GLintArray), ): name = 'glUniform%(size)s%(format)sv'%globals() globals()[name] = arrays.setInputArraySizeType( globals()[name], None, # don't want to enforce size... arrayType, 'value', ) try: del format, arrayType except NameError, err: pass try: del size,name except NameError, err: pass @lazy( glGetShaderiv ) def glGetShaderiv( baseOperation, shader, pname, status=None ): """Retrieve the integer parameter for the given shader shader -- shader ID to query pname -- parameter name status -- pointer to integer to receive status or None to return the parameter as an integer value returns integer if status parameter is None status if status parameter is not None """ if status is None: status = arrays.GLintArray.zeros( (1,)) status[0] = 1 baseOperation( shader, pname, status ) return status[0] else: baseOperation( shader, pname, status ) return status @lazy( glGetProgramiv ) def glGetProgramiv( baseOperation, program, pname, params=None ): """Will automatically allocate params if not provided""" if params is None: params = arrays.GLintArray.zeros( (1,)) baseOperation( program, pname, params ) return params[0] else: baseOperation( program,pname, params ) return params def _afterCheck( key ): """Generate an error-checking function for compilation operations""" if key == GL_OBJECT_COMPILE_STATUS: getter = glGetShaderiv else: getter = glGetProgramiv def GLSLCheckError( result, baseOperation=None, cArguments=None, *args ): result = error.glCheckError( result, baseOperation, cArguments, *args ) status = ctypes.c_int() getter( cArguments[0], key, ctypes.byref(status)) status = status.value if not status: raise error.GLError( result = result, baseOperation = baseOperation, cArguments = cArguments, description= glGetInfoLog( cArguments[0] ) ) return result return GLSLCheckError if _configflags.ERROR_CHECKING: glCompileShader.errcheck = _afterCheck( GL_OBJECT_COMPILE_STATUS ) if _configflags.ERROR_CHECKING: glLinkProgram.errcheck = _afterCheck( GL_OBJECT_LINK_STATUS ) ## Not sure why, but these give invalid operation :( ##if glValidateProgram and OpenGL.ERROR_CHECKING: ## glValidateProgram.errcheck = _afterCheck( GL_OBJECT_VALIDATE_STATUS ) @lazy( glGetShaderInfoLog ) def glGetShaderInfoLog( baseOperation, obj ): """Retrieve the shader's error messages as a Python string returns string which is '' if no message """ length = int(glGetShaderiv(obj, GL_INFO_LOG_LENGTH)) if length > 0: log = ctypes.create_string_buffer(length) baseOperation(obj, length, None, log) return log.value.strip(_NULL_8_BYTE) # null-termination return '' @lazy( glGetProgramInfoLog ) def glGetProgramInfoLog( baseOperation, obj ): """Retrieve the shader program's error messages as a Python string returns string which is '' if no message """ length = int(glGetProgramiv(obj, GL_INFO_LOG_LENGTH)) if length > 0: log = ctypes.create_string_buffer(length) baseOperation(obj, length, None, log) return log.value.strip(_NULL_8_BYTE) # null-termination return '' @lazy( glGetAttachedShaders ) def glGetAttachedShaders( baseOperation, obj ): """Retrieve the attached objects as an array of GLhandle instances""" length= glGetProgramiv( obj, GL_ATTACHED_SHADERS ) if length > 0: storage = arrays.GLuintArray.zeros( (length,)) baseOperation( obj, length, None, storage ) return storage return arrays.GLuintArray.zeros( (0,)) @lazy( glGetShaderSource ) def glGetShaderSource( baseOperation, obj ): """Retrieve the program/shader's source code as a Python string returns string which is '' if no source code """ length = int(glGetShaderiv(obj, GL_OBJECT_SHADER_SOURCE_LENGTH)) if length > 0: source = ctypes.create_string_buffer(length) baseOperation(obj, length, None, source) return source.value.strip(_NULL_8_BYTE) # null-termination return '' @lazy( glGetActiveUniform ) def glGetActiveUniform(baseOperation,program, index): """Retrieve the name, size and type of the uniform of the index in the program""" max_index = int(glGetProgramiv( program, GL_OBJECT_ACTIVE_UNIFORMS )) length = int(glGetProgramiv( program, GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH)) if index < max_index and index >= 0: if length > 0: name = ctypes.create_string_buffer(length) size = arrays.GLintArray.zeros( (1,)) gl_type = arrays.GLenumArray.zeros( (1,)) namelen = arrays.GLsizeiArray.zeros( (1,)) baseOperation(program, index, length, namelen, size, gl_type, name) return name.value[:int(namelen[0])], size[0], gl_type[0] raise ValueError( """No currently specified uniform names""" ) raise IndexError( 'Index %s out of range 0 to %i' % (index, max_index - 1, ) ) @lazy( glGetUniformLocation ) def glGetUniformLocation( baseOperation, program, name ): """Check that name is a string with a null byte at the end of it""" if not name: raise ValueError( """Non-null name required""" ) elif name[-1] != _NULL_8_BYTE: name = name + _NULL_8_BYTE return baseOperation( program, name ) @lazy( glGetAttribLocation ) def glGetAttribLocation( baseOperation, program, name ): """Check that name is a string with a null byte at the end of it""" if not name: raise ValueError( """Non-null name required""" ) elif name[-1] != _NULL_8_BYTE: name = name + _NULL_8_BYTE return baseOperation( program, name ) @lazy( glVertexAttribPointer ) def glVertexAttribPointer( baseOperation, index, size, type, normalized, stride, pointer, ): """Set an attribute pointer for a given shader (index) index -- the index of the generic vertex to bind, see glGetAttribLocation for retrieval of the value, note that index is a global variable, not per-shader size -- number of basic elements per record, 1,2,3, or 4 type -- enum constant for data-type normalized -- whether to perform int to float normalization on integer-type values stride -- stride in machine units (bytes) between consecutive records, normally used to create "interleaved" arrays pointer -- data-pointer which provides the data-values, normally a vertex-buffer-object or offset into the same. This implementation stores a copy of the data-pointer in the contextdata structure in order to prevent null- reference errors in the renderer. """ array = ArrayDatatype.asArray( pointer, type ) key = ('vertex-attrib',index) contextdata.setValue( key, array ) return baseOperation( index, size, type, normalized, stride, ArrayDatatype.voidDataPointer( array ) ) @lazy( glDrawBuffers ) def glDrawBuffers( baseOperation, n=None, bufs=None ): """glDrawBuffers( bufs ) -> bufs Wrapper will calculate n from dims of bufs if only one argument is provided... """ if bufs is None: bufs = n n = None bufs = arrays.GLenumArray.asArray( bufs ) if n is None: n = arrays.GLenumArray.arraySize( bufs ) return baseOperation( n,bufs ) PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_4_2.py0000644000175000001440000000202112025001653020175 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_4_2 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_4_2 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_4_2.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_4_2 import * ### END AUTOGENERATED SECTION from OpenGL.GL.ARB.base_instance import * from OpenGL.GL.ARB.shading_language_420pack import * from OpenGL.GL.ARB.transform_feedback_instanced import * from OpenGL.GL.ARB.compressed_texture_pixel_storage import * from OpenGL.GL.ARB.conservative_depth import * from OpenGL.GL.ARB.internalformat_query import * from OpenGL.GL.ARB.map_buffer_alignment import * from OpenGL.GL.ARB.shader_atomic_counters import * from OpenGL.GL.ARB.shader_image_load_store import * from OpenGL.GL.ARB.shading_language_packing import * from OpenGL.GL.ARB.texture_storage import * PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_1.py0000644000175000001440000005270312025001653020205 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_1_1 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_1 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_1.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_1 import * ### END AUTOGENERATED SECTION GL_MODELVIEW0_EXT = GL_MODELVIEW # alias GL_MODELVIEW0_MATRIX_EXT = GL_MODELVIEW_MATRIX # alias GL_MODELVIEW0_STACK_DEPTH_EXT = GL_MODELVIEW_STACK_DEPTH # alias GL_TEXTURE_COMPONENTS = GL_TEXTURE_INTERNAL_FORMAT # alias glAreTexturesResident = arrays.setInputArraySizeType( glAreTexturesResident, None, # XXX Could not determine size of argument textures for glAreTexturesResident arrays.GLuintArray arrays.GLuintArray, 'textures', ) glBitmap = arrays.setInputArraySizeType( glBitmap, None, # XXX Could not determine size of argument bitmap for glBitmap arrays.GLubyteArray arrays.GLubyteArray, 'bitmap', ) glClipPlane = arrays.setInputArraySizeType( glClipPlane, None, # XXX Could not determine size of argument equation for glClipPlane arrays.GLdoubleArray arrays.GLdoubleArray, 'equation', ) glColor3bv = arrays.setInputArraySizeType( glColor3bv, 3, arrays.GLbyteArray, 'v', ) glColor3dv = arrays.setInputArraySizeType( glColor3dv, 3, arrays.GLdoubleArray, 'v', ) glColor3fv = arrays.setInputArraySizeType( glColor3fv, 3, arrays.GLfloatArray, 'v', ) glColor3iv = arrays.setInputArraySizeType( glColor3iv, 3, arrays.GLintArray, 'v', ) glColor3sv = arrays.setInputArraySizeType( glColor3sv, 3, arrays.GLshortArray, 'v', ) glColor3ubv = arrays.setInputArraySizeType( glColor3ubv, 3, arrays.GLubyteArray, 'v', ) glColor3uiv = arrays.setInputArraySizeType( glColor3uiv, 3, arrays.GLuintArray, 'v', ) glColor3usv = arrays.setInputArraySizeType( glColor3usv, 3, arrays.GLushortArray, 'v', ) glColor4bv = arrays.setInputArraySizeType( glColor4bv, 4, arrays.GLbyteArray, 'v', ) glColor4dv = arrays.setInputArraySizeType( glColor4dv, 4, arrays.GLdoubleArray, 'v', ) glColor4fv = arrays.setInputArraySizeType( glColor4fv, 4, arrays.GLfloatArray, 'v', ) glColor4iv = arrays.setInputArraySizeType( glColor4iv, 4, arrays.GLintArray, 'v', ) glColor4sv = arrays.setInputArraySizeType( glColor4sv, 4, arrays.GLshortArray, 'v', ) glColor4ubv = arrays.setInputArraySizeType( glColor4ubv, 4, arrays.GLubyteArray, 'v', ) glColor4uiv = arrays.setInputArraySizeType( glColor4uiv, 4, arrays.GLuintArray, 'v', ) glColor4usv = arrays.setInputArraySizeType( glColor4usv, 4, arrays.GLushortArray, 'v', ) glDeleteTextures = arrays.setInputArraySizeType( glDeleteTextures, None, # XXX Could not determine size of argument textures for glDeleteTextures arrays.GLuintArray arrays.GLuintArray, 'textures', ) glEvalCoord1dv = arrays.setInputArraySizeType( glEvalCoord1dv, 1, arrays.GLdoubleArray, 'u', ) glEvalCoord1fv = arrays.setInputArraySizeType( glEvalCoord1fv, 1, arrays.GLfloatArray, 'u', ) glEvalCoord2dv = arrays.setInputArraySizeType( glEvalCoord2dv, 2, arrays.GLdoubleArray, 'u', ) glEvalCoord2fv = arrays.setInputArraySizeType( glEvalCoord2fv, 2, arrays.GLfloatArray, 'u', ) glFeedbackBuffer = arrays.setInputArraySizeType( glFeedbackBuffer, None, # XXX Could not determine size of argument buffer for glFeedbackBuffer arrays.GLfloatArray arrays.GLfloatArray, 'buffer', ) glFogfv = arrays.setInputArraySizeType( glFogfv, None, # XXX Could not determine size of argument params for glFogfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glFogiv = arrays.setInputArraySizeType( glFogiv, None, # XXX Could not determine size of argument params for glFogiv arrays.GLintArray arrays.GLintArray, 'params', ) glGenTextures = arrays.setInputArraySizeType( glGenTextures, None, # XXX Could not determine size of argument textures for glGenTextures arrays.GLuintArray arrays.GLuintArray, 'textures', ) glGetClipPlane = arrays.setInputArraySizeType( glGetClipPlane, None, # XXX Could not determine size of argument equation for glGetClipPlane arrays.GLdoubleArray arrays.GLdoubleArray, 'equation', ) glGetDoublev = arrays.setInputArraySizeType( glGetDoublev, None, # XXX Could not determine size of argument params for glGetDoublev arrays.GLdoubleArray arrays.GLdoubleArray, 'params', ) glGetFloatv = arrays.setInputArraySizeType( glGetFloatv, None, # XXX Could not determine size of argument params for glGetFloatv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glGetIntegerv = arrays.setInputArraySizeType( glGetIntegerv, None, # XXX Could not determine size of argument params for glGetIntegerv arrays.GLintArray arrays.GLintArray, 'params', ) glGetLightfv = arrays.setInputArraySizeType( glGetLightfv, None, # XXX Could not determine size of argument params for glGetLightfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glGetLightiv = arrays.setInputArraySizeType( glGetLightiv, None, # XXX Could not determine size of argument params for glGetLightiv arrays.GLintArray arrays.GLintArray, 'params', ) glGetMapdv = arrays.setInputArraySizeType( glGetMapdv, None, # XXX Could not determine size of argument v for glGetMapdv arrays.GLdoubleArray arrays.GLdoubleArray, 'v', ) glGetMapfv = arrays.setInputArraySizeType( glGetMapfv, None, # XXX Could not determine size of argument v for glGetMapfv arrays.GLfloatArray arrays.GLfloatArray, 'v', ) glGetMapiv = arrays.setInputArraySizeType( glGetMapiv, None, # XXX Could not determine size of argument v for glGetMapiv arrays.GLintArray arrays.GLintArray, 'v', ) glGetMaterialfv = arrays.setInputArraySizeType( glGetMaterialfv, None, # XXX Could not determine size of argument params for glGetMaterialfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glGetMaterialiv = arrays.setInputArraySizeType( glGetMaterialiv, None, # XXX Could not determine size of argument params for glGetMaterialiv arrays.GLintArray arrays.GLintArray, 'params', ) glGetPixelMapfv = arrays.setInputArraySizeType( glGetPixelMapfv, None, # XXX Could not determine size of argument values for glGetPixelMapfv arrays.GLfloatArray arrays.GLfloatArray, 'values', ) glGetPixelMapuiv = arrays.setInputArraySizeType( glGetPixelMapuiv, None, # XXX Could not determine size of argument values for glGetPixelMapuiv arrays.GLuintArray arrays.GLuintArray, 'values', ) glGetPixelMapusv = arrays.setInputArraySizeType( glGetPixelMapusv, None, # XXX Could not determine size of argument values for glGetPixelMapusv arrays.GLushortArray arrays.GLushortArray, 'values', ) glGetPolygonStipple = arrays.setInputArraySizeType( glGetPolygonStipple, None, # XXX Could not determine size of argument mask for glGetPolygonStipple arrays.GLubyteArray arrays.GLubyteArray, 'mask', ) glGetTexEnvfv = arrays.setInputArraySizeType( glGetTexEnvfv, None, # XXX Could not determine size of argument params for glGetTexEnvfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glGetTexEnviv = arrays.setInputArraySizeType( glGetTexEnviv, None, # XXX Could not determine size of argument params for glGetTexEnviv arrays.GLintArray arrays.GLintArray, 'params', ) glGetTexGendv = arrays.setInputArraySizeType( glGetTexGendv, None, # XXX Could not determine size of argument params for glGetTexGendv arrays.GLdoubleArray arrays.GLdoubleArray, 'params', ) glGetTexGenfv = arrays.setInputArraySizeType( glGetTexGenfv, None, # XXX Could not determine size of argument params for glGetTexGenfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glGetTexGeniv = arrays.setInputArraySizeType( glGetTexGeniv, None, # XXX Could not determine size of argument params for glGetTexGeniv arrays.GLintArray arrays.GLintArray, 'params', ) glGetTexLevelParameterfv = arrays.setInputArraySizeType( glGetTexLevelParameterfv, None, # XXX Could not determine size of argument params for glGetTexLevelParameterfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glGetTexLevelParameteriv = arrays.setInputArraySizeType( glGetTexLevelParameteriv, None, # XXX Could not determine size of argument params for glGetTexLevelParameteriv arrays.GLintArray arrays.GLintArray, 'params', ) glGetTexParameterfv = arrays.setInputArraySizeType( glGetTexParameterfv, None, # XXX Could not determine size of argument params for glGetTexParameterfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glGetTexParameteriv = arrays.setInputArraySizeType( glGetTexParameteriv, None, # XXX Could not determine size of argument params for glGetTexParameteriv arrays.GLintArray arrays.GLintArray, 'params', ) glIndexdv = arrays.setInputArraySizeType( glIndexdv, None, # XXX Could not determine size of argument c for glIndexdv arrays.GLdoubleArray arrays.GLdoubleArray, 'c', ) glIndexfv = arrays.setInputArraySizeType( glIndexfv, None, # XXX Could not determine size of argument c for glIndexfv arrays.GLfloatArray arrays.GLfloatArray, 'c', ) glIndexiv = arrays.setInputArraySizeType( glIndexiv, None, # XXX Could not determine size of argument c for glIndexiv arrays.GLintArray arrays.GLintArray, 'c', ) glIndexsv = arrays.setInputArraySizeType( glIndexsv, None, # XXX Could not determine size of argument c for glIndexsv arrays.GLshortArray arrays.GLshortArray, 'c', ) glIndexubv = arrays.setInputArraySizeType( glIndexubv, None, # XXX Could not determine size of argument c for glIndexubv arrays.GLubyteArray arrays.GLubyteArray, 'c', ) glLightModelfv = arrays.setInputArraySizeType( glLightModelfv, None, # XXX Could not determine size of argument params for glLightModelfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glLightModeliv = arrays.setInputArraySizeType( glLightModeliv, None, # XXX Could not determine size of argument params for glLightModeliv arrays.GLintArray arrays.GLintArray, 'params', ) glLightfv = arrays.setInputArraySizeType( glLightfv, None, # XXX Could not determine size of argument params for glLightfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glLightiv = arrays.setInputArraySizeType( glLightiv, None, # XXX Could not determine size of argument params for glLightiv arrays.GLintArray arrays.GLintArray, 'params', ) glLoadMatrixd = arrays.setInputArraySizeType( glLoadMatrixd, 16, arrays.GLdoubleArray, 'm', ) glLoadMatrixf = arrays.setInputArraySizeType( glLoadMatrixf, 16, arrays.GLfloatArray, 'm', ) glMap1d = arrays.setInputArraySizeType( glMap1d, None, # XXX Could not determine size of argument points for glMap1d arrays.GLdoubleArray arrays.GLdoubleArray, 'points', ) glMap1f = arrays.setInputArraySizeType( glMap1f, None, # XXX Could not determine size of argument points for glMap1f arrays.GLfloatArray arrays.GLfloatArray, 'points', ) glMap2d = arrays.setInputArraySizeType( glMap2d, None, # XXX Could not determine size of argument points for glMap2d arrays.GLdoubleArray arrays.GLdoubleArray, 'points', ) glMap2f = arrays.setInputArraySizeType( glMap2f, None, # XXX Could not determine size of argument points for glMap2f arrays.GLfloatArray arrays.GLfloatArray, 'points', ) glMaterialfv = arrays.setInputArraySizeType( glMaterialfv, None, # XXX Could not determine size of argument params for glMaterialfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glMaterialiv = arrays.setInputArraySizeType( glMaterialiv, None, # XXX Could not determine size of argument params for glMaterialiv arrays.GLintArray arrays.GLintArray, 'params', ) glMultMatrixd = arrays.setInputArraySizeType( glMultMatrixd, 16, arrays.GLdoubleArray, 'm', ) glMultMatrixf = arrays.setInputArraySizeType( glMultMatrixf, 16, arrays.GLfloatArray, 'm', ) glNormal3bv = arrays.setInputArraySizeType( glNormal3bv, 3, arrays.GLbyteArray, 'v', ) glNormal3dv = arrays.setInputArraySizeType( glNormal3dv, 3, arrays.GLdoubleArray, 'v', ) glNormal3fv = arrays.setInputArraySizeType( glNormal3fv, 3, arrays.GLfloatArray, 'v', ) glNormal3iv = arrays.setInputArraySizeType( glNormal3iv, 3, arrays.GLintArray, 'v', ) glNormal3sv = arrays.setInputArraySizeType( glNormal3sv, 3, arrays.GLshortArray, 'v', ) glPixelMapfv = arrays.setInputArraySizeType( glPixelMapfv, None, # XXX Could not determine size of argument values for glPixelMapfv arrays.GLfloatArray arrays.GLfloatArray, 'values', ) glPixelMapuiv = arrays.setInputArraySizeType( glPixelMapuiv, None, # XXX Could not determine size of argument values for glPixelMapuiv arrays.GLuintArray arrays.GLuintArray, 'values', ) glPixelMapusv = arrays.setInputArraySizeType( glPixelMapusv, None, # XXX Could not determine size of argument values for glPixelMapusv arrays.GLushortArray arrays.GLushortArray, 'values', ) glPolygonStipple = arrays.setInputArraySizeType( glPolygonStipple, None, # XXX Could not determine size of argument mask for glPolygonStipple arrays.GLubyteArray arrays.GLubyteArray, 'mask', ) glPrioritizeTextures = arrays.setInputArraySizeType( arrays.setInputArraySizeType( glPrioritizeTextures, None, # XXX Could not determine size of argument textures for glPrioritizeTextures arrays.GLuintArray arrays.GLuintArray, 'textures', ), None, # XXX Could not determine size of argument priorities for glPrioritizeTextures arrays.GLclampfArray arrays.GLclampfArray, 'priorities', ) glRasterPos2dv = arrays.setInputArraySizeType( glRasterPos2dv, 2, arrays.GLdoubleArray, 'v', ) glRasterPos2fv = arrays.setInputArraySizeType( glRasterPos2fv, 2, arrays.GLfloatArray, 'v', ) glRasterPos2iv = arrays.setInputArraySizeType( glRasterPos2iv, 2, arrays.GLintArray, 'v', ) glRasterPos2sv = arrays.setInputArraySizeType( glRasterPos2sv, 2, arrays.GLshortArray, 'v', ) glRasterPos3dv = arrays.setInputArraySizeType( glRasterPos3dv, 3, arrays.GLdoubleArray, 'v', ) glRasterPos3fv = arrays.setInputArraySizeType( glRasterPos3fv, 3, arrays.GLfloatArray, 'v', ) glRasterPos3iv = arrays.setInputArraySizeType( glRasterPos3iv, 3, arrays.GLintArray, 'v', ) glRasterPos3sv = arrays.setInputArraySizeType( glRasterPos3sv, 3, arrays.GLshortArray, 'v', ) glRasterPos4dv = arrays.setInputArraySizeType( glRasterPos4dv, 4, arrays.GLdoubleArray, 'v', ) glRasterPos4fv = arrays.setInputArraySizeType( glRasterPos4fv, 4, arrays.GLfloatArray, 'v', ) glRasterPos4iv = arrays.setInputArraySizeType( glRasterPos4iv, 4, arrays.GLintArray, 'v', ) glRasterPos4sv = arrays.setInputArraySizeType( glRasterPos4sv, 4, arrays.GLshortArray, 'v', ) glRectdv = arrays.setInputArraySizeType( arrays.setInputArraySizeType( glRectdv, None, # XXX Could not determine size of argument v1 for glRectdv arrays.GLdoubleArray arrays.GLdoubleArray, 'v1', ), None, # XXX Could not determine size of argument v2 for glRectdv arrays.GLdoubleArray arrays.GLdoubleArray, 'v2', ) glRectfv = arrays.setInputArraySizeType( arrays.setInputArraySizeType( glRectfv, None, # XXX Could not determine size of argument v1 for glRectfv arrays.GLfloatArray arrays.GLfloatArray, 'v1', ), None, # XXX Could not determine size of argument v2 for glRectfv arrays.GLfloatArray arrays.GLfloatArray, 'v2', ) glRectiv = arrays.setInputArraySizeType( arrays.setInputArraySizeType( glRectiv, None, # XXX Could not determine size of argument v1 for glRectiv arrays.GLintArray arrays.GLintArray, 'v1', ), None, # XXX Could not determine size of argument v2 for glRectiv arrays.GLintArray arrays.GLintArray, 'v2', ) glRectsv = arrays.setInputArraySizeType( arrays.setInputArraySizeType( glRectsv, None, # XXX Could not determine size of argument v1 for glRectsv arrays.GLshortArray arrays.GLshortArray, 'v1', ), None, # XXX Could not determine size of argument v2 for glRectsv arrays.GLshortArray arrays.GLshortArray, 'v2', ) glSelectBuffer = arrays.setInputArraySizeType( glSelectBuffer, None, # XXX Could not determine size of argument buffer for glSelectBuffer arrays.GLuintArray arrays.GLuintArray, 'buffer', ) glTexCoord1dv = arrays.setInputArraySizeType( glTexCoord1dv, 1, arrays.GLdoubleArray, 'v', ) glTexCoord1fv = arrays.setInputArraySizeType( glTexCoord1fv, 1, arrays.GLfloatArray, 'v', ) glTexCoord1iv = arrays.setInputArraySizeType( glTexCoord1iv, 1, arrays.GLintArray, 'v', ) glTexCoord1sv = arrays.setInputArraySizeType( glTexCoord1sv, 1, arrays.GLshortArray, 'v', ) glTexCoord2dv = arrays.setInputArraySizeType( glTexCoord2dv, 2, arrays.GLdoubleArray, 'v', ) glTexCoord2fv = arrays.setInputArraySizeType( glTexCoord2fv, 2, arrays.GLfloatArray, 'v', ) glTexCoord2iv = arrays.setInputArraySizeType( glTexCoord2iv, 2, arrays.GLintArray, 'v', ) glTexCoord2sv = arrays.setInputArraySizeType( glTexCoord2sv, 2, arrays.GLshortArray, 'v', ) glTexCoord3dv = arrays.setInputArraySizeType( glTexCoord3dv, 3, arrays.GLdoubleArray, 'v', ) glTexCoord3fv = arrays.setInputArraySizeType( glTexCoord3fv, 3, arrays.GLfloatArray, 'v', ) glTexCoord3iv = arrays.setInputArraySizeType( glTexCoord3iv, 3, arrays.GLintArray, 'v', ) glTexCoord3sv = arrays.setInputArraySizeType( glTexCoord3sv, 3, arrays.GLshortArray, 'v', ) glTexCoord4dv = arrays.setInputArraySizeType( glTexCoord4dv, 4, arrays.GLdoubleArray, 'v', ) glTexCoord4fv = arrays.setInputArraySizeType( glTexCoord4fv, 4, arrays.GLfloatArray, 'v', ) glTexCoord4iv = arrays.setInputArraySizeType( glTexCoord4iv, 4, arrays.GLintArray, 'v', ) glTexCoord4sv = arrays.setInputArraySizeType( glTexCoord4sv, 4, arrays.GLshortArray, 'v', ) glTexEnvfv = arrays.setInputArraySizeType( glTexEnvfv, None, # XXX Could not determine size of argument params for glTexEnvfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glTexEnviv = arrays.setInputArraySizeType( glTexEnviv, None, # XXX Could not determine size of argument params for glTexEnviv arrays.GLintArray arrays.GLintArray, 'params', ) glTexGendv = arrays.setInputArraySizeType( glTexGendv, None, # XXX Could not determine size of argument params for glTexGendv arrays.GLdoubleArray arrays.GLdoubleArray, 'params', ) glTexGenfv = arrays.setInputArraySizeType( glTexGenfv, None, # XXX Could not determine size of argument params for glTexGenfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glTexGeniv = arrays.setInputArraySizeType( glTexGeniv, None, # XXX Could not determine size of argument params for glTexGeniv arrays.GLintArray arrays.GLintArray, 'params', ) glTexParameterfv = arrays.setInputArraySizeType( glTexParameterfv, None, # XXX Could not determine size of argument params for glTexParameterfv arrays.GLfloatArray arrays.GLfloatArray, 'params', ) glTexParameteriv = arrays.setInputArraySizeType( glTexParameteriv, None, # XXX Could not determine size of argument params for glTexParameteriv arrays.GLintArray arrays.GLintArray, 'params', ) glVertex2dv = arrays.setInputArraySizeType( glVertex2dv, 2, arrays.GLdoubleArray, 'v', ) glVertex2fv = arrays.setInputArraySizeType( glVertex2fv, 2, arrays.GLfloatArray, 'v', ) glVertex2iv = arrays.setInputArraySizeType( glVertex2iv, 2, arrays.GLintArray, 'v', ) glVertex2sv = arrays.setInputArraySizeType( glVertex2sv, 2, arrays.GLshortArray, 'v', ) glVertex3dv = arrays.setInputArraySizeType( glVertex3dv, 3, arrays.GLdoubleArray, 'v', ) glVertex3fv = arrays.setInputArraySizeType( glVertex3fv, 3, arrays.GLfloatArray, 'v', ) glVertex3iv = arrays.setInputArraySizeType( glVertex3iv, 3, arrays.GLintArray, 'v', ) glVertex3sv = arrays.setInputArraySizeType( glVertex3sv, 3, arrays.GLshortArray, 'v', ) glVertex4dv = arrays.setInputArraySizeType( glVertex4dv, 4, arrays.GLdoubleArray, 'v', ) glVertex4fv = arrays.setInputArraySizeType( glVertex4fv, 4, arrays.GLfloatArray, 'v', ) glVertex4iv = arrays.setInputArraySizeType( glVertex4iv, 4, arrays.GLintArray, 'v', ) glVertex4sv = arrays.setInputArraySizeType( glVertex4sv, 4, arrays.GLshortArray, 'v', ) PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_3.py0000644000175000001440000000344512025001653020206 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_1_3 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_3 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_3.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_3 import * ### END AUTOGENERATED SECTION from OpenGL.GL.VERSION.GL_1_3_images import * GL_SRC0_ALPHA = GL_SOURCE0_ALPHA # alias GL_SRC0_RGB = GL_SOURCE0_RGB # alias GL_SRC1_ALPHA = GL_SOURCE1_ALPHA # alias GL_SRC1_RGB = GL_SOURCE1_RGB # alias GL_SRC2_ALPHA = GL_SOURCE2_ALPHA # alias GL_SRC2_RGB = GL_SOURCE2_RGB # alias for typ,arrayType in ( ('d',arrays.GLdoubleArray), ('f',arrays.GLfloatArray), ('i',arrays.GLintArray), ('s',arrays.GLshortArray), ): for size in (1,2,3,4): name = 'glMultiTexCoord%(size)s%(typ)sv'%globals() globals()[name] = arrays.setInputArraySizeType( globals()[name], size, arrayType, 'v', ) try: del size,name except NameError, err: pass try: del typ,arrayType except NameError, err: pass for typ,arrayType in ( ('d',arrays.GLdoubleArray), ('f',arrays.GLfloatArray), ): for function in ('glLoadTransposeMatrix','glMultTransposeMatrix'): name = '%s%s'%(function,typ) globals()[name] = arrays.setInputArraySizeType( globals()[name], 16, arrayType, 'm', ) try: del function,name except NameError, err: pass try: del typ,arrayType except NameError, err: pass PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_3_1.py0000644000175000001440000000107412025001653020202 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_3_1 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_3_1 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_3_1.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_3_1 import * ### END AUTOGENERATED SECTION from OpenGL.GL.ARB.copy_buffer import * from OpenGL.GL.ARB.uniform_buffer_object import * PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_1_3_DEPRECATED.py0000644000175000001440000000101512025001653021655 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_1_3_DEPRECATED This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_3_DEPRECATED to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_3_DEPRECATED.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_3_DEPRECATED import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_4_1.py0000644000175000001440000000137312025001653020205 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_4_1 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_4_1 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_4_1.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_4_1 import * ### END AUTOGENERATED SECTION from OpenGL.GL.ARB.ES2_compatibility import * from OpenGL.GL.ARB.get_program_binary import * from OpenGL.GL.ARB.separate_shader_objects import * from OpenGL.GL.ARB.shader_precision import * from OpenGL.GL.ARB.vertex_attrib_64bit import * from OpenGL.GL.ARB.viewport_array import * PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_4_0.py0000644000175000001440000000174212025001653020204 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_4_0 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_4_0 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_4_0.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_4_0 import * ### END AUTOGENERATED SECTION from OpenGL.GL.ARB.texture_query_lod import * from OpenGL.GL.ARB.draw_indirect import * from OpenGL.GL.ARB.gpu_shader5 import * from OpenGL.GL.ARB.gpu_shader_fp64 import * from OpenGL.GL.ARB.shader_subroutine import * from OpenGL.GL.ARB.tessellation_shader import * from OpenGL.GL.ARB.texture_buffer_object_rgb32 import * from OpenGL.GL.ARB.texture_cube_map_array import * from OpenGL.GL.ARB.texture_gather import * from OpenGL.GL.ARB.transform_feedback2 import * from OpenGL.GL.ARB.transform_feedback3 import * PyOpenGL-3.0.2/OpenGL/GL/VERSION/GL_3_3.py0000644000175000001440000000167212025001653020210 0ustar mcfletchusers00000000000000'''OpenGL extension VERSION.GL_3_3 This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_3_3 to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_3_3.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_3_3 import * ### END AUTOGENERATED SECTION from OpenGL.GL.ARB.texture_multisample import * from OpenGL.GL.ARB.blend_func_extended import * from OpenGL.GL.ARB.sampler_objects import * from OpenGL.GL.ARB.explicit_attrib_location import * from OpenGL.GL.ARB.occlusion_query2 import * from OpenGL.GL.ARB.shader_bit_encoding import * from OpenGL.GL.ARB.texture_rgb10_a2ui import * from OpenGL.GL.ARB.texture_swizzle import * from OpenGL.GL.ARB.timer_query import * from OpenGL.GL.ARB.vertex_type_2_10_10_10_rev import * PyOpenGL-3.0.2/OpenGL/GL/framebufferobjects.py0000644000175000001440000000564412025001653021756 0ustar mcfletchusers00000000000000"""Convenience API for using Frame Buffer Objects""" from OpenGL.extensions import alternate from OpenGL.GL.ARB.framebuffer_object import * from OpenGL.GL.EXT.framebuffer_object import * from OpenGL.GL.EXT.framebuffer_multisample import * from OpenGL.GL.EXT.framebuffer_blit import * glBindFramebuffer = alternate(glBindFramebuffer,glBindFramebufferEXT) glBindRenderbuffer = alternate( glBindRenderbuffer, glBindRenderbufferEXT ) glCheckFramebufferStatus = alternate( glCheckFramebufferStatus, glCheckFramebufferStatusEXT ) glDeleteFramebuffers = alternate( glDeleteFramebuffers, glDeleteFramebuffersEXT ) glDeleteRenderbuffers = alternate( glDeleteRenderbuffers, glDeleteRenderbuffersEXT ) glFramebufferRenderbuffer = alternate( glFramebufferRenderbuffer, glFramebufferRenderbufferEXT ) glFramebufferTexture1D = alternate( glFramebufferTexture1D, glFramebufferTexture1DEXT ) glFramebufferTexture2D = alternate( glFramebufferTexture2D, glFramebufferTexture2DEXT ) glFramebufferTexture3D = alternate( glFramebufferTexture3D, glFramebufferTexture3DEXT ) glGenFramebuffers = alternate( glGenFramebuffers, glGenFramebuffersEXT ) glGenRenderbuffers = alternate( glGenRenderbuffers, glGenRenderbuffersEXT ) glGenerateMipmap = alternate( glGenerateMipmap, glGenerateMipmapEXT ) glGetFramebufferAttachmentParameteriv = alternate( glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameterivEXT ) glGetRenderbufferParameteriv = alternate( glGetRenderbufferParameteriv, glGetRenderbufferParameterivEXT ) glIsFramebuffer = alternate( glIsFramebuffer, glIsFramebufferEXT ) glIsRenderbuffer = alternate( glIsRenderbuffer, glIsRenderbufferEXT ) glRenderbufferStorage = alternate( glRenderbufferStorage, glRenderbufferStorageEXT ) glBlitFramebuffer = alternate( glBlitFramebuffer, glBlitFramebufferEXT ) glRenderbufferStorageMultisample = alternate( glRenderbufferStorageMultisample, glRenderbufferStorageMultisampleEXT ) # this entry point is new to the ARB version of the extensions #glFramebufferTextureLayer = alternate( glFramebufferTextureLayer, glFramebufferTextureLayerEXT ) def checkFramebufferStatus(): """Utility method to check status and raise errors""" status = glCheckFramebufferStatus( GL_FRAMEBUFFER ) if status == GL_FRAMEBUFFER_COMPLETE: return True from OpenGL.error import GLError description = None for error_constant in [ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT, GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT, GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS, GL_FRAMEBUFFER_INCOMPLETE_FORMATS, GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER, GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER, GL_FRAMEBUFFER_UNSUPPORTED, ]: if status == error_constant: status = error_constant description = str(status) raise GLError( err=status, result=status, baseOperation=glCheckFramebufferStatus, description=description, ) PyOpenGL-3.0.2/OpenGL/GL/DFX/0000755000175000001440000000000012032640120016152 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/DFX/tbuffer.py0000644000175000001440000000126512025001653020171 0ustar mcfletchusers00000000000000'''OpenGL extension DFX.tbuffer This module customises the behaviour of the OpenGL.raw.GL.DFX.tbuffer to provide a more Python-friendly API Overview (from the spec) This extension allows a write mask to be defined for the fragment mask which is created during multisample rendering. This can be used to create effects such as motion blur and depth of field. The official definition of this extension is available here: http://www.opengl.org/registry/specs/DFX/tbuffer.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.DFX.tbuffer import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/DFX/__init__.py0000644000175000001440000000002712025001653020266 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/DFX/multisample.py0000644000175000001440000000513012025001653021063 0ustar mcfletchusers00000000000000'''OpenGL extension DFX.multisample This module customises the behaviour of the OpenGL.raw.GL.DFX.multisample to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism to antialias all GL primitives: points, lines, polygons, bitmaps, and images. The technique is to sample all primitives multiple times at each pixel. The color sample values are resolved to a single, displayable color each time a pixel is updated, so the antialiasing appears to be automatic at the application level. Because each sample includes depth and stencil information, the depth and stencil functions perform equivalently to the single-sample mode. An additional buffer, called the multisample buffer, is added to the framebuffer. Pixel sample values, including color, depth, and stencil values, are stored in this buffer. When the framebuffer includes a multisample buffer, it does not also include separate depth or stencil buffers, even if the multisample buffer does not store depth or stencil values. Color buffers (left/right, front/back, and aux) do coexist with the multisample buffer, however. Multisample antialiasing is most valuable for rendering polygons, because it requires no sorting for hidden surface elimination, and it correctly handles adjacent polygons, object silhouettes, and even intersecting polygons. If only points or lines are being rendered, the "smooth" antialiasing mechanism provided by the base GL may result in a higher quality image. This extension is a subset of SGIS_multisample. It differs in these key ways: * Fragment alpha values are not affected by the fragment sample mask * The sample locations may or may not be fixed. Thus, there is no support for rendering the scene multiple times with different sample points. * Fragment masks are not computed for images or for bitmasks. Because of these differences a new extension was created. However, it is not expected that this extension will co-exist with SGIS_multisample. Because of this and the fact that there are only 32 push/pop bits the MULTISAMPLE_BIT_SGIS state value is the same as MUTLISAMPLE_BIT_3DFX. The official definition of this extension is available here: http://www.opengl.org/registry/specs/DFX/multisample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.DFX.multisample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/DFX/texture_compression_FXT1.py0000644000175000001440000000255512025001653023462 0ustar mcfletchusers00000000000000'''OpenGL extension DFX.texture_compression_FXT1 This module customises the behaviour of the OpenGL.raw.GL.DFX.texture_compression_FXT1 to provide a more Python-friendly API Overview (from the spec) This extension additional texture compression functionality 's FXT1 format, specific to 3dfxsubject to all the requirements and limitations described by the extension GL_ARB_texture_compression. The FXT1 texture format supports only 2D and 3D images without borders. Because 3dfx expects to make continual improvement to its FXT1 compressor implementation, 3dfx recommends that to achieve best visual quality applications adopt the following procedure with respect to reuse of textures compressed by the GL: 1) Save the RENDERER and VERSION strings along with images compressed by the GL; 2) Before reuse of the textures, compare the stored strings with strings newly returned from the current GL; 3) If out-of-date, repeat the compression and storage steps. The official definition of this extension is available here: http://www.opengl.org/registry/specs/DFX/texture_compression_FXT1.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.DFX.texture_compression_FXT1 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/OES/0000755000175000001440000000000012032640120016157 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/OES/read_format.py0000644000175000001440000000074512025001653021026 0ustar mcfletchusers00000000000000'''OpenGL extension OES.read_format This module customises the behaviour of the OpenGL.raw.GL.OES.read_format to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/OES/read_format.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.OES.read_format import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/OES/__init__.py0000644000175000001440000000002712025001653020273 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/exceptional.py0000644000175000001440000002541112025001653020425 0ustar mcfletchusers00000000000000"""Exceptional cases that need some extra wrapping""" from OpenGL.platform import GL,GLU,createBaseFunction from OpenGL import arrays, error, wrapper, constants from OpenGL.arrays.arraydatatype import GLfloatArray, GLdoubleArray from OpenGL import constants as data_types from OpenGL.lazywrapper import lazy from OpenGL.raw.GL.VERSION import GL_1_1 as simple from OpenGL.GL.VERSION import GL_1_1 as full import OpenGL from OpenGL import _configflags import ctypes __all__ = [ 'glBegin', 'glCallLists', 'glColor', #'glColorTableParameterfv', 'glDeleteTextures', 'glEdgeFlagv', 'glEnd', 'glGenTextures', 'glIndexdv', 'glIndexfv', 'glIndexsv', 'glIndexubv', 'glMap1d', 'glMap1f', 'glMap2d', 'glMap2f', 'glMaterial', 'glRasterPos', 'glRectfv', 'glRectiv', 'glRectsv', 'glTexGenfv', 'glTexParameter', 'glVertex', 'glAreTexturesResident', ] glRasterPosDispatch = { 2: full.glRasterPos2d, 3: full.glRasterPos3d, 4: full.glRasterPos4d, } if _configflags.ERROR_CHECKING: @lazy( full.glBegin ) def glBegin( baseFunction, mode ): """Begin GL geometry-definition mode, disable automatic error checking""" error.onBegin( ) return baseFunction( mode ) @lazy( full.glEnd ) def glEnd( baseFunction ): """Finish GL geometry-definition mode, re-enable automatic error checking""" error.onEnd( ) return baseFunction( ) else: glBegin = full.glBegin glEnd = full.glEnd @lazy( full.glDeleteTextures ) def glDeleteTextures( baseFunction, array ): """Delete specified set of textures""" ptr = arrays.GLuintArray.asArray( array ) size = arrays.GLuintArray.arraySize( ptr ) return baseFunction( size, ptr ) def glMap2( baseFunction, arrayType ): def glMap2( target, u1, u2, v1, v2, points): """glMap2(target, u1, u2, v1, v2, points[][][]) -> None This is a completely non-standard signature which doesn't allow for most of the funky uses with strides and the like, but it has been like this for a very long time... """ ptr = arrayType.asArray( points ) uorder,vorder,vstride = arrayType.dimensions( ptr ) ustride = vstride*vorder return baseFunction( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, ptr ) glMap2.__name__ = baseFunction.__name__ glMap2.baseFunction = baseFunction return glMap2 glMap2d = glMap2( full.glMap2d, arrays.GLdoubleArray ) glMap2f = glMap2( full.glMap2f, arrays.GLfloatArray ) try: del glMap2 except NameError, err: pass def glMap1( baseFunction, arrayType ): def glMap1(target,u1,u2,points): """glMap1(target, u1, u2, points[][][]) -> None This is a completely non-standard signature which doesn't allow for most of the funky uses with strides and the like, but it has been like this for a very long time... """ ptr = arrayType.asArray( points ) dims = arrayType.dimensions( ptr ) uorder = dims[0] ustride = dims[1] return baseFunction( target, u1,u2,ustride,uorder, ptr ) glMap1.__name__ == baseFunction.__name__ glMap1.baseFunction = baseFunction return glMap1 glMap1d = glMap1( full.glMap1d, arrays.GLdoubleArray ) glMap1f = glMap1( full.glMap1f, arrays.GLfloatArray ) try: del glMap1 except NameError, err: pass def glRasterPos( *args ): """Choose glRasterPosX based on number of args""" if len(args) == 1: # v form... args = args[0] return glRasterPosDispatch[ len(args) ]( *args ) glVertexDispatch = { 2: full.glVertex2d, 3: full.glVertex3d, 4: full.glVertex4d, } def glVertex( *args ): """Choose glVertexX based on number of args""" if len(args) == 1: # v form... args = args[0] return glVertexDispatch[ len(args) ]( *args ) @lazy( full.glCallLists ) def glCallLists( baseFunction, lists, *args ): """glCallLists( str( lists ) or lists[] ) -> None Restricted version of glCallLists, takes a string or a GLuint compatible array data-type and passes into the base function. """ if not len(args): if isinstance( lists, str ): return baseFunction( len(lists), full.GL_UNSIGNED_BYTE, ctypes.c_void_p(arrays.GLubyteArray.dataPointer( lists )), ) ptr = arrays.GLuintArray.asArray( lists ) size = arrays.GLuintArray.arraySize( ptr ) return baseFunction( size, full.GL_UNSIGNED_INT, ctypes.c_void_p( arrays.GLuintArray.dataPointer(ptr)) ) return baseFunction( lists, *args ) def glTexParameter( target, pname, parameter ): """Set a texture parameter, choose underlying call based on pname and parameter""" if isinstance( parameter, float ): return full.glTexParameterf( target, pname, parameter ) elif isinstance( parameter, int ): return full.glTexParameteri( target, pname, parameter ) else: value = GLfloatArray.asArray( parameter, full.GL_FLOAT ) return full.glTexParameterfv( target, pname, value ) @lazy( full.glGenTextures ) def glGenTextures( baseFunction, count, textures=None ): """Generate count new texture names Note: for compatibility with PyOpenGL 2.x and below, a count of 1 will return a single integer, rather than an array of integers. """ if count <= 0: raise ValueError( """Can't generate 0 or fewer textures""" ) elif count == 1 and _configflags.SIZE_1_ARRAY_UNPACK: # this traditionally returned a single int/long, so we'll continue to # do so, even though it would be easier not to bother. textures = constants.GLuint( 0 ) baseFunction( count, textures) return textures.value else: textures = arrays.GLuintArray.zeros( (count,)) baseFunction( count, textures) return textures def glMaterial( faces, constant, *args ): """glMaterial -- convenience function to dispatch on argument type If passed a single argument in args, calls: glMaterialfv( faces, constant, args[0] ) else calls: glMaterialf( faces, constant, *args ) """ if len(args) == 1: arg = GLfloatArray.asArray( args[0] ) if arg is None: raise ValueError( """Null value in glMaterial: %s"""%(args,) ) return full.glMaterialfv( faces, constant, arg ) else: return full.glMaterialf( faces, constant, *args ) glColorDispatch = { 3: full.glColor3fv, 4: full.glColor4fv, } def glColor( *args ): """glColor*f* -- convenience function to dispatch on argument type dispatches to glColor3f, glColor2f, glColor4f, glColor3f, glColor2f, glColor4f depending on the arguments passed... """ arglen = len(args) if arglen == 1: arg = arrays.GLfloatArray.asArray( args[0] ) function = glColorDispatch[arrays.GLfloatArray.arraySize( arg )] return function( arg ) elif arglen == 2: return full.glColor2d( *args ) elif arglen == 3: return full.glColor3d( *args ) elif arglen == 4: return full.glColor4d( *args ) else: raise ValueError( """Don't know how to handle arguments: %s"""%(args,)) # Rectagle coordinates, glRectfv = arrays.setInputArraySizeType( arrays.setInputArraySizeType( full.glRectfv, 2, arrays.GLfloatArray, 'v1', ), 2, arrays.GLfloatArray, 'v2', ) glRectiv = arrays.setInputArraySizeType( arrays.setInputArraySizeType( full.glRectiv, 2, arrays.GLintArray, 'v1', ), 2, arrays.GLintArray, 'v2', ) glRectsv = arrays.setInputArraySizeType( arrays.setInputArraySizeType( full.glRectsv, 2, arrays.GLshortArray, 'v1', ), 2, arrays.GLshortArray, 'v2', ) glIndexsv = arrays.setInputArraySizeType( full.glIndexsv, 1, arrays.GLshortArray, 'c', ) glIndexdv = arrays.setInputArraySizeType( full.glIndexdv, 1, arrays.GLdoubleArray, 'c', ) glIndexfv = arrays.setInputArraySizeType( full.glIndexfv, 1, arrays.GLfloatArray, 'c', ) glIndexubv = arrays.setInputArraySizeType( full.glIndexubv, 1, arrays.GLbyteArray, 'c', ) glEdgeFlagv = arrays.setInputArraySizeType( full.glEdgeFlagv, 1, arrays.GLubyteArray, 'flag', ) glTexGenfv = arrays.setInputArraySizeType( full.glTexGenfv, None, arrays.GLfloatArray, 'params', ) #'glAreTexturesResident', @lazy( full.glAreTexturesResident ) def glAreTexturesResident( baseFunction, *args ): """Allow both Pythonic and C-style calls to glAreTexturesResident glAreTexturesResident( arrays.GLuintArray( textures) ) or glAreTexturesResident( int(n), arrays.GLuintArray( textures), arrays.GLuboolean( output) ) or glAreTexturesResident( int(n), arrays.GLuintArray( textures) ) returns the output arrays.GLubooleanArray """ if len(args) == 1: # Pythonic form... textures = args[0] textures = arrays.GLuintArray.asArray( textures ) n = arrays.GLuintArray.arraySize(textures) output = arrays.GLbooleanArray.zeros( (n,)) elif len(args) == 2: try: n = int( args[0] ) except TypeError, err: textures = args[0] textures = arrays.GLuintArray.asArray( textures ) n = arrays.GLuintArray.arraySize(textures) output = args[1] output = arrays.GLbooleanArray.asArray( output ) else: textures = args[1] textures = arrays.GLuintArray.asArray( textures ) output = arrays.GLbooleanArray.zeros( (n,)) elif len(args) == 3: n,textures,output = args textures = arrays.GLuintArray.asArray( textures ) output = arrays.GLbooleanArray.asArray( output ) else: raise TypeError( """Expected 1 to 3 arguments to glAreTexturesResident""" ) texturePtr = arrays.GLuintArray.typedPointer( textures ) outputPtr = arrays.GLbooleanArray.typedPointer( output ) result = baseFunction( n, texturePtr, outputPtr ) if result: # weirdness of the C api, doesn't produce values if all are true for i in range(len(output)): output[i] = 1 return output #glMap2f #glMap2d #glMap1f #glMap1d #glPixelMapusv #glTexGenfv #glLightfv #glFeedbackBuffer #glDrawRangeElements #glSelectBuffer #glAreTexturesResident #glPixelMapfv #glTexGeniv #glClipPlane #glTexParameterfv #glTexParameteriv #glReadPixels #glConvolutionParameterfv #glPolygonStipple #glFogiv #glTexEnviv #glRectdv #glMaterialiv #glColorTable #glColorTableParameteriv #glIndexiv #glLightModeliv #glDrawElements #glConvolutionFilter1D #glCallLists PyOpenGL-3.0.2/OpenGL/GL/INGR/0000755000175000001440000000000012032640120016270 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/INGR/__init__.py0000644000175000001440000000002712025001653020404 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/INGR/blend_func_separate.py0000644000175000001440000000101112025001653022622 0ustar mcfletchusers00000000000000'''OpenGL extension INGR.blend_func_separate This module customises the behaviour of the OpenGL.raw.GL.INGR.blend_func_separate to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/INGR/blend_func_separate.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.INGR.blend_func_separate import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/INGR/interlace_read.py0000644000175000001440000000135412025001653021612 0ustar mcfletchusers00000000000000'''OpenGL extension INGR.interlace_read This module customises the behaviour of the OpenGL.raw.GL.INGR.interlace_read to provide a more Python-friendly API Overview (from the spec) This extension provides a way to skip rows of pixels when reading or copying pixel rectangles. This extension is complementary to the EXT_interlace extension except that it has no affect on getting texture images. The official definition of this extension is available here: http://www.opengl.org/registry/specs/INGR/interlace_read.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.INGR.interlace_read import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/INGR/palette_buffer.py0000644000175000001440000000076512025001653021645 0ustar mcfletchusers00000000000000'''OpenGL extension INGR.palette_buffer This module customises the behaviour of the OpenGL.raw.GL.INGR.palette_buffer to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/INGR/palette_buffer.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.INGR.palette_buffer import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/INGR/color_clamp.py0000644000175000001440000000147212025001653021144 0ustar mcfletchusers00000000000000'''OpenGL extension INGR.color_clamp This module customises the behaviour of the OpenGL.raw.GL.INGR.color_clamp to provide a more Python-friendly API Overview (from the spec) Various RGBA color space conversions require clamping to values in a more constrained range than [0, 1]. This extension allows the definition of independent color clamp values for each of the four color components as part of the Final Conversion in the pixel transfer path for draws, reads, and copies. The official definition of this extension is available here: http://www.opengl.org/registry/specs/INGR/color_clamp.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.INGR.color_clamp import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/images.py0000644000175000001440000004652512025001653017370 0ustar mcfletchusers00000000000000"""Image-handling routines ### Unresolved: Following methods are not yet resolved due to my not being sure how the function should be wrapped: glCompressedTexImage3D glCompressedTexImage2D glCompressedTexImage1D glCompressedTexSubImage3D glCompressedTexSubImage2D glCompressedTexSubImage1D """ from OpenGL.raw.GL.VERSION import GL_1_1,GL_1_2, GL_3_0 from OpenGL import images, arrays, wrapper, platform, constants import ctypes def asInt( value ): if isinstance( value, float ): return int(round(value,0)) return value ## update the image tables with standard image types... images.COMPONENT_COUNTS.update( { GL_1_1.GL_BITMAP : 1, # must be GL_UNSIGNED_BYTE GL_1_1.GL_RED : 1, GL_1_1.GL_GREEN : 1, GL_1_1.GL_BLUE : 1, GL_1_1.GL_ALPHA : 1, GL_3_0.GL_RED_INTEGER : 1, GL_3_0.GL_GREEN_INTEGER : 1, GL_3_0.GL_BLUE_INTEGER : 1, GL_3_0.GL_ALPHA_INTEGER : 1, GL_1_1.GL_LUMINANCE : 1, GL_1_1.GL_LUMINANCE_ALPHA : 2, GL_1_1.GL_COLOR_INDEX : 1, GL_1_1.GL_STENCIL_INDEX : 1, GL_1_1.GL_DEPTH_COMPONENT : 1, GL_1_1.GL_RGB : 3, GL_1_2.GL_BGR : 3, GL_3_0.GL_RGB16F : 3, GL_3_0.GL_RGB16I : 3, GL_3_0.GL_RGB16UI : 3, GL_3_0.GL_RGB32F : 3, GL_3_0.GL_RGB32I : 3, GL_3_0.GL_RGB32UI : 3, GL_3_0.GL_RGB8I : 3, GL_3_0.GL_RGB8UI : 3, GL_3_0.GL_RGB9_E5 : 3, GL_3_0.GL_RGB_INTEGER : 3, GL_1_1.GL_RGBA : 4, GL_1_2.GL_BGRA : 4, GL_3_0.GL_RGBA16F : 4, GL_3_0.GL_RGBA16I : 4, GL_3_0.GL_RGBA16UI : 4, GL_3_0.GL_RGBA32F : 4, GL_3_0.GL_RGBA32I : 4, GL_3_0.GL_RGBA32UI : 4, GL_3_0.GL_RGBA8I : 4, GL_3_0.GL_RGBA8UI : 4, GL_3_0.GL_RGBA_INTEGER : 4, } ) images.TYPE_TO_ARRAYTYPE.update( { GL_1_2.GL_UNSIGNED_BYTE_3_3_2 : GL_1_1.GL_UNSIGNED_BYTE, GL_1_2.GL_UNSIGNED_BYTE_2_3_3_REV : GL_1_1.GL_UNSIGNED_BYTE, GL_1_2.GL_UNSIGNED_SHORT_4_4_4_4 : GL_1_1.GL_UNSIGNED_SHORT, GL_1_2.GL_UNSIGNED_SHORT_4_4_4_4_REV : GL_1_1.GL_UNSIGNED_SHORT, GL_1_2.GL_UNSIGNED_SHORT_5_5_5_1 : GL_1_1.GL_UNSIGNED_SHORT, GL_1_2.GL_UNSIGNED_SHORT_1_5_5_5_REV : GL_1_1.GL_UNSIGNED_SHORT, GL_1_2.GL_UNSIGNED_SHORT_5_6_5 : GL_1_1.GL_UNSIGNED_SHORT, GL_1_2.GL_UNSIGNED_SHORT_5_6_5_REV : GL_1_1.GL_UNSIGNED_SHORT, GL_1_2.GL_UNSIGNED_INT_8_8_8_8 : GL_1_1.GL_UNSIGNED_INT, GL_1_2.GL_UNSIGNED_INT_8_8_8_8_REV : GL_1_1.GL_UNSIGNED_INT, GL_1_2.GL_UNSIGNED_INT_10_10_10_2 : GL_1_1.GL_UNSIGNED_INT, GL_1_2.GL_UNSIGNED_INT_2_10_10_10_REV : GL_1_1.GL_UNSIGNED_INT, GL_1_1.GL_UNSIGNED_BYTE : GL_1_1.GL_UNSIGNED_BYTE, GL_1_1.GL_BYTE: GL_1_1.GL_BYTE, GL_1_1.GL_UNSIGNED_SHORT : GL_1_1.GL_UNSIGNED_SHORT, GL_1_1.GL_SHORT : GL_1_1.GL_SHORT, GL_1_1.GL_UNSIGNED_INT : GL_1_1.GL_UNSIGNED_INT, GL_1_1.GL_INT : GL_1_1.GL_INT, GL_1_1.GL_FLOAT : GL_1_1.GL_FLOAT, GL_1_1.GL_DOUBLE : GL_1_1.GL_DOUBLE, GL_1_1.GL_BITMAP : GL_1_1.GL_UNSIGNED_BYTE, } ) images.TIGHT_PACK_FORMATS.update({ GL_1_2.GL_UNSIGNED_BYTE_3_3_2 : 3, GL_1_2.GL_UNSIGNED_BYTE_2_3_3_REV : 3, GL_1_2.GL_UNSIGNED_SHORT_4_4_4_4 : 4, GL_1_2.GL_UNSIGNED_SHORT_4_4_4_4_REV : 4, GL_1_2.GL_UNSIGNED_SHORT_5_5_5_1 : 4, GL_1_2.GL_UNSIGNED_SHORT_1_5_5_5_REV : 4, GL_1_2.GL_UNSIGNED_SHORT_5_6_5 : 3, GL_1_2.GL_UNSIGNED_SHORT_5_6_5_REV : 3, GL_1_2.GL_UNSIGNED_INT_8_8_8_8 : 4, GL_1_2.GL_UNSIGNED_INT_8_8_8_8_REV : 4, GL_1_2.GL_UNSIGNED_INT_10_10_10_2 : 4, GL_1_2.GL_UNSIGNED_INT_2_10_10_10_REV : 4, GL_1_1.GL_BITMAP: 8, # single bits, 8 of them... }) images.RANK_PACKINGS.update( { 4: [ # Note the sgis parameters are skipped here unless you import # the sgis texture4D extension... (GL_1_1.glPixelStorei,GL_1_1.GL_PACK_ALIGNMENT, 1), ], 3: [ (GL_1_1.glPixelStorei,GL_1_2.GL_PACK_SKIP_IMAGES, 0), (GL_1_1.glPixelStorei,GL_1_2.GL_PACK_IMAGE_HEIGHT, 0), (GL_1_1.glPixelStorei,GL_1_1.GL_PACK_ALIGNMENT, 1), ], 2: [ (GL_1_1.glPixelStorei,GL_1_1.GL_PACK_ROW_LENGTH, 0), (GL_1_1.glPixelStorei,GL_1_1.GL_PACK_SKIP_ROWS, 0), (GL_1_1.glPixelStorei,GL_1_1.GL_PACK_ALIGNMENT, 1), ], 1: [ (GL_1_1.glPixelStorei,GL_1_1.GL_PACK_SKIP_PIXELS, 0), (GL_1_1.glPixelStorei,GL_1_1.GL_PACK_ALIGNMENT, 1), ], } ) __all__ = ( 'glReadPixels', 'glReadPixelsb', 'glReadPixelsd', 'glReadPixelsf', 'glReadPixelsi', 'glReadPixelss', 'glReadPixelsub', 'glReadPixelsui', 'glReadPixelsus', 'glGetTexImage', 'glDrawPixels', 'glDrawPixelsb', 'glDrawPixelsf', 'glDrawPixelsi', 'glDrawPixelss', 'glDrawPixelsub', 'glDrawPixelsui', 'glDrawPixelsus', 'glTexSubImage2D', 'glTexSubImage1D', #'glTexSubImage3D', 'glTexImage1D', 'glTexImage2D', #'glTexImage3D', 'glGetTexImageb', 'glGetTexImaged', 'glGetTexImagef', 'glGetTexImagei', 'glGetTexImages', 'glGetTexImageub', 'glGetTexImageui', 'glGetTexImageus', 'glTexImage1Db', 'glTexImage2Db', #'glTexImage3Db', 'glTexSubImage1Db', 'glTexSubImage2Db', #'glTexSubImage3Db', 'glTexImage1Df', 'glTexImage2Df', #'glTexImage3Df', 'glTexSubImage1Df', 'glTexSubImage2Df', #'glTexSubImage3Df', 'glTexImage1Di', 'glTexImage2Di', #'glTexImage3Di', 'glTexSubImage1Di', 'glTexSubImage2Di', #'glTexSubImage3Di', 'glTexImage1Ds', 'glTexImage2Ds', #'glTexImage3Ds', 'glTexSubImage1Ds', 'glTexSubImage2Ds', #'glTexSubImage3Ds', 'glTexImage1Dub', 'glTexImage2Dub', #'glTexImage3Dub', 'glTexSubImage1Dub', 'glTexSubImage2Dub', #'glTexSubImage3Dub', 'glTexImage1Dui', 'glTexImage2Dui', #'glTexImage3Dui', 'glTexSubImage1Dui', 'glTexSubImage2Dui', #'glTexSubImage3Dui', 'glTexImage1Dus', 'glTexImage2Dus', #'glTexImage3Dus', 'glTexSubImage1Dus', 'glTexSubImage2Dus', #'glTexSubImage3Dus', #'glColorTable', #'glGetColorTable', #'glColorSubTable', #'glConvolutionFilter1D', #'glConvolutionFilter2D', #'glGetConvolutionFilter', #'glSeparableFilter2D', #'glGetSeparableFilter', #'glGetMinmax', ) for suffix,type in [ ('b',constants.GL_BYTE), ('d',constants.GL_DOUBLE), ('f',constants.GL_FLOAT), ('i',constants.GL_INT), ('s',constants.GL_SHORT), ('ub',constants.GL_UNSIGNED_BYTE), ('ui',constants.GL_UNSIGNED_INT), ('us',constants.GL_UNSIGNED_SHORT), ]: def glReadPixels( x,y,width,height,format,type=type, array=None ): """Read specified pixels from the current display buffer This typed version returns data in your specified default array data-type format, or in the passed array, which will be converted to the array-type required by the format. """ x,y,width,height = asInt(x),asInt(y),asInt(width),asInt(height) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.TYPE_TO_ARRAYTYPE.get(type,type) ] if array is None: array = images.SetupPixelRead( format, (width,height), type ) else: array = arrayType.asArray( array ) imageData = arrayType.voidDataPointer( array ) GL_1_1.glReadPixels( x,y, width, height, format,type, imageData ) return array globals()["glReadPixels%s"%(suffix,)] = glReadPixels def glGetTexImage( target, level,format,type=type ): """Get a texture-level as an image""" from OpenGL.GL import glget dims = [glget.glGetTexLevelParameteriv( target, level, GL_1_1.GL_TEXTURE_WIDTH )] if target != GL_1_1.GL_TEXTURE_1D: dims.append( glget.glGetTexLevelParameteriv( target, level, GL_1_1.GL_TEXTURE_HEIGHT ) ) if target != GL_1_1.GL_TEXTURE_2D: dims.append( glget.glGetTexLevelParameteriv( target, level, GL_1_2.GL_TEXTURE_DEPTH ) ) array = images.SetupPixelRead( format, tuple(dims), type ) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.TYPE_TO_ARRAYTYPE.get(type,type) ] GL_1_1.glGetTexImage( target, level, format, type, ctypes.c_void_p( arrayType.dataPointer(array)) ) return array globals()["glGetTexImage%s"%(suffix,)] = glGetTexImage ## def glGetTexSubImage( target, level,format,type ): ## """Get a texture-level as an image""" ## from OpenGL.GL import glget ## dims = [glget.glGetTexLevelParameteriv( target, level, GL_1_1.GL_TEXTURE_WIDTH )] ## if target != GL_1_1.GL_TEXTURE_1D: ## dims.append( glget.glGetTexLevelParameteriv( target, level, GL_1_1.GL_TEXTURE_HEIGHT ) ) ## if target != GL_1_1.GL_TEXTURE_2D: ## dims.append( glget.glGetTexLevelParameteriv( target, level, GL_1_2.GL_TEXTURE_DEPTH ) ) ## array = images.SetupPixelRead( format, tuple(dims), type ) ## arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.TYPE_TO_ARRAYTYPE.get(type,type) ] ## GL_1_1.glGetTexImage( ## target, level, format, type, ctypes.c_void_p( arrayType.dataPointer(array)) ## ) ## return array ## "%s = glGetTexImage"%(suffix) try: del suffix,type except NameError, err: pass # Now the real glReadPixels... def glReadPixels( x,y,width,height,format,type, array=None, outputType=str ): """Read specified pixels from the current display buffer x,y,width,height -- location and dimensions of the image to read from the buffer format -- pixel format for the resulting data type -- data-format for the resulting data array -- optional array/offset into which to store the value outputType -- default (str) provides string output of the results iff OpenGL.UNSIGNED_BYTE_IMAGES_AS_STRING is True and type == GL_UNSIGNED_BYTE. Any other value will cause output in the default array output format. returns the pixel data array in the format defined by the format, type and outputType """ x,y,width,height = asInt(x),asInt(y),asInt(width),asInt(height) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.TYPE_TO_ARRAYTYPE.get(type,type) ] if array is None: array = images.SetupPixelRead( format, (width,height), type ) else: array = arrayType.asArray( array ) imageData = arrayType.voidDataPointer( array ) GL_1_1.glReadPixels( x,y,width,height, format,type, imageData ) if outputType is str: return images.returnFormat( array, type ) else: return array def glGetTexImage( target, level,format,type, outputType=str ): """Get a texture-level as an image target -- enum constant for the texture engine to be read level -- the mip-map level to read format -- image format to read out the data type -- data-type into which to read the data outputType -- default (str) provides string output of the results iff OpenGL.UNSIGNED_BYTE_IMAGES_AS_STRING is True and type == GL_UNSIGNED_BYTE. Any other value will cause output in the default array output format. returns the pixel data array in the format defined by the format, type and outputType """ from OpenGL.GL import glget dims = [glget.glGetTexLevelParameteriv( target, level, GL_1_1.GL_TEXTURE_WIDTH )] if target != GL_1_1.GL_TEXTURE_1D: dims.append( glget.glGetTexLevelParameteriv( target, level, GL_1_1.GL_TEXTURE_HEIGHT ) ) if target != GL_1_1.GL_TEXTURE_2D: dims.append( glget.glGetTexLevelParameteriv( target, level, GL_1_2.GL_TEXTURE_DEPTH ) ) array = images.SetupPixelRead( format, tuple(dims), type ) arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.TYPE_TO_ARRAYTYPE.get(type,type) ] GL_1_1.glGetTexImage( target, level, format, type, ctypes.c_void_p( arrayType.dataPointer(array)) ) if outputType is str: return images.returnFormat( array, type ) else: return array INT_DIMENSION_NAMES = [ 'width','height','depth','x','y','z', 'xoffset','yoffset','zoffset', 'start', 'count', ] def asWrapper( value ): if not isinstance( value, wrapper.Wrapper ): return wrapper.wrapper( value ) return value def asIntConverter( value, *args ): if isinstance( value, float ): return int(round(value,0)) return value def setDimensionsAsInts( baseOperation ): """Set arguments with names in INT_DIMENSION_NAMES to asInt processing""" baseOperation = asWrapper( baseOperation ) argNames = getattr( baseOperation, 'pyConverterNames', baseOperation.argNames ) for i,argName in enumerate(argNames): if argName in INT_DIMENSION_NAMES: baseOperation.setPyConverter( argName, asIntConverter ) return baseOperation class ImageInputConverter( object ): def __init__( self, rank, pixelsName=None, typeName='type' ): self.rank = rank self.typeName = typeName self.pixelsName = pixelsName def finalise( self, wrapper ): """Get our pixel index from the wrapper""" self.typeIndex = wrapper.pyArgIndex( self.typeName ) self.pixelsIndex = wrapper.pyArgIndex( self.pixelsName ) def __call__( self, arg, baseOperation, pyArgs ): """pyConverter for the pixels argument""" images.setupDefaultTransferMode() images.rankPacking( self.rank ) type = pyArgs[ self.typeIndex ] arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.TYPE_TO_ARRAYTYPE[ type ] ] return arrayType.asArray( arg ) # def cResolver( self, array ): # return array # return ctypes.c_void_p( arrays.ArrayDatatype.dataPointer( array ) ) class TypedImageInputConverter( ImageInputConverter ): def __init__( self, rank, pixelsName, arrayType, typeName=None ): self.rank = rank self.arrayType = arrayType self.pixelsName = pixelsName self.typeName = typeName def __call__( self, arg, baseOperation, pyArgs ): """The pyConverter for the pixels""" images.setupDefaultTransferMode() images.rankPacking( self.rank ) return self.arrayType.asArray( arg ) def finalise( self, wrapper ): """Get our pixel index from the wrapper""" self.pixelsIndex = wrapper.pyArgIndex( self.pixelsName ) def width( self, pyArgs, index, wrappedOperation ): """Extract the width from the pixels argument""" return self.arrayType.dimensions( pyArgs[self.pixelsIndex] )[0] def height( self, pyArgs, index, wrappedOperation ): """Extract the height from the pixels argument""" return self.arrayType.dimensions( pyArgs[self.pixelsIndex] )[1] def depth( self, pyArgs, index, wrappedOperation ): """Extract the depth from the pixels argument""" return self.arrayType.dimensions( pyArgs[self.pixelsIndex] )[2] def type( self, pyArgs, index, wrappedOperation ): """Provide the item-type argument from our stored value This is used for pre-bound processing where we want to provide the type by implication... """ return self.typeName class CompressedImageConverter( object ): def finalise( self, wrapper ): """Get our pixel index from the wrapper""" self.dataIndex = wrapper.pyArgIndex( 'data' ) def __call__( self, pyArgs, index, wrappedOperation ): """Create a data-size measurement for our image""" arg = pyArgs[ self.dataIndex ] return arrays.ArrayType.arrayByteCount( arg ) DIMENSION_NAMES = ( 'width','height','depth' ) PIXEL_NAMES = ( 'pixels', 'row', 'column', ) DATA_SIZE_NAMES = ( 'imageSize', ) def setImageInput( baseOperation, arrayType=None, dimNames=DIMENSION_NAMES, pixelName="pixels", typeName=None ): """Determine how to convert "pixels" into an image-compatible argument""" baseOperation = asWrapper( baseOperation ) # rank is the count of width,height,depth arguments... rank = len([ # rank is the number of dims we want, not the number we give... argName for argName in baseOperation.argNames if argName in dimNames ]) + 1 if arrayType: converter = TypedImageInputConverter( rank, pixelName, arrayType, typeName=typeName ) for i,argName in enumerate(baseOperation.argNames): if argName in dimNames: baseOperation.setPyConverter( argName ) baseOperation.setCConverter( argName, getattr(converter,argName) ) elif argName == 'type' and typeName is not None: baseOperation.setPyConverter( argName ) baseOperation.setCConverter( argName, converter.type ) else: converter = ImageInputConverter( rank, pixelsName=pixelName, typeName=typeName or 'type' ) for argName in baseOperation.argNames: if argName in DATA_SIZE_NAMES: baseOperation.setPyConverter( argName ) baseOperation.setCConverter( argName, converter.imageDataSize ) baseOperation.setPyConverter( pixelName, converter, ) # baseOperation.setCResolver( # pixelName, converter.cResolver # ) return baseOperation glDrawPixels = setDimensionsAsInts( setImageInput( GL_1_1.glDrawPixels ) ) glTexSubImage2D = setDimensionsAsInts( setImageInput( GL_1_1.glTexSubImage2D ) ) glTexSubImage1D = setDimensionsAsInts( setImageInput( GL_1_1.glTexSubImage1D ) ) glTexImage2D = setDimensionsAsInts( setImageInput( GL_1_1.glTexImage2D ) ) glTexImage1D = setDimensionsAsInts( setImageInput( GL_1_1.glTexImage1D ) ) def typedImageFunction( suffix, arrayConstant, baseFunction ): """Produce a typed version of the given image function""" functionName = baseFunction.__name__ functionName = '%(functionName)s%(suffix)s'%locals() if baseFunction: arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ arrayConstant ] function = setDimensionsAsInts( setImageInput( baseFunction, arrayType, typeName = arrayConstant, ) ) return functionName, function else: return functionName, baseFunction def _setDataSize( baseFunction, argument='imageSize' ): """Set the data-size value to come from the data field""" if baseFunction: converter = CompressedImageConverter() return asWrapper( baseFunction ).setPyConverter( argument ).setCConverter( argument, converter ) else: return baseFunction def compressedImageFunction( baseFunction ): """Set the imageSize and dimensions-as-ints converters for baseFunction""" if baseFunction: return setDimensionsAsInts( _setDataSize( baseFunction, argument='imageSize' ) ) else: return baseFunction for suffix,arrayConstant in [ ('b', constants.GL_BYTE), ('f', constants.GL_FLOAT), ('i', constants.GL_INT), ('s', constants.GL_SHORT), ('ub', constants.GL_UNSIGNED_BYTE), ('ui', constants.GL_UNSIGNED_INT), ('us', constants.GL_UNSIGNED_SHORT), ]: for functionName in ( 'glTexImage1D','glTexImage2D', 'glTexSubImage1D','glTexSubImage2D', 'glDrawPixels', #'glTexSubImage3D','glTexImage3D', # extension/1.2 standard ): functionName, function = typedImageFunction( suffix, arrayConstant, getattr(GL_1_1,functionName), ) globals()[functionName] = function try: del function, functionName except NameError, err: pass try: del suffix,arrayConstant except NameError, err: pass PyOpenGL-3.0.2/OpenGL/GL/glget.py0000644000175000001440000001414312025001653017214 0ustar mcfletchusers00000000000000"""Implementation of the special "glGet" functions For comparison, here's what a straightforward implementation looks like: def glGetDoublev( pname ): "Natural writing of glGetDoublev using standard ctypes" output = c_double*sizes.get( pname ) result = output() result = platform.OpenGL.glGetDoublev( pname, byref(result) ) return Numeric.array( result ) """ from OpenGL import platform, arrays, error, wrapper, converters from OpenGL.raw.GL.VERSION import GL_1_1 as simple import ctypes GLenum = ctypes.c_uint GLsize = GLsizei = ctypes.c_int __all__ = ( 'glGetBoolean','glGetBooleanv','glGetInteger','glGetIntegerv', 'glGetFloat','glGetFloatv','glGetDouble','glGetDoublev', 'glGetString', 'glGetLightfv','glGetLightiv', 'glGetMaterialfv','glGetMaterialiv', 'glGetPixelMapfv','glGetPixelMapusv','glGetPixelMapuiv', 'glGetPolygonStipple', 'glGetPolygonStippleub', 'glGetTexEnviv','glGetTexEnvfv', 'glGetTexGenfv','glGetTexGeniv','glGetTexGendv', 'glGetTexLevelParameteriv', 'glGetTexLevelParameterfv', 'glGetTexParameterfv', 'glGetTexParameteriv', ) glGetString = simple.glGetString glGetString.restype = ctypes.c_char_p glGetString.__doc__ = """glGetString( constant ) -> Current string value""" GL_GET_SIZES = simple._GLGET_CONSTANTS def addGLGetConstant( constant, arraySize ): """Add a glGet* constant to return an output array of correct size""" GL_GET_SIZES[ constant ] = arraySize glGetDouble = glGetDoublev = wrapper.wrapper(simple.glGetDoublev).setOutput( "params",GL_GET_SIZES, "pname", ) glGetFloat = glGetFloatv = wrapper.wrapper(simple.glGetFloatv).setOutput( "params",GL_GET_SIZES, "pname", ) glGetBoolean = glGetBooleanv = glGetInteger = glGetIntegerv = wrapper.wrapper(simple.glGetIntegerv).setOutput( "params",GL_GET_SIZES, "pname", ) GL_GET_LIGHT_SIZES = { # glGetLightXv simple.GL_AMBIENT : (4,), simple.GL_DIFFUSE : (4,), simple.GL_SPECULAR : (4,), simple.GL_POSITION : (4,), simple.GL_SPOT_DIRECTION : (3,), simple.GL_SPOT_EXPONENT : (1,), simple.GL_SPOT_CUTOFF : (1,), simple.GL_CONSTANT_ATTENUATION : (1,), simple.GL_LINEAR_ATTENUATION : (1,), simple.GL_QUADRATIC_ATTENUATION : (1,), } # end of sizes glGetLightfv = wrapper.wrapper(simple.glGetLightfv).setOutput( "params",GL_GET_LIGHT_SIZES, "pname", ) glGetLightiv = wrapper.wrapper(simple.glGetLightiv).setOutput( "params",GL_GET_LIGHT_SIZES, "pname", ) GL_GET_MATERIAL_SIZES = { simple.GL_AMBIENT: (4,), simple.GL_DIFFUSE: (4,), simple.GL_SPECULAR: (4,), simple.GL_EMISSION: (4,), simple.GL_SHININESS: (1,), simple.GL_COLOR_INDEXES: (3,) } glGetMaterialfv = wrapper.wrapper(simple.glGetMaterialfv).setOutput( "params",GL_GET_MATERIAL_SIZES, "pname", ) glGetMaterialiv = wrapper.wrapper(simple.glGetMaterialiv).setOutput( "params",GL_GET_MATERIAL_SIZES, "pname", ) PIXEL_MAP_SIZE_CONSTANT_MAP = { simple.GL_PIXEL_MAP_A_TO_A: simple.GL_PIXEL_MAP_A_TO_A_SIZE, simple.GL_PIXEL_MAP_B_TO_B: simple.GL_PIXEL_MAP_B_TO_B_SIZE, simple.GL_PIXEL_MAP_G_TO_G: simple.GL_PIXEL_MAP_G_TO_G_SIZE, simple.GL_PIXEL_MAP_I_TO_A: simple.GL_PIXEL_MAP_I_TO_A_SIZE, simple.GL_PIXEL_MAP_I_TO_B: simple.GL_PIXEL_MAP_I_TO_B_SIZE, simple.GL_PIXEL_MAP_I_TO_G: simple.GL_PIXEL_MAP_I_TO_G_SIZE, simple.GL_PIXEL_MAP_I_TO_I: simple.GL_PIXEL_MAP_I_TO_I_SIZE, simple.GL_PIXEL_MAP_I_TO_R: simple.GL_PIXEL_MAP_I_TO_R_SIZE, simple.GL_PIXEL_MAP_R_TO_R: simple.GL_PIXEL_MAP_R_TO_R_SIZE, simple.GL_PIXEL_MAP_S_TO_S: simple.GL_PIXEL_MAP_S_TO_S_SIZE, } def GL_GET_PIXEL_MAP_SIZE( pname ): """Given a pname, lookup the size using a glGet query...""" constant = PIXEL_MAP_SIZE_CONSTANT_MAP[ pname ] return glGetIntegerv( constant ) glGetPixelMapfv = wrapper.wrapper(simple.glGetPixelMapfv).setOutput( "values",GL_GET_PIXEL_MAP_SIZE, "map", ) glGetPixelMapuiv = wrapper.wrapper(simple.glGetPixelMapuiv).setOutput( "values",GL_GET_PIXEL_MAP_SIZE, "map", ) glGetPixelMapusv = wrapper.wrapper(simple.glGetPixelMapusv).setOutput( "values",GL_GET_PIXEL_MAP_SIZE, "map", ) # 32 * 32 bits POLYGON_STIPPLE_SIZE = (32*32//8,) glGetPolygonStipple = glGetPolygonStippleub = wrapper.wrapper(simple.glGetPolygonStipple).setOutput( "mask",POLYGON_STIPPLE_SIZE, ) GL_GET_TEX_ENV_SIZES = { simple.GL_TEXTURE_ENV_MODE: (1,), simple.GL_TEXTURE_ENV_COLOR: (4,), } glGetTexEnvfv = wrapper.wrapper(simple.glGetTexEnvfv).setOutput( "params",GL_GET_TEX_ENV_SIZES, 'pname', ) glGetTexEnviv = wrapper.wrapper(simple.glGetTexEnviv).setOutput( "params",GL_GET_TEX_ENV_SIZES, 'pname', ) GL_GET_TEX_GEN_SIZES = { simple.GL_TEXTURE_GEN_MODE: (1,), simple.GL_OBJECT_PLANE: (4,), simple.GL_EYE_PLANE: (4,), } glGetTexGendv = wrapper.wrapper(simple.glGetTexGendv).setOutput( "params",GL_GET_TEX_GEN_SIZES, 'pname', ) glGetTexGenfv = wrapper.wrapper(simple.glGetTexGenfv).setOutput( "params",GL_GET_TEX_GEN_SIZES, 'pname', ) glGetTexGeniv = wrapper.wrapper(simple.glGetTexGeniv).setOutput( "params",GL_GET_TEX_GEN_SIZES, 'pname', ) glGetTexLevelParameterfv = wrapper.wrapper(simple.glGetTexLevelParameterfv).setOutput( "params",(1,) ) glGetTexLevelParameteriv = wrapper.wrapper(simple.glGetTexLevelParameteriv).setOutput( "params",(1,) ) TEX_PARAMETER_SIZES = { simple.GL_TEXTURE_MAG_FILTER: (1,), simple.GL_TEXTURE_MIN_FILTER: (1,), simple.GL_TEXTURE_WRAP_S: (1,), simple.GL_TEXTURE_WRAP_T: (1,), simple.GL_TEXTURE_BORDER_COLOR: (4,), simple.GL_TEXTURE_PRIORITY: (1,), simple.GL_TEXTURE_RESIDENT: (1,) } def addGLGetTexParameterConstant( constant, arraySize ): TEX_PARAMETER_SIZES[constant] = arraySize glGetTexParameterfv = wrapper.wrapper(simple.glGetTexParameterfv).setOutput( "params",TEX_PARAMETER_SIZES, 'pname', ) glGetTexParameteriv = wrapper.wrapper(simple.glGetTexParameteriv).setOutput( "params",TEX_PARAMETER_SIZES, 'pname', ) PyOpenGL-3.0.2/OpenGL/GL/AMD/0000755000175000001440000000000012032640120016132 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/AMD/multi_draw_indirect.py0000644000175000001440000000235412025001653022544 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.multi_draw_indirect This module customises the behaviour of the OpenGL.raw.GL.AMD.multi_draw_indirect to provide a more Python-friendly API Overview (from the spec) The ARB_draw_indirect extension (included in OpenGL 4.0) introduced mechanisms whereby the parameters for a draw function may be provided in a structure contained in a buffer object rather than as parameters to the drawing procedure. This is known as an indirect draw and is exposed as two new functions, glDrawArraysIndirect and glDrawElementsIndirect. Each of these functions generates a single batch of primitives. This extension builds on this functionality by providing procedures to invoke multiple draws from a single procedure call. This allows large batches of drawing commands to be assembled in server memory (via a buffer object) which may then be dispatched through a single function call. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/multi_draw_indirect.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.multi_draw_indirect import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/sample_positions.py0000644000175000001440000000202212025001653022074 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.sample_positions This module customises the behaviour of the OpenGL.raw.GL.AMD.sample_positions to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism to explicitly set sample positions for a FBO with multi-sampled attachments. The FBO will use identical sample locations for all pixels in each attachment. This forces TEXTURE_FIXED_SAMPLE_LOCATIONS to TRUE if a multi-sampled texture is specified using TexImage2DMultisample or TexImage3DMultisample. That is, using GetTexLevelParameter to query TEXTURE_FIXED_SAMPLE_LOCATIONS will always return TRUE if the mechanism is explicitly used to set the sample positions. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/sample_positions.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.sample_positions import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/debug_output.py0000644000175000001440000000563212025001653021224 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.debug_output This module customises the behaviour of the OpenGL.raw.GL.AMD.debug_output to provide a more Python-friendly API Overview (from the spec) This extension allows the GL to notify applications when various debug events occur in contexts that have been created with the debug flag, as provided by WGL_ARB_create_context and GLX_ARB_create_context. These events are represented in the form of enumerable messages with an included human-readable translation. Examples of debug events include incorrect use of the GL, warnings of undefined behavior, and performance warnings. A message is uniquely identified by a category and an implementation- dependent ID within that category. Message categories are general and are used to organize large groups of similar messages together. Examples of categories include GL errors, performance warnings, and deprecated functionality warnings. Each message is also assigned a severity level that denotes roughly how "important" that message is in comparison to other messages across all categories. For example, notification of a GL error would have a higher severity than a performance warning due to redundant state changes. Messages are communicated to the application through an application-defined callback function that is called by the GL implementation on each debug message. The motivation for the callback routine is to free application developers from actively having to query whether any GL error or other debuggable event has happened after each call to a GL function. With a callback, developers can keep their code free of debug checks, and only have to react to messages as they occur. In order to support indirect rendering, a message log is also provided that stores copies of recent messages until they are actively queried. To control the volume of debug output, messages can be disabled either individually by ID, or entire groups of messages can be turned off based on category or severity. The only requirement on the minimum quantity and type of messages that implementations of this extension must support is that a message must be sent notifying the application whenever any GL error occurs. Any further messages are left to the implementation. Implementations do not have to output messages from all categories listed by this extension in order to support this extension, and new categories can be added by other extensions. This extension places no restrictions or requirements on any additional functionality provided by the debug context flag through other extensions. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/debug_output.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.debug_output import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/query_buffer_object.py0000644000175000001440000000365612025001653022546 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.query_buffer_object This module customises the behaviour of the OpenGL.raw.GL.AMD.query_buffer_object to provide a more Python-friendly API Overview (from the spec) Statistics about the operation of the OpenGL pipeline, such as the number of samples that passed the depth test, the elapsed time between two events or the number of vertices written to a transform feedback buffer may be retrieved from the GL through query objects. The current value of a query object may be retrieved by the application through the OpenGL API. Should the result returned by the API be required for use in a shader, it must be passed back to the GL via a program uniform or some other mechanism. This requires a round-trip from the GPU to the CPU and back. This extension introduces a mechanism whereby the current value of a query result may be retrieved into a buffer object instead of client memory. This allows the query result to be made available to a shader without a round-trip to the CPU for example by subsequently using the buffer object as a uniform buffer, texture buffer or other data store visible to the shader. This functionality may also be used to place the results of many query objects into a single, large buffer and then map or otherwise read back the entire buffer at a later point in time, avoiding a per-query CPU-GPU synchronization event. The result of any query object type supported by the GL implementation may be retrieved into a buffer object. The implementation will determine the most efficient method of copying the query result to the buffer. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/query_buffer_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.query_buffer_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/vertex_shader_viewport_index.py0000644000175000001440000000240412025001653024501 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.vertex_shader_viewport_index This module customises the behaviour of the OpenGL.raw.GL.AMD.vertex_shader_viewport_index to provide a more Python-friendly API Overview (from the spec) The gl_ViewportIndex built-in variable was introduced by the ARB_viewport_array extension and OpenGL 4.1. This variable is available in un-extended OpenGL only to the geometry shader. When written in the geometry shader, it causes geometry to be directed to one of an array of several independent viewport rectangles. In order to use any viewport other than zero, a geometry shader must be present. Geometry shaders introduce processing overhead and potential performance issues. This extension exposes the gl_ViewportIndex built-in variable to the vertex shader, allowing the functionality introduced by ARB_viewport_array to be accessed without requiring a geometry shader to be present. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/vertex_shader_viewport_index.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.vertex_shader_viewport_index import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/seamless_cubemap_per_texture.py0000644000175000001440000000363012025001653024450 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.seamless_cubemap_per_texture This module customises the behaviour of the OpenGL.raw.GL.AMD.seamless_cubemap_per_texture to provide a more Python-friendly API Overview (from the spec) In unextended OpenGL, cube maps are treated as sets of six, independent texture images. Once a face is selected from the set, it is treated exactly as any other two-dimensional texture would be. When sampling linearly from the texture, all of the individual texels that would be used to to create the final, bilinear sample values are taken from the same cube face. The normal, two-dimensional texture coordinate wrapping modes are honored. This sometimes causes seams to appear in cube maps. ARB_seamless_cube_map addresses this issue by providing a mechanism whereby an implementation could take each of the taps of a bilinear sample from a different face, spanning face boundaries and providing seamless filtering from cube map textures. However, in ARB_seamless_cube_map, this feature was exposed as a global state, affecting all bound cube map textures. It was not possible to mix seamless and per-face cube map sampling modes during multisampling. Furthermore, if an application included cube maps that were meant to be sampled seamlessly and non-seamlessly, it would have to track this state and enable or disable seamless cube map sampling as needed. This extension addresses this issue and provides an orthogonal method for allowing an implementation to provide a per-texture setting for enabling seamless sampling from cube maps. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/seamless_cubemap_per_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.seamless_cubemap_per_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/name_gen_delete.py0000644000175000001440000000254612025001653021612 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.name_gen_delete This module customises the behaviour of the OpenGL.raw.GL.AMD.name_gen_delete to provide a more Python-friendly API Overview (from the spec) This extension simply creates 2 new entry-points that name generic creation and deletion of names. The intent is to go away from API functionality that provides a create/delete function for each specific object. For example: glGenTextures/glDeleteTextures/glIsTexture glGenBuffers/glDeleteBuffers/IsBuffer glGenFramebuffers/glDeleteFramebuffers/IsFramebuffer Instead, everything is created using one entry-point GenNamesAMD and everything is now deleted with another entry-point DeleteNamesAMD with the appropriate identifier set. In addition, everything can now be queried with IsNameAMD. This alleviates the problem we may eventually encounter where we have many Gen/Delete/Is functions where 3 might suffice. All that is needed in the new case is to add a valid identifier to the accepted parameters list. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/name_gen_delete.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.name_gen_delete import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/texture_texture4.py0000644000175000001440000000210512025001653022052 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.texture_texture4 This module customises the behaviour of the OpenGL.raw.GL.AMD.texture_texture4 to provide a more Python-friendly API Overview (from the spec) This extension adds new shading language built-in texture functions to the shading language. These texture functions may be used to access one component textures. The texture4 built-in function returns a texture value derived from a 2x2 set of texels in the image array of level levelbase is selected. These texels are selected in the same way as when the value of TEXTURE_MIN_FILTER is LINEAR, but instead of these texels being filtered to generate the texture value, the R, G, B and A texture values are derived directly from these four texels. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/texture_texture4.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.texture_texture4 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/performance_monitor.py0000644000175000001440000000203612025001653022561 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.performance_monitor This module customises the behaviour of the OpenGL.raw.GL.AMD.performance_monitor to provide a more Python-friendly API Overview (from the spec) This extension enables the capture and reporting of performance monitors. Performance monitors contain groups of counters which hold arbitrary counted data. Typically, the counters hold information on performance-related counters in the underlying hardware. The extension is general enough to allow the implementation to choose which counters to expose and pick the data type and range of the counters. The extension also allows counting to start and end on arbitrary boundaries during rendering. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/performance_monitor.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.performance_monitor import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/__init__.py0000644000175000001440000000000012025001653020235 0ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/AMD/shader_stencil_export.py0000644000175000001440000000231712025001653023103 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.shader_stencil_export This module customises the behaviour of the OpenGL.raw.GL.AMD.shader_stencil_export to provide a more Python-friendly API Overview (from the spec) In OpenGL, the stencil test is a powerful mechanism to selectively discard fragments based on the content of the stencil buffer. However, facilites to update the content of the stencil buffer are limited to operations such as incrementing the existing value, or overwriting with a fixed reference value. This extension provides a mechanism whereby a shader may generate the stencil reference value per invocation. When stencil testing is enabled, this allows the test to be performed against the value generated in the shader. When the stencil operation is set to GL_REPLACE, this allows a value generated in the shader to be written to the stencil buffer directly. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/shader_stencil_export.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.shader_stencil_export import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/vertex_shader_layer.py0000644000175000001440000000331012025001653022544 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.vertex_shader_layer This module customises the behaviour of the OpenGL.raw.GL.AMD.vertex_shader_layer to provide a more Python-friendly API Overview (from the spec) The gl_Layer built-in shading language variable was introduced with the ARB_geometry_shader extension and subsequently promoted to core OpenGL in version 3.2. This variable is an output from the geometry shader stage that allows rendering to be directed to a specific layer of an array texture, slice of a 3D texture or face of a cube map or cube map array attachment of the framebuffer. Thus, this extremely useful functionality is only available if a geometry shader is present - even if the geometry shader is not otherwise required by the application. This adds overhead to the graphics processing pipeline, and complexity to applications. It also precludes implementations that cannot support geometry shaders from supporting rendering to layered framebuffer attachments. This extension exposes the gl_Layer built-in variable in the vertex shader, allowing rendering to be directed to layered framebuffer attachments with only a vertex and fragment shader present. Combined with features such as instancing, or static vertex attributes and so on, this allows a wide variety of techniques to be implemented without the requirement for a geometry shader to be present. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/vertex_shader_layer.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.vertex_shader_layer import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/draw_buffers_blend.py0000644000175000001440000000174312025001653022332 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.draw_buffers_blend This module customises the behaviour of the OpenGL.raw.GL.AMD.draw_buffers_blend to provide a more Python-friendly API Overview (from the spec) This extension builds upon the ARB_draw_buffers and EXT_draw_buffers2 extensions. In ARB_draw_buffers (part of OpenGL 2.0), separate values could be written to each color buffer. This was further enhanced by EXT_draw_buffers2 by adding in the ability to enable blending and to set color write masks independently per color output. This extension provides the ability to set individual blend equations and blend functions for each color output. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/draw_buffers_blend.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.draw_buffers_blend import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/blend_minmax_factor.py0000644000175000001440000000233012025001653022501 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.blend_minmax_factor This module customises the behaviour of the OpenGL.raw.GL.AMD.blend_minmax_factor to provide a more Python-friendly API Overview (from the spec) The EXT_blend_minmax extension extended the GL's blending functionality to allow the blending equation to be specified by the application. That extension introduced the MIN_EXT and MAX_EXT blend equations, which caused the result of the blend equation to become the minimum or maximum of the source color and destination color, respectively. The MIN_EXT and MAX_EXT blend equations, however, do not include the source or destination blend factors in the arguments to the min and max functions. This extension provides two new blend equations that produce the minimum or maximum of the products of the source color and source factor, and the destination color and destination factor. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/blend_minmax_factor.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.blend_minmax_factor import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/depth_clamp_separate.py0000644000175000001440000000171712025001653022662 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.depth_clamp_separate This module customises the behaviour of the OpenGL.raw.GL.AMD.depth_clamp_separate to provide a more Python-friendly API Overview (from the spec) The extension ARB_depth_clamp introduced the ability to control the clamping of the depth value for both the near and far plane. One limitation is that the control was for both planes at the same time; some applications can benefit from having clamping enabled for only one of the two planes, in order to save fillrate for the other plane by clipping the geometry. This extension provides exactly such functionality. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/depth_clamp_separate.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.depth_clamp_separate import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/transform_feedback3_lines_triangles.py0000644000175000001440000000177512025001653025666 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.transform_feedback3_lines_triangles This module customises the behaviour of the OpenGL.raw.GL.AMD.transform_feedback3_lines_triangles to provide a more Python-friendly API Overview (from the spec) OpenGL 4.0 introduced the ability to record primitives into multiple output streams using transform feedback. However, the restriction that all streams must output POINT primitives when more than one output stream is active was also introduced. This extension simply removes that restriction, allowing the same set of primitives to be used with multiple transform feedback streams as with a single stream. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/transform_feedback3_lines_triangles.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.transform_feedback3_lines_triangles import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/stencil_operation_extended.py0000644000175000001440000000270112025001653024111 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.stencil_operation_extended This module customises the behaviour of the OpenGL.raw.GL.AMD.stencil_operation_extended to provide a more Python-friendly API Overview (from the spec) Stencil buffers are special buffers that allow tests to be made against an incoming value and action taken based on that value. The stencil buffer is updated during rasterization, and the operation used to update the stencil buffer is chosen based on whether the fragment passes the stencil test, and if it does, whether it passes the depth test. Traditional OpenGL includes support for several primitive operations, such as incrementing, or clearing the content of the stencil buffer, or replacing it with a specified reference value. This extension adds support for an additional set of operations that may be performed on the stencil buffer under each circumstance. Additionally, this extension separates the value used as the source for stencil operations from the reference value, allowing different values to be used in the stencil test, and in the update of the stencil buffer. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/stencil_operation_extended.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.stencil_operation_extended import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/vertex_shader_tesselator.py0000644000175000001440000000103112025001653023613 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.vertex_shader_tesselator This module customises the behaviour of the OpenGL.raw.GL.AMD.vertex_shader_tesselator to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/vertex_shader_tesselator.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.vertex_shader_tesselator import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/pinned_memory.py0000644000175000001440000000177012025001653021362 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.pinned_memory This module customises the behaviour of the OpenGL.raw.GL.AMD.pinned_memory to provide a more Python-friendly API Overview (from the spec) This extension defines an interface that allows improved control of the physical memory used by the graphics device. It allows the an existing page of system memory allocated by the application to be used as memory directly accessible graphics processor. One example application of this functionality would be to be able to avoid an explicit synchronous copy whith sub-system of your application; for instance it is possible to directly draw from a system memory copy of a video image. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/pinned_memory.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.pinned_memory import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/conservative_depth.py0000644000175000001440000000242512025001653022407 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.conservative_depth This module customises the behaviour of the OpenGL.raw.GL.AMD.conservative_depth to provide a more Python-friendly API Overview (from the spec) There is a common optimization for hardware accelerated implementation of OpenGL which relies on an early depth test to be run before the fragment shader so that the shader evaluation can be skipped if the fragment ends up being discarded because it is occluded. This optimization does not affect the final rendering, and is typically possible when the fragment does not change the depth programmatically. (i.e.: it does not write to the built-in gl_FragDepth output). There are, however a class of operations on the depth in the shader which could still be performed while allowing the early depth test to operate. This extension allows the application to pass enough information to the GL implementation to activate such optimizations safely. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/conservative_depth.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.conservative_depth import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/AMD/sparse_texture.py0000644000175000001440000000305712031734124021575 0ustar mcfletchusers00000000000000'''OpenGL extension AMD.sparse_texture This module customises the behaviour of the OpenGL.raw.GL.AMD.sparse_texture to provide a more Python-friendly API Overview (from the spec) Recent advances in application complexity and a desire for higher resolutions have pushed texture sizes up considerably. Often, the amount of physical memory available to a graphics processor is a limiting factor in the performance of texture-heavy applications. Once the available physical memory is exhausted, paging may occur bringing performance down considerably - or worse, the application may fail. Nevertheless, the amount of address space available to the graphics processor has increased to the point where many gigabytes - or even terabytes of address space may be usable even though that amount of physical memory is not present. This extension allows the separation of the graphics processor's address space (reservation) from the requirement that all textures must be physically backed (commitment). This exposes a limited form of virtualization for textures. Use cases include sparse (or partially resident) textures, texture paging, on-demand and delayed loading of texture assets and application controlled level of detail. The official definition of this extension is available here: http://www.opengl.org/registry/specs/AMD/sparse_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.AMD.sparse_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/0000755000175000001440000000000012032640120016146 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/ATI/texture_env_combine3.py0000644000175000001440000000250412025001653022654 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.texture_env_combine3 This module customises the behaviour of the OpenGL.raw.GL.ATI.texture_env_combine3 to provide a more Python-friendly API Overview (from the spec) Adds new set of operations to the texture combiner operations. MODULATE_ADD_ATI Arg0 * Arg2 + Arg1 MODULATE_SIGNED_ADD_ATI Arg0 * Arg2 + Arg1 - 0.5 MODULATE_SUBTRACT_ATI Arg0 * Arg2 - Arg1 where Arg0, Arg1 and Arg2 are derived from PRIMARY_COLOR_ARB primary color of incoming fragment TEXTURE texture color of corresponding texture unit CONSTANT_ARB texture environment constant color PREVIOUS_ARB result of previous texture environment; on texture unit 0, this maps to PRIMARY_COLOR_ARB In addition, the result may be scaled by 1.0, 2.0 or 4.0. Note that in addition to providing more flexible equations new source inputs have been added for zero and one. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/texture_env_combine3.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.texture_env_combine3 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/texture_float.py0000644000175000001440000000156712025001653021422 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.texture_float This module customises the behaviour of the OpenGL.raw.GL.ATI.texture_float to provide a more Python-friendly API Overview (from the spec) This extension adds texture internal formats with 32 and 16 bit floating-point components. The 32 bit floating-point components are in the standard IEEE float format. The 16 bit floating-point components have 1 sign bit, 5 exponent bits, and 10 mantissa bits. Floating-point components are clamped to the limits of the range representable by their format. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/texture_float.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.texture_float import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/pixel_format_float.py0000644000175000001440000000230512025001653022402 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.pixel_format_float This module customises the behaviour of the OpenGL.raw.GL.ATI.pixel_format_float to provide a more Python-friendly API Overview (from the spec) This extension adds pixel formats with floating-point RGBA color components. The size of each float components is specified using the same WGL_RED_BITS_ARB, WGL_GREEN_BITS_ARB, WGL_BLUE_BITS_ARB and WGL_ALPHA_BITS_ARB pixel format attributes that are used for defining the size of fixed-point components. 32 bit floating- point components are in the standard IEEE float format. 16 bit floating-point components have 1 sign bit, 5 exponent bits, and 10 mantissa bits. In standard OpenGL RGBA color components are normally clamped to the range [0,1]. The color components of a float buffer are clamped to the limits of the range representable by their format. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/pixel_format_float.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.pixel_format_float import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/texture_mirror_once.py0000644000175000001440000000210312025001653022616 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.texture_mirror_once This module customises the behaviour of the OpenGL.raw.GL.ATI.texture_mirror_once to provide a more Python-friendly API Overview (from the spec) ATI_texture_mirror_once extends the set of texture wrap modes to include two modes (GL_MIRROR_CLAMP_ATI, GL_MIRROR_CLAMP_TO_EDGE_ATI) that effectively use a texture map twice as large as the original image in which the additional half of the new image is a mirror image of the original image. This new mode relaxes the need to generate images whose opposite edges match by using the original image to generate a matching "mirror image". This mode allows the texture to be mirrored only once in the negative s, t, and r directions. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/texture_mirror_once.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.texture_mirror_once import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/element_array.py0000644000175000001440000000230712025001653021355 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.element_array This module customises the behaviour of the OpenGL.raw.GL.ATI.element_array to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism for an application to create an array of index data for use in specifying geometric primitives. This extension is most useful when used in conjunction with the ATI_vertex_array_object extension. ATI_vertex_array_object provides an interface for storing vertex array data in persistent, hardware-addressable memory. In cases where large amounts of vertex data are in use, the index data used to construct primitives (typically as passed to the GL through DrawElements) can impose a significant bandwidth burden. ATI_element_array allows the application to specify independent arrays of elements, which can then be cached using ATI_vertex_array_object. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/element_array.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.element_array import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/__init__.py0000644000175000001440000000002712025001653020262 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/ATI/vertex_attrib_array_object.py0000644000175000001440000000150112025001653024127 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.vertex_attrib_array_object This module customises the behaviour of the OpenGL.raw.GL.ATI.vertex_attrib_array_object to provide a more Python-friendly API Overview (from the spec) This extension defines an interface that allows multiple sets of generic vertex attribute data to be cached in persistent server-side memory. It is intended to allow client data to be stored in memory that can be directly accessed by graphics hardware. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/vertex_attrib_array_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.vertex_attrib_array_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/draw_buffers.py0000644000175000001440000000217312025001653021200 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.draw_buffers This module customises the behaviour of the OpenGL.raw.GL.ATI.draw_buffers to provide a more Python-friendly API Overview (from the spec) This extension extends ARB_fragment_program to allow multiple output colors, and provides a mechanism for directing those outputs to multiple color buffers. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/draw_buffers.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.draw_buffers import * ### END AUTOGENERATED SECTION from OpenGL.lazywrapper import lazy @lazy( glDrawBuffersATI ) def glDrawBuffersATI( baseOperation, n=None, bufs=None ): """glDrawBuffersATI( bufs ) -> bufs Wrapper will calculate n from dims of bufs if only one argument is provided... """ if bufs is None: bufs = n n = None bufs = arrays.GLenumArray.asArray( bufs ) if n is None: n = arrays.GLenumArray.arraySize( bufs ) return baseOperation( n,bufs ) PyOpenGL-3.0.2/OpenGL/GL/ATI/vertex_array_object.py0000644000175000001440000000143012025001653022563 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.vertex_array_object This module customises the behaviour of the OpenGL.raw.GL.ATI.vertex_array_object to provide a more Python-friendly API Overview (from the spec) This extension defines an interface that allows multiple sets of vertex array data to be cached in persistent server-side memory. It is intended to allow client data to be stored in memory that can be directly accessed by graphics hardware. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/vertex_array_object.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.vertex_array_object import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/meminfo.py0000644000175000001440000000170212025001653020156 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.meminfo This module customises the behaviour of the OpenGL.raw.GL.ATI.meminfo to provide a more Python-friendly API Overview (from the spec) Traditionally, OpenGL has treated resource management as a task of hardware virtualization hidden from applications. While providing great portability, this shielding of information can prevent applications from making intelligent decisions on the management of resources they create. For instance, an application may be better served by choosing a different rendering method if there is not sufficient resources to efficiently utilize its preferred method. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/meminfo.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.meminfo import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/pn_triangles.py0000644000175000001440000000227612025001653021220 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.pn_triangles This module customises the behaviour of the OpenGL.raw.GL.ATI.pn_triangles to provide a more Python-friendly API Overview (from the spec) ATI_pn_triangles provides a path for enabling the GL to internally tessellate input geometry into curved patches. The extension allows the user to tune the amount of tessellation to be performed on each triangle as a global state value. The intent of PN Triangle tessellation is typically to produce geometry with a smoother silhouette and more organic shape. The tessellated patch will replace the triangles input into the GL. The GL will generate new vertices in object-space, prior to geometry transformation. Only the vertices and normals are required to produce proper results, and the rest of the information per vertex is interpolated linearly across the patch. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/pn_triangles.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.pn_triangles import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/vertex_streams.py0000644000175000001440000000154612025001653021605 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.vertex_streams This module customises the behaviour of the OpenGL.raw.GL.ATI.vertex_streams to provide a more Python-friendly API Overview (from the spec) This extension adds the ability to handle sets of auxilliary vertex and normal coordinates. These sets of auxilliary coordinates are termed streams, and can be routed selectively into the blend stages provided by the vertex blending extension. This functionality enables software animation techniques such as keyframe vertex morphing. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/vertex_streams.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.vertex_streams import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/map_object_buffer.py0000644000175000001440000000137412025001653022165 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.map_object_buffer This module customises the behaviour of the OpenGL.raw.GL.ATI.map_object_buffer to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism for an application to obtain the virtual address of an object buffer. This allows the application to directly update the contents of an object buffer and avoid any intermediate copies. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/map_object_buffer.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.map_object_buffer import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/envmap_bumpmap.py0000644000175000001440000000261612025001653021540 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.envmap_bumpmap This module customises the behaviour of the OpenGL.raw.GL.ATI.envmap_bumpmap to provide a more Python-friendly API Overview (from the spec) This extension adds environment mapped bump mapping (EMBM) to the GL. The method exposed by this extension is to use a dependent texture read on a bumpmap (du,dv) texture to offset the texture coordinates read into a map on another texture unit. This (du,dv) offset is also rotated through a user-specified rotation matrix to get the texture coordinates into the appropriate space. A new texture format is introduced in order for specifying the (du,dv) bumpmap texture. This map represents -1 <= du,dv <= 1 offsets to be applied to the texture coordinates used to read into the base map. Additionally, the (du,dv) offsets are transformed by a rotation matrix that this extension allows the user to specify. Further, a new color operation is added to EXT_texture_env_combine to specify both that bumpmapping is enabled and which texture unit to apply the bump offset to. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/envmap_bumpmap.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.envmap_bumpmap import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/fragment_shader.py0000644000175000001440000000273012025001653021657 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.fragment_shader This module customises the behaviour of the OpenGL.raw.GL.ATI.fragment_shader to provide a more Python-friendly API Overview (from the spec) This extension exposes a powerful fragment shading model which provides a very general means of expressing fragment color blending and dependent texture address modification. The programming is a register-based model in which there is a fixed number of instructions, texture lookups, read/write registers, and constants. The fragment shader extension provides a unified instruction set for operating on address or color data and eliminates the distinction between the two. This extension provides all the interfaces necessary to fully expose this programmable fragment shader in GL. Although conceived as a device-independent extension which would expose the capabilities of future generations of hardware, changing trends in programmable hardware have affected the lifespan of this extension. For this reason you will now find a fixed set of features and resources exposed, and the queries to determine this set have been deprecated. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/fragment_shader.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.fragment_shader import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/text_fragment_shader.py0000644000175000001440000000703212025001653022723 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.text_fragment_shader This module customises the behaviour of the OpenGL.raw.GL.ATI.text_fragment_shader to provide a more Python-friendly API Overview (from the spec) The ATI_fragment_shader extension exposes a powerful fragment processing model that provides a very general means of expressing fragment color blending and dependent texture address modification. The processing is termed a fragment shader or fragment program and is specifed using a register-based model in which there are fixed numbers of instructions, texture lookups, read/write registers, and constants. ATI_fragment_shader provides a unified instruction set for operating on address or color data and eliminates the distinction between the two. That extension provides all the interfaces necessary to fully expose this programmable fragment processor in GL. ATI_text_fragment_shader is a redefinition of the ATI_fragment_shader functionality, using a slightly different interface. The intent of creating ATI_text_fragment_shader is to take a step towards treating fragment programs similar to other programmable parts of the GL rendering pipeline, specifically vertex programs. This new interface is intended to appear similar to the ARB_vertex_program API, within the limits of the feature set exposed by the original ATI_fragment_shader extension. The most significant differences between the two extensions are: (1) ATI_fragment_shader provides a procedural function call interface to specify the fragment program, whereas ATI_text_fragment_shader uses a textual string to specify the program. The fundamental syntax and constructs of the program "language" remain the same. (2) The program object managment portions of the interface, namely the routines used to create, bind, and delete program objects and set program constants are managed using the framework defined by ARB_vertex_program. (3) ATI_fragment_shader refers to the description of the programmable fragment processing as a "fragment shader". In keeping with the desire to treat all programmable parts of the pipeline consistently, ATI_text_fragment_shader refers to these as "fragment programs". The name of the extension is left as ATI_text_fragment_shader instead of ATI_text_fragment_program in order to indicate the underlying similarity between the API's of the two extensions, and to differentiate it from any other potential extensions that may be able to move even further in the direction of treating fragment programs as just another programmable area of the GL pipeline. Although ATI_fragment_shader was originally conceived as a device-independent extension that would expose the capabilities of future generations of hardware, changing trends in programmable hardware have affected the lifespan of this extension. For this reason you will now find a fixed set of features and resources exposed, and the queries to determine this set have been deprecated in ATI_fragment_shader. Further, in ATI_text_fragment_shader, most of these resource limits are fixed by the text grammar and the queries have been removed altogether. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/text_fragment_shader.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.text_fragment_shader import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/ATI/separate_stencil.py0000644000175000001440000000126112025001653022051 0ustar mcfletchusers00000000000000'''OpenGL extension ATI.separate_stencil This module customises the behaviour of the OpenGL.raw.GL.ATI.separate_stencil to provide a more Python-friendly API Overview (from the spec) This extension provides the ability to modify the stencil buffer differently based on the facing direction of the primitive that generated the fragment. The official definition of this extension is available here: http://www.opengl.org/registry/specs/ATI/separate_stencil.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.ATI.separate_stencil import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/MESAX/0000755000175000001440000000000012032640120016406 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/MESAX/__init__.py0000644000175000001440000000000012025001653020511 0ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/MESAX/texture_stack.py0000644000175000001440000000512212025001653021651 0ustar mcfletchusers00000000000000'''OpenGL extension MESAX.texture_stack This module customises the behaviour of the OpenGL.raw.GL.MESAX.texture_stack to provide a more Python-friendly API Overview (from the spec) There are a number of circumstances where an application may wish to blend two textures out of a larger set of textures. Moreover, in some cases the selected textures may vary on a per-fragment basis within a polygon. Several examples include: 1. High dynamic range textures. The application stores several different "exposures" of an image as different textures. On a per-fragment basis, the application selects which exposures are used. 2. A terrain engine where the altitude of a point determines the texture applied to it. If the transition is from beach sand to grass to rocks to snow, the application will store each texture in a different texture map, and dynamically select which two textures to blend at run-time. 3. Storing short video clips in textures. Each depth slice is a single frame of video. Several solutions to this problem have been proposed, but they either involve using a separate texture unit for each texture map or using 3D textures without mipmaps. Both of these options have major drawbacks. This extension provides a third alternative that eliminates the major drawbacks of both previous methods. A new texture target, TEXTURE_2D_STACK, is added that functions identically to TEXTURE_3D in all aspects except the sizes of the non-base level images. In traditional 3D texturing, the size of the N+1 LOD is half the size of the N LOD in all three dimensions. For the TEXTURE_2D_STACK target, the height and width of the N+1 LOD is halved, but the depth is the same for all levels of detail. The texture then becomes a "stack" of 2D textures. The per-fragment texel is selected by the R texture coordinate. References: http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011557 http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=000516 http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011903 http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm The official definition of this extension is available here: http://www.opengl.org/registry/specs/MESAX/texture_stack.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.MESAX.texture_stack import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/0000755000175000001440000000000012032640120016303 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/SGIX/ycrcb.py0000644000175000001440000000355412025001653017772 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.ycrcb This module customises the behaviour of the OpenGL.raw.GL.SGIX.ycrcb to provide a more Python-friendly API Overview (from the spec) This extension provides a method for OpenGL to read and store images that are defined in standard YCRCB 422 and 444 video formats. As with the CYMK extension, conversion to RGBA takes place immediately following the unpack pixel store, and preceding the pack pixel store operations, and is only available on transfers to and from memory. The algorithms that convert between YCRCB and RGBA are "black-box" in nature, and left undefined by the extension. Two new formats are added, YCRCB_422_SGIX and YCRCB_444_SGIX. To handle the difference in sampling rate for 422 video, the pixel storage operations treat YCRCB_422_SGIX as a 2 component format, where the first component represents chroma, and the second luma. The chroma component alternates between Cb and Cr values on a per pixel basis. If the specified image parameter is not a multiple of 2, then fragments or texels that result from processing the th column of pixels will have undefined color value. YCRCB_444_SGIX is defined as a 3 component format representing the Cb, Y, and Cr values per pixel. As with the CMYK extension, this extension doesn't preclude the possiblity of other higher quality conversion methods. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/ycrcb.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.ycrcb import * ### END AUTOGENERATED SECTION from OpenGL import images as _i _i.COMPONENT_COUNTS[ GL_YCRCB_422_SGIX ] = 1 # must be GL_UNSIGNED_BYTE _i.COMPONENT_COUNTS[ GL_YCRCB_444_SGIX ] = 1 # must be GL_UNSIGNED_SHORT PyOpenGL-3.0.2/OpenGL/GL/SGIX/shadow_ambient.py0000644000175000001440000000165112025001653021650 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.shadow_ambient This module customises the behaviour of the OpenGL.raw.GL.SGIX.shadow_ambient to provide a more Python-friendly API Overview (from the spec) This extension allows a value other than 0.0 to be returned by the SGIX_shadow operation in the case when the shadow test passes. With this extension any floating point value in the range [0.0, 1.0] can be returned as the texture value when an object is in shadow. This allows the (untextured) ambient lighting and direct shadowed lighting from a single light source to be computed in a single pass. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/shadow_ambient.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.shadow_ambient import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/convolution_accuracy.py0000644000175000001440000000123212025001653023110 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.convolution_accuracy This module customises the behaviour of the OpenGL.raw.GL.SGIX.convolution_accuracy to provide a more Python-friendly API Overview (from the spec) This extension adds an accuracy hint for convolution. It allows the program to trade off precision for speed. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/convolution_accuracy.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.convolution_accuracy import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/ycrcba.py0000644000175000001440000000072512025001653020130 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.ycrcba This module customises the behaviour of the OpenGL.raw.GL.SGIX.ycrcba to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/ycrcba.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.ycrcba import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/pixel_texture.py0000644000175000001440000000076112025001653021566 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.pixel_texture This module customises the behaviour of the OpenGL.raw.GL.SGIX.pixel_texture to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/pixel_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.pixel_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/shadow.py0000644000175000001440000000144512025001653020152 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.shadow This module customises the behaviour of the OpenGL.raw.GL.SGIX.shadow to provide a more Python-friendly API Overview (from the spec) This extension defines two new operations to be performed on texture values before they are passed on to the filtering subsystem. These operations perform either a <= or >= test on the value from texture memory and the iterated R value, and return 1.0 or 0.0 if the test passes or fails, respectively. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/shadow.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.shadow import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/instruments.py0000644000175000001440000000411012025001653021250 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.instruments This module customises the behaviour of the OpenGL.raw.GL.SGIX.instruments to provide a more Python-friendly API Overview (from the spec) This extension allows the gathering and return of performance measurements from within the graphics pipeline by adding instrumentation. There are two reasons to do this. The first is as a part of some type of fixed-frame-rate load management scheme. If we know that the pipeline is stalled or struggling to process the amount of data we have given it so far, we can reduce the level of detail of the remaining objects in the current frame or the next frame, or adjust the framebuffer resolution for the next frame if we have a video-zoom capability available. We can call this type of instrumentation Load Monitoring. The second is for performance tuning and debugging of an application. It might tell us how many triangles were culled or clipped before being rasterized. We can call this simply Tuning. Load Monitoring requires that the instrumentation and the access of the measurements be efficient, otherwise the instrumentation itself will reduce performance more than any load-management scheme could hope to offset. Tuning does not have the same requirements. The proposed extension adds a call to setup a measurements return buffer, similar to FeedbackBuffer but with an asynchrounous behavior to prevent filling the pipeline with NOP's while waiting for the data to be returned. Note that although the extension has been specified without any particular instruments, defining either a device dependent or device independent instrument should be as simple as introducing an extension consisting primarily of a new enumerant to identify the instrument. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/instruments.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.instruments import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/calligraphic_fragment.py0000644000175000001440000000102112025001653023160 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.calligraphic_fragment This module customises the behaviour of the OpenGL.raw.GL.SGIX.calligraphic_fragment to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/calligraphic_fragment.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.calligraphic_fragment import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/reference_plane.py0000644000175000001440000000322212025001653021775 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.reference_plane This module customises the behaviour of the OpenGL.raw.GL.SGIX.reference_plane to provide a more Python-friendly API Overview (from the spec) This extension allows a group of coplanar primitives to be rendered without depth-buffering artifacts. This is accomplished by generating the depth values for all the primitives from a single ``reference plane'' rather than from the primitives themselves. This ensures that all the primitives in the group have exactly the same depth value at any given sample point, no matter what imprecision may exist in the original specifications of the primitives or in the GL's coordinate transformation process. The reference plane is defined by a four-component plane equation. When glReferencePlaneSGIX is called, equation is transformed by the transpose-adjoint of a matrix that is the complete object-coordinate to clip-coordinate transformation. The resulting clip-coordinate coefficients are transformed by the current viewport when the reference plane is enabled. The reference plane is enabled and disabled with glEnable and glDisable. If the reference plane is enabled, a fragment (xf,yf,zf) will have a new z coordinate generated from (xf,yf) by giving it the same z value that the reference plane would have at (xf,yf). The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/reference_plane.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.reference_plane import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/fog_scale.py0000644000175000001440000000074112025001653020605 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.fog_scale This module customises the behaviour of the OpenGL.raw.GL.SGIX.fog_scale to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/fog_scale.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.fog_scale import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/__init__.py0000644000175000001440000000002712025001653020417 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/SGIX/framezoom.py0000644000175000001440000000304112025001653020656 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.framezoom This module customises the behaviour of the OpenGL.raw.GL.SGIX.framezoom to provide a more Python-friendly API Overview (from the spec) This extension provides a additional way to rasterize geometric primitives and pixel rectangles. The techique is to reduce the number of pixels rasterized and (possibly) the number of depth and stencil operations performed per primitive. Each pixel is zoomed up and used to render an N x N block of screen pixels. The implementation is free to choose the number of stencil and z pixels that will correspond to each N x N block. This extension provides an opportunity to the implementation to perform expensive raster operations at a reduced resolution, increasing performance. Such operations may include texture-mapping, depth & stencil tests, etc. The hardware should be allowed to perform operations that it accelerates at full hardware speed. The visual result will be the same as if a scene were rendered into a small window, and then that buffer was copied and zoomed up into a large window. All OpenGL parameters that effect rasterization size will implicitly be multipled by N (this includes point size, line width, etc). The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/framezoom.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.framezoom import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/subsample.py0000644000175000001440000000074112025001653020656 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.subsample This module customises the behaviour of the OpenGL.raw.GL.SGIX.subsample to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/subsample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.subsample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/polynomial_ffd.py0000644000175000001440000000076512025001653021673 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.polynomial_ffd This module customises the behaviour of the OpenGL.raw.GL.SGIX.polynomial_ffd to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/polynomial_ffd.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.polynomial_ffd import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/blend_alpha_minmax.py0000644000175000001440000000165612025001653022473 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.blend_alpha_minmax This module customises the behaviour of the OpenGL.raw.GL.SGIX.blend_alpha_minmax to provide a more Python-friendly API Overview (from the spec) Two additional blending equations are specified using the interface defined by EXT_blend_minmax. These equations are similar to the MIN_EXT and MAX_EXT blending equations, but the outcome for all four color components is determined by a comparison of just the alpha component's source and destination values. These equations are useful in image processing and advanced shading algorithms. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/blend_alpha_minmax.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.blend_alpha_minmax import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/texture_select.py0000644000175000001440000000076512025001653021730 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.texture_select This module customises the behaviour of the OpenGL.raw.GL.SGIX.texture_select to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/texture_select.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.texture_select import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/igloo_interface.py0000644000175000001440000000077112025001653022017 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.igloo_interface This module customises the behaviour of the OpenGL.raw.GL.SGIX.igloo_interface to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/igloo_interface.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.igloo_interface import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/fragment_lighting.py0000644000175000001440000000100112025001653022341 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.fragment_lighting This module customises the behaviour of the OpenGL.raw.GL.SGIX.fragment_lighting to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/fragment_lighting.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.fragment_lighting import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/impact_pixel_texture.py0000644000175000001440000000101512025001653023114 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.impact_pixel_texture This module customises the behaviour of the OpenGL.raw.GL.SGIX.impact_pixel_texture to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/impact_pixel_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.impact_pixel_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/tag_sample_buffer.py0000644000175000001440000000151612025001653022331 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.tag_sample_buffer This module customises the behaviour of the OpenGL.raw.GL.SGIX.tag_sample_buffer to provide a more Python-friendly API Overview (from the spec) The extensions defines a special purpose fast multisample clear. This clear can be used with some restrictions as a significantly faster alternative to Clear(DEPTH_BUFFER_BIT). The extension is based on the RealityEngine architecture and will probably never be supported by any other architecture. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/tag_sample_buffer.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.tag_sample_buffer import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/texture_lod_bias.py0000644000175000001440000000321512025001653022216 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.texture_lod_bias This module customises the behaviour of the OpenGL.raw.GL.SGIX.texture_lod_bias to provide a more Python-friendly API Overview (from the spec) This extension modifies the calculation of texture level of detail parameter LOD, which is represented by the Greek character lambda in the GL Specification. The LOD equation assumes that a 2^n x 2^m x 2^l texture is band limited at 2^(n-1), 2^(m-1), 2^(l-1). Often a texture is oversampled or filtered such that the texture is band limited at lower frequencies in one or more dimensions. The result is that texture-mapped primitives appear excessively blurry. This extension provides biases for n, m, and l in the LOD calculation to to compensate for under or over sampled texture images. Mipmapped textures can be made to appear sharper or blurrier by supplying a negative or positive bias respectively. Examples of textures which can benefit from this LOD control include video-capture images which are filtered differently horizontally and vertically; a texture which appears blurry because it is mapped with a nonuniform scale, such as a road texture which is repeated hundreds of times in one dimension and only once in the other; and textures which had to be magnified to a power-of-two for mipmapping. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/texture_lod_bias.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.texture_lod_bias import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/depth_texture.py0000644000175000001440000000201312025001653021541 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.depth_texture This module customises the behaviour of the OpenGL.raw.GL.SGIX.depth_texture to provide a more Python-friendly API Overview (from the spec) This extension defines a new depth texture format. An important application of depth texture images is shadow casting, but separating this from the shadow extension allows for the potential use of depth textures in other applications such as image-based rendering or displacement mapping. This extension does not define new depth-texture environment functions, such as filtering or applying the depth values computed from a texture, but leaves this to other extensions, such as the shadow extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/depth_texture.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.depth_texture import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/pixel_tiles.py0000644000175000001440000000075112025001653021205 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.pixel_tiles This module customises the behaviour of the OpenGL.raw.GL.SGIX.pixel_tiles to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/pixel_tiles.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.pixel_tiles import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/list_priority.py0000644000175000001440000000135412025001653021600 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.list_priority This module customises the behaviour of the OpenGL.raw.GL.SGIX.list_priority to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism for specifying the relative importance of display lists. This information can be used by an OpenGL implementation to guide the placement of display list data in a storage hierarchy. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/list_priority.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.list_priority import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/async.py0000644000175000001440000000507112025001653020001 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.async This module customises the behaviour of the OpenGL.raw.GL.SGIX.async to provide a more Python-friendly API Overview (from the spec) This extension provides a framework for asynchronous OpenGL commands. It also provides commands allowing a program to wait for the completion of asynchronous commands. Asynchronous commands have two properties: 1) Asynchronous commands are non-blocking. For example, an asynchronous ReadPixels command returns control to the program immediately rather than blocking until the command completes. This property allows the program to issue other OpenGL commands in parallel with the execution of commands that normally block. 2) Asynchronous commands may complete out-of-order with respect to other OpenGL commands. For example, an asynchronous TexImage command may complete after subsequent OpenGL commands issued by the program rather than maintaining the normal serial order of the OpenGL command stream. This property allows the graphics accelerator to execute asynchronous commands in parallel with the normal command stream, for instance using a secondary path to transfer data from or to the host, without doing any dependency checking. Programs that issue asynchronous commands must also be able to determine when the commands have completed. The completion status may be needed so that results can be retrieved (e.g. the image data from a ReadPixels command) or so that dependent commands can be issued (e.g. drawing commands that use texture data downloaded by an earlier asynchronous command). This extension provides fine-grain control over asynchronous commands by introducing a mechanism for determining the status of individual commands. Each invocation of an asynchronous command is associated with an integer called a "marker." A program specifies a marker before it issues an asynchronous command. The program may later issue a command to query if any asynchronous commands have completed. The query commands return a marker to identify the command that completed. This extension provides both blocking and non-blocking query commands. This extension does not define any asynchronous commands. See SGIX_async_pixel for the asynchronous pixel commands. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/async.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.async import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/fog_offset.py0000644000175000001440000000246512025001653021011 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.fog_offset This module customises the behaviour of the OpenGL.raw.GL.SGIX.fog_offset to provide a more Python-friendly API Overview (from the spec) This extension allows fragments to look brighter in a foggy environment, by biasing the fragment eye-coordinate distance prior to fog computation. A reference point in eye space (rx ry rz) and an offset amount toward the viewpoint (f_o) are specified. When fog offset is enabled, the offset amount will be subtracted from the fragment distance, making objects appear less foggy. If fog computation is done in screen-space coordinates under perspective projection, the reference point is used in adjusting the fog offset to be correct for fragments whose depth is close to that point. The reference point should be redefined when it becomes too far away from the primitives being drawn. Under orthographic projection, or if fog computation is done in eye-space coordinates, the reference point is ignored. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/fog_offset.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.fog_offset import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/scalebias_hint.py0000644000175000001440000000076512025001653021641 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.scalebias_hint This module customises the behaviour of the OpenGL.raw.GL.SGIX.scalebias_hint to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/scalebias_hint.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.scalebias_hint import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/texture_multi_buffer.py0000644000175000001440000000374112025001653023131 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.texture_multi_buffer This module customises the behaviour of the OpenGL.raw.GL.SGIX.texture_multi_buffer to provide a more Python-friendly API Overview (from the spec) This extension provides an API for the application to specify that the OpenGL should handle multiple textures in such a way that, wherever possible, a texture definition or redefinition can occur in parallel with rendering that uses a different texture. The texture_object extension allows the simultaneous definition of multiple textures; any texture that is not being used for rendering can, in principle, have its definition or operations in its definition (e.g. downloading to hardware) occur in parallel with the use of another texture. This is true as long as all redefinitions strictly follow any use of the previous definition. Conceptually this is similar to frame buffer double-buffering, except that the intent here is to simply provide a hint to the OpenGL to promote such double-buffering if and wherever possible. The effect of such a hint is to speed up operations without affecting the result. The user on any particular system must be knowledgable and prepared to accept any trade-offs which follow from such a hint. GL_FASTEST in this context means that texture multi-buffering is being used whenever possible to improve performance. Generally, textures that are adjacent in a sequence of multiple texture definitions have the greatest chance of being in different buffers. The number of buffers available at any time depends on various factors, such as the machine being used and the textures' internal formats. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/texture_multi_buffer.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.texture_multi_buffer import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/vertex_preclip.py0000644000175000001440000000230612025001653021715 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.vertex_preclip This module customises the behaviour of the OpenGL.raw.GL.SGIX.vertex_preclip to provide a more Python-friendly API Overview (from the spec) Certain graphics subsystems are capable of performing fast 2D viewport or, in some cases, 3D volume "scissoring" operations within some coordinate range much faster that the host CPU could re-tesselate clipped primitives. This extension introduces the notion of an extended rasterizable view volume that is an expansion of the clip-space view volume. This volume is the space within which a particular graphics system is much more efficient at rejecting fragments that lie outside the view volume than it is at performing strict view volume clipping. Clip-checking can be turned on or off through the glEnable/glDisable mechanism, and can be further controlled by using glHint. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/vertex_preclip.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.vertex_preclip import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/texture_scale_bias.py0000644000175000001440000000225212025001653022527 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.texture_scale_bias This module customises the behaviour of the OpenGL.raw.GL.SGIX.texture_scale_bias to provide a more Python-friendly API Overview (from the spec) This extension adds scale, bias, and clamp to [0, 1] operations to the texture pipeline. These operations are applied to the filtered result of a texture lookup, before that result is used in the texture environment equations and before the texture color lookup table of SGI_texture_color_table, if that extension exists. These operations are distinct from the scale, bias, and clamp operations that appear in the SGI_color_table extension, which are used to define a color lookup table. Scale and bias operations on texels can be used to better utilize the color resolution of a particular texture internal format (see EXT_texture). The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/texture_scale_bias.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.texture_scale_bias import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/texture_coordinate_clamp.py0000644000175000001440000000162412025001653023747 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.texture_coordinate_clamp This module customises the behaviour of the OpenGL.raw.GL.SGIX.texture_coordinate_clamp to provide a more Python-friendly API Overview (from the spec) This extension provides a mechanism to specify the maximum texture coordinate clamping values. Standard OpenGL always clamps the upper bound to 1.0 when the wrap mode is set to CLAMP. This mechanism can be used to guarantee that non-existent texel data will not be accessed when the texture image has dimensions that are not a power of 2. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/texture_coordinate_clamp.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.texture_coordinate_clamp import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/sprite.py0000644000175000001440000000534212025001653020173 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.sprite This module customises the behaviour of the OpenGL.raw.GL.SGIX.sprite to provide a more Python-friendly API Overview (from the spec) This extension provides support for viewpoint dependent alignment of geometry, in particular geometry that rotates about a point or a specified axis to face the eye point. The primary use is for quickly rendering roughly cylindrically or spherically symmetric objects, e.g. trees, smoke, clouds, etc. using geometry textured with a partially transparent texture map. Rendering sprite geometry requires applying a transformation to primitives before the current model view. This matrix includes a rotation which is computed based on the current model view matrix and a translation which is specified explicitly (SPRITE_TRANSLATION_SGIX). The current model view matrix itself is not modified. Primitives are first transformed by a rotation, depending on the sprite mode: SPRITE_AXIAL_SGIX: The front of the object is rotated about an axis so that it faces the eye as much as the axis constraint allows. This is used for roughly rendering cylindrical objects such as trees in visual simulation. SPRITE_OBJECT_ALIGNED_SGIX: The front of the object is rotated about a point to face the eye with the remaining rotational degree of freedom specified by aligning the top of the object with a specified axis in object coordinates. This is used for spherical objects and special effects such as smoke which must maintain an alignment in object coordinates for realism. SPRITE_EYE_ALIGNED_SGIX: The front of the object is rotated about a point to face the eye with the remaining rotational degree of freedom specified by aligning the top of the object with a specified axis in eye coordinates. This is used for rendering sprites which must maintain an alignment on the screen, such as 3D annotations. The axis of rotation or alignment, SPRITE_AXIS_SGIX, can be an arbitrary direction to support geocentric coordinate frames in which "up" is not along X, Y or Z. Sprite geometry is modeled in a canonical frame: +Z is the up vector. -Y is the front vector which is rotated to point towards the eye. In the discussion below, the eye vector is the vector to the eye from the origin of the model view frame translated by the sprite position. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/sprite.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.sprite import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/async_histogram.py0000644000175000001440000000140612025001653022054 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.async_histogram This module customises the behaviour of the OpenGL.raw.GL.SGIX.async_histogram to provide a more Python-friendly API Overview (from the spec) This extension introduces a new asynchronous mode for histogram and minmax readbacks. It allows programs to get the contents of a histogram or minmax table without blocking and to continue issuing graphics commands during the readback. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/async_histogram.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.async_histogram import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/async_pixel.py0000644000175000001440000000205412025001653021200 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.async_pixel This module customises the behaviour of the OpenGL.raw.GL.SGIX.async_pixel to provide a more Python-friendly API Overview (from the spec) This extension introduces a new asynchronous mode for texture download, pixel download and pixel readback commands. It allows programs to transfer textures or images between the host and the graphics accelerator in parallel with the execution of other graphics commands (possibly taking advantage of a secondary path to the graphics accelerator). It also allows programs to issue non-blocking pixel readback commands that return immediately after they are issued so that the program can issue other commands while the readback takes place. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/async_pixel.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.async_pixel import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/FfdMask.py0000644000175000001440000000073112025001653020175 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.FfdMask This module customises the behaviour of the OpenGL.raw.GL.SGIX.FfdMask to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/FfdMask.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.FfdMask import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/clipmap.py0000644000175000001440000000145312025001653020311 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.clipmap This module customises the behaviour of the OpenGL.raw.GL.SGIX.clipmap to provide a more Python-friendly API Overview (from the spec) Mipmaps provide a general but expensive solution when the texture image is very large. This extension defines clipmaps, which occupy a small subset of the memory required by equivalent mipmaps, but provide much of the mipmap rendering capabilities. Clipmaps are especially useful for rendering terrain. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/clipmap.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.clipmap import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/ycrcb_subsample.py0000644000175000001440000000077112025001653022043 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.ycrcb_subsample This module customises the behaviour of the OpenGL.raw.GL.SGIX.ycrcb_subsample to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/ycrcb_subsample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.ycrcb_subsample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/interlace.py0000644000175000001440000000172212025001653020631 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.interlace This module customises the behaviour of the OpenGL.raw.GL.SGIX.interlace to provide a more Python-friendly API Overview (from the spec) This extension provides a way to interlace rows of pixels when rasterizing pixel rectangles, and loading texture images. In this context, interlacing means skiping over rows of pixels or texels in the destination. This is useful for dealing with video data since a single frame of video is typically composed from two images or fields: one image specifying the data for even rows of the frame and the other image specifying the data for odd rows of the frame. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/interlace.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.interlace import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/resample.py0000644000175000001440000000233412025001653020473 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.resample This module customises the behaviour of the OpenGL.raw.GL.SGIX.resample to provide a more Python-friendly API Overview (from the spec) This extension enhances the unpacking resampling capabilities of the SGIX_subsample extension. When pixel data is received from the client and an unpacking upsampling mode other than PIXEL_SUBSAMPLE_RATE_4444_SGIX is specified, the upsampling is performed via one of two methods: RESAMPLE_REPLICATE_SGIX, RESAMPLE_ZERO_FILL_SGIX. Replicate and zero fill are provided to give the application greatest performance and control over the filtering process. However, when pixel data is read back to the client and a packing downsampling mode other than PIXEL_SUBSAMPLE_RATE_4444_SGIX is specified, downsampling is performed via simple component decimation (point sampling). That is, only the RESAMPLE_DECIMATE_SGIX is valid. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/resample.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.resample import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/depth_pass_instrument.py0000644000175000001440000000102112025001653023275 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.depth_pass_instrument This module customises the behaviour of the OpenGL.raw.GL.SGIX.depth_pass_instrument to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/depth_pass_instrument.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.depth_pass_instrument import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/flush_raster.py0000644000175000001440000000220512025001653021361 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.flush_raster This module customises the behaviour of the OpenGL.raw.GL.SGIX.flush_raster to provide a more Python-friendly API Overview (from the spec) This extensions provides a way to ensure that all raster operations currently in the pipeline will be completed before the next raster operation begins. We define a raster operation as an operation that involves the rasterization stage of the OpenGL pipeline. The implementation is free to decide what consitutes flushing the raster subsystem. The motivation is to allow accurate instrumentation by including this call before stopping rasterization measurements. There are cases where Finish() is used, but a FlushRaster() would suffice, so this extension is deliberately kept independent of the instruments extension. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/flush_raster.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.flush_raster import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/ir_instrument1.py0000644000175000001440000000102012025001653021635 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.ir_instrument1 This module customises the behaviour of the OpenGL.raw.GL.SGIX.ir_instrument1 to provide a more Python-friendly API Overview (from the spec) The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/ir_instrument1.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.ir_instrument1 import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGIX/texture_add_env.py0000644000175000001440000000077112025001653022046 0ustar mcfletchusers00000000000000'''OpenGL extension SGIX.texture_add_env This module customises the behaviour of the OpenGL.raw.GL.SGIX.texture_add_env to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/texture_add_env.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGIX.texture_add_env import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/feedback.py0000644000175000001440000000654212025001653017642 0ustar mcfletchusers00000000000000"""Utility module to parse a Feedback buffer""" from OpenGL import contextdata from OpenGL.raw.GL.VERSION import GL_1_1 as simple from OpenGL.GL import glget def parseFeedback( buffer, entryCount ): """Parse the feedback buffer into Python object records""" bufferIndex = 0 result = [] getVertex = createGetVertex( ) while bufferIndex < entryCount: token = int(buffer[bufferIndex]) bufferIndex += 1 if token in SINGLE_VERTEX_TOKENS: vData, bufferIndex = getVertex( buffer, bufferIndex ) result.append( (SINGLE_VERTEX_TOKENS.get(token), Vertex(*vData)) ) elif token in DOUBLE_VERTEX_TOKENS: vData, bufferIndex = getVertex( buffer, bufferIndex ) vData2, bufferIndex = getVertex( buffer, bufferIndex ) result.append( ( DOUBLE_VERTEX_TOKENS.get(token), Vertex(*vData), Vertex(*vData2), ) ) elif token == simple.GL_PASS_THROUGH_TOKEN: result.append( (simple.GL_PASS_THROUGH_TOKEN, buffer[bufferIndex])) bufferIndex += 1 elif token == simple.GL_POLYGON_TOKEN: temp = [simple.GL_POLYGON_TOKEN] count = int(buffer[bufferIndex]) bufferIndex += 1 for item in range(count): vData,bufferIndex = getVertex( buffer, bufferIndex ) temp.append( Vertex(*vData)) result.append( tuple(temp)) else: raise ValueError( """Unrecognised token %r in feedback stream"""%(token,) ) return result SINGLE_VERTEX_TOKENS = { simple.GL_BITMAP_TOKEN: simple.GL_BITMAP_TOKEN, simple.GL_COPY_PIXEL_TOKEN: simple.GL_COPY_PIXEL_TOKEN, simple.GL_DRAW_PIXEL_TOKEN: simple.GL_DRAW_PIXEL_TOKEN, simple.GL_POINT_TOKEN: simple.GL_POINT_TOKEN, } DOUBLE_VERTEX_TOKENS = { simple.GL_LINE_TOKEN: simple.GL_LINE_TOKEN, simple.GL_LINE_RESET_TOKEN: simple.GL_LINE_RESET_TOKEN, } class Vertex( object ): """Simplistic holder for vertex data from a feedback buffer""" __slots__ = ('vertex','color','texture') def __init__( self, vertex,color=None,texture=None): """Store values for access""" self.vertex = vertex self.color = color self.texture = texture def createGetVertex( ): mode = contextdata.getValue( "GL_FEEDBACK_BUFFER_TYPE" ) indexMode = glget.glGetBoolean( simple.GL_INDEX_MODE ) colorSize = [ 4,1 ][ int(indexMode) ] if mode in (simple.GL_2D,simple.GL_3D): if mode == simple.GL_2D: size = 2 else: size = 3 def getVertex( buffer, bufferIndex ): end = bufferIndex+size return (buffer[bufferIndex:end],None,None),end elif mode == simple.GL_3D_COLOR: def getVertex( buffer, bufferIndex ): end = bufferIndex+3 colorEnd = end + colorSize return (buffer[bufferIndex:end],buffer[end:colorEnd],None),colorEnd else: if mode == simple.GL_3D_COLOR_TEXTURE: size = 3 else: size = 4 def getVertex( buffer, bufferIndex ): end = bufferIndex+size colorEnd = end + colorSize textureEnd = colorEnd + 4 return (buffer[bufferIndex:end],buffer[end:colorEnd],buffer[colorEnd:textureEnd]),textureEnd return getVertex PyOpenGL-3.0.2/OpenGL/GL/SGI/0000755000175000001440000000000012032640120016153 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/SGI/color_matrix.py0000644000175000001440000000224212025001653021233 0ustar mcfletchusers00000000000000'''OpenGL extension SGI.color_matrix This module customises the behaviour of the OpenGL.raw.GL.SGI.color_matrix to provide a more Python-friendly API Overview (from the spec) This extension adds a 4x4 matrix stack to the pixel transfer path. The matrix operates on RGBA pixel groups, using the equation C' = MC, where |R| C = |G| |B| |A| and M is the 4x4 matrix on the top of the color matrix stack. After the matrix multiplication, each resulting color component is scaled and biased by a programmed amount. Color matrix multiplication follows convolution (and the scale, and bias that are associated with convolution.) The color matrix can be used to reassign and duplicate color components. It can also be used to implement simple color space conversions. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGI/color_matrix.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGI.color_matrix import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGI/__init__.py0000644000175000001440000000002712025001653020267 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/SGI/color_table.py0000644000175000001440000000250412025001653021017 0ustar mcfletchusers00000000000000'''OpenGL extension SGI.color_table This module customises the behaviour of the OpenGL.raw.GL.SGI.color_table to provide a more Python-friendly API Overview (from the spec) This extension defines a new RGBA-format color lookup mechanism. It does not replace the color lookups defined by the GL Specification, but rather provides additional lookup capabilities with different operation. The key difference is that the new lookup tables are treated as 1-dimensional images with internal formats, like texture images and convolution filter images. From this follows the fact that the new tables can operate on a subset of the components of passing pixel groups. For example, a table with internal format ALPHA modifies only the A component of each pixel group, leaving the R, G, and B components unmodified. If EXT_copy_texture is implemented, this extension also defines methods to initialize the color lookup tables from the framebuffer, in addition to the standard memory source mechanisms. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGI/color_table.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGI.color_table import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGI/depth_pass_instrument.py0000644000175000001440000000101512025001653023150 0ustar mcfletchusers00000000000000'''OpenGL extension SGI.depth_pass_instrument This module customises the behaviour of the OpenGL.raw.GL.SGI.depth_pass_instrument to provide a more Python-friendly API The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGI/depth_pass_instrument.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGI.depth_pass_instrument import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SGI/texture_color_table.py0000644000175000001440000000232512025001653022600 0ustar mcfletchusers00000000000000'''OpenGL extension SGI.texture_color_table This module customises the behaviour of the OpenGL.raw.GL.SGI.texture_color_table to provide a more Python-friendly API Overview (from the spec) This extension adds a color lookup table to the texture mechanism. The table is applied to the filtered result of a texture lookup, before that result is used in the texture environment equations. The definition and application of the texture color table are similar to those of the color tables defined in SGI_color_table, though it is not necessary for that extension to be implemented. Texture color tables can be used to expand luminance or intensity textures to full RGBA, and also to linearize the results of color space conversions implemented by multidimensional texture table lookup. This specification has been updated to define its interaction with multitexture. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGI/texture_color_table.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SGI.texture_color_table import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/SUNX/0000755000175000001440000000000012032640120016326 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/SUNX/__init__.py0000644000175000001440000000002712025001653020442 0ustar mcfletchusers00000000000000"""OpenGL Extensions"""PyOpenGL-3.0.2/OpenGL/GL/SUNX/constant_data.py0000644000175000001440000000150312025001653021525 0ustar mcfletchusers00000000000000'''OpenGL extension SUNX.constant_data This module customises the behaviour of the OpenGL.raw.GL.SUNX.constant_data to provide a more Python-friendly API Overview (from the spec) This extension allows the pixel data specified by the application to be used internally without making a second copy. This extension affects how the pixel data in client memory is interpreted and therefore affects DrawPixels, Bitmap, PolygonStipple, TexImage1D, TexImage2D, TexImage3DEXT, ColorTableSGI. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SUNX/constant_data.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.SUNX.constant_data import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/KHR/0000755000175000001440000000000012032640120016155 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/KHR/texture_compression_astc_ldr.py0000644000175000001440000000232012025001653024524 0ustar mcfletchusers00000000000000'''OpenGL extension KHR.texture_compression_astc_ldr This module customises the behaviour of the OpenGL.raw.GL.KHR.texture_compression_astc_ldr to provide a more Python-friendly API Overview (from the spec) Adaptive Scalable Texture Compression (ASTC) is a new texture compression technology that offers unprecendented flexibility, while producing better or comparable results than existing texture compressions at all bit rates. It includes support for 2D and 3D textures, with low and high dynamic range, at bitrates from below 1 bit/pixel up to 8 bits/pixel in fine steps. The goal of this extension is to support the 2D, LDR-only profile of the ASTC texture compression specification. ASTC-compressed textures are handled in OpenGL ES and OpenGL by adding new supported formats to the existing mechanisms for handling compressed textures. The official definition of this extension is available here: http://www.opengl.org/registry/specs/KHR/texture_compression_astc_ldr.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.KHR.texture_compression_astc_ldr import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/GL/KHR/__init__.py0000644000175000001440000000000012025001653020260 0ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GL/KHR/debug.py0000644000175000001440000001430712025001653017626 0ustar mcfletchusers00000000000000'''OpenGL extension KHR.debug This module customises the behaviour of the OpenGL.raw.GL.KHR.debug to provide a more Python-friendly API Overview (from the spec) This extension allows the GL to notify applications when various events occur that may be useful during application development, debugging and profiling. These events are represented in the form of enumerable messages with a human-readable string representation. Examples of debug events include incorrect use of the GL, warnings of undefined behavior, and performance warnings. A message is uniquely identified by a source, a type and an implementation-dependent ID within the source and type pair. A message's source identifies the origin of the message and can either describe components of the GL, the window system, third-party external sources such as external debuggers, or even the application itself. The type of the message roughly identifies the nature of the event that caused the message. Examples include errors, performance warnings, warnings about undefined behavior or notifications identifying that the application is within a specific section of the application code. A message's ID for a given source and type further distinguishes messages within namespaces. For example, an error caused by a negative parameter value or an invalid internal texture format are both errors generated by the API, but would likely have different message IDs. Each message is also assigned to a severity level that denotes roughly how "important" that message is in comparison to other messages across all sources and types. For example, notification of a GL error would likely have a higher severity than a performance warning due to redundant state changes. Furthermore, every message contains an implementation-dependent string representation that provides a useful description of the event. Messages are communicated to the application through an application- defined callback function that is called by the GL implementation on each debug message. The motivation for the callback routine is to free application developers from actively having to query whether a GL error, or any other debuggable event has happened after each call to a GL function. With a callback, developers can keep their code free of debug checks, set breakpoints in the callback function, and only have to react to messages as they occur. In situations where using a callback is not possible, a message log is also provided that stores only copies of recent messages until they are actively queried. To control the volume of debug output, messages can be disabled either individually by ID, or entire sets of messages can be turned off based on combination of source and type, through the entire application code or only section of the code encapsulated in debug groups. A debug group may also be used to annotate the command stream using descriptive texts. This extension also defines debug markers, a mechanism for the OpenGL application to annotate the command stream with markers for discrete events. When profiling or debugging an OpenGL application with a built-in or an external debugger or profiler, it is difficult to relate the commands within the command stream to the elements of the scene or parts of the program code to which they correspond. Debug markers and debug groups help obviate this by allowing applications to specify this link. For example, a debug marker can be used to identify the beginning of a frame in the command stream and a debug group can encapsulate a specific command stream to identify a rendering pass. Debug groups also allow control of the debug outputs volume per section of an application code providing an effective way to handle the massive amount of debug outputs that drivers can generate. Some existing implementations of ARB_debug_output only expose the ARB_debug_output extension string if the context was created with the debug flag {GLX|WGL}_CONTEXT_DEBUG_BIT_ARB as specified in {GLX|WGL}_ARB_create_context. The behavior is not obvious when the functionality is brought into the OpenGL core specification because the extension string and function entry points must always exist. This extension modifies the existing ARB_debug_output extension to allow implementations to always have an empty message log. The specific messages written to the message log or callback routines are already implementation defined, so this specification simply makes it explicit that it's fine for there to be zero messages generated, even when a GL error occurs, which is useful if the context is non-debug. Debug output can be enabled and disabled by changing the DEBUG_OUTPUT state. It is implementation defined how much debug output is generated if the context was created without the CONTEXT_DEBUG_BIT set. This is a new query bit added to the existing GL_CONTEXT_FLAGS state to specify whether the context was created with debug enabled. Finally, this extension defines a mechanism for OpenGL applications to label their objects (textures, buffers, shaders, etc.) with a descriptive string. When profiling or debugging an OpenGL application within an external or built-in (debut output API) debugger or profiler it is difficult to identify objects from their object names (integers). Even when the object itself is viewed it can be problematic to differentiate between similar objects. Attaching a descriptive string, a label, to an object obviates this difficulty. The intended purpose of this extension is purely to improve the user experience within OpenGL development tools and application built-in profilers and debuggers. This extension typically improves OpenGL programmers efficiency by allowing them to instantly detect issues and the reason for these issues giving him more time to focus on adding new features to an OpenGL application. The official definition of this extension is available here: http://www.opengl.org/registry/specs/KHR/debug.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.KHR.debug import * ### END AUTOGENERATED SECTIONPyOpenGL-3.0.2/OpenGL/wrapper.py0000644000175000001440000021022112025001653017263 0ustar mcfletchusers00000000000000"""The wrapping code for providing natural ctypes-based OpenGL interface""" import ctypes, logging from OpenGL import platform, error from OpenGL._configflags import STORE_POINTERS, ERROR_ON_COPY, SIZE_1_ARRAY_UNPACK glGetError = platform.OpenGL.glGetError from OpenGL import converters from OpenGL.converters import DefaultCConverter from OpenGL.converters import returnCArgument,returnPyArgument from OpenGL.latebind import LateBind log = logging.getLogger( 'OpenGL.wrapper' ) from OpenGL import acceleratesupport cWrapper = None if acceleratesupport.ACCELERATE_AVAILABLE: try: from OpenGL_accelerate.latebind import LateBind from OpenGL_accelerate.wrapper import ( Wrapper as cWrapper, CArgCalculator, PyArgCalculator, CArgumentCalculator, ) except ImportError, err: log.warn( """OpenGL_accelerate seems to be installed, but unable to import expected wrapper entry points!""" ) NULL = object() if not STORE_POINTERS: if not ERROR_ON_COPY: log.error( """You've specified (not STORE_POINTERS) yet ERROR_ON_COPY is False, this would cause segfaults, so (not STORE_POINTERS) is being ignored""" ) STORE_POINTERS = True def asList( o ): """Convert to a list if not already one""" if not isinstance( o, list ): return list(o) return o class Wrapper( LateBind ): """Wrapper around a ctypes cFunction object providing SWIG-like hooks Attributes: wrappedOperation -- base operation, normally a ctypes function with data-types and error-checking specified pyConverters -- converters for incoming Python arguments, provide 1:1 mapping to incoming Python arguments, can suppress an argument from the argument-set as well see setPyConverter pyConverterNames -- caching/storage of the argument names for the Python converters cConverters -- converters for incoming C-level arguments produce Python-level objects in 1:1 mapping to ctypes arguments from pyConverters results see setCConverter cResolvers -- converters turning Python-level objects into ctypes-compatible data-types see setCResolver Generic Attributes: {ARG1}_LOOKUP_{ARG2} -- lookup dictionaries to provide sizes for ARG1 output value from the value of ARG2, provided for documentation/reference {ARG1}_FROM_{ARG2} -- lookup functions to provide sizes for ARG1 output value from the value of ARG2, provided for documentation/reference """ localProperties = ( 'wrappedOperation', '__file__', 'pyConverters', 'pyConverterNames', 'cConverters', 'cResolvers', 'storeValues', 'returnValues', '_finalCall', ) def __init__( self, wrappedOperation ): """Initialise the wrapper, storing wrappedOperation""" if isinstance( wrappedOperation, Wrapper ): wrappedOperation = wrappedOperation.wrappedOperation self.wrappedOperation = wrappedOperation def __getattr__( self, key ): """Delegate attribute lookup to our wrappedOperation""" if key != 'wrappedOperation': return getattr( self.wrappedOperation, key ) raise AttributeError( key ) def __nonzero__( self ): """Is this function/wrapper available?""" return bool( self.wrappedOperation ) def __setattr__( self, key, value ): """Forward attribute setting to our wrappedOperation""" if key in self.localProperties: super( Wrapper, self ).__setattr__( key, value ) else: return setattr( self.wrappedOperation, key, value ) def pyArgIndex( self, argName ): """Return the Python-argument index for the given argument name""" argNames = getattr( self, 'pyConverterNames', None ) if argNames is None: argNames = self.wrappedOperation.argNames try: return asList( argNames ).index( argName ) except (ValueError,IndexError), err: raise KeyError( """No argument %r in argument list %r"""%( argName, argNames )) def cArgIndex( self, argName ): """Return the C-argument index for the given argument name""" argNames = self.wrappedOperation.argNames try: return asList( argNames ).index( argName ) except (ValueError,IndexError), err: raise KeyError( """No argument %r in argument list %r"""%( argName, argNames )) def setOutput( self, outArg, size=(1,), pnameArg=None, arrayType=None, oldStyleReturn=SIZE_1_ARRAY_UNPACK, orPassIn = False, ): """Set the given argName to be an output array size -- either a tuple compatible with arrayType.zeros or a function taking pname to produce such a value. arrayType -- array data-type used to generate the output array using the zeros class method... pname -- optional argument passed into size function, that is, the name of the argument whose *value* will be passed to the size function, often the name of an input argument to be "sized" to match the output argument. """ if arrayType is None: # figure out from self.wrappedOperation's argtypes index = self.cArgIndex( outArg ) arrayType = self.wrappedOperation.argtypes[ index ] if pnameArg is None: assert not hasattr(size,'__call__' ) conv = converters.Output( name=outArg, size=size, arrayType=arrayType, ) else: if isinstance( size, dict ): setattr( self, '%s_LOOKUP_%s'%(outArg,pnameArg), size ) size = size.__getitem__ else: setattr( self, '%s_FROM_%s'%(outArg,pnameArg), size ) assert hasattr( size, '__call__' ) conv = converters.SizedOutput( name=outArg, specifier=pnameArg, lookup=size, arrayType=arrayType, ) if oldStyleReturn: returnObject = conv.oldStyleReturn else: returnObject = converters.returnCArgument( outArg ) if orPassIn: self.setPyConverter( outArg, None ) else: self.setPyConverter( outArg ) return self.setCConverter( outArg, conv, ).setReturnValues( returnObject ) def setPyConverter( self, argName, function = NULL ): """Set Python-argument converter for given argument argName -- the argument name which will be coerced to a usable internal format using the function provided. function -- None (indicating a simple copy), NULL (default) to eliminate the argument from the Python argument-list, or a callable object with the signature: converter(arg, wrappedOperation, args) where arg is the particular argument on which the convert is working, wrappedOperation is the underlying wrapper, and args is the set of original Python arguments to the function. Note that you need exactly the same number of pyConverters as Python arguments. """ if not hasattr( self, 'pyConverters' ): self.pyConverters = [None]*len( self.wrappedOperation.argNames ) self.pyConverterNames = list(self.wrappedOperation.argNames) try: i = asList( self.pyConverterNames ).index( argName ) except ValueError: raise AttributeError( """No argument named %r left in pyConverters for %r: %s"""%( argName, self.wrappedOperation.__name__, self.pyConverterNames, )) if function is NULL: del self.pyConverters[i] del self.pyConverterNames[i] else: self.pyConverters[i] = function return self def setCConverter( self, argName, function ): """Set C-argument converter for a given argument argName -- the argument name whose C-compatible representation will be calculated with the passed function. function -- None (indicating a simple copy), a non-callable object to be copied into the result-list itself, or a callable object with the signature: converter( pyArgs, index, wrappedOperation ) where pyArgs is the set of passed Python arguments, with the pyConverters already applied, index is the index of the C argument and wrappedOperation is the underlying function. C-argument converters are your chance to expand/contract a Python argument list (pyArgs) to match the number of arguments expected by the ctypes baseOperation. You can't have a "null" C-argument converter, as *something* has to be passed to the C-level function in the parameter. """ if not hasattr( self, 'cConverters' ): self.cConverters = [None]*len( self.wrappedOperation.argNames ) try: if not isinstance(self.wrappedOperation.argNames, list): self.wrappedOperation.argNames = list( self.wrappedOperation.argNames ) i = asList( self.wrappedOperation.argNames ).index( argName ) except ValueError: raise AttributeError( """No argument named %r left in cConverters: %s"""%( argName, self.wrappedOperation.argNames, )) self.cConverters[i] = function return self def setCResolver( self, argName, function=NULL ): """Set C-argument converter for a given argument""" if not hasattr( self, 'cResolvers' ): self.cResolvers = [None]*len( self.wrappedOperation.argNames ) try: if not isinstance(self.wrappedOperation.argNames, list): self.wrappedOperation.argNames = list( self.wrappedOperation.argNames ) i = asList( self.wrappedOperation.argNames).index( argName ) except ValueError: raise AttributeError( """No argument named %r left in cConverters: %s"""%( argName, self.wrappedOperation.argNames, )) if function is NULL: del self.cResolvers[i] else: self.cResolvers[i] = function return self def setStoreValues( self, function=NULL ): """Set the storage-of-arguments function for the whole wrapper""" if function is NULL or ERROR_ON_COPY and not STORE_POINTERS: try: del self.storeValues except Exception, err: pass else: self.storeValues = function return self def setReturnValues( self, function=NULL ): """Set the return-of-results function for the whole wrapper""" if function is NULL: try: del self.returnValues except Exception, err: pass else: self.returnValues = function return self def finalise( self ): """Finalise our various elements into simple index-based operations""" for attribute in ('pyConverters','cConverters','cResolvers' ): value = getattr( self, attribute, None ) if value is not None: for i,item in enumerate(value): if hasattr( item, 'finalise' ): try: item.finalise( self ) except Exception, err: raise error.Error( """Error finalising item %s in %s for %s (%r): %s"""%( i,attribute,self,item,err, ) ) if hasattr( self, 'cConverters' ): for i,converter in enumerate( self.cConverters ): if isinstance( converter, (type(None),DefaultCConverter )): self.cConverters[i] = DefaultCConverter( self.pyArgIndex( self.argNames[i]) ) for attribute in ('storeValues','returnValues',): item = getattr( self, attribute, None ) if hasattr( item, 'finalise' ): item.finalise( self ) callFunction = self.finaliseCall() if not callFunction: raise RuntimeError( """Missing finalised call type for %s"""%( self, )) else: #self.__class__.finalize = lambda *args: callFunction #self.__call__ = callFunction #self.__class__.__call__ = callFunction #self.__class__.set_call( callFunction ) #self.__class__.__dict__[ '__call__' ] = callFunction #print 'setting class call', callFunction self.setFinalCall( callFunction ) return callFunction #return self def finaliseCall( self ): """Produce specialised versions of call for finalised wrapper object This returns a version of __call__ that only does that work which is required by the particular wrapper object This is essentially a huge set of expanded nested functions, very inelegant... """ pyConverters = getattr( self, 'pyConverters', None ) cConverters = getattr( self, 'cConverters', None ) cResolvers = getattr( self, 'cResolvers', None ) wrappedOperation = self.wrappedOperation storeValues = getattr( self, 'storeValues', None ) returnValues = getattr( self, 'returnValues', None ) if pyConverters: if cWrapper: calculate_pyArgs = PyArgCalculator( self,pyConverters, ) else: pyConverters_mapped = [ (i,converter,(converter is None)) for (i,converter) in enumerate( pyConverters ) ] pyConverters_length = len(pyConverters) def calculate_pyArgs( args ): if pyConverters_length != len(args): raise ValueError( """%s requires %r arguments (%s), received %s: %r"""%( wrappedOperation.__name__, pyConverters_length, ", ".join( self.pyConverterNames ), len(args), args ) ) for index,converter,isNone in pyConverters_mapped: if isNone: yield args[index] else: try: yield converter(args[index], self, args) except Exception, err: if hasattr( err, 'args' ): err.args += ( converter, ) raise else: calculate_pyArgs = None if cConverters: if cWrapper: calculate_cArgs = CArgCalculator( self, cConverters ) else: cConverters_mapped = [ (i,converter,hasattr(converter,'__call__')) for (i,converter) in enumerate( cConverters ) ] def calculate_cArgs( pyArgs ): for index,converter,canCall in cConverters_mapped: if canCall: try: yield converter( pyArgs, index, self ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, self, ) raise else: yield converter else: calculate_cArgs = None if cResolvers: if cWrapper: calculate_cArguments = CArgumentCalculator( cResolvers ) else: cResolvers_mapped = list(enumerate(cResolvers)) def calculate_cArguments( cArgs ): for i,converter in cResolvers_mapped: if converter is None: yield cArgs[i] else: try: yield converter( cArgs[i] ) except Exception, err: err.args += (converter,) raise else: calculate_cArguments = None if cWrapper: return cWrapper( wrappedOperation, calculate_pyArgs=calculate_pyArgs, calculate_cArgs=calculate_cArgs, calculate_cArguments=calculate_cArguments, storeValues=storeValues, returnValues=returnValues, ) if pyConverters: if cConverters: # create a map of index,converter, callable if cResolvers: if storeValues: if returnValues: def wrapperCall( *args ): """Wrapper with all possible operations""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = tuple(calculate_cArgs( pyArgs )) cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = tuple(calculate_cArgs( pyArgs )) cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return result return wrapperCall else: # null storeValues if returnValues: def wrapperCall( *args ): """Wrapper with all save storeValues""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = tuple(calculate_cArgs( pyArgs )) cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues and storeValues""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = tuple(calculate_cArgs( pyArgs )) cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return result return wrapperCall else: # null cResolvers if storeValues: if returnValues: def wrapperCall( *args ): """Wrapper with all possible operations""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = tuple(calculate_cArgs( pyArgs )) cArguments = cArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = tuple(calculate_cArgs( pyArgs )) cArguments = cArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return result return wrapperCall else: # null storeValues if returnValues: def wrapperCall( *args ): """Wrapper with all save storeValues""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = tuple(calculate_cArgs( pyArgs )) cArguments = cArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues and storeValues""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = tuple(calculate_cArgs( pyArgs )) cArguments = cArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return result return wrapperCall else: # null cConverters if cResolvers: if storeValues: if returnValues: def wrapperCall( *args ): """Wrapper with all possible operations""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = pyArgs cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = pyArgs cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return result return wrapperCall else: # null storeValues if returnValues: def wrapperCall( *args ): """Wrapper with all save storeValues""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = pyArgs cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues and storeValues""" pyArgs = tuple( calculate_pyArgs( args )) cArgs = pyArgs cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return result return wrapperCall else: # null cResolvers if storeValues: if returnValues: def wrapperCall( *args ): """Wrapper with all possible operations""" pyArgs = tuple( calculate_pyArgs( args )) cArguments = pyArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArguments err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArguments, ) return returnValues( result, self, pyArgs, cArguments, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues""" pyArgs = tuple( calculate_pyArgs( args )) cArguments = pyArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArguments err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArguments, ) return result return wrapperCall else: # null storeValues if returnValues: def wrapperCall( *args ): """Wrapper with all save storeValues""" pyArgs = tuple( calculate_pyArgs( args )) cArguments = pyArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArguments err.pyArgs = pyArgs raise err return returnValues( result, self, pyArgs, cArguments, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues and storeValues""" pyArgs = tuple( calculate_pyArgs( args )) cArguments = pyArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArguments err.pyArgs = pyArgs raise err return result return wrapperCall else: # null pyConverters if cConverters: if cResolvers: if storeValues: if returnValues: def wrapperCall( *args ): """Wrapper with all possible operations""" pyArgs = args cArgs = [] for (index,converter) in enumerate( cConverters ): # move enumerate out... if not hasattr(converter,'__call__'): cArgs.append( converter ) else: try: cArgs.append( converter( pyArgs, index, self ) ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, ) raise cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues""" pyArgs = args cArgs = [] for (index,converter) in enumerate( cConverters ): # move enumerate out... if not hasattr(converter,'__call__'): cArgs.append( converter ) else: try: cArgs.append( converter( pyArgs, index, self ) ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, ) raise cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return result return wrapperCall else: # null storeValues if returnValues: def wrapperCall( *args ): """Wrapper with all save storeValues""" pyArgs = args cArgs = [] for (index,converter) in enumerate( cConverters ): # move enumerate out... if not hasattr(converter,'__call__'): cArgs.append( converter ) else: try: cArgs.append( converter( pyArgs, index, self ) ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, ) raise cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues and storeValues""" pyArgs = args cArgs = [] for (index,converter) in enumerate( cConverters ): # move enumerate out... if not hasattr(converter,'__call__'): cArgs.append( converter ) else: try: cArgs.append( converter( pyArgs, index, self ) ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, ) raise cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return result return wrapperCall else: # null cResolvers if storeValues: if returnValues: def wrapperCall( *args ): """Wrapper with all possible operations""" pyArgs = args cArgs = [] for (index,converter) in enumerate( cConverters ): # move enumerate out... if not hasattr(converter,'__call__'): cArgs.append( converter ) else: try: cArgs.append( converter( pyArgs, index, self ) ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, ) raise cArguments = cArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues""" pyArgs = args cArgs = [] for (index,converter) in enumerate( cConverters ): # move enumerate out... if not hasattr(converter,'__call__'): cArgs.append( converter ) else: try: cArgs.append( converter( pyArgs, index, self ) ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, ) raise cArguments = cArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) return result return wrapperCall else: # null storeValues if returnValues: def wrapperCall( *args ): """Wrapper with all save storeValues""" pyArgs = args cArgs = [] for (index,converter) in enumerate( cConverters ): # move enumerate out... if not hasattr(converter,'__call__'): cArgs.append( converter ) else: try: cArgs.append( converter( pyArgs, index, self ) ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, ) raise cArguments = cArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return returnValues( result, self, pyArgs, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues and storeValues""" pyArgs = args cArgs = [] for (index,converter) in enumerate( cConverters ): # move enumerate out... if not hasattr(converter,'__call__'): cArgs.append( converter ) else: try: cArgs.append( converter( pyArgs, index, self ) ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, ) raise cArguments = cArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err return result return wrapperCall else: # null cConverters if cResolvers: if storeValues: if returnValues: def wrapperCall( *args ): """Wrapper with all possible operations""" cArgs = args cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = args raise err # handle storage of persistent argument values... storeValues( result, self, args, cArgs, ) return returnValues( result, self, args, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues""" cArgs = args cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = args raise err # handle storage of persistent argument values... storeValues( result, self, args, cArgs, ) return result return wrapperCall else: # null storeValues if returnValues: def wrapperCall( *args ): """Wrapper with all save storeValues""" cArgs = args cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = args raise err return returnValues( result, self, args, cArgs, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues and storeValues""" cArgs = args cArguments = tuple(calculate_cArguments( cArgs )) try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = args raise err return result return wrapperCall else: # null cResolvers if storeValues: if returnValues: def wrapperCall( *args ): """Wrapper with all possible operations""" cArguments = args try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArguments err.pyArgs = args raise err # handle storage of persistent argument values... storeValues( result, self, args, cArguments, ) return returnValues( result, self, args, cArguments, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues""" cArguments = args try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArguments err.pyArgs = args raise err # handle storage of persistent argument values... storeValues( result, self, args, cArguments, ) return result return wrapperCall else: # null storeValues if returnValues: def wrapperCall( *args ): """Wrapper with all save storeValues""" cArguments = args try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArguments err.pyArgs = args raise err return returnValues( result, self, args, cArguments, ) return wrapperCall else: def wrapperCall( *args ): """Wrapper with all save returnValues and storeValues""" cArguments = args try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArguments err.pyArgs = args raise err return result return wrapperCall # def __call__( self, *args, **named ): # """Finalise the wrapper before calling it""" # try: # return self._finalCall( *args, **named ) # except AttributeError, err: # return self.finalise()( *args, **named ) def _unspecialised__call__( self, *args ): """Expand arguments, call the function, store values and check errors""" pyConverters = getattr( self, 'pyConverters', None ) if pyConverters: if len(pyConverters) != len(args): raise ValueError( """%s requires %r arguments (%s), received %s: %r"""%( self.wrappedOperation.__name__, len(pyConverters), ", ".join( self.pyConverterNames ), len(args), args ) ) pyArgs = [] for (converter,arg) in zip(pyConverters,args): if converter is None: pyArgs.append( arg ) else: pyArgs.append( converter(arg, self, args) ) else: pyArgs = args cConverters = getattr( self, 'cConverters', None ) if cConverters: cArgs = [] for (index,converter) in enumerate( cConverters ): if not hasattr(converter,'__call__'): cArgs.append( converter ) else: try: cArgs.append( converter( pyArgs, index, self ) ) except Exception, err: if hasattr( err, 'args' ): err.args += ( """Failure in cConverter %r"""%(converter), pyArgs, index, self, ) raise else: cArgs = pyArgs cResolvers = getattr( self, 'cResolvers', None ) if cResolvers: cArguments = [] for (converter, value) in zip( cResolvers, cArgs ): if converter is None: cArguments.append( value ) else: cArguments.append( converter( value ) ) else: cArguments = cArgs try: result = self.wrappedOperation( *cArguments ) except ctypes.ArgumentError, err: err.args = err.args + (cArguments,) raise err except error.GLError, err: err.cArgs = cArgs err.pyArgs = pyArgs raise err storeValues = getattr( self, 'storeValues', None ) if storeValues is not None: # handle storage of persistent argument values... storeValues( result, self, pyArgs, cArgs, ) returnValues = getattr( self, 'returnValues', None ) if returnValues is not None: return returnValues( result, self, pyArgs, cArgs, ) else: return result def wrapper( wrappedOperation ): """Create a Wrapper sub-class instance for the given wrappedOperation The purpose of this function is to create a subclass of Wrapper which has the __doc__ and __name__ of the wrappedOperation so that the instance of the wrapper will show up as by default, and will have the docstring available naturally in pydoc and the like. """ if isinstance( wrappedOperation, Wrapper ): return wrappedOperation dict = { '__doc__': wrappedOperation.__doc__, '__slots__': ('wrappedOperation', ), } cls = type( wrappedOperation.__name__, (Wrapper,), dict ) if hasattr( wrappedOperation, '__module__' ): cls.__module__ = wrappedOperation.__module__ instance = cls(wrappedOperation) return instance PyOpenGL-3.0.2/OpenGL/constants.py0000644000175000001440000001200612025001653017620 0ustar mcfletchusers00000000000000"""OpenGL-wide constant types (not OpenGL.GL-specific) These are basically the fundamental data-types that OpenGL uses (note, doesn't include the OpenGL-ES types!) """ import ctypes from OpenGL.constant import Constant GL_FALSE = Constant( 'GL_FALSE', 0x0 ) GL_TRUE = Constant( 'GL_TRUE', 0x1 ) GL_BYTE = Constant( 'GL_BYTE', 0x1400 ) GL_UNSIGNED_BYTE = Constant( 'GL_UNSIGNED_BYTE', 0x1401 ) GL_SHORT = Constant( 'GL_SHORT', 0x1402 ) GL_UNSIGNED_SHORT = Constant( 'GL_UNSIGNED_SHORT', 0x1403 ) GL_INT = Constant( 'GL_INT', 0x1404 ) GL_UNSIGNED_INT = Constant( 'GL_UNSIGNED_INT', 0x1405 ) GL_UNSIGNED_INT64 = Constant( 'GL_UNSIGNED_INT64_AMD', 0x8BC2 ) GL_FLOAT = Constant( 'GL_FLOAT', 0x1406 ) GL_DOUBLE = Constant( 'GL_DOUBLE', 0x140a ) GL_CHAR = str GL_HALF_NV = Constant( 'GL_HALF_NV', 0x1401 ) GL_VOID_P = object() ctypes_version = [int(i) for i in ctypes.__version__.split('.')[:3]] # Basic OpenGL data-types as ctypes declarations... def _defineType( name, baseType, convertFunc = long ): from OpenGL import _configflags do_wrapping = ( _configflags.ALLOW_NUMPY_SCALARS or # explicitly require (( # or we are using Python 2.5.x ctypes which doesn't support uint type numpy scalars ctypes_version < [1,1,0] and baseType in (ctypes.c_uint,ctypes.c_uint64,ctypes.c_ulong,ctypes.c_ushort) ) or ( # or we are using Python 2.5.x (x < 2) ctypes which doesn't support any numpy int scalars ctypes_version < [1,0,2] and baseType in (ctypes.c_int,ctypes.c_int64,ctypes.c_long,ctypes.c_short) )) ) if do_wrapping: original = baseType.from_param if not getattr( original, 'from_param_numpy_scalar', False ): def from_param( x, typeCode=None ): try: return original( x ) except TypeError, err: try: return original( convertFunc(x) ) except TypeError, err2: raise err from_param = staticmethod( from_param ) setattr( baseType, 'from_param', from_param ) baseType.from_param_numpy_scalar = True return baseType else: return baseType GLvoid = None GLboolean = _defineType( 'GLboolean', ctypes.c_ubyte, bool ) GLenum = _defineType( 'GLenum', ctypes.c_uint ) GLfloat = _defineType( 'GLfloat', ctypes.c_float, float ) GLfloat_2 = GLfloat * 2 GLfloat_3 = GLfloat * 3 GLfloat_4 = GLfloat * 4 GLdouble = _defineType( 'GLdouble', ctypes.c_double, float ) GLdouble_2 = GLdouble * 2 GLdouble_3 = GLdouble * 3 GLdouble_4 = GLdouble * 4 GLbyte = ctypes.c_byte GLshort = _defineType( 'GLshort', ctypes.c_short, int ) GLint = _defineType( 'GLint', ctypes.c_int, int ) GLuint = _defineType( 'GLuint', ctypes.c_uint, long ) GLsizei = _defineType( 'GLsizei', ctypes.c_int, int ) GLubyte = ctypes.c_ubyte GLubyte_3 = GLubyte * 3 GLushort = _defineType( 'GLushort', ctypes.c_ushort, int ) GLhandleARB = _defineType( 'GLhandleARB', ctypes.c_uint, long ) GLhandle = _defineType( 'GLhandle', ctypes.c_uint, long ) GLchar = GLcharARB = ctypes.c_char GLbitfield = _defineType( 'GLbitfield', ctypes.c_uint, long ) GLclampd = _defineType( 'GLclampd', ctypes.c_double, float ) GLclampf = _defineType( 'GLclampf', ctypes.c_float, float ) GLuint64 = GLuint64EXT = _defineType('GLuint64', ctypes.c_uint64, long ) GLint64 = GLint64EXT = _defineType('GLint64', ctypes.c_int64, long ) # ptrdiff_t, actually... GLsizeiptrARB = GLsizeiptr = GLsizei GLvdpauSurfaceNV = GLintptrARB = GLintptr = GLint size_t = ctypes.c_ulong void = None GLhalfNV = GLhalfARB = ctypes.c_ushort # GL.ARB.sync extension, GLsync is an opaque pointer to a struct # in the extensions header, basically just a "token" that can be # passed to the various operations... class _GLsync( ctypes.Structure ): """Opaque structure definition to fool ctypes into treating us as a real structure""" GLsync = ctypes.POINTER( _GLsync ) # ctypes.c_void_p does *not* work as a return type... GLvoidp = ctypes.c_void_p ARRAY_TYPE_TO_CONSTANT = [ ('GLclampd', GL_DOUBLE), ('GLclampf', GL_FLOAT), ('GLfloat', GL_FLOAT), ('GLdouble', GL_DOUBLE), ('GLbyte', GL_BYTE), ('GLshort', GL_SHORT), ('GLint', GL_INT), ('GLubyte', GL_UNSIGNED_BYTE), ('GLushort', GL_UNSIGNED_SHORT), ('GLuint', GL_UNSIGNED_INT), ('GLenum', GL_UNSIGNED_INT), ] from OpenGL.platform import PLATFORM as _p _FUNCTION_TYPE = _p.functionTypeFor(_p.GL) GLDEBUGPROCARB = GLDEBUGPROC = _FUNCTION_TYPE( void, GLenum, # source, GLenum, #type, GLuint, # id GLenum, # severity GLsizei, # length ctypes.c_char_p, # message GLvoidp, # userParam ) class _cl_context( ctypes.Structure ): """Placeholder/empty structure for _cl_context""" class _cl_event( ctypes.Structure ): """Placeholder/empty structure for _cl_event""" GLDEBUGPROCAMD = _FUNCTION_TYPE( void, GLuint,# id, GLenum,# category, GLenum,# severity, GLsizei,# length, ctypes.c_char_p,# message, GLvoidp,# userParam ) PyOpenGL-3.0.2/OpenGL/GLE/0000755000175000001440000000000012032640120015636 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GLE/__init__.py0000644000175000001440000000025612025001653017756 0ustar mcfletchusers00000000000000"""GL Extrusion Routine Library (GLE) wrapper for OpenGL-ctypes""" from OpenGL.raw.GLE import * from OpenGL.raw.GLE.annotations import * from OpenGL.GLE.exceptional import *PyOpenGL-3.0.2/OpenGL/GLE/exceptional.py0000644000175000001440000000321212025001653020525 0ustar mcfletchusers00000000000000"""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 )PyOpenGL-3.0.2/OpenGL/converters.py0000644000175000001440000002713212025001653020004 0ustar mcfletchusers00000000000000"""Implementations for common converter types""" import ctypes,logging from OpenGL._bytes import bytes,as_8_bit log = logging.getLogger( 'OpenGL.converters' ) class Converter( object ): """Base class for Converter types Converter objects are callable objects used with the OpenGL.wrapper.Wrapper class to simplify the wrapping of functions by collecting commonly used functionality into a reusable function. Each Converter has two (class) attributes: argNames -- list of argument names for initialisation indexLookups -- set of (indexname, argName,methodName) values to lookup on wrapper. These allow us to use argument-name references to refer to which arguments to use when processing (prevents the need to revise pointers when we change the API for a function). Converters can be any of the Wrapper API helper functions, so the callable interface can vary among Converter classes. """ argNames = ( ) indexLookups = ( ) def __init__( self, *args, **named ): """Store arguments in attributes *args -- mapped to self.argNames in order to set attributes **named -- mapped to self.argNames by name to set attributes """ argNames = list(self.argNames) for a in self.argNames: if a in named: setattr( self, a, named[a] ) argNames.remove( a ) for a,value in zip( argNames, args ): setattr( self, a, value ) def finalise( self, wrapper ): """Look up our indices (where appropriate)""" for indexname,argName,methodName in self.indexLookups: setattr( self, indexname, getattr(wrapper,methodName)(getattr( self, argName )) ) # Definitions of the abstract interfaces... class PyConverter( Converter ): """Converter sub-class for use in Wrapper.pyConverters This class just defines the interface for a pyConverter-style Converter object """ def __call__( self, incoming, function, arguments ): """Convert incoming argument into compatable data-types incoming -- the Python argument for this parameter function -- the wrapper.Wrapper class we are supporting arguments -- the complete set of arguments passed to the function """ raise NotImplemented( """%s class doesn't implement __call__"""%( self.__class__.__name__, )) class CConverter( Converter ): """Converter sub-class for use in Wrapper.cConverters This class just defines the interface for a cConverter-style Converter object """ def __call__( self, pyArgs, index, baseOperation ): """Calculate C-compatible Python object from Python arguments pyArgs -- set of Python argument objects converted by pyConverters from the incoming arguments index -- our index in baseOperation.cConverters baseOperation -- the Wrapper object which we are supporting """ raise NotImplemented( """%s class doesn't implement __call__"""%( self.__class__.__name__, )) class ReturnValues( Converter ): """Converter sub-class for use as Wrapper.returnValues This class just defines the interface for a returnValues-style Converter object """ def __call__( self, result, baseOperation, pyArgs, cArgs ): """Return a final value to the caller result -- the raw ctypes result value baseOperation -- the Wrapper object which we are supporting pyArgs -- the set of Python arguments produced by pyConverters cArgs -- the set of C-compatible arguments produced by CConverter return the Python object for the final result """ raise NotImplemented( """%s class doesn't implement __call__"""%( self.__class__.__name__, )) # Now the concrete classes... from OpenGL import acceleratesupport CallFuncPyConverter = None if acceleratesupport.ACCELERATE_AVAILABLE: try: from OpenGL_accelerate.wrapper import ( CallFuncPyConverter, DefaultCConverter, getPyArgsName, ) from OpenGL_accelerate.arraydatatype import ( Output,SizedOutput ) from OpenGL_accelerate.wrapper import ( returnCArgument, returnPyArgument, ) except ImportError, err: log.warn( "Unable to load converters accelerators (wrapper, arraydatatype) from OpenGL_accelerate" ) CallFuncPyConverter = None if CallFuncPyConverter is None: class CallFuncPyConverter( PyConverter ): """PyConverter that takes a callable and calls it on incoming""" def __init__( self, function ): """Store the function""" self.function = function def __call__( self, incoming, function, argument ): """Call our function on incoming""" return self.function( incoming ) class DefaultCConverter( CConverter ): """NULL or Default CConverter, returns same-named Python argument Used primarily to allow for specifying a converter that explicitly says "use the default behaviour". This is *not* a finalise-ing converter, it is passed in the index explicitly and just retrieves that index from pyArgs when called. Raises informative errors if the index cannot be resolved in pyArgs """ def __init__( self, index ): """Just store index for future access""" self.index = index def __call__( self, pyArgs, index, wrapper ): """Return pyArgs[self.index] or raise a ValueError""" try: return pyArgs[ self.index ] except IndexError, err: raise ValueError( """Expected parameter index %r, but pyArgs only length %s"""%( self.index, len(pyArgs ) )) class getPyArgsName( CConverter ): """CConverter returning named Python argument Intended for use in cConverters, the function returned retrieves the named pyArg and returns it when called. """ argNames = ('name',) indexLookups = [ ('index','name', 'pyArgIndex' ), ] __slots__ = ( 'index', 'name') def __call__( self, pyArgs, index, baseOperation ): """Return pyArgs[ self.index ]""" try: return pyArgs[ self.index ] except AttributeError, err: raise RuntimeError( """"Did not resolve parameter index for %r"""%(self.name)) class Output( CConverter ): """CConverter generating static-size typed output arrays Produces an output array of given type (arrayType) and size using self.lookup() to determine the size of the array to be produced, where the lookup function is passed as an initialisation argument. Provides also: oldStyleReturn( ... ) for use in the default case of PyOpenGL compatability mode, where result arrays of size (1,) are returned as scalar values. """ argNames = ('name','size','arrayType' ) indexLookups = [ ('outIndex','name', 'cArgIndex' ), ] __slots__ = ('index','size','arrayType','outIndex','inIndex') def __call__( self, pyArgs, index, baseOperation ): """Return pyArgs[ self.index ]""" return self.arrayType.zeros( self.getSize(pyArgs) ) def getSize( self, pyArgs ): """Retrieve the array size for this argument""" return self.size def oldStyleReturn( self, result, baseOperation, pyArgs, cArgs ): """Retrieve cArgs[ self.index ]""" result = cArgs[ self.outIndex ] thisSize = self.getSize(pyArgs) if thisSize == (1,): try: return result[0] except TypeError, err: return result else: return result class SizedOutput( Output ): """Output generating dynamically-sized typed output arrays Takes an extra parameter "specifier", which is the name of a Python argument to be passed to the lookup function in order to determine the appropriate size for the output array. """ argNames = ('name','specifier','lookup','arrayType' ) indexLookups = [ ('outIndex','name', 'cArgIndex' ), ('index','specifier', 'pyArgIndex' ), ] __slots__ = ('index','specifier','lookup','arrayType') def getSize( self, pyArgs ): """Retrieve the array size for this argument""" try: specifier = pyArgs[ self.index ] except AttributeError, err: raise RuntimeError( """"Did not resolve parameter index for %r"""%(self.name)) else: try: return self.lookup( specifier ) except KeyError, err: raise KeyError( """Unknown specifier %s"""%( specifier )) class returnCArgument( ReturnValues ): """ReturnValues returning the named cArgs value""" argNames = ('name',) indexLookups = [ ('index','name', 'cArgIndex' ), ] __slots__ = ( 'index', 'name' ) def __call__( self, result, baseOperation, pyArgs, cArgs ): """Retrieve cArgs[ self.index ]""" return cArgs[self.index] class returnPyArgument( ReturnValues ): """ReturnValues returning the named pyArgs value""" argNames = ('name',) indexLookups = [ ('index','name', 'pyArgIndex' ), ] __slots__ = ( 'index', 'name' ) def __call__( self, result, baseOperation, pyArgs, cArgs ): """Retrieve pyArgs[ self.index ]""" return pyArgs[self.index] class StringLengths( CConverter ): """CConverter for processing array-of-pointers-to-strings data-type Converter is a CConverter for the array-of-lengths for a array-of-pointers-to-strings data-type used to pass a set of code fragments to the GLSL compiler. Provides also: stringArray -- PyConverter callable ensuring list-of-strings format for the python argument stringArrayForC -- CResolver converting the array to POINTER(c_char_p) format for passing to C totalCount -- CConverter callable giving count of string pointers (that is, length of the pointer array) """ argNames = ('name',) indexLookups = [ ('index','name', 'pyArgIndex' ), ] __slots__ = () def __call__( self, pyArgs, index, baseOperation ): """Get array of length integers for string contents""" from OpenGL import arrays,constants tmp = [len(x) for x in pyArgs[self.index]] a_type = constants.GLint * len(tmp) return a_type( *tmp ) def totalCount( self, pyArgs, index, baseOperation ): """Get array of length integers for string contents""" return len(pyArgs[self.index]) def stringArray( self, arg, baseOperation, args ): """Create basic array-of-strings object from pyArg""" if isinstance( arg, bytes ): arg = [arg] value = [as_8_bit(x) for x in arg] return value def stringArrayForC( self, strings ): """Create a ctypes pointer to char-pointer set""" from OpenGL import arrays result = (ctypes.c_char_p * len(strings))() for i,s in enumerate(strings): result[i] = ctypes.cast( arrays.GLcharARBArray.dataPointer(s), ctypes.c_char_p, ) return result PyOpenGL-3.0.2/OpenGL/latebind.py0000644000175000001440000000451012025001653017367 0ustar mcfletchusers00000000000000"""Late-bound base-class (with acceleration)""" from OpenGL import acceleratesupport LateBind = Curry = None if acceleratesupport.ACCELERATE_AVAILABLE: try: from OpenGL_accelerate.latebind import LateBind, Curry except ImportError, err: pass if LateBind is None: class LateBind(object): """Provides a __call__ which dispatches to self._finalCall When called without self._finalCall() makes a call to self.finalise() and then calls self._finalCall() """ _finalCall = None def setFinalCall( self, finalCall ): """Set our finalCall to the callable object given""" self._finalCall = finalCall def getFinalCall( self ): """Retrieve and/or bind and retrieve final call""" if not self._finalCall: self._finalCall = self.finalise() return self._finalCall def finalise( self ): """Finalise our target to our final callable object return final callable """ def __call__( self, *args, **named ): """Call self._finalCall, calling finalise() first if not already called There's actually *no* reason to unpack and repack the arguments, but unfortunately I don't know of a Cython syntax to specify that. """ try: return self._finalCall( *args, **named ) except (TypeError,AttributeError), err: if self._finalCall is None: self._finalCall = self.finalise() return self._finalCall( *args, **named ) if Curry is None: class Curry(object): """Provides a simple Curry which can bind (only) the first element This is used by lazywrapper, which explains the weird naming of the two attributes... """ wrapperFunction = None baseFunction = None def __init__( self, wrapperFunction, baseFunction ): """Stores self.wrapperFunction and self.baseFunction""" self.baseFunction = baseFunction self.wrapperFunction = wrapperFunction def __call__( self, *args, **named ): """returns self.wrapperFunction( self.baseFunction, *args, **named )""" return self.wrapperFunction( self.baseFunction, *args, **named ) PyOpenGL-3.0.2/OpenGL/logs.py0000644000175000001440000000703012025001653016551 0ustar mcfletchusers00000000000000"""Fix missing-API problems in logging module (circa Python 2.3) Adds constants to the log objects. Adds getException(err) to log objects to retrieve formatted exception or err if traceback not available. """ try: from cStringIO import StringIO except ImportError, err: from StringIO import StringIO import traceback, logging getLog = logging.getLogger from OpenGL._configflags import ERROR_LOGGING, FULL_LOGGING if not hasattr( traceback, 'format_exc' ): # Python 2.3 and below... do we care any more? def format_exc( limit ): file = StringIO() try: traceback.print_exc( limit=10, file = file ) exception = file.getvalue() finally: file.close() return exception else: format_exc = traceback.format_exc def getException(error): """Get formatted traceback from exception""" try: return format_exc( limit=10 ) except Exception, err: return str( error ) logging.Logger.getException = staticmethod( getException ) logging.Logger.err = logging.Logger.error logging.Logger.DEBUG = logging.DEBUG logging.Logger.WARN = logging.WARN logging.Logger.INFO = logging.INFO logging.Logger.ERR = logging.Logger.ERROR = logging.ERROR if FULL_LOGGING: getLog( 'OpenGL.calltrace' ).setLevel( logging.INFO ) class _LoggedFunction( object ): """Proxy that overrides __call__ to log arguments""" def __init__( self, base, log ): self.__dict__[''] = base self.__dict__['log'] = log def __setattr__( self, key, value ): if key != '': setattr( self.__dict__[''], key, value ) else: self.__dict__[''] = value def __getattr__( self, key ): if key == '': return self.__dict__[''] else: return getattr( self.__dict__[''], key ) class _FullLoggedFunction( _LoggedFunction ): """Fully-logged function wrapper (logs all call params to OpenGL.calltrace)""" _callTrace = getLog( 'OpenGL.calltrace' ) def __call__( self, *args, **named ): argRepr = [] function = getattr( self, '' ) for arg in args: argRepr.append( repr(arg) ) for key,value in named.items(): argRepr.append( '%s = %s'%( key,repr(value)) ) argRepr = ",".join( argRepr ) self._callTrace.info( '%s( %s )', function.__name__, argRepr ) try: return function( *args, **named ) except Exception, err: self.log.warn( """Failure on %s: %s""", function.__name__, self.log.getException( err ) ) raise class _ErrorLoggedFunction ( _LoggedFunction ): """On-error-logged function wrapper""" def __call__( self, *args, **named ): function = getattr( self, '' ) try: return function( *args, **named ) except Exception, err: self.log.warn( """Failure on %s: %s""", function.__name__, self.log.getException( err ) ) raise def logOnFail( function, log ): """Produce possible log-wrapped version of function function -- callable object to be wrapped log -- the log to which to log information Uses ERROR_LOGGING and FULL_LOGGING to determine whether/how to wrap the function. """ if ERROR_LOGGING or FULL_LOGGING: if FULL_LOGGING: loggedFunction = _FullLoggedFunction( function, log ) else: loggedFunction = _ErrorLoggedFunction( function, log ) return loggedFunction else: return function PyOpenGL-3.0.2/OpenGL/GLU/0000755000175000001440000000000012032640120015656 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GLU/tess.py0000644000175000001440000002200112025001653017205 0ustar mcfletchusers00000000000000"""Wrapper/Implementation of the GLU tessellator objects for PyOpenGL""" from OpenGL.raw import GLU as simple from OpenGL.platform import GLU,createBaseFunction from OpenGL.GLU import glustruct from OpenGL import arrays, constants from OpenGL.platform import PLATFORM from OpenGL.lazywrapper import lazy import ctypes class GLUtesselator( glustruct.GLUStruct, simple.GLUtesselator): """Implementation class for GLUTessellator structures in OpenGL-ctypes""" FUNCTION_TYPE = PLATFORM.functionTypeFor(PLATFORM.GLU) CALLBACK_TYPES = { # mapping from "which" GLU enumeration to a ctypes function type simple.GLU_TESS_BEGIN: FUNCTION_TYPE( None, simple.GLenum ), simple.GLU_TESS_BEGIN_DATA: FUNCTION_TYPE( None, simple.GLenum, ctypes.c_void_p ), simple.GLU_TESS_EDGE_FLAG: FUNCTION_TYPE( None, simple.GLboolean), simple.GLU_TESS_EDGE_FLAG_DATA: FUNCTION_TYPE( None, simple.GLboolean, ctypes.c_void_p ), simple.GLU_TESS_VERTEX: FUNCTION_TYPE( None, ctypes.c_void_p ), simple.GLU_TESS_VERTEX_DATA: FUNCTION_TYPE( None, ctypes.c_void_p, ctypes.c_void_p ), simple.GLU_TESS_END: FUNCTION_TYPE( None ), simple.GLU_TESS_END_DATA: FUNCTION_TYPE( None, ctypes.c_void_p), simple.GLU_TESS_COMBINE: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLdouble), ctypes.POINTER(ctypes.c_void_p), ctypes.POINTER(simple.GLfloat), ctypes.POINTER(ctypes.c_void_p) ), simple.GLU_TESS_COMBINE_DATA: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLdouble), ctypes.POINTER(ctypes.c_void_p), ctypes.POINTER(simple.GLfloat), ctypes.POINTER(ctypes.c_void_p), ctypes.c_void_p, ), simple.GLU_TESS_ERROR: FUNCTION_TYPE( None, simple.GLenum), simple.GLU_TESS_ERROR_DATA: FUNCTION_TYPE( None, simple.GLenum, ctypes.c_void_p ), simple.GLU_ERROR : FUNCTION_TYPE( None, simple.GLenum ) } WRAPPER_METHODS = { simple.GLU_TESS_BEGIN_DATA: 'dataWrapper', simple.GLU_TESS_EDGE_FLAG_DATA: 'dataWrapper', simple.GLU_TESS_VERTEX: 'vertexWrapper', simple.GLU_TESS_VERTEX_DATA: 'vertexWrapper', simple.GLU_TESS_END_DATA: 'dataWrapper', simple.GLU_TESS_COMBINE: 'combineWrapper', simple.GLU_TESS_COMBINE_DATA: 'combineWrapper', simple.GLU_TESS_ERROR_DATA: 'dataWrapper', } def gluTessVertex( self, location, data=None ): """Add a vertex to this tessellator, storing data for later lookup""" vertexCache = getattr( self, 'vertexCache', None ) if vertexCache is None: self.vertexCache = [] vertexCache = self.vertexCache location = arrays.GLdoubleArray.asArray( location, constants.GL_DOUBLE ) if arrays.GLdoubleArray.arraySize( location ) != 3: raise ValueError( """Require 3 doubles for array location, got: %s"""%(location,)) oorValue = self.noteObject(data) vp = ctypes.c_void_p( oorValue ) self.vertexCache.append( location ) return gluTessVertexBase( self, location, vp ) def gluTessBeginPolygon( self, data ): """Note the object pointer to return it as a Python object""" return simple.gluTessBeginPolygon( self, ctypes.c_void_p(self.noteObject( data )) ) def combineWrapper( self, function ): """Wrap a Python function with ctypes-compatible wrapper for combine callback For a Python combine callback, the signature looks like this: def combine( GLdouble coords[3], void *vertex_data[4], GLfloat weight[4] ): return data While the C signature looks like this: void combine( GLdouble coords[3], void *vertex_data[4], GLfloat weight[4], void **outData ) """ if (function is not None) and (not hasattr( function,'__call__' )): raise TypeError( """Require a callable callback, got: %s"""%(function,)) def wrap( coords, vertex_data, weight, outData, *args ): """The run-time wrapper around the function""" coords = self.ptrAsArray( coords, 3, arrays.GLdoubleArray ) weight = self.ptrAsArray( weight, 4, arrays.GLfloatArray ) # find the original python objects for vertex data vertex_data = [ self.originalObject( vertex_data[i] ) for i in range(4) ] args = tuple( [ self.originalObject( x ) for x in args ] ) try: result = function( coords, vertex_data, weight, *args ) except Exception, err: raise err.__class__( """Failure during combine callback %r with args( %s,%s,%s,*%s):\n%s"""%( function, coords, vertex_data, weight, args, str(err), ) ) outP = ctypes.c_void_p(self.noteObject(result)) outData.contents.value = outP.value return None return wrap def dataWrapper( self, function ): """Wrap a function which only has the one data-pointer as last arg""" if (function is not None) and (not hasattr( function,'__call__' )): raise TypeError( """Require a callable callback, got: %s"""%(function,)) def wrap( *args ): """Just return the original object for polygon_data""" args = args[:-1] + ( self.originalObject(args[-1]), ) try: return function( *args ) except Exception, err: err.args += (function,args) raise return wrap def dataWrapper2( self, function ): """Wrap a function which has two data-pointers as last args""" if (function is not None) and (not hasattr( function,'__call__' )): raise TypeError( """Require a callable callback, got: %s"""%(function,)) def wrap( *args ): """Just return the original object for polygon_data""" args = args[:-2] + ( self.originalObject(args[-2]), self.originalObject(args[-1]), ) try: return function( *args ) except Exception, err: err.args += (function,args) raise return wrap def vertexWrapper( self, function ): """Converts a vertex-pointer into an OOR vertex for processing""" if (function is not None) and (not hasattr( function,'__call__' )): raise TypeError( """Require a callable callback, got: %s"""%(function,)) def wrap( vertex, data=None ): """Just return the original object for polygon_data""" vertex = self.originalObject(vertex) try: if data is not None: data = self.originalObject(data) return function( vertex, data ) else: return function( vertex ) except Exception, err: err.args += (function,(vertex,data)) raise return wrap GLUtesselator.CALLBACK_FUNCTION_REGISTRARS = dict([ (c,createBaseFunction( 'gluTessCallback', dll=GLU, resultType=None, argTypes=[ctypes.POINTER(GLUtesselator), simple.GLenum,funcType], doc='gluTessCallback( POINTER(GLUtesselator)(tess), GLenum(which), _GLUfuncptr(CallBackFunc) ) -> None', argNames=('tess', 'which', 'CallBackFunc'), )) for (c,funcType) in GLUtesselator.CALLBACK_TYPES.items() ]) try: del c, funcType except NameError, err: pass def gluTessCallback( tess, which, function ): """Set a given gluTessellator callback for the given tessellator""" return tess.addCallback( which, function ) def gluTessBeginPolygon( tess, data ): """Start definition of polygon in the tessellator""" return tess.gluTessBeginPolygon( data ) def gluTessVertex( tess, location, data=None ): """Add a vertex to the tessellator's current polygon""" return tess.gluTessVertex( location, data ) # /usr/include/GL/glu.h 293 @lazy( createBaseFunction( 'gluNewTess', dll=GLU, resultType=ctypes.POINTER(GLUtesselator), doc='gluNewTess( ) -> POINTER(GLUtesselator)', ) ) def gluNewTess( baseFunction ): """Get a new tessellator object (just unpacks the pointer for you)""" return baseFunction()[0] @lazy( simple.gluGetTessProperty ) def gluGetTessProperty( baseFunction, tess, which, data=None ): """Retrieve single double for a tessellator property""" if data is None: data = simple.GLdouble( 0.0 ) baseFunction( tess, which, data ) return data.value else: return baseFunction( tess, which, data ) gluTessVertexBase = arrays.setInputArraySizeType( simple.gluTessVertex, 3, arrays.GLdoubleArray, 'location', ) __all__ = ( 'gluNewTess', 'gluGetTessProperty', 'gluTessBeginPolygon', 'gluTessCallback', 'gluTessVertex', ) PyOpenGL-3.0.2/OpenGL/GLU/EXT/0000755000175000001440000000000012032640120016316 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GLU/EXT/object_space_tess.py0000644000175000001440000000077412025001653022363 0ustar mcfletchusers00000000000000'''GLU extension EXT.object_space_tess ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper import ctypes GLU_OBJECT_PARAMETRIC_ERROR_EXT = constant.Constant( 'GLU_OBJECT_PARAMETRIC_ERROR_EXT', 100208 ) GLU_OBJECT_PATH_LENGTH_EXT = constant.Constant( 'GLU_OBJECT_PATH_LENGTH_EXT', 100209) def gluInitObjectSpaceTessEXT(): '''Return boolean indicating whether this module is available''' return extensions.hasGLUExtension( 'GLU_EXT_object_space_tess' )PyOpenGL-3.0.2/OpenGL/GLU/EXT/__init__.py0000644000175000001440000000000012025001653020421 0ustar mcfletchusers00000000000000PyOpenGL-3.0.2/OpenGL/GLU/EXT/nurbs_tessellator.py0000644000175000001440000000211512025001653022445 0ustar mcfletchusers00000000000000'''GLU extension EXT.nurbs_tessellator ''' from OpenGL import extensions from OpenGL.raw.GLU import constants GLU_NURBS_BEGIN_EXT = constants.GLU_NURBS_BEGIN_EXT GLU_NURBS_VERTEX_EXT = constants.GLU_NURBS_VERTEX_EXT GLU_NURBS_COLOR_EXT = constants.GLU_NURBS_COLOR_EXT GLU_NURBS_TEX_COORD_EXT = constants.GLU_NURBS_TEX_COORD_EXT GLU_NURBS_END_EXT = constants.GLU_NURBS_END_EXT GLU_NURBS_BEGIN_DATA_EXT = constants.GLU_NURBS_BEGIN_DATA_EXT GLU_NURBS_VERTEX_DATA_EXT = constants.GLU_NURBS_VERTEX_DATA_EXT GLU_NURBS_NORMAL_DATA_EXT = constants.GLU_NURBS_NORMAL_DATA_EXT GLU_NURBS_COLOR_DATA_EXT = constants.GLU_NURBS_COLOR_DATA_EXT GLU_NURBS_TEX_COORD_DATA_EXT = constants.GLU_NURBS_TEX_COORD_DATA_EXT GLU_NURBS_END_DATA_EXT = constants.GLU_NURBS_END_DATA_EXT GLU_NURBS_MODE_EXT = constants.GLU_NURBS_MODE_EXT GLU_NURBS_TESSELLATOR_EXT = constants.GLU_NURBS_TESSELLATOR_EXT GLU_NURBS_RENDERER_EXT = constants.GLU_NURBS_RENDERER_EXT def gluInitNurbsTessellatorEXT(): '''Return boolean indicating whether this module is available''' return extensions.hasGLUExtension( 'GLU_EXT_nurbs_tessellator' )PyOpenGL-3.0.2/OpenGL/GLU/__init__.py0000644000175000001440000000062212025001653017773 0ustar mcfletchusers00000000000000"""The GLU library implementation via ctypes""" from OpenGL import platform from OpenGL.error import * from OpenGL.raw.GLU import * from OpenGL.raw.GLU.annotations import * from OpenGL.GLU.quadrics import * from OpenGL.GLU.projection import * from OpenGL.GLU.tess import * from OpenGL.GLU.glunurbs import * import ctypes gluErrorString.restype = ctypes.c_char_p gluGetString.restype = ctypes.c_char_pPyOpenGL-3.0.2/OpenGL/GLU/projection.py0000644000175000001440000000623412025001653020415 0ustar mcfletchusers00000000000000"""glu[Un]Project[4] convenience wrappers""" from OpenGL.platform import GL from OpenGL.raw import GLU as simple from OpenGL import GL, arrays from OpenGL.lazywrapper import lazy import ctypes POINTER = ctypes.POINTER @lazy( simple.gluProject ) def gluProject( baseFunction, objX, objY, objZ, model=None, proj=None, view=None ): """Convenience wrapper for gluProject Automatically fills in the model, projection and viewing matrices if not provided. returns (winX,winY,winZ) doubles """ if model is None: model = GL.glGetDoublev( GL.GL_MODELVIEW_MATRIX ) if proj is None: proj = GL.glGetDoublev( GL.GL_PROJECTION_MATRIX ) if view is None: view = GL.glGetIntegerv( GL.GL_VIEWPORT ) winX = simple.GLdouble( 0.0 ) winY = simple.GLdouble( 0.0 ) winZ = simple.GLdouble( 0.0 ) result = baseFunction( objX,objY,objZ, model,proj,view, winX,winY,winZ, ) # On Ubuntu 9.10 we see a None come out of baseFunction, # despite it having a return-type specified of GLint! if result is not None and result != simple.GLU_TRUE: raise ValueError( """Projection failed!""" ) return winX.value, winY.value, winZ.value @lazy( simple.gluUnProject ) def gluUnProject( baseFunction, winX, winY, winZ, model=None, proj=None, view=None ): """Convenience wrapper for gluUnProject Automatically fills in the model, projection and viewing matrices if not provided. returns (objX,objY,objZ) doubles """ if model is None: model = GL.glGetDoublev( GL.GL_MODELVIEW_MATRIX ) if proj is None: proj = GL.glGetDoublev( GL.GL_PROJECTION_MATRIX ) if view is None: view = GL.glGetIntegerv( GL.GL_VIEWPORT ) objX = simple.GLdouble( 0.0 ) objY = simple.GLdouble( 0.0 ) objZ = simple.GLdouble( 0.0 ) result = baseFunction( winX,winY,winZ, model,proj,view, ctypes.byref(objX),ctypes.byref(objY),ctypes.byref(objZ), ) if not result: raise ValueError( """Projection failed!""" ) return objX.value, objY.value, objZ.value @lazy( simple.gluUnProject4 ) def gluUnProject4( baseFunction, winX, winY, winZ, clipW, model=None, proj=None, view=None, near=0.0, far=1.0 ): """Convenience wrapper for gluUnProject Automatically fills in the model, projection and viewing matrices if not provided. returns (objX,objY,objZ) doubles """ if model is None: model = GL.glGetDoublev( GL.GL_MODELVIEW_MATRIX ) if proj is None: proj = GL.glGetDoublev( GL.GL_PROJECTION_MATRIX ) if view is None: view = GL.glGetIntegerv( GL.GL_VIEWPORT ) objX = simple.GLdouble( 0.0 ) objY = simple.GLdouble( 0.0 ) objZ = simple.GLdouble( 0.0 ) objW = simple.GLdouble( 0.0 ) result = baseFunction( winX,winY,winZ, model,proj,view, ctypes.byref(objX),ctypes.byref(objY),ctypes.byref(objZ),ctypes.byref(objW) ) if not result: raise ValueError( """Projection failed!""" ) return objX.value, objY.value, objZ.value, objW.value __all__ = ( 'gluProject', 'gluUnProject', 'gluUnProject4', ) PyOpenGL-3.0.2/OpenGL/GLU/quadrics.py0000644000175000001440000000364512025001653020057 0ustar mcfletchusers00000000000000"""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', )PyOpenGL-3.0.2/OpenGL/GLU/glustruct.py0000644000175000001440000000676712025001653020310 0ustar mcfletchusers00000000000000"""Base class for GLU callback-caching structures""" import ctypes import weakref class GLUStruct( object ): """Mix-in class for GLU Structures that want to retain references to callbacks Also provides original-object-return for the "datapointer" style paremters Each sub-class must override: CALLBACK_TYPES -- maps a "which" constant to a function type CALLBACK_FUNCTION_REGISTRARS -- maps a "which" constant to the registration function for functions of that type WRAPPER_METHODS -- maps a "which" consant to a method of the structure that produces a callable around the function which takes care of input/output arguments, data conversions, error handling and the like. Creates a dictionary member dataPointers if original-object-return is used Creates a dictionary member callbacks if callback registration is used """ def getAsParam( self ): """Gets as a ctypes pointer to the underlying structure""" return ctypes.pointer( self ) _as_parameter_ = property( getAsParam ) CALLBACK_TYPES = None CALLBACK_FUNCTION_REGISTRARS = None WRAPPER_METHODS = None def noteObject( self, object ): """Note object for later retrieval as a Python object pointer This is the registration point for "original object return", returns a void pointer to the Python object, though this is, effectively, an opaque value. """ identity = id(object) try: self.dataPointers[ identity ] = object except AttributeError, err: self.dataPointers = { identity: object } return identity def originalObject( self, voidPointer ): """Given a void-pointer, try to find our original Python object""" if isinstance( voidPointer, (int,long)): identity = voidPointer elif voidPointer is None: return None else: try: identity = voidPointer.value except AttributeError, err: identity = voidPointer[0] try: return self.dataPointers[ identity ] except (KeyError,AttributeError), err: return voidPointer def addCallback( self, which, function ): """Register a callback for this structure object""" callbackType = self.CALLBACK_TYPES.get( which ) if not callbackType: raise ValueError( """Don't have a registered callback type for %r"""%( which, ) ) wrapperMethod = self.WRAPPER_METHODS.get( which ) if wrapperMethod is not None: function = getattr(self,wrapperMethod)( function ) cCallback = callbackType( function ) # XXX this is ugly, query to ctypes list on how to fix it... try: self.CALLBACK_FUNCTION_REGISTRARS[which]( self, which, cCallback ) except ctypes.ArgumentError, err: err.args += (which,cCallback) raise #gluTessCallbackBase( self, which, cCallback) # XXX catch errors! if getattr( self, 'callbacks', None ) is None: self.callbacks = {} self.callbacks[ which ] = cCallback return cCallback def ptrAsArray( self, ptr, length, type ): """Copy length values from ptr into new array of given type""" result = type.zeros( (length,) ) for i in range(length): result[i] = ptr[i] return resultPyOpenGL-3.0.2/OpenGL/GLU/glunurbs.py0000644000175000001440000002435112025001653020102 0ustar mcfletchusers00000000000000"""Implementation of GLU Nurbs structure and callback methods Same basic pattern as seen with the gluTess* functions, just need to add some bookkeeping to the structure class so that we can keep the Python function references alive during the calling process. """ from OpenGL.raw import GLU as simple from OpenGL import platform, converters, wrapper from OpenGL.GLU import glustruct from OpenGL.lazywrapper import lazy from OpenGL import arrays, error import ctypes import weakref from OpenGL.platform import PLATFORM import OpenGL from OpenGL import _configflags __all__ = ( 'GLUnurbs', 'gluNewNurbsRenderer', 'gluNurbsCallback', 'gluNurbsCallbackData', 'gluNurbsCallbackDataEXT', 'gluNurbsCurve', 'gluNurbsSurface', 'gluPwlCurve', ) # /usr/include/GL/glu.h 242 class GLUnurbs(glustruct.GLUStruct, simple.GLUnurbs): """GLU Nurbs structure with oor and callback storage support IMPORTANT NOTE: the texture coordinate callback receives a raw ctypes data-pointer, as without knowing what type of evaluation is being done (1D or 2D) we cannot safely determine the size of the array to convert it. This is a limitation of the C implementation. To convert to regular data-pointer, just call yourNurb.ptrAsArray( ptr, size, arrays.GLfloatArray ) with the size of data you expect. """ FUNCTION_TYPE = PLATFORM.functionTypeFor(PLATFORM.GLU) CALLBACK_FUNCTION_REGISTRARS = { # mapping from "which" to a function that should take 3 parameters, # the nurb, the which and the function pointer... } CALLBACK_TYPES = { # mapping from "which" GLU enumeration to a ctypes function type simple.GLU_NURBS_BEGIN: FUNCTION_TYPE( None, simple.GLenum ), simple.GLU_NURBS_BEGIN_DATA: FUNCTION_TYPE( None, simple.GLenum, ctypes.POINTER(simple.GLvoid) ), simple.GLU_NURBS_VERTEX: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLfloat) ), simple.GLU_NURBS_VERTEX_DATA: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLfloat), ctypes.POINTER(simple.GLvoid) ), simple.GLU_NURBS_NORMAL: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLfloat) ), simple.GLU_NURBS_NORMAL_DATA: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLfloat), ctypes.POINTER(simple.GLvoid) ), simple.GLU_NURBS_COLOR: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLfloat) ), simple.GLU_NURBS_COLOR_DATA: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLfloat), ctypes.POINTER(simple.GLvoid) ), simple.GLU_NURBS_TEXTURE_COORD: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLfloat) ), simple.GLU_NURBS_TEXTURE_COORD_DATA: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLfloat), ctypes.POINTER(simple.GLvoid) ), simple.GLU_NURBS_END:FUNCTION_TYPE( None ), simple.GLU_NURBS_END_DATA: FUNCTION_TYPE( None, ctypes.POINTER(simple.GLvoid) ), simple.GLU_NURBS_ERROR:FUNCTION_TYPE( None, simple.GLenum, ), } WRAPPER_METHODS = { simple.GLU_NURBS_BEGIN: None, simple.GLU_NURBS_BEGIN_DATA: '_justOOR', simple.GLU_NURBS_VERTEX: '_vec3', simple.GLU_NURBS_VERTEX_DATA: '_vec3', simple.GLU_NURBS_NORMAL: '_vec3', simple.GLU_NURBS_NORMAL_DATA: '_vec3', simple.GLU_NURBS_COLOR: '_vec4', simple.GLU_NURBS_COLOR_DATA: '_vec4', simple.GLU_NURBS_TEXTURE_COORD: '_tex', simple.GLU_NURBS_TEXTURE_COORD_DATA: '_tex', simple.GLU_NURBS_END: None, simple.GLU_NURBS_END_DATA: '_justOOR', simple.GLU_NURBS_ERROR: None, } def _justOOR( self, function ): """Just do OOR on the last argument...""" def getOOR( *args ): args = args[:-1] + (self.originalObject(args[-1]),) return function( *args ) return getOOR def _vec3( self, function, size=3 ): """Convert first arg to size-element array, do OOR on arg2 if present""" def vec( *args ): vec = self.ptrAsArray(args[0],size,arrays.GLfloatArray) if len(args) > 1: oor = self.originalObject(args[1]) return function( vec, oor ) else: return function( vec ) return vec def _vec4( self, function ): """Size-4 vector version...""" return self._vec3( function, 4 ) def _tex( self, function ): """Texture coordinate callback NOTE: there is no way for *us* to tell what size the array is, you will get back a raw data-point, not an array, as you do for all other callback types!!! """ def oor( *args ): if len(args) > 1: oor = self.originalObject(args[1]) return function( args[0], oor ) else: return function( args[0] ) return oor # XXX yes, this is a side-effect... simple.gluNewNurbsRenderer.restype = ctypes.POINTER( GLUnurbs ) def _callbackWithType( funcType ): """Get gluNurbsCallback function with set last arg-type""" result = platform.copyBaseFunction( simple.gluNurbsCallback ) result.argtypes = [ctypes.POINTER(GLUnurbs), simple.GLenum, funcType] assert result.argtypes[-1] == funcType return result for (c,funcType) in GLUnurbs.CALLBACK_TYPES.items(): cb = _callbackWithType( funcType ) GLUnurbs.CALLBACK_FUNCTION_REGISTRARS[ c ] = cb assert funcType == GLUnurbs.CALLBACK_TYPES[c] assert cb.argtypes[-1] == funcType try: del c,cb, funcType except NameError, err: pass def gluNurbsCallback( nurb, which, CallBackFunc ): """Dispatch to the nurb's addCallback operation""" return nurb.addCallback( which, CallBackFunc ) @lazy( simple.gluNewNurbsRenderer ) def gluNewNurbsRenderer( baseFunction ): """Return a new nurbs renderer for the system (dereferences pointer)""" newSet = baseFunction() new = newSet[0] #new.__class__ = GLUnurbs # yes, I know, ick return new @lazy( simple.gluNurbsCallbackData ) def gluNurbsCallbackData( baseFunction, nurb, userData ): """Note the Python object for use as userData by the nurb""" return baseFunction( nurb, nurb.noteObject( userData ) ) MAX_ORDER = 8 def checkOrder( order,knotCount,name ): """Check that order is valid...""" if order < 1: raise error.GLUError( """%s should be 1 or more, is %s"""%( name,order,) ) elif order > MAX_ORDER: raise error.GLUError( """%s should be %s or less, is %s"""%( name, MAX_ORDER, order) ) elif knotCount < (2*order): raise error.GLUError( """Knotcount must be at least 2x %s is %s should be at least %s"""%( name, knotCount, 2*order) ) def checkKnots( knots, name ): """Check that knots are in ascending order""" if len(knots): knot = knots[0] for next in knots[1:]: if next < knot: raise error.GLUError( """%s has decreasing knot %s after %s"""%( name, next, knot ) ) @lazy( simple.gluNurbsCallbackDataEXT ) def gluNurbsCallbackDataEXT( baseFunction,nurb, userData ): """Note the Python object for use as userData by the nurb""" return baseFunction( nurb, nurb.noteObject( userData ) ) @lazy( simple.gluNurbsCurve ) def gluNurbsCurve( baseFunction, nurb, knots, control, type ): """Pythonic version of gluNurbsCurve Calculates knotCount, stride, and order automatically """ knots = arrays.GLfloatArray.asArray( knots ) knotCount = arrays.GLfloatArray.arraySize( knots ) control = arrays.GLfloatArray.asArray( control ) try: length,step = arrays.GLfloatArray.dimensions( control ) except ValueError, err: raise error.GLUError( """Need a 2-dimensional control array""" ) order = knotCount - length if _configflags.ERROR_CHECKING: checkOrder( order, knotCount, 'order of NURBS curve') checkKnots( knots, 'knots of NURBS curve') return baseFunction( nurb, knotCount, knots, step, control, order, type, ) @lazy( simple.gluNurbsSurface ) def gluNurbsSurface( baseFunction, nurb, sKnots, tKnots, control, type ): """Pythonic version of gluNurbsSurface Calculates knotCount, stride, and order automatically """ sKnots = arrays.GLfloatArray.asArray( sKnots ) sKnotCount = arrays.GLfloatArray.arraySize( sKnots ) tKnots = arrays.GLfloatArray.asArray( tKnots ) tKnotCount = arrays.GLfloatArray.arraySize( tKnots ) control = arrays.GLfloatArray.asArray( control ) try: length,width,step = arrays.GLfloatArray.dimensions( control ) except ValueError, err: raise error.GLUError( """Need a 3-dimensional control array""" ) sOrder = sKnotCount - length tOrder = tKnotCount - width sStride = width*step tStride = step if _configflags.ERROR_CHECKING: checkOrder( sOrder, sKnotCount, 'sOrder of NURBS surface') checkOrder( tOrder, tKnotCount, 'tOrder of NURBS surface') checkKnots( sKnots, 'sKnots of NURBS surface') checkKnots( tKnots, 'tKnots of NURBS surface') if not (sKnotCount-sOrder)*(tKnotCount-tOrder) == length*width: raise error.GLUError( """Invalid NURB structure""", nurb, sKnotCount, sKnots, tKnotCount, tKnots, sStride, tStride, control, sOrder,tOrder, type ) result = baseFunction( nurb, sKnotCount, sKnots, tKnotCount, tKnots, sStride, tStride, control, sOrder,tOrder, type ) return result @lazy( simple.gluPwlCurve ) def gluPwlCurve( baseFunction, nurb, data, type ): """gluPwlCurve -- piece-wise linear curve within GLU context data -- the data-array type -- determines number of elements/data-point """ data = arrays.GLfloatArray.asArray( data ) if type == simple.GLU_MAP1_TRIM_2: divisor = 2 elif type == simple.GLU_MAP_TRIM_3: divisor = 3 else: raise ValueError( """Unrecognised type constant: %s"""%(type)) size = arrays.GLfloatArray.arraySize( data ) size = int(size//divisor) return baseFunction( nurb, size, data, divisor, type ) PyOpenGL-3.0.2/OpenGL/error.py0000644000175000001440000002077112025001653016745 0ustar mcfletchusers00000000000000"""Implementation of OpenGL errors/exceptions Note that OpenGL-ctypes will also throw standard errors, such as TypeError or ValueError when appropriate. ErrorChecker is an _ErrorChecker instance that allows you to register a new error-checking function for use throughout the system. """ import OpenGL, logging log = logging.getLogger( 'OpenGL.error' ) from OpenGL import platform, _configflags __all__ = ( "Error",'GLError','GLUError','GLUTError','glCheckError', 'GLerror','GLUerror','GLUTerror', ) class Error( Exception ): """Base class for all PyOpenGL-specific exception classes""" class NoContext( Error ): """Raised to indicate that there is no currently active context Technically almost *any* OpenGL call can segfault if there is no active context. The OpenGL.CHECK_CONTEXT flag, if enabled will cause this error to be raised whenever a GL or GLU call is issued (via PyOpenGL) if there is no currently valid context. """ class CopyError( Error ): """Raised to indicate that operation requires data-copying if you set: OpenGL.ERROR_ON_COPY = True before importing OpenGL.GL, this error will be raised when a passed argument would require a copy to be made. """ class NullFunctionError( Error ): """Error raised when an undefined function is called""" class GLError( Error ): """OpenGL core error implementation class Primary purpose of this error class is to allow for annotating an error with more details about the calling environment so that it's easier to debug errors in the wrapping process. Attributes: err -- the OpenGL error code for the error result -- the OpenGL result code for the operation baseOperation -- the "function" being called pyArgs -- the translated set of Python arguments cArgs -- the Python objects matching 1:1 the C arguments cArguments -- ctypes-level arguments to the operation, often raw integers for pointers and the like description -- OpenGL description of the error (textual) """ def __init__( self, err=None, result=None, cArguments=None, baseOperation=None, pyArgs=None, cArgs=None, description=None, ): """Initialise the GLError, storing metadata for later display""" ( self.err, self.result, self.cArguments, self.baseOperation, self.pyArgs, self.cArgs, self.description ) = ( err, result, cArguments, baseOperation, pyArgs, cArgs, description ) DISPLAY_ORDER = ( 'err', 'description', 'baseOperation', 'pyArgs', 'cArgs', 'cArguments', 'result', ) def __str__( self ): """Create a fully formatted representation of the error""" args = [] for property in self.DISPLAY_ORDER: value = getattr( self, property, None ) if value is not None or property=='description': formatFunction = 'format_%s'%(property) if hasattr( self, formatFunction ): args.append( getattr(self,formatFunction)( property, value )) else: args.append( '%s = %s'%( property, self.shortRepr( value ), )) return '%s(\n\t%s\n)'%(self.__class__.__name__, ',\n\t'.join( [x for x in args if x] )) def __repr__( self ): """Produce a much shorter version of the error as a string""" return '%s( %s )'%( self.__class__.__name__, ", ".join([x for x in [ 'err=%s'%(self.err), self.format_description( 'description', self.description ) or '', self.format_baseOperation( 'baseOperation', self.baseOperation ) or '', ] if x]) ) def format_description( self, property, value ): """Format description using GLU's gluErrorString""" if value is None and self.err is not None: try: from OpenGL.GLU import gluErrorString self.description = value = gluErrorString( self.err ) except Exception, err: return None if value is None: return None return '%s = %s'%( property, self.shortRepr( value ), ) def shortRepr( self, value, firstLevel=True ): """Retrieve short representation of the given value""" if isinstance( value, (list,tuple) ) and value and len(repr(value))>=40: if isinstance( value, list ): template = '[\n\t\t%s\n\t]' else: template = '(\n\t\t%s,\n\t)' return template%( ",\n\t\t".join( [ self.shortRepr(x,False) for x in value ] )) r = repr( value ) if len(r) < 40: return r else: return r[:37] + '...' def format_baseOperation( self, property, value ): """Format a baseOperation reference for display""" if hasattr( value, '__name__' ): return '%s = %s'%( property, value.__name__ ) else: return '%s = %r'%( property, value ) class GLUError( Error ): """GLU error implementation class""" class GLUTError( Error ): """GLUT error implementation class""" if _configflags.ERROR_CHECKING: from OpenGL import acceleratesupport _ErrorChecker = None if acceleratesupport.ACCELERATE_AVAILABLE: try: from OpenGL_accelerate.errorchecker import _ErrorChecker except ImportError, err: log.warn( """OpenGL_accelerate seems to be installed, but unable to import error checking entry point!""" ) if _ErrorChecker is None: class _ErrorChecker( object ): """Global error-checking object Attributes: _registeredChecker -- the checking function enabled when not doing onBegin/onEnd processing safeGetError -- platform safeGetError function as callable method _currentChecker -- currently active checking function """ _currentChecker = _registeredChecker = safeGetError = staticmethod( platform.safeGetError ) def glCheckError( self, result, baseOperation=None, cArguments=None, *args ): """Base GL Error checker compatible with new ctypes errcheck protocol This function will raise a GLError with just the calling information available at the C-calling level, i.e. the error code, cArguments, baseOperation and result. Higher-level code is responsible for any extra annotations. Note: glCheckError relies on glBegin/glEnd interactions to prevent glGetError being called during a glBegin/glEnd sequence. If you are calling glBegin/glEnd in C you should call onBegin and onEnd appropriately. """ err = self._currentChecker() if err: # GL_NO_ERROR's guaranteed value is 0 raise GLError( err, result, cArguments = cArguments, baseOperation = baseOperation, ) return result def nullGetError( self ): """Used as error-checker when inside begin/end set""" return None def onBegin( self ): """Called by glBegin to record the fact that glGetError won't work""" self._currentChecker = self.nullGetError def onEnd( self ): """Called by glEnd to record the fact that glGetError will work""" self._currentChecker = self._registeredChecker ErrorChecker = _ErrorChecker() else: ErrorChecker = _ErrorChecker( platform ) glCheckError = ErrorChecker.glCheckError onBegin = ErrorChecker.onBegin onEnd = ErrorChecker.onEnd else: glCheckError = platform.safeGetError # Compatibility with PyOpenGL 2.x series GLUerror = GLUError GLerror = GLError GLUTerror = GLUTError PyOpenGL-3.0.2/OpenGL/contextdata.py0000644000175000001440000001073212025001653020126 0ustar mcfletchusers00000000000000"""Storage of per-context values of various types Because OpenGL needs persistent references to the objects we're constructing to shadow Python objects, we have to store references to the objects somewhere For any given Python GUI library, we can use a weakref to the library's representation of the GL context to call the cleanup function. That means some per-GUI library code in OpenGL (or the library), but it gives us very natural operations within OpenGL. Note: you can entirely disable use of this module by setting: OpenGL.ERROR_ON_COPY = True OpenGL.STORE_POINTERS = False before importing OpenGL functionality. """ from OpenGL import platform storedPointers = { # map from contextID: { constant: value } } storedWeakPointers = { # map from contextID: WeakValueDictionary({ constant: value }) } STORAGES = [ storedPointers, storedWeakPointers ] def getContext( context = None ): """Get the context (if passed, just return) context -- the context ID, if None, the current context """ if context is None: context = platform.GetCurrentContext() if context == 0: from OpenGL import error raise error.Error( """Attempt to retrieve context when no valid context""" ) return context def setValue( constant, value, context=None, weak=False ): """Set a stored value for the given context constant -- Normally a GL constant value, but can be any hashable value value -- the value to be stored. If weak is true must be weak-reference-able. If None, then the value will be deleted from the storage context -- the context identifier for which we're storing the value weak -- if true, value will be stored with a weakref Note: you should always pass the same value for "weak" for a given constant, otherwise you will create two storages for the constant. """ if getattr( value, '_no_cache_', False ): return context = getContext( context ) if weak: storage = storedWeakPointers cls = weakref.WeakValueDictionary else: storage = storedPointers cls = dict current = storage.get( context ) if current is None: storage[context] = current = cls() previous = current.get( constant ) if value is None: try: del current[ constant ] except (KeyError,TypeError,ValueError), err: pass else: # XXX potential for failure here if a non-weakref-able objects # is being stored with weak == True current[ constant ] = value ## print 'previous', previous, value, constant return previous def delValue( constant, context=None ): """Delete the specified value for the given context constant -- Normally a GL constant value, but can be any hashable value context -- the context identifier for which we're storing the value """ context = getContext( context ) found = False for storage in STORAGES: contextStorage = storage.get( context ) if contextStorage: try: del contextStorage[ constant ] found = True except KeyError, err: pass return found def getValue( constant, context = None ): """Get a stored value for the given constant constant -- unique ID for the type of data being retrieved context -- the context ID, if None, the current context """ context = getContext( context ) for storage in STORAGES: contextStorage = storage.get( context ) if contextStorage: value = contextStorage.get( constant ) if value is not None: return value return None def cleanupContext( context=None ): """Cleanup all held pointer objects for the given context Warning: this is dangerous, as if you call it before a context is destroyed you may release memory held by the context and cause a protection fault when the GL goes to render the scene! Normally you will want to get the context ID explicitly and then register cleanupContext as a weakref callback to your GUI library Context object with the (now invalid) context ID as parameter. """ if context is None: context = platform.GetCurrentContext() for storage in STORAGES: try: del storedPointers[ context ] except KeyError, err: return False else: return TruePyOpenGL-3.0.2/OpenGL/_bytes.py0000644000175000001440000000232712025001653017076 0ustar mcfletchusers00000000000000"""8-bit string definitions for Python 2/3 compatibility Defines the following which allow for dealing with Python 3 breakages: STR_IS_BYTES STR_IS_UNICODE Easily checked booleans for type identities _NULL_8_BYTE An 8-bit byte with NULL (0) value as_8_bit( x, encoding='utf-8') Returns the value as the 8-bit version unicode -- always pointing to the unicode type bytes -- always pointing to the 8-bit bytes type """ import sys STR_IS_BYTES = True if sys.version_info[:2] < (2,6): # no bytes, traditional setup... bytes = str else: bytes = bytes if sys.version_info[:2] < (3,0): # traditional setup, with bytes defined... unicode = unicode _NULL_8_BYTE = '\000' def as_8_bit( x, encoding='utf-8' ): if isinstance( x, unicode ): return x.encode( encoding ) return bytes( x ) else: # new setup, str is now unicode... STR_IS_BYTES = False _NULL_8_BYTE = bytes( '\000','latin1' ) def as_8_bit( x, encoding='utf-8' ): if isinstance( x,unicode ): return x.encode(encoding) return str(x).encode( encoding ) unicode = str STR_IS_UNICODE = not STR_IS_BYTES PyOpenGL-3.0.2/OpenGL/acceleratesupport.py0000644000175000001440000000146212025001653021335 0ustar mcfletchusers00000000000000"""Common code for accelerated modules""" import logging from OpenGL import _configflags needed_version = (3,0,2) log = logging.getLogger( 'OpenGL.acceleratesupport' ) try: import OpenGL_accelerate if _configflags.USE_ACCELERATE: if OpenGL_accelerate.__version_tuple__ < needed_version: log.warn( """Incompatible version of OpenGL_accelerate found, need at least %s found %s""", needed_version, OpenGL_accelerate.__version_tuple__) raise ImportError( """Old version of OpenGL_accelerate""" ) ACCELERATE_AVAILABLE = True log.info( """OpenGL_accelerate module loaded""" ) else: raise ImportError( """Acceleration disabled""" ) except ImportError, err: log.info( """No OpenGL_accelerate module loaded: %s""", err ) ACCELERATE_AVAILABLE = False PyOpenGL-3.0.2/PyOpenGL.egg-info/0000755000175000001440000000000012032640120017232 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/PyOpenGL.egg-info/SOURCES.txt0000644000175000001440000011445312032640120021126 0ustar mcfletchusers00000000000000MANIFEST.in license.txt metadata.py setup.py OpenGL/__init__.py OpenGL/_bytes.py OpenGL/_configflags.py OpenGL/acceleratesupport.py OpenGL/constant.py OpenGL/constants.py OpenGL/contextdata.py OpenGL/converters.py OpenGL/error.py OpenGL/extensions.py OpenGL/images.py OpenGL/latebind.py OpenGL/lazywrapper.py OpenGL/logs.py OpenGL/plugins.py OpenGL/version.py OpenGL/wrapper.py OpenGL/AGL/__init__.py OpenGL/DLLS/GLE_WIN32_README.txt OpenGL/DLLS/gle_AUTHORS OpenGL/DLLS/gle_COPYING OpenGL/DLLS/gle_COPYING.src OpenGL/DLLS/glut32.dll OpenGL/DLLS/glut64.dll OpenGL/DLLS/glut_README.txt OpenGL/DLLS/opengle32.vc7.dll OpenGL/DLLS/opengle32.vc9.dll OpenGL/DLLS/opengle64.vc9.dll OpenGL/GL/__init__.py OpenGL/GL/exceptional.py OpenGL/GL/feedback.py OpenGL/GL/framebufferobjects.py OpenGL/GL/glget.py OpenGL/GL/images.py OpenGL/GL/pointers.py OpenGL/GL/selection.py OpenGL/GL/shaders.py OpenGL/GL/AMD/__init__.py OpenGL/GL/AMD/blend_minmax_factor.py OpenGL/GL/AMD/conservative_depth.py OpenGL/GL/AMD/debug_output.py OpenGL/GL/AMD/depth_clamp_separate.py OpenGL/GL/AMD/draw_buffers_blend.py OpenGL/GL/AMD/multi_draw_indirect.py OpenGL/GL/AMD/name_gen_delete.py OpenGL/GL/AMD/performance_monitor.py OpenGL/GL/AMD/pinned_memory.py OpenGL/GL/AMD/query_buffer_object.py OpenGL/GL/AMD/sample_positions.py OpenGL/GL/AMD/seamless_cubemap_per_texture.py OpenGL/GL/AMD/shader_stencil_export.py OpenGL/GL/AMD/sparse_texture.py OpenGL/GL/AMD/stencil_operation_extended.py OpenGL/GL/AMD/texture_texture4.py OpenGL/GL/AMD/transform_feedback3_lines_triangles.py OpenGL/GL/AMD/vertex_shader_layer.py OpenGL/GL/AMD/vertex_shader_tesselator.py OpenGL/GL/AMD/vertex_shader_viewport_index.py OpenGL/GL/APPLE/__init__.py OpenGL/GL/APPLE/aux_depth_stencil.py OpenGL/GL/APPLE/client_storage.py OpenGL/GL/APPLE/element_array.py OpenGL/GL/APPLE/fence.py OpenGL/GL/APPLE/float_pixels.py OpenGL/GL/APPLE/flush_buffer_range.py OpenGL/GL/APPLE/object_purgeable.py OpenGL/GL/APPLE/rgb_422.py OpenGL/GL/APPLE/row_bytes.py OpenGL/GL/APPLE/specular_vector.py OpenGL/GL/APPLE/texture_range.py OpenGL/GL/APPLE/transform_hint.py OpenGL/GL/APPLE/vertex_array_object.py OpenGL/GL/APPLE/vertex_array_range.py OpenGL/GL/APPLE/vertex_program_evaluators.py OpenGL/GL/APPLE/ycbcr_422.py OpenGL/GL/ARB/ES2_compatibility.py OpenGL/GL/ARB/ES3_compatibility.py OpenGL/GL/ARB/__init__.py OpenGL/GL/ARB/arrays_of_arrays.py OpenGL/GL/ARB/base_instance.py OpenGL/GL/ARB/blend_func_extended.py OpenGL/GL/ARB/cl_event.py OpenGL/GL/ARB/clear_buffer_object.py OpenGL/GL/ARB/color_buffer_float.py OpenGL/GL/ARB/compatibility.py OpenGL/GL/ARB/compressed_texture_pixel_storage.py OpenGL/GL/ARB/compute_shader.py OpenGL/GL/ARB/conservative_depth.py OpenGL/GL/ARB/copy_buffer.py OpenGL/GL/ARB/copy_image.py OpenGL/GL/ARB/debug_group.py OpenGL/GL/ARB/debug_label.py OpenGL/GL/ARB/debug_output.py OpenGL/GL/ARB/debug_output2.py OpenGL/GL/ARB/depth_buffer_float.py OpenGL/GL/ARB/depth_clamp.py OpenGL/GL/ARB/depth_texture.py OpenGL/GL/ARB/draw_buffers.py OpenGL/GL/ARB/draw_buffers_blend.py OpenGL/GL/ARB/draw_elements_base_vertex.py OpenGL/GL/ARB/draw_indirect.py OpenGL/GL/ARB/draw_instanced.py OpenGL/GL/ARB/explicit_attrib_location.py OpenGL/GL/ARB/explicit_uniform_location.py OpenGL/GL/ARB/fragment_coord_conventions.py OpenGL/GL/ARB/fragment_layer_viewport.py OpenGL/GL/ARB/fragment_program.py OpenGL/GL/ARB/fragment_program_shadow.py OpenGL/GL/ARB/fragment_shader.py OpenGL/GL/ARB/framebuffer_no_attachments.py OpenGL/GL/ARB/framebuffer_object.py OpenGL/GL/ARB/framebuffer_object_DEPRECATED.py OpenGL/GL/ARB/framebuffer_sRGB.py OpenGL/GL/ARB/geometry_shader4.py OpenGL/GL/ARB/get_program_binary.py OpenGL/GL/ARB/gpu_shader5.py OpenGL/GL/ARB/gpu_shader_fp64.py OpenGL/GL/ARB/half_float_pixel.py OpenGL/GL/ARB/half_float_vertex.py OpenGL/GL/ARB/imaging.py OpenGL/GL/ARB/imaging_DEPRECATED.py OpenGL/GL/ARB/instanced_arrays.py OpenGL/GL/ARB/internalformat_query.py OpenGL/GL/ARB/internalformat_query2.py OpenGL/GL/ARB/invalidate_subdata.py OpenGL/GL/ARB/map_buffer_alignment.py OpenGL/GL/ARB/map_buffer_range.py OpenGL/GL/ARB/matrix_palette.py OpenGL/GL/ARB/multi_draw_indirect.py OpenGL/GL/ARB/multisample.py OpenGL/GL/ARB/multitexture.py OpenGL/GL/ARB/occlusion_query.py OpenGL/GL/ARB/occlusion_query2.py OpenGL/GL/ARB/pixel_buffer_object.py OpenGL/GL/ARB/point_parameters.py OpenGL/GL/ARB/point_sprite.py OpenGL/GL/ARB/program_interface_query.py OpenGL/GL/ARB/provoking_vertex.py OpenGL/GL/ARB/robust_buffer_access_behavior.py OpenGL/GL/ARB/robustness.py OpenGL/GL/ARB/robustness_isolation.py OpenGL/GL/ARB/sample_shading.py OpenGL/GL/ARB/sampler_objects.py OpenGL/GL/ARB/seamless_cube_map.py OpenGL/GL/ARB/separate_shader_objects.py OpenGL/GL/ARB/shader_atomic_counters.py OpenGL/GL/ARB/shader_bit_encoding.py OpenGL/GL/ARB/shader_image_load_store.py OpenGL/GL/ARB/shader_image_size.py OpenGL/GL/ARB/shader_objects.py OpenGL/GL/ARB/shader_precision.py OpenGL/GL/ARB/shader_stencil_export.py OpenGL/GL/ARB/shader_storage_buffer_object.py OpenGL/GL/ARB/shader_subroutine.py OpenGL/GL/ARB/shader_texture_lod.py OpenGL/GL/ARB/shading_language_100.py OpenGL/GL/ARB/shading_language_420pack.py OpenGL/GL/ARB/shading_language_include.py OpenGL/GL/ARB/shading_language_packing.py OpenGL/GL/ARB/shadow.py OpenGL/GL/ARB/shadow_ambient.py OpenGL/GL/ARB/stencil_texturing.py OpenGL/GL/ARB/sync.py OpenGL/GL/ARB/tessellation_shader.py OpenGL/GL/ARB/texture_border_clamp.py OpenGL/GL/ARB/texture_buffer_object.py OpenGL/GL/ARB/texture_buffer_object_rgb32.py OpenGL/GL/ARB/texture_buffer_range.py OpenGL/GL/ARB/texture_compression.py OpenGL/GL/ARB/texture_compression_bptc.py OpenGL/GL/ARB/texture_compression_rgtc.py OpenGL/GL/ARB/texture_cube_map.py OpenGL/GL/ARB/texture_cube_map_array.py OpenGL/GL/ARB/texture_env_add.py OpenGL/GL/ARB/texture_env_combine.py OpenGL/GL/ARB/texture_env_crossbar.py OpenGL/GL/ARB/texture_env_dot3.py OpenGL/GL/ARB/texture_float.py OpenGL/GL/ARB/texture_gather.py OpenGL/GL/ARB/texture_mirrored_repeat.py OpenGL/GL/ARB/texture_multisample.py OpenGL/GL/ARB/texture_non_power_of_two.py OpenGL/GL/ARB/texture_query_levels.py OpenGL/GL/ARB/texture_query_lod.py OpenGL/GL/ARB/texture_rectangle.py OpenGL/GL/ARB/texture_rg.py OpenGL/GL/ARB/texture_rgb10_a2ui.py OpenGL/GL/ARB/texture_storage.py OpenGL/GL/ARB/texture_storage_multisample.py OpenGL/GL/ARB/texture_swizzle.py OpenGL/GL/ARB/texture_view.py OpenGL/GL/ARB/timer_query.py OpenGL/GL/ARB/transform_feedback2.py OpenGL/GL/ARB/transform_feedback3.py OpenGL/GL/ARB/transform_feedback_instanced.py OpenGL/GL/ARB/transpose_matrix.py OpenGL/GL/ARB/uniform_buffer_object.py OpenGL/GL/ARB/vertex_array_bgra.py OpenGL/GL/ARB/vertex_array_object.py OpenGL/GL/ARB/vertex_attrib_64bit.py OpenGL/GL/ARB/vertex_attrib_binding.py OpenGL/GL/ARB/vertex_blend.py OpenGL/GL/ARB/vertex_buffer_object.py OpenGL/GL/ARB/vertex_program.py OpenGL/GL/ARB/vertex_shader.py OpenGL/GL/ARB/vertex_type_2_10_10_10_rev.py OpenGL/GL/ARB/viewport_array.py OpenGL/GL/ARB/window_pos.py OpenGL/GL/ATI/__init__.py OpenGL/GL/ATI/draw_buffers.py OpenGL/GL/ATI/element_array.py OpenGL/GL/ATI/envmap_bumpmap.py OpenGL/GL/ATI/fragment_shader.py OpenGL/GL/ATI/map_object_buffer.py OpenGL/GL/ATI/meminfo.py OpenGL/GL/ATI/pixel_format_float.py OpenGL/GL/ATI/pn_triangles.py OpenGL/GL/ATI/separate_stencil.py OpenGL/GL/ATI/text_fragment_shader.py OpenGL/GL/ATI/texture_env_combine3.py OpenGL/GL/ATI/texture_float.py OpenGL/GL/ATI/texture_mirror_once.py OpenGL/GL/ATI/vertex_array_object.py OpenGL/GL/ATI/vertex_attrib_array_object.py OpenGL/GL/ATI/vertex_streams.py OpenGL/GL/DFX/__init__.py OpenGL/GL/DFX/multisample.py OpenGL/GL/DFX/tbuffer.py OpenGL/GL/DFX/texture_compression_FXT1.py OpenGL/GL/EXT/422_pixels.py OpenGL/GL/EXT/GL_422_pixels.py OpenGL/GL/EXT/__init__.py OpenGL/GL/EXT/abgr.py OpenGL/GL/EXT/bgra.py OpenGL/GL/EXT/bindable_uniform.py OpenGL/GL/EXT/blend_color.py OpenGL/GL/EXT/blend_equation_separate.py OpenGL/GL/EXT/blend_func_separate.py OpenGL/GL/EXT/blend_logic_op.py OpenGL/GL/EXT/blend_minmax.py OpenGL/GL/EXT/blend_subtract.py OpenGL/GL/EXT/clip_volume_hint.py OpenGL/GL/EXT/cmyka.py OpenGL/GL/EXT/color_matrix.py OpenGL/GL/EXT/color_subtable.py OpenGL/GL/EXT/compiled_vertex_array.py OpenGL/GL/EXT/convolution.py OpenGL/GL/EXT/coordinate_frame.py OpenGL/GL/EXT/copy_texture.py OpenGL/GL/EXT/cull_vertex.py OpenGL/GL/EXT/depth_bounds_test.py OpenGL/GL/EXT/direct_state_access.py OpenGL/GL/EXT/draw_buffers2.py OpenGL/GL/EXT/draw_instanced.py OpenGL/GL/EXT/draw_range_elements.py OpenGL/GL/EXT/fog_coord.py OpenGL/GL/EXT/framebuffer_blit.py OpenGL/GL/EXT/framebuffer_multisample.py OpenGL/GL/EXT/framebuffer_multisample_blit_scaled.py OpenGL/GL/EXT/framebuffer_object.py OpenGL/GL/EXT/framebuffer_sRGB.py OpenGL/GL/EXT/geometry_shader4.py OpenGL/GL/EXT/gpu_program_parameters.py OpenGL/GL/EXT/gpu_shader4.py OpenGL/GL/EXT/histogram.py OpenGL/GL/EXT/index_array_formats.py OpenGL/GL/EXT/index_func.py OpenGL/GL/EXT/index_material.py OpenGL/GL/EXT/index_texture.py OpenGL/GL/EXT/light_texture.py OpenGL/GL/EXT/misc_attribute.py OpenGL/GL/EXT/multi_draw_arrays.py OpenGL/GL/EXT/multisample.py OpenGL/GL/EXT/packed_depth_stencil.py OpenGL/GL/EXT/packed_float.py OpenGL/GL/EXT/packed_pixels.py OpenGL/GL/EXT/paletted_texture.py OpenGL/GL/EXT/pixel_buffer_object.py OpenGL/GL/EXT/pixel_transform.py OpenGL/GL/EXT/pixel_transform_color_table.py OpenGL/GL/EXT/point_parameters.py OpenGL/GL/EXT/polygon_offset.py OpenGL/GL/EXT/provoking_vertex.py OpenGL/GL/EXT/rescale_normal.py OpenGL/GL/EXT/secondary_color.py OpenGL/GL/EXT/separate_shader_objects.py OpenGL/GL/EXT/separate_specular_color.py OpenGL/GL/EXT/shader_image_load_store.py OpenGL/GL/EXT/shadow_funcs.py OpenGL/GL/EXT/shared_texture_palette.py OpenGL/GL/EXT/stencil_clear_tag.py OpenGL/GL/EXT/stencil_two_side.py OpenGL/GL/EXT/stencil_wrap.py OpenGL/GL/EXT/subtexture.py OpenGL/GL/EXT/texture.py OpenGL/GL/EXT/texture3D.py OpenGL/GL/EXT/texture_array.py OpenGL/GL/EXT/texture_buffer_object.py OpenGL/GL/EXT/texture_compression_latc.py OpenGL/GL/EXT/texture_compression_rgtc.py OpenGL/GL/EXT/texture_compression_s3tc.py OpenGL/GL/EXT/texture_cube_map.py OpenGL/GL/EXT/texture_env_add.py OpenGL/GL/EXT/texture_env_combine.py OpenGL/GL/EXT/texture_env_dot3.py OpenGL/GL/EXT/texture_filter_anisotropic.py OpenGL/GL/EXT/texture_integer.py OpenGL/GL/EXT/texture_lod_bias.py OpenGL/GL/EXT/texture_mirror_clamp.py OpenGL/GL/EXT/texture_object.py OpenGL/GL/EXT/texture_perturb_normal.py OpenGL/GL/EXT/texture_sRGB.py OpenGL/GL/EXT/texture_sRGB_decode.py OpenGL/GL/EXT/texture_shared_exponent.py OpenGL/GL/EXT/texture_snorm.py OpenGL/GL/EXT/texture_swizzle.py OpenGL/GL/EXT/timer_query.py OpenGL/GL/EXT/transform_feedback.py OpenGL/GL/EXT/vertex_array.py OpenGL/GL/EXT/vertex_array_bgra.py OpenGL/GL/EXT/vertex_attrib_64bit.py OpenGL/GL/EXT/vertex_shader.py OpenGL/GL/EXT/vertex_weighting.py OpenGL/GL/EXT/x11_sync_object.py OpenGL/GL/GREMEDY/__init__.py OpenGL/GL/GREMEDY/frame_terminator.py OpenGL/GL/GREMEDY/string_marker.py OpenGL/GL/HP/__init__.py OpenGL/GL/HP/convolution_border_modes.py OpenGL/GL/HP/image_transform.py OpenGL/GL/HP/occlusion_test.py OpenGL/GL/HP/texture_lighting.py OpenGL/GL/IBM/__init__.py OpenGL/GL/IBM/cull_vertex.py OpenGL/GL/IBM/multimode_draw_arrays.py OpenGL/GL/IBM/rasterpos_clip.py OpenGL/GL/IBM/texture_mirrored_repeat.py OpenGL/GL/IBM/vertex_array_lists.py OpenGL/GL/INGR/__init__.py OpenGL/GL/INGR/blend_func_separate.py OpenGL/GL/INGR/color_clamp.py OpenGL/GL/INGR/interlace_read.py OpenGL/GL/INGR/palette_buffer.py OpenGL/GL/INTEL/__init__.py OpenGL/GL/INTEL/parallel_arrays.py OpenGL/GL/INTEL/texture_scissor.py OpenGL/GL/KHR/__init__.py OpenGL/GL/KHR/debug.py OpenGL/GL/KHR/texture_compression_astc_ldr.py OpenGL/GL/MESA/__init__.py OpenGL/GL/MESA/pack_invert.py OpenGL/GL/MESA/resize_buffers.py OpenGL/GL/MESA/window_pos.py OpenGL/GL/MESA/ycbcr_texture.py OpenGL/GL/MESAX/__init__.py OpenGL/GL/MESAX/texture_stack.py OpenGL/GL/NV/__init__.py OpenGL/GL/NV/bindless_texture.py OpenGL/GL/NV/blend_square.py OpenGL/GL/NV/conditional_render.py OpenGL/GL/NV/copy_depth_to_color.py OpenGL/GL/NV/copy_image.py OpenGL/GL/NV/depth_buffer_float.py OpenGL/GL/NV/depth_clamp.py OpenGL/GL/NV/evaluators.py OpenGL/GL/NV/explicit_multisample.py OpenGL/GL/NV/fence.py OpenGL/GL/NV/float_buffer.py OpenGL/GL/NV/fog_distance.py OpenGL/GL/NV/fragment_program.py OpenGL/GL/NV/fragment_program2.py OpenGL/GL/NV/fragment_program4.py OpenGL/GL/NV/fragment_program_option.py OpenGL/GL/NV/framebuffer_multisample_coverage.py OpenGL/GL/NV/geometry_program4.py OpenGL/GL/NV/geometry_shader4.py OpenGL/GL/NV/gpu_program4.py OpenGL/GL/NV/gpu_program5.py OpenGL/GL/NV/gpu_shader5.py OpenGL/GL/NV/half_float.py OpenGL/GL/NV/light_max_exponent.py OpenGL/GL/NV/multisample_coverage.py OpenGL/GL/NV/multisample_filter_hint.py OpenGL/GL/NV/occlusion_query.py OpenGL/GL/NV/packed_depth_stencil.py OpenGL/GL/NV/parameter_buffer_object.py OpenGL/GL/NV/parameter_buffer_object2.py OpenGL/GL/NV/path_rendering.py OpenGL/GL/NV/pixel_data_range.py OpenGL/GL/NV/point_sprite.py OpenGL/GL/NV/present_video.py OpenGL/GL/NV/primitive_restart.py OpenGL/GL/NV/register_combiners.py OpenGL/GL/NV/register_combiners2.py OpenGL/GL/NV/shader_atomic_float.py OpenGL/GL/NV/shader_buffer_load.py OpenGL/GL/NV/shader_buffer_store.py OpenGL/GL/NV/tessellation_program5.py OpenGL/GL/NV/texgen_emboss.py OpenGL/GL/NV/texgen_reflection.py OpenGL/GL/NV/texture_barrier.py OpenGL/GL/NV/texture_compression_vtc.py OpenGL/GL/NV/texture_env_combine4.py OpenGL/GL/NV/texture_expand_normal.py OpenGL/GL/NV/texture_multisample.py OpenGL/GL/NV/texture_rectangle.py OpenGL/GL/NV/texture_shader.py OpenGL/GL/NV/texture_shader2.py OpenGL/GL/NV/texture_shader3.py OpenGL/GL/NV/transform_feedback.py OpenGL/GL/NV/transform_feedback2.py OpenGL/GL/NV/vdpau_interop.py OpenGL/GL/NV/vertex_array_range.py OpenGL/GL/NV/vertex_array_range2.py OpenGL/GL/NV/vertex_attrib_integer_64bit.py OpenGL/GL/NV/vertex_buffer_unified_memory.py OpenGL/GL/NV/vertex_program.py OpenGL/GL/NV/vertex_program1_1.py OpenGL/GL/NV/vertex_program2.py OpenGL/GL/NV/vertex_program2_option.py OpenGL/GL/NV/vertex_program3.py OpenGL/GL/NV/vertex_program4.py OpenGL/GL/NV/video_capture.py OpenGL/GL/OES/__init__.py OpenGL/GL/OES/read_format.py OpenGL/GL/OML/__init__.py OpenGL/GL/OML/interlace.py OpenGL/GL/OML/resample.py OpenGL/GL/OML/subsample.py OpenGL/GL/PGI/__init__.py OpenGL/GL/PGI/misc_hints.py OpenGL/GL/PGI/vertex_hints.py OpenGL/GL/REND/__init__.py OpenGL/GL/REND/screen_coordinates.py OpenGL/GL/S3/__init__.py OpenGL/GL/S3/s3tc.py OpenGL/GL/SGI/__init__.py OpenGL/GL/SGI/color_matrix.py OpenGL/GL/SGI/color_table.py OpenGL/GL/SGI/depth_pass_instrument.py OpenGL/GL/SGI/texture_color_table.py OpenGL/GL/SGIS/__init__.py OpenGL/GL/SGIS/detail_texture.py OpenGL/GL/SGIS/fog_function.py OpenGL/GL/SGIS/generate_mipmap.py OpenGL/GL/SGIS/multisample.py OpenGL/GL/SGIS/pixel_texture.py OpenGL/GL/SGIS/point_line_texgen.py OpenGL/GL/SGIS/point_parameters.py OpenGL/GL/SGIS/sharpen_texture.py OpenGL/GL/SGIS/texture4D.py OpenGL/GL/SGIS/texture_border_clamp.py OpenGL/GL/SGIS/texture_color_mask.py OpenGL/GL/SGIS/texture_edge_clamp.py OpenGL/GL/SGIS/texture_filter4.py OpenGL/GL/SGIS/texture_lod.py OpenGL/GL/SGIS/texture_select.py OpenGL/GL/SGIX/FfdMask.py OpenGL/GL/SGIX/__init__.py OpenGL/GL/SGIX/async.py OpenGL/GL/SGIX/async_histogram.py OpenGL/GL/SGIX/async_pixel.py OpenGL/GL/SGIX/blend_alpha_minmax.py OpenGL/GL/SGIX/calligraphic_fragment.py OpenGL/GL/SGIX/clipmap.py OpenGL/GL/SGIX/convolution_accuracy.py OpenGL/GL/SGIX/depth_pass_instrument.py OpenGL/GL/SGIX/depth_texture.py OpenGL/GL/SGIX/flush_raster.py OpenGL/GL/SGIX/fog_offset.py OpenGL/GL/SGIX/fog_scale.py OpenGL/GL/SGIX/fragment_lighting.py OpenGL/GL/SGIX/framezoom.py OpenGL/GL/SGIX/igloo_interface.py OpenGL/GL/SGIX/impact_pixel_texture.py OpenGL/GL/SGIX/instruments.py OpenGL/GL/SGIX/interlace.py OpenGL/GL/SGIX/ir_instrument1.py OpenGL/GL/SGIX/list_priority.py OpenGL/GL/SGIX/pixel_texture.py OpenGL/GL/SGIX/pixel_tiles.py OpenGL/GL/SGIX/polynomial_ffd.py OpenGL/GL/SGIX/reference_plane.py OpenGL/GL/SGIX/resample.py OpenGL/GL/SGIX/scalebias_hint.py OpenGL/GL/SGIX/shadow.py OpenGL/GL/SGIX/shadow_ambient.py OpenGL/GL/SGIX/sprite.py OpenGL/GL/SGIX/subsample.py OpenGL/GL/SGIX/tag_sample_buffer.py OpenGL/GL/SGIX/texture_add_env.py OpenGL/GL/SGIX/texture_coordinate_clamp.py OpenGL/GL/SGIX/texture_lod_bias.py OpenGL/GL/SGIX/texture_multi_buffer.py OpenGL/GL/SGIX/texture_scale_bias.py OpenGL/GL/SGIX/texture_select.py OpenGL/GL/SGIX/vertex_preclip.py OpenGL/GL/SGIX/ycrcb.py OpenGL/GL/SGIX/ycrcb_subsample.py OpenGL/GL/SGIX/ycrcba.py OpenGL/GL/SUN/__init__.py OpenGL/GL/SUN/convolution_border_modes.py OpenGL/GL/SUN/global_alpha.py OpenGL/GL/SUN/mesh_array.py OpenGL/GL/SUN/slice_accum.py OpenGL/GL/SUN/triangle_list.py OpenGL/GL/SUN/vertex.py OpenGL/GL/SUNX/__init__.py OpenGL/GL/SUNX/constant_data.py OpenGL/GL/VERSION/GL_1_1.py OpenGL/GL/VERSION/GL_1_2.py OpenGL/GL/VERSION/GL_1_2_DEPRECATED.py OpenGL/GL/VERSION/GL_1_2_images.py OpenGL/GL/VERSION/GL_1_3.py OpenGL/GL/VERSION/GL_1_3_DEPRECATED.py OpenGL/GL/VERSION/GL_1_3_images.py OpenGL/GL/VERSION/GL_1_4.py OpenGL/GL/VERSION/GL_1_4_DEPRECATED.py OpenGL/GL/VERSION/GL_1_5.py OpenGL/GL/VERSION/GL_1_5_DEPRECATED.py OpenGL/GL/VERSION/GL_2_0.py OpenGL/GL/VERSION/GL_2_0_DEPRECATED.py OpenGL/GL/VERSION/GL_2_1.py OpenGL/GL/VERSION/GL_2_1_DEPRECATED.py OpenGL/GL/VERSION/GL_3_0.py OpenGL/GL/VERSION/GL_3_0_DEPRECATED.py OpenGL/GL/VERSION/GL_3_1.py OpenGL/GL/VERSION/GL_3_2.py OpenGL/GL/VERSION/GL_3_3.py OpenGL/GL/VERSION/GL_4_0.py OpenGL/GL/VERSION/GL_4_1.py OpenGL/GL/VERSION/GL_4_2.py OpenGL/GL/VERSION/GL_4_3.py OpenGL/GL/VERSION/__init__.py OpenGL/GL/WIN/__init__.py OpenGL/GL/WIN/phong_shading.py OpenGL/GL/WIN/specular_fog.py OpenGL/GLE/__init__.py OpenGL/GLE/exceptional.py OpenGL/GLU/__init__.py OpenGL/GLU/glunurbs.py OpenGL/GLU/glustruct.py OpenGL/GLU/projection.py OpenGL/GLU/quadrics.py OpenGL/GLU/tess.py OpenGL/GLU/EXT/__init__.py OpenGL/GLU/EXT/nurbs_tessellator.py OpenGL/GLU/EXT/object_space_tess.py OpenGL/GLUT/__init__.py OpenGL/GLUT/fonts.py OpenGL/GLUT/freeglut.py OpenGL/GLUT/osx.py OpenGL/GLUT/special.py OpenGL/GLX/__init__.py OpenGL/Tk/__init__.py OpenGL/WGL/__init__.py OpenGL/arrays/__init__.py OpenGL/arrays/_buffers.py OpenGL/arrays/_numeric.py OpenGL/arrays/_strings.py OpenGL/arrays/arraydatatype.py OpenGL/arrays/arrayhelpers.py OpenGL/arrays/buffers.py OpenGL/arrays/ctypesarrays.py OpenGL/arrays/ctypesparameters.py OpenGL/arrays/ctypespointers.py OpenGL/arrays/formathandler.py OpenGL/arrays/lists.py OpenGL/arrays/nones.py OpenGL/arrays/numbers.py OpenGL/arrays/numeric.py OpenGL/arrays/numericnames.py OpenGL/arrays/numpymodule.py OpenGL/arrays/strings.py OpenGL/arrays/vbo.py OpenGL/platform/__init__.py OpenGL/platform/baseplatform.py OpenGL/platform/ctypesloader.py OpenGL/platform/darwin.py OpenGL/platform/entrypoint31.py OpenGL/platform/glx.py OpenGL/platform/osmesa.py OpenGL/platform/win32.py OpenGL/raw/GLX.py OpenGL/raw/WGL.py OpenGL/raw/_GLX.py OpenGL/raw/_GLX_ARB.py OpenGL/raw/_GLX_NV.py OpenGL/raw/_WGL.py OpenGL/raw/_WGL_ARB.py OpenGL/raw/_WGL_NV.py OpenGL/raw/__init__.py OpenGL/raw/GL/__init__.py OpenGL/raw/GL/AMD/__init__.py OpenGL/raw/GL/AMD/blend_minmax_factor.py OpenGL/raw/GL/AMD/conservative_depth.py OpenGL/raw/GL/AMD/debug_output.py OpenGL/raw/GL/AMD/depth_clamp_separate.py OpenGL/raw/GL/AMD/draw_buffers_blend.py OpenGL/raw/GL/AMD/multi_draw_indirect.py OpenGL/raw/GL/AMD/name_gen_delete.py OpenGL/raw/GL/AMD/performance_monitor.py OpenGL/raw/GL/AMD/pinned_memory.py OpenGL/raw/GL/AMD/query_buffer_object.py OpenGL/raw/GL/AMD/sample_positions.py OpenGL/raw/GL/AMD/seamless_cubemap_per_texture.py OpenGL/raw/GL/AMD/shader_stencil_export.py OpenGL/raw/GL/AMD/sparse_texture.py OpenGL/raw/GL/AMD/stencil_operation_extended.py OpenGL/raw/GL/AMD/texture_texture4.py OpenGL/raw/GL/AMD/transform_feedback3_lines_triangles.py OpenGL/raw/GL/AMD/vertex_shader_layer.py OpenGL/raw/GL/AMD/vertex_shader_tesselator.py OpenGL/raw/GL/AMD/vertex_shader_viewport_index.py OpenGL/raw/GL/APPLE/__init__.py OpenGL/raw/GL/APPLE/aux_depth_stencil.py OpenGL/raw/GL/APPLE/client_storage.py OpenGL/raw/GL/APPLE/element_array.py OpenGL/raw/GL/APPLE/fence.py OpenGL/raw/GL/APPLE/float_pixels.py OpenGL/raw/GL/APPLE/flush_buffer_range.py OpenGL/raw/GL/APPLE/object_purgeable.py OpenGL/raw/GL/APPLE/rgb_422.py OpenGL/raw/GL/APPLE/row_bytes.py OpenGL/raw/GL/APPLE/specular_vector.py OpenGL/raw/GL/APPLE/texture_range.py OpenGL/raw/GL/APPLE/transform_hint.py OpenGL/raw/GL/APPLE/vertex_array_object.py OpenGL/raw/GL/APPLE/vertex_array_range.py OpenGL/raw/GL/APPLE/vertex_program_evaluators.py OpenGL/raw/GL/APPLE/ycbcr_422.py OpenGL/raw/GL/ARB/ES2_compatibility.py OpenGL/raw/GL/ARB/ES3_compatibility.py OpenGL/raw/GL/ARB/__init__.py OpenGL/raw/GL/ARB/arrays_of_arrays.py OpenGL/raw/GL/ARB/base_instance.py OpenGL/raw/GL/ARB/blend_func_extended.py OpenGL/raw/GL/ARB/cl_event.py OpenGL/raw/GL/ARB/clear_buffer_object.py OpenGL/raw/GL/ARB/color_buffer_float.py OpenGL/raw/GL/ARB/compatibility.py OpenGL/raw/GL/ARB/compressed_texture_pixel_storage.py OpenGL/raw/GL/ARB/compute_shader.py OpenGL/raw/GL/ARB/conservative_depth.py OpenGL/raw/GL/ARB/copy_buffer.py OpenGL/raw/GL/ARB/copy_image.py OpenGL/raw/GL/ARB/debug_group.py OpenGL/raw/GL/ARB/debug_label.py OpenGL/raw/GL/ARB/debug_output.py OpenGL/raw/GL/ARB/debug_output2.py OpenGL/raw/GL/ARB/depth_buffer_float.py OpenGL/raw/GL/ARB/depth_clamp.py OpenGL/raw/GL/ARB/depth_texture.py OpenGL/raw/GL/ARB/draw_buffers.py OpenGL/raw/GL/ARB/draw_buffers_blend.py OpenGL/raw/GL/ARB/draw_elements_base_vertex.py OpenGL/raw/GL/ARB/draw_indirect.py OpenGL/raw/GL/ARB/draw_instanced.py OpenGL/raw/GL/ARB/explicit_attrib_location.py OpenGL/raw/GL/ARB/explicit_uniform_location.py OpenGL/raw/GL/ARB/fragment_coord_conventions.py OpenGL/raw/GL/ARB/fragment_layer_viewport.py OpenGL/raw/GL/ARB/fragment_program.py OpenGL/raw/GL/ARB/fragment_program_shadow.py OpenGL/raw/GL/ARB/fragment_shader.py OpenGL/raw/GL/ARB/framebuffer_no_attachments.py OpenGL/raw/GL/ARB/framebuffer_object.py OpenGL/raw/GL/ARB/framebuffer_object_DEPRECATED.py OpenGL/raw/GL/ARB/framebuffer_sRGB.py OpenGL/raw/GL/ARB/geometry_shader4.py OpenGL/raw/GL/ARB/get_program_binary.py OpenGL/raw/GL/ARB/gpu_shader5.py OpenGL/raw/GL/ARB/gpu_shader_fp64.py OpenGL/raw/GL/ARB/half_float_pixel.py OpenGL/raw/GL/ARB/half_float_vertex.py OpenGL/raw/GL/ARB/imaging.py OpenGL/raw/GL/ARB/imaging_DEPRECATED.py OpenGL/raw/GL/ARB/instanced_arrays.py OpenGL/raw/GL/ARB/internalformat_query.py OpenGL/raw/GL/ARB/internalformat_query2.py OpenGL/raw/GL/ARB/invalidate_subdata.py OpenGL/raw/GL/ARB/map_buffer_alignment.py OpenGL/raw/GL/ARB/map_buffer_range.py OpenGL/raw/GL/ARB/matrix_palette.py OpenGL/raw/GL/ARB/multi_draw_indirect.py OpenGL/raw/GL/ARB/multisample.py OpenGL/raw/GL/ARB/multitexture.py OpenGL/raw/GL/ARB/occlusion_query.py OpenGL/raw/GL/ARB/occlusion_query2.py OpenGL/raw/GL/ARB/pixel_buffer_object.py OpenGL/raw/GL/ARB/point_parameters.py OpenGL/raw/GL/ARB/point_sprite.py OpenGL/raw/GL/ARB/program_interface_query.py OpenGL/raw/GL/ARB/provoking_vertex.py OpenGL/raw/GL/ARB/robust_buffer_access_behavior.py OpenGL/raw/GL/ARB/robustness.py OpenGL/raw/GL/ARB/robustness_isolation.py OpenGL/raw/GL/ARB/sample_shading.py OpenGL/raw/GL/ARB/sampler_objects.py OpenGL/raw/GL/ARB/seamless_cube_map.py OpenGL/raw/GL/ARB/separate_shader_objects.py OpenGL/raw/GL/ARB/shader_atomic_counters.py OpenGL/raw/GL/ARB/shader_bit_encoding.py OpenGL/raw/GL/ARB/shader_image_load_store.py OpenGL/raw/GL/ARB/shader_image_size.py OpenGL/raw/GL/ARB/shader_objects.py OpenGL/raw/GL/ARB/shader_precision.py OpenGL/raw/GL/ARB/shader_stencil_export.py OpenGL/raw/GL/ARB/shader_storage_buffer_object.py OpenGL/raw/GL/ARB/shader_subroutine.py OpenGL/raw/GL/ARB/shader_texture_lod.py OpenGL/raw/GL/ARB/shading_language_100.py OpenGL/raw/GL/ARB/shading_language_420pack.py OpenGL/raw/GL/ARB/shading_language_include.py OpenGL/raw/GL/ARB/shading_language_packing.py OpenGL/raw/GL/ARB/shadow.py OpenGL/raw/GL/ARB/shadow_ambient.py OpenGL/raw/GL/ARB/stencil_texturing.py OpenGL/raw/GL/ARB/sync.py OpenGL/raw/GL/ARB/tessellation_shader.py OpenGL/raw/GL/ARB/texture_border_clamp.py OpenGL/raw/GL/ARB/texture_buffer_object.py OpenGL/raw/GL/ARB/texture_buffer_object_rgb32.py OpenGL/raw/GL/ARB/texture_buffer_range.py OpenGL/raw/GL/ARB/texture_compression.py OpenGL/raw/GL/ARB/texture_compression_bptc.py OpenGL/raw/GL/ARB/texture_compression_rgtc.py OpenGL/raw/GL/ARB/texture_cube_map.py OpenGL/raw/GL/ARB/texture_cube_map_array.py OpenGL/raw/GL/ARB/texture_env_add.py OpenGL/raw/GL/ARB/texture_env_combine.py OpenGL/raw/GL/ARB/texture_env_crossbar.py OpenGL/raw/GL/ARB/texture_env_dot3.py OpenGL/raw/GL/ARB/texture_float.py OpenGL/raw/GL/ARB/texture_gather.py OpenGL/raw/GL/ARB/texture_mirrored_repeat.py OpenGL/raw/GL/ARB/texture_multisample.py OpenGL/raw/GL/ARB/texture_non_power_of_two.py OpenGL/raw/GL/ARB/texture_query_levels.py OpenGL/raw/GL/ARB/texture_query_lod.py OpenGL/raw/GL/ARB/texture_rectangle.py OpenGL/raw/GL/ARB/texture_rg.py OpenGL/raw/GL/ARB/texture_rgb10_a2ui.py OpenGL/raw/GL/ARB/texture_storage.py OpenGL/raw/GL/ARB/texture_storage_multisample.py OpenGL/raw/GL/ARB/texture_swizzle.py OpenGL/raw/GL/ARB/texture_view.py OpenGL/raw/GL/ARB/timer_query.py OpenGL/raw/GL/ARB/transform_feedback2.py OpenGL/raw/GL/ARB/transform_feedback3.py OpenGL/raw/GL/ARB/transform_feedback_instanced.py OpenGL/raw/GL/ARB/transpose_matrix.py OpenGL/raw/GL/ARB/uniform_buffer_object.py OpenGL/raw/GL/ARB/vertex_array_bgra.py OpenGL/raw/GL/ARB/vertex_array_object.py OpenGL/raw/GL/ARB/vertex_attrib_64bit.py OpenGL/raw/GL/ARB/vertex_attrib_binding.py OpenGL/raw/GL/ARB/vertex_blend.py OpenGL/raw/GL/ARB/vertex_buffer_object.py OpenGL/raw/GL/ARB/vertex_program.py OpenGL/raw/GL/ARB/vertex_shader.py OpenGL/raw/GL/ARB/vertex_type_2_10_10_10_rev.py OpenGL/raw/GL/ARB/viewport_array.py OpenGL/raw/GL/ARB/window_pos.py OpenGL/raw/GL/ATI/__init__.py OpenGL/raw/GL/ATI/draw_buffers.py OpenGL/raw/GL/ATI/element_array.py OpenGL/raw/GL/ATI/envmap_bumpmap.py OpenGL/raw/GL/ATI/fragment_shader.py OpenGL/raw/GL/ATI/map_object_buffer.py OpenGL/raw/GL/ATI/meminfo.py OpenGL/raw/GL/ATI/pixel_format_float.py OpenGL/raw/GL/ATI/pn_triangles.py OpenGL/raw/GL/ATI/separate_stencil.py OpenGL/raw/GL/ATI/text_fragment_shader.py OpenGL/raw/GL/ATI/texture_env_combine3.py OpenGL/raw/GL/ATI/texture_float.py OpenGL/raw/GL/ATI/texture_mirror_once.py OpenGL/raw/GL/ATI/vertex_array_object.py OpenGL/raw/GL/ATI/vertex_attrib_array_object.py OpenGL/raw/GL/ATI/vertex_streams.py OpenGL/raw/GL/DFX/__init__.py OpenGL/raw/GL/DFX/multisample.py OpenGL/raw/GL/DFX/tbuffer.py OpenGL/raw/GL/DFX/texture_compression_FXT1.py OpenGL/raw/GL/EXT/422_pixels.py OpenGL/raw/GL/EXT/GL_422_pixels.py OpenGL/raw/GL/EXT/__init__.py OpenGL/raw/GL/EXT/abgr.py OpenGL/raw/GL/EXT/bgra.py OpenGL/raw/GL/EXT/bindable_uniform.py OpenGL/raw/GL/EXT/blend_color.py OpenGL/raw/GL/EXT/blend_equation_separate.py OpenGL/raw/GL/EXT/blend_func_separate.py OpenGL/raw/GL/EXT/blend_logic_op.py OpenGL/raw/GL/EXT/blend_minmax.py OpenGL/raw/GL/EXT/blend_subtract.py OpenGL/raw/GL/EXT/clip_volume_hint.py OpenGL/raw/GL/EXT/cmyka.py OpenGL/raw/GL/EXT/color_matrix.py OpenGL/raw/GL/EXT/color_subtable.py OpenGL/raw/GL/EXT/compiled_vertex_array.py OpenGL/raw/GL/EXT/convolution.py OpenGL/raw/GL/EXT/coordinate_frame.py OpenGL/raw/GL/EXT/copy_texture.py OpenGL/raw/GL/EXT/cull_vertex.py OpenGL/raw/GL/EXT/depth_bounds_test.py OpenGL/raw/GL/EXT/direct_state_access.py OpenGL/raw/GL/EXT/draw_buffers2.py OpenGL/raw/GL/EXT/draw_instanced.py OpenGL/raw/GL/EXT/draw_range_elements.py OpenGL/raw/GL/EXT/fog_coord.py OpenGL/raw/GL/EXT/framebuffer_blit.py OpenGL/raw/GL/EXT/framebuffer_multisample.py OpenGL/raw/GL/EXT/framebuffer_multisample_blit_scaled.py OpenGL/raw/GL/EXT/framebuffer_object.py OpenGL/raw/GL/EXT/framebuffer_sRGB.py OpenGL/raw/GL/EXT/geometry_shader4.py OpenGL/raw/GL/EXT/gpu_program_parameters.py OpenGL/raw/GL/EXT/gpu_shader4.py OpenGL/raw/GL/EXT/histogram.py OpenGL/raw/GL/EXT/index_array_formats.py OpenGL/raw/GL/EXT/index_func.py OpenGL/raw/GL/EXT/index_material.py OpenGL/raw/GL/EXT/index_texture.py OpenGL/raw/GL/EXT/light_texture.py OpenGL/raw/GL/EXT/misc_attribute.py OpenGL/raw/GL/EXT/multi_draw_arrays.py OpenGL/raw/GL/EXT/multisample.py OpenGL/raw/GL/EXT/packed_depth_stencil.py OpenGL/raw/GL/EXT/packed_float.py OpenGL/raw/GL/EXT/packed_pixels.py OpenGL/raw/GL/EXT/paletted_texture.py OpenGL/raw/GL/EXT/pixel_buffer_object.py OpenGL/raw/GL/EXT/pixel_transform.py OpenGL/raw/GL/EXT/pixel_transform_color_table.py OpenGL/raw/GL/EXT/point_parameters.py OpenGL/raw/GL/EXT/polygon_offset.py OpenGL/raw/GL/EXT/provoking_vertex.py OpenGL/raw/GL/EXT/rescale_normal.py OpenGL/raw/GL/EXT/secondary_color.py OpenGL/raw/GL/EXT/separate_shader_objects.py OpenGL/raw/GL/EXT/separate_specular_color.py OpenGL/raw/GL/EXT/shader_image_load_store.py OpenGL/raw/GL/EXT/shadow_funcs.py OpenGL/raw/GL/EXT/shared_texture_palette.py OpenGL/raw/GL/EXT/stencil_clear_tag.py OpenGL/raw/GL/EXT/stencil_two_side.py OpenGL/raw/GL/EXT/stencil_wrap.py OpenGL/raw/GL/EXT/subtexture.py OpenGL/raw/GL/EXT/texture.py OpenGL/raw/GL/EXT/texture3D.py OpenGL/raw/GL/EXT/texture_array.py OpenGL/raw/GL/EXT/texture_buffer_object.py OpenGL/raw/GL/EXT/texture_compression_latc.py OpenGL/raw/GL/EXT/texture_compression_rgtc.py OpenGL/raw/GL/EXT/texture_compression_s3tc.py OpenGL/raw/GL/EXT/texture_cube_map.py OpenGL/raw/GL/EXT/texture_env_add.py OpenGL/raw/GL/EXT/texture_env_combine.py OpenGL/raw/GL/EXT/texture_env_dot3.py OpenGL/raw/GL/EXT/texture_filter_anisotropic.py OpenGL/raw/GL/EXT/texture_integer.py OpenGL/raw/GL/EXT/texture_lod_bias.py OpenGL/raw/GL/EXT/texture_mirror_clamp.py OpenGL/raw/GL/EXT/texture_object.py OpenGL/raw/GL/EXT/texture_perturb_normal.py OpenGL/raw/GL/EXT/texture_sRGB.py OpenGL/raw/GL/EXT/texture_sRGB_decode.py OpenGL/raw/GL/EXT/texture_shared_exponent.py OpenGL/raw/GL/EXT/texture_snorm.py OpenGL/raw/GL/EXT/texture_swizzle.py OpenGL/raw/GL/EXT/timer_query.py OpenGL/raw/GL/EXT/transform_feedback.py OpenGL/raw/GL/EXT/vertex_array.py OpenGL/raw/GL/EXT/vertex_array_bgra.py OpenGL/raw/GL/EXT/vertex_attrib_64bit.py OpenGL/raw/GL/EXT/vertex_shader.py OpenGL/raw/GL/EXT/vertex_weighting.py OpenGL/raw/GL/EXT/x11_sync_object.py OpenGL/raw/GL/GLEXT/GL_64_TYPES_DEFINED.py OpenGL/raw/GL/GLEXT/__init__.py OpenGL/raw/GL/GREMEDY/__init__.py OpenGL/raw/GL/GREMEDY/frame_terminator.py OpenGL/raw/GL/GREMEDY/string_marker.py OpenGL/raw/GL/HP/__init__.py OpenGL/raw/GL/HP/convolution_border_modes.py OpenGL/raw/GL/HP/image_transform.py OpenGL/raw/GL/HP/occlusion_test.py OpenGL/raw/GL/HP/texture_lighting.py OpenGL/raw/GL/IBM/__init__.py OpenGL/raw/GL/IBM/cull_vertex.py OpenGL/raw/GL/IBM/multimode_draw_arrays.py OpenGL/raw/GL/IBM/rasterpos_clip.py OpenGL/raw/GL/IBM/texture_mirrored_repeat.py OpenGL/raw/GL/IBM/vertex_array_lists.py OpenGL/raw/GL/INGR/__init__.py OpenGL/raw/GL/INGR/blend_func_separate.py OpenGL/raw/GL/INGR/color_clamp.py OpenGL/raw/GL/INGR/interlace_read.py OpenGL/raw/GL/INGR/palette_buffer.py OpenGL/raw/GL/INTEL/__init__.py OpenGL/raw/GL/INTEL/parallel_arrays.py OpenGL/raw/GL/INTEL/texture_scissor.py OpenGL/raw/GL/KHR/__init__.py OpenGL/raw/GL/KHR/debug.py OpenGL/raw/GL/KHR/texture_compression_astc_ldr.py OpenGL/raw/GL/MESA/__init__.py OpenGL/raw/GL/MESA/pack_invert.py OpenGL/raw/GL/MESA/resize_buffers.py OpenGL/raw/GL/MESA/window_pos.py OpenGL/raw/GL/MESA/ycbcr_texture.py OpenGL/raw/GL/MESAX/__init__.py OpenGL/raw/GL/MESAX/texture_stack.py OpenGL/raw/GL/NV/__init__.py OpenGL/raw/GL/NV/bindless_texture.py OpenGL/raw/GL/NV/blend_square.py OpenGL/raw/GL/NV/conditional_render.py OpenGL/raw/GL/NV/copy_depth_to_color.py OpenGL/raw/GL/NV/copy_image.py OpenGL/raw/GL/NV/depth_buffer_float.py OpenGL/raw/GL/NV/depth_clamp.py OpenGL/raw/GL/NV/evaluators.py OpenGL/raw/GL/NV/explicit_multisample.py OpenGL/raw/GL/NV/fence.py OpenGL/raw/GL/NV/float_buffer.py OpenGL/raw/GL/NV/fog_distance.py OpenGL/raw/GL/NV/fragment_program.py OpenGL/raw/GL/NV/fragment_program2.py OpenGL/raw/GL/NV/fragment_program4.py OpenGL/raw/GL/NV/fragment_program_option.py OpenGL/raw/GL/NV/framebuffer_multisample_coverage.py OpenGL/raw/GL/NV/geometry_program4.py OpenGL/raw/GL/NV/geometry_shader4.py OpenGL/raw/GL/NV/gpu_program4.py OpenGL/raw/GL/NV/gpu_program5.py OpenGL/raw/GL/NV/gpu_shader5.py OpenGL/raw/GL/NV/half_float.py OpenGL/raw/GL/NV/light_max_exponent.py OpenGL/raw/GL/NV/multisample_coverage.py OpenGL/raw/GL/NV/multisample_filter_hint.py OpenGL/raw/GL/NV/occlusion_query.py OpenGL/raw/GL/NV/packed_depth_stencil.py OpenGL/raw/GL/NV/parameter_buffer_object.py OpenGL/raw/GL/NV/parameter_buffer_object2.py OpenGL/raw/GL/NV/path_rendering.py OpenGL/raw/GL/NV/pixel_data_range.py OpenGL/raw/GL/NV/point_sprite.py OpenGL/raw/GL/NV/present_video.py OpenGL/raw/GL/NV/primitive_restart.py OpenGL/raw/GL/NV/register_combiners.py OpenGL/raw/GL/NV/register_combiners2.py OpenGL/raw/GL/NV/shader_atomic_float.py OpenGL/raw/GL/NV/shader_buffer_load.py OpenGL/raw/GL/NV/shader_buffer_store.py OpenGL/raw/GL/NV/tessellation_program5.py OpenGL/raw/GL/NV/texgen_emboss.py OpenGL/raw/GL/NV/texgen_reflection.py OpenGL/raw/GL/NV/texture_barrier.py OpenGL/raw/GL/NV/texture_compression_vtc.py OpenGL/raw/GL/NV/texture_env_combine4.py OpenGL/raw/GL/NV/texture_expand_normal.py OpenGL/raw/GL/NV/texture_multisample.py OpenGL/raw/GL/NV/texture_rectangle.py OpenGL/raw/GL/NV/texture_shader.py OpenGL/raw/GL/NV/texture_shader2.py OpenGL/raw/GL/NV/texture_shader3.py OpenGL/raw/GL/NV/transform_feedback.py OpenGL/raw/GL/NV/transform_feedback2.py OpenGL/raw/GL/NV/vdpau_interop.py OpenGL/raw/GL/NV/vertex_array_range.py OpenGL/raw/GL/NV/vertex_array_range2.py OpenGL/raw/GL/NV/vertex_attrib_integer_64bit.py OpenGL/raw/GL/NV/vertex_buffer_unified_memory.py OpenGL/raw/GL/NV/vertex_program.py OpenGL/raw/GL/NV/vertex_program1_1.py OpenGL/raw/GL/NV/vertex_program2.py OpenGL/raw/GL/NV/vertex_program2_option.py OpenGL/raw/GL/NV/vertex_program3.py OpenGL/raw/GL/NV/vertex_program4.py OpenGL/raw/GL/NV/video_capture.py OpenGL/raw/GL/OES/__init__.py OpenGL/raw/GL/OES/read_format.py OpenGL/raw/GL/OML/__init__.py OpenGL/raw/GL/OML/interlace.py OpenGL/raw/GL/OML/resample.py OpenGL/raw/GL/OML/subsample.py OpenGL/raw/GL/PGI/__init__.py OpenGL/raw/GL/PGI/misc_hints.py OpenGL/raw/GL/PGI/vertex_hints.py OpenGL/raw/GL/REND/__init__.py OpenGL/raw/GL/REND/screen_coordinates.py OpenGL/raw/GL/S3/__init__.py OpenGL/raw/GL/S3/s3tc.py OpenGL/raw/GL/SGI/__init__.py OpenGL/raw/GL/SGI/color_matrix.py OpenGL/raw/GL/SGI/color_table.py OpenGL/raw/GL/SGI/depth_pass_instrument.py OpenGL/raw/GL/SGI/texture_color_table.py OpenGL/raw/GL/SGIS/__init__.py OpenGL/raw/GL/SGIS/detail_texture.py OpenGL/raw/GL/SGIS/fog_function.py OpenGL/raw/GL/SGIS/generate_mipmap.py OpenGL/raw/GL/SGIS/multisample.py OpenGL/raw/GL/SGIS/pixel_texture.py OpenGL/raw/GL/SGIS/point_line_texgen.py OpenGL/raw/GL/SGIS/point_parameters.py OpenGL/raw/GL/SGIS/sharpen_texture.py OpenGL/raw/GL/SGIS/texture4D.py OpenGL/raw/GL/SGIS/texture_border_clamp.py OpenGL/raw/GL/SGIS/texture_color_mask.py OpenGL/raw/GL/SGIS/texture_edge_clamp.py OpenGL/raw/GL/SGIS/texture_filter4.py OpenGL/raw/GL/SGIS/texture_lod.py OpenGL/raw/GL/SGIS/texture_select.py OpenGL/raw/GL/SGIX/FfdMask.py OpenGL/raw/GL/SGIX/__init__.py OpenGL/raw/GL/SGIX/async.py OpenGL/raw/GL/SGIX/async_histogram.py OpenGL/raw/GL/SGIX/async_pixel.py OpenGL/raw/GL/SGIX/blend_alpha_minmax.py OpenGL/raw/GL/SGIX/calligraphic_fragment.py OpenGL/raw/GL/SGIX/clipmap.py OpenGL/raw/GL/SGIX/convolution_accuracy.py OpenGL/raw/GL/SGIX/depth_pass_instrument.py OpenGL/raw/GL/SGIX/depth_texture.py OpenGL/raw/GL/SGIX/flush_raster.py OpenGL/raw/GL/SGIX/fog_offset.py OpenGL/raw/GL/SGIX/fog_scale.py OpenGL/raw/GL/SGIX/fragment_lighting.py OpenGL/raw/GL/SGIX/framezoom.py OpenGL/raw/GL/SGIX/igloo_interface.py OpenGL/raw/GL/SGIX/impact_pixel_texture.py OpenGL/raw/GL/SGIX/instruments.py OpenGL/raw/GL/SGIX/interlace.py OpenGL/raw/GL/SGIX/ir_instrument1.py OpenGL/raw/GL/SGIX/list_priority.py OpenGL/raw/GL/SGIX/pixel_texture.py OpenGL/raw/GL/SGIX/pixel_tiles.py OpenGL/raw/GL/SGIX/polynomial_ffd.py OpenGL/raw/GL/SGIX/reference_plane.py OpenGL/raw/GL/SGIX/resample.py OpenGL/raw/GL/SGIX/scalebias_hint.py OpenGL/raw/GL/SGIX/shadow.py OpenGL/raw/GL/SGIX/shadow_ambient.py OpenGL/raw/GL/SGIX/sprite.py OpenGL/raw/GL/SGIX/subsample.py OpenGL/raw/GL/SGIX/tag_sample_buffer.py OpenGL/raw/GL/SGIX/texture_add_env.py OpenGL/raw/GL/SGIX/texture_coordinate_clamp.py OpenGL/raw/GL/SGIX/texture_lod_bias.py OpenGL/raw/GL/SGIX/texture_multi_buffer.py OpenGL/raw/GL/SGIX/texture_scale_bias.py OpenGL/raw/GL/SGIX/texture_select.py OpenGL/raw/GL/SGIX/vertex_preclip.py OpenGL/raw/GL/SGIX/ycrcb.py OpenGL/raw/GL/SGIX/ycrcb_subsample.py OpenGL/raw/GL/SGIX/ycrcba.py OpenGL/raw/GL/SUN/__init__.py OpenGL/raw/GL/SUN/convolution_border_modes.py OpenGL/raw/GL/SUN/global_alpha.py OpenGL/raw/GL/SUN/mesh_array.py OpenGL/raw/GL/SUN/slice_accum.py OpenGL/raw/GL/SUN/triangle_list.py OpenGL/raw/GL/SUN/vertex.py OpenGL/raw/GL/SUNX/__init__.py OpenGL/raw/GL/SUNX/constant_data.py OpenGL/raw/GL/VERSION/GL_1_1.py OpenGL/raw/GL/VERSION/GL_1_2.py OpenGL/raw/GL/VERSION/GL_1_2_DEPRECATED.py OpenGL/raw/GL/VERSION/GL_1_3.py OpenGL/raw/GL/VERSION/GL_1_3_DEPRECATED.py OpenGL/raw/GL/VERSION/GL_1_4.py OpenGL/raw/GL/VERSION/GL_1_4_DEPRECATED.py OpenGL/raw/GL/VERSION/GL_1_5.py OpenGL/raw/GL/VERSION/GL_1_5_DEPRECATED.py OpenGL/raw/GL/VERSION/GL_2_0.py OpenGL/raw/GL/VERSION/GL_2_0_DEPRECATED.py OpenGL/raw/GL/VERSION/GL_2_1.py OpenGL/raw/GL/VERSION/GL_2_1_DEPRECATED.py OpenGL/raw/GL/VERSION/GL_3_0.py OpenGL/raw/GL/VERSION/GL_3_0_DEPRECATED.py OpenGL/raw/GL/VERSION/GL_3_1.py OpenGL/raw/GL/VERSION/GL_3_2.py OpenGL/raw/GL/VERSION/GL_3_3.py OpenGL/raw/GL/VERSION/GL_4_0.py OpenGL/raw/GL/VERSION/GL_4_1.py OpenGL/raw/GL/VERSION/GL_4_2.py OpenGL/raw/GL/VERSION/GL_4_3.py OpenGL/raw/GL/VERSION/__init__.py OpenGL/raw/GL/WIN/__init__.py OpenGL/raw/GL/WIN/phong_shading.py OpenGL/raw/GL/WIN/specular_fog.py OpenGL/raw/GLE/__init__.py OpenGL/raw/GLE/annotations.py OpenGL/raw/GLE/constants.py OpenGL/raw/GLU/__init__.py OpenGL/raw/GLU/annotations.py OpenGL/raw/GLU/constants.py OpenGL/raw/GLUT/__init__.py OpenGL/raw/GLUT/annotations.py OpenGL/raw/GLUT/constants.py PyOpenGL.egg-info/PKG-INFO PyOpenGL.egg-info/SOURCES.txt PyOpenGL.egg-info/dependency_links.txt PyOpenGL.egg-info/top_level.txt src/buildgledll.py src/core.py src/downloadglut.py src/find_glget_constants.py src/generateraw.py src/gengl.py src/get_gl_extensions.py src/missingdefs.py src/missingglut.py src/openglgenerator.py src/togl.py tests/deprecations.py tests/performance.py tests/test_accel_leak.py tests/test_core.py tests/test_crash_on_glutinit.py tests/test_fbdel.py tests/test_genframebuffers_twice.py tests/test_gldouble_ctypes.py tests/test_glgetactiveuniform.py tests/test_glgetfloat_leak.py tests/test_glreadpixels_uint8888.py tests/test_glu_crash_under_pygame.py tests/test_glut_fc.py tests/test_glutinit.py tests/test_glutinit3x.py tests/test_glutinit_0args.py tests/test_glutinit_simplest.py tests/test_glutinit_single.py tests/test_glutwindow.py tests/test_loadglut.py tests/test_sf2946226.py tests/testing_context.py tests/timerleak.py tests/yingyang.pngPyOpenGL-3.0.2/PyOpenGL.egg-info/top_level.txt0000644000175000001440000000000712032640120021761 0ustar mcfletchusers00000000000000OpenGL PyOpenGL-3.0.2/PyOpenGL.egg-info/dependency_links.txt0000644000175000001440000000000112032640120023300 0ustar mcfletchusers00000000000000 PyOpenGL-3.0.2/PyOpenGL.egg-info/PKG-INFO0000644000175000001440000000130612032640120020327 0ustar mcfletchusers00000000000000Metadata-Version: 1.1 Name: PyOpenGL Version: 3.0.2 Summary: Standard OpenGL bindings for Python Home-page: http://pyopengl.sourceforge.net Author: Mike C. Fletcher Author-email: mcfletch@vrplumber.com License: BSD Download-URL: http://sourceforge.net/projects/pyopengl/files/PyOpenGL/ Description: UNKNOWN Keywords: Graphics,3D,OpenGL,GLU,GLUT,GLE,GLX,EXT,ARB,Mesa,ctypes Platform: UNKNOWN Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Intended Audience :: Developers PyOpenGL-3.0.2/MANIFEST.in0000644000175000001440000000047312025001653015651 0ustar mcfletchusers00000000000000global-exclude *.odt *.odp .cvsignore *.diff exclude src/*.h src/*.xml src/*.zip src/*.pdf src/*.zip src/*.txt include src/win32deps.py src/toglinstall/get_togl.py src/*.py include tests/*.py tests/*.png include metadata.py include OpenGL/DLLS/* include license.txt include ChangeLog.txt exclude OpenGL_accelerate PyOpenGL-3.0.2/setup.py0000644000175000001440000000410712025001653015623 0ustar mcfletchusers00000000000000#! /usr/bin/env python """OpenGL-ctypes setup script (setuptools-based) """ import sys, os extra_commands = {} try: from setuptools import setup except ImportError: from distutils.core import setup if sys.hexversion >= 0x3000000: try: from distutils.command.build_py import build_py_2to3 extra_commands['build_py'] = build_py_2to3 except ImportError: pass sys.path.insert(0, '.' ) import metadata def is_package( path ): return os.path.isfile( os.path.join( path, '__init__.py' )) def find_packages( root ): """Find all packages under this directory""" for path, directories, files in os.walk( root ): if is_package( path ): yield path.replace( '/','.' ) requirements = [] if sys.hexversion < 0x2050000: requirements.append( 'ctypes' ) from distutils.command.install_data import install_data class smart_install_data(install_data): def run(self): #need to change self.install_dir to the library dir install_cmd = self.get_finalized_command('install') self.install_dir = getattr(install_cmd, 'install_lib') # should create the directory if it doesn't exist!!! return install_data.run(self) extra_commands['install_data'] = smart_install_data if sys.platform == 'win32': # binary versions of GLUT and GLE for Win32 (sigh) DLL_DIRECTORY = os.path.join('OpenGL','DLLS') datafiles = [ ( DLL_DIRECTORY, [ os.path.join( DLL_DIRECTORY,file) for file in os.listdir( DLL_DIRECTORY ) if os.path.isfile( file ) ] ), ] else: datafiles = [] if __name__ == "__main__": setup( name = "PyOpenGL", packages = list( find_packages('OpenGL') ), description = 'Standard OpenGL bindings for Python', options = { 'sdist': { 'formats': ['gztar','zip'], 'force_manifest': True, }, }, data_files = datafiles, cmdclass = extra_commands, use_2to3 = True, **metadata.metadata ) PyOpenGL-3.0.2/src/0000755000175000001440000000000012032640120014672 5ustar mcfletchusers00000000000000PyOpenGL-3.0.2/src/missingglut.py0000755000175000001440000000305312025001653017621 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Script to find missing GLUT entry points""" from OpenGL import GLUT import subprocess, re func_finder = re.compile( 'FGAPIENTRY (\w+)\(' ) constant_finder = re.compile( '#define\W+([0-9a-zA-Z_]+)\W+((0x)?\d+)' ) INCLUDE_DIR = '/usr/include/GL' def defined( ): """Grep FGAPIENTRY headers from /usr/include/GL""" pipe = subprocess.Popen( 'grep -r FGAPIENTRY %(INCLUDE_DIR)s/*'%globals(), shell=True, stdout=subprocess.PIPE ) stdout,stderr = pipe.communicate() return stdout def constants(): pipe = subprocess.Popen( 'grep -r "#define" %(INCLUDE_DIR)s/*glut*'%globals(), shell=True, stdout=subprocess.PIPE ) stdout,stderr = pipe.communicate() return stdout def main(): headers = {} for line in defined().splitlines(): match = func_finder.search( line ) if match: headers[match.group(1)] = line.split(':',1)[0] for key in headers.keys(): if hasattr( GLUT, key ): del headers[key] import pprint pprint.pprint( headers ) missing = {} for line in constants().splitlines(): match = constant_finder.search( line ) if match: key,value=(match.group(1),match.group(2)) if not hasattr( GLUT, key ): file = line.split(':',1)[0] missing.setdefault(file,[]).append( (key,value)) for file,variables in missing.items(): print file variables.sort() for key,value in variables: print '%s=%s'%(key,value) if __name__ == "__main__": main() PyOpenGL-3.0.2/src/openglgenerator.py0000644000175000001440000002434112025001653020447 0ustar mcfletchusers00000000000000"""Refactored version of the opengl generator using ctypeslib """ try: from ctypeslib.codegen import codegenerator from ctypeslib import xml2py except ImportError, err: try: from ctypes_codegen import codegenerator, xml2py except ImportError, err: from ctypes.wrap import codegenerator, xml2py try: from cStringIO import StringIO except ImportError, err: from StringIO import StringIO import sys, logging log = logging.getLogger( 'openglgenerator' ) import ctypes from OpenGL.platform import GL, GLU, GLUT, GLE from OpenGL import constant def indent( code, indentation='\t' ): """Indent given code by given indentation""" lines = code.splitlines() return "\n".join( [ '%s%s'%(indentation,line) for line in lines] ) class OpenGLGenerator( codegenerator.Generator ): """Subclass of code generator providing PyOpenGL integration""" _super = codegenerator.Generator MODULE_HEADER = """from ctypes import * from OpenGL import platform, arrays from OpenGL.constant import Constant from OpenGL import constants as GLconstants GLvoid = GLconstants.GLvoid """ def defaultEmitters( cls ): """Produce the set of default emitter classes """ return [ OpenGLFunction(), OpenGLConstant(), ] + cls._super.defaultEmitters() def importAble( cls, name, value ): """Determine whether this name/object should be imported from known symbols""" return ( isinstance( value, type ) or isinstance( value, constant.Constant ) or value.__class__.__name__.endswith( 'CFunctionType') # this should be available *somewhere*! ) importAble = classmethod( importAble ) def filter_items( self, items, expressions=None,symbols=None, types=None ): """Filter out PFN functions""" items = [ i for i in items # skip the pointer-to-function meta-types... if not getattr( i,'name','').startswith( 'PFN' ) ] return self._super.filter_items( self, items, expressions=expressions, symbols=symbols, types=types ) def get_sharedlib(self, dllname, cc): """Override so that all references to shared libraries go through "platform" module""" if dllname in ('libGL','GL','libGL.so.1'): return 'platform.GL' elif dllname in ('libGLU','GLU','libGLU.so.1'): return 'platform.GLU' elif dllname in ('libglut','glut','libglut.so.3'): return 'platform.GLUT' elif dllname in ('libgle','gle','libgle.so.3' ): return 'platform.GLE' else: raise NotImplementedError( """Haven't done %s yet!"""%(dllname) ) def cmpitems( self, a, b ): """Dumb sorting helper to order by name instead of position""" try: return cmp( (a.name,getattr(a, "location", -1), a.__class__), (b.name,getattr(b, "location", 1),b.__class__)) except (AttributeError,TypeError,ValueError), err: return cmp( a, b ) class OpenGLFunction( codegenerator.Function ): """Replaces the ctypes default code generator for functions""" TEMPLATE = """%(location)s%(name)s = platform.createBaseFunction( %(name)r, dll=%(libname)s, resultType=%(returnType)s, argTypes=[%(argTypes)s], doc=%(documentation)r, argNames=%(argNames)r, ) """ def emit(self, generator, func): """Produce a function via a call to platform-provided function""" result = [] libname = self.libName( generator, func ) if libname: self.increment() result.append( self.generateHeader( generator, func )) args = self.getArgs( generator, func ) argTypes = ",".join( args ) argNames = self.getArgNames( generator, func ) location = self.locationComment( generator, func ) name = func.name returnType = generator.type_name(func.returns) documentation = self.documentFunction( generator, func ) generator.names.add(func.name) result.append( self.TEMPLATE %locals() ) return result elif not func.name.startswith( '__builtin_' ): log.warn( """Could not find DLL name for function: %r""", func.name ) return '' def arrayTypeName( self, generator, argType ): """Retrieve the array type name for argType or None""" if generator.type_name(argType).startswith( 'POINTER' ): # side effect should be to make the type available, # but doesn't work with GLvoid typeName = generator.type_name(argType.typ) if typeName in self.CTYPE_TO_ARRAY_TYPE: return 'arrays.%s'%(self.CTYPE_TO_ARRAY_TYPE[typeName]) elif (typeName == 'GLvoid'): # normal to not have pointers to it... log.info( 'GLvoid pointer %r, using POINTER(%s)', typeName, typeName ) else: log.warn( 'No mapping for %r, using POINTER(%s)', typeName, typeName ) return None def getArgs( self, generator, func ): """Retrieve arg type-names for all arguments in function typedef""" return [ self.arrayTypeName( generator, a ) or generator.type_name(a) for a in func.iterArgTypes() ] def documentFunction( self, generator, func ): """Customisation point for documenting a given function""" args = self.getArgs(generator,func) argnames = self.getArgNames( generator, func ) return str("%s( %s ) -> %s"%( func.name, ", ".join( [ '%s(%s)'%( name, typ) for (name,typ) in zip(args,argnames) ] ), generator.type_name(func.returns), )) SUFFIX_TO_ARRAY_DATATYPE = [ ('ub','GLconstants.GL_UNSIGNED_BYTE'), ('us','GLconstants.GL_UNSIGNED_SHORT'), ('ui','GLconstants.GL_UNSIGNED_INT'), ('f','GLconstants.GL_FLOAT'), ('d','GLconstants.GL_DOUBLE'), ('i','GLconstants.GL_INT'), ('s','GLconstants.GL_SHORT'), ('b','GLconstants.GL_BYTE'), ] CTYPE_TO_ARRAY_TYPE = { 'GLfloat': 'GLfloatArray', 'float': 'GLfloatArray', 'GLclampf': 'GLclampfArray', 'GLdouble': 'GLdoubleArray', 'double': 'GLdoubleArray', 'int': 'GLintArray', 'GLint': 'GLintArray', 'GLuint': 'GLuintArray', 'unsigned int':'GLuintArray', 'unsigned char': 'GLbyteArray', 'uint': 'GLuintArray', 'GLshort': 'GLshortArray', 'GLushort': 'GLushortArray', 'short unsigned int':'GLushortArray', 'GLubyte': 'GLubyteArray', 'GLbyte': 'GLbyteArray', 'char': 'GLbyteArray', 'gleDouble': 'GLdoubleArray', # following should all have special sub-classes that enforce dimensions 'gleDouble * 4': 'GLdoubleArray', 'gleDouble * 3': 'GLdoubleArray', 'gleDouble * 2': 'GLdoubleArray', 'c_float * 3': 'GLfloatArray', 'gleDouble * 3 * 2': 'GLdoubleArray', } class OpenGLConstant( codegenerator.Variable ): """Override to produce OpenGL.constant.Constant instances""" TEMPLATE = """%(name)s = Constant( %(name)r, %(value)r)""" def emit( self, generator, typedef ): """Filter out constants that don't have all-uppercase names""" if typedef.name.upper() != typedef.name: return "" return super( OpenGLConstant, self ).emit( generator, typedef ) class OpenGLDecorator( OpenGLFunction ): """Produces decorated versions of the functions in a separate module This is passed in as an emitter for a separate pass, so that only the annotations get into the separate module. """ def isPointer( self, generator, arg ): """Is given arg-type a pointer?""" return generator.type_name( arg ).startswith( 'POINTER' ) def hasPointer( self, generator, args ): """Given set of arg-types, is one a pointer?""" return [ arg for arg in args if self.isPointer( generator, arg ) ] def emit( self, generator, func ): """Emit code to create a copy of the function with pointer-size annotations""" name = func.name size = None typ = None if not self.hasPointer( generator, func.iterArgTypes() ): return None libname = self.libName( generator, func ) if not libname: return None base = name if name.endswith( 'ARB' ): base = base[:-3] if base.endswith( 'v' ): base = base[:-1] found = 0 for suffix,typ in self.SUFFIX_TO_ARRAY_DATATYPE: if base.endswith(suffix): found = 1 base = base[:-len(suffix)] try: size = int(base[-1]) except ValueError, err: size = None break elif base[:-1].endswith( 'Matrix' ): # glLoadMatrix, glMultMatrix for suffix,typ in self.SUFFIX_TO_ARRAY_DATATYPE: if name.endswith( suffix ): size = 16 break result = '' for index,(arg,argName) in enumerate( zip(func.iterArgTypes(),func.iterArgNames()) ): type = self.arrayTypeName( generator, arg ) argName = str(argName ) if type: generator.names.add(func.name) if result: previous = indent( result, '\t' ) else: previous = '\traw.%(name)s'%locals() if type and size is None: # should only print this if it's a normal array type... result = """arrays.setInputArraySizeType( %(previous)s, None, # XXX Could not determine size of argument %(argName)s for %(name)s %(type)s %(type)s, %(argName)r, ) """%locals() elif type: result = """arrays.setInputArraySizeType( %(previous)s, %(size)s, %(type)s, %(argName)r, ) """%locals() if result: return '%(name)s = %(result)s'%locals() return None if __name__ == "__main__": import sys, logging logging.basicConfig() codegenerator.Generator = OpenGLGenerator sys.exit(xml2py.main()) PyOpenGL-3.0.2/src/generateraw.py0000755000175000001440000001462412025001653017566 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Script to generate the raw sub-package APIs Basically just drives OpenGLGenerator with options to produce the various modules we want... """ import os, sys, logging, re, compileall import openglgenerator from OpenGL import platform try: from OpenGL import GL except (ImportError, AttributeError), err: pass # put our OpenGL directory on the search path, just in case... sys.path.insert( 0, os.path.abspath( '..' ) ) log = logging.getLogger( 'generateraw' ) MODULE_DEFINITIONS = [ ('GL', ('gl[A-Z0-9].*','GL_.*')), ('GLU',('glu[A-Z0-9].*','GLU[_a-z0-9].*')), ('GLUT', ('glut[A-Z0-9].*','GLUT[_a-z0-9].*')), ('GLE', None), ('GLX', None), ('WGL', ('wgl.*','WGL.*',)), ('AGL', None), ] def filterModules( arguments ): """Filter the set of modules according to command-line options Basically no args == do everything, otherwise only process modules declared here... """ if arguments: definitions = [ x for x in MODULE_DEFINITIONS if x[0] in arguments ] else: definitions = MODULE_DEFINITIONS return definitions def main(): baseModules = [ 'OpenGL.constants', ] known_symbols = openglgenerator.OpenGLGenerator.loadKnownSymbols( baseModules ) definedSymbols = known_symbols.copy() for (module,expressions) in filterModules( sys.argv[1:] ): log.info( "Processing module: %s", module ) if expressions: expressions = [re.compile(e) for e in expressions] xmlFile = '%s.xml'%( module.lower(), ) directory = '../OpenGL/raw/%(module)s'%locals() try: os.makedirs( directory ) except OSError, err: pass constantsFile = os.path.join( directory, 'constants.py' ) rawFile = os.path.join( directory, '__init__.py' ) open( rawFile, 'w' ).close() annotationsFile = os.path.join( directory, 'annotations.py' ) dll = getattr( platform, module, None ) if dll and os.path.isfile( xmlFile ): log.info( "Found DLL: %s and have XML source file: %s", dll, xmlFile ) # first the constants file... log.info( "Generating constants %s", constantsFile ) gen = openglgenerator.OpenGLGenerator( open(constantsFile,'w'), generate_comments = False, searched_dlls = [ dll ], known_symbols = definedSymbols, module_header = '''"""Constants for OpenGL.%(module)s Automatically generated by the generateraw script, do not edit! """ '''%locals(), ) items = gen.load_typedefs( xmlFile , types = [ openglgenerator.codegenerator.typedesc.Variable, # ick! ], expressions = expressions) gen.produce( items ) gen.output.close() log.info( "Generating raw API %s", rawFile ) constantSymbols = gen.loadKnownSymbols( ['OpenGL.raw.%(module)s.constants'%locals()], flags = gen.EXPORT_SYMBOL, # don't import, do export doReload = True, ) constantSymbols.update( definedSymbols ) constantSymbols.update( known_symbols ) gen = openglgenerator.OpenGLGenerator( open(rawFile,'w'), generate_comments = True, searched_dlls = [ dll ], known_symbols = constantSymbols, module_header = '''# -*- coding: iso-8859-1 -*- """Raw (C-style) API for OpenGL.%(module)s Automatically generated by the generateraw script, do not edit! """ from OpenGL.raw.%(module)s.constants import * '''%locals(), ) items = gen.load_typedefs( xmlFile, expressions = expressions ) gen.produce( items ) gen.output.close() log.info( "Generating annotations %s", annotationsFile ) gen = openglgenerator.OpenGLGenerator( open(annotationsFile,'w'), generate_comments = True, searched_dlls = [ dll ], emitters = [ openglgenerator.OpenGLDecorator() ], known_symbols = definedSymbols, module_header = '''"""Array-size annotations for OpenGL.raw.%(module)s Automatically generated by the generateraw script, do not edit! """ from OpenGL.raw import %(module)s as raw '''%locals(), ) items = gen.load_typedefs( xmlFile, types = [ openglgenerator.codegenerator.typedesc.Function, # ick! ], expressions = expressions) gen.produce( items ) gen.output.close() log.info( """Suppressing future output of already-defined functions/structures: %s""", module ) definedSymbols.update( gen.loadKnownSymbols( ['OpenGL.raw.%(module)s'%locals()], flags = 0, # neither import nor export from future operations... doReload = True, ) ) definedSymbols.update( gen.loadKnownSymbols( ['OpenGL.raw.%(module)s.constants'%locals()], flags = 0, # suppress future export of the constants doReload = True, ) ) definedSymbols.update( known_symbols ) if module == 'GL': # filter out the higher GL version stuff as well... # obviously you need to have the version stuff generated already # to make this work! for version in ('1_2','1_3','1_4','1_5','2_0'): log.info( 'Suppressing exports from Core GL Version %s', version ) definedSymbols.update( gen.loadKnownSymbols( ['OpenGL.raw.GL.VERSION.GL_%(version)s'%locals()], flags = 0, # suppress future export of the constants doReload = True, ) ) path = '../OpenGL/raw/%(module)s'%locals() log.info( 'Forcing recompilation of %s', path ) compileall.compile_dir(path, maxlevels=2, force=True, quiet=True) if __name__ == "__main__": logging.basicConfig() #logging.getLogger( 'codegenerator' ).setLevel( logging.DEBUG ) log.setLevel( logging.INFO ) main() PyOpenGL-3.0.2/src/downloadglut.py0000755000175000001440000000252712025001653017764 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Download and replicate the Win32+Win64 glut into our DLLs directory... Visual Studio keeps eating my 64-bit configurations, so we'll use the binary distribution for now... """ import sys, os, subprocess, requests, logging, platform, shutil, glob log = logging.getLogger( 'buildgle' ) DOWNLOAD_URL = 'http://www.idfun.de/glut64/glut-3.7.6-bin-32and64.zip' GLUT_VERSION = '3.7.6' GLUT_SOURCE_DIR = 'glut-%(GLUT_VERSION)s-bin'%globals() ZIP_FILE = '%(GLUT_SOURCE_DIR)s-32and64.zip'%globals() def download_and_unpack(): if not os.path.exists( ZIP_FILE ): response = requests.get( DOWNLOAD_URL ) if response.ok: open( ZIP_FILE, 'wb').write( response.content ) if not os.path.exists( GLUT_SOURCE_DIR ): subprocess.check_call( 'unzip %(ZIP_FILE)s'%globals() ) def copy(): current = os.getcwd() target_dir = os.path.join( current, '..','OpenGL','DLLS' ) for fn in glob.glob( os.path.join( GLUT_SOURCE_DIR, '*.dll' )): shutil.copyfile( fn, os.path.join( target_dir, os.path.basename( fn ))) shutil.copyfile( os.path.join( GLUT_SOURCE_DIR, 'README-win32.txt' ), os.path.join( target_dir, 'glut_README.txt' )) def main(): download_and_unpack() copy() if __name__ == "__main__": logging.basicConfig( level=logging.INFO ) main() PyOpenGL-3.0.2/src/missingdefs.py0000755000175000001440000000434012025001653017567 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Quick script to check for all entry points being defined""" import re,pprint,logging lmatch= re.compile( r'^\w+[ \t]*\([^)]+\)' ) comment = re.compile( r'([ \t]*\#.*)|passthru\:' ) param = re.compile( r'[ \t]+(?P[^ \t]+)[ \t]+(?P[^ \t]+)([ \t]+(?P
.*))?' ) functions = {} log = logging.getLogger( 'missing' ) def module_for_category( category ): """Return the OpenGL.GL.x module for the given category name""" if category.startswith( 'VERSION_' ): name = 'OpenGL.GL' else: owner,name = category.split( '_',1) if owner.startswith( '3' ): owner = owner[1:] name = 'OpenGL.GL.%s.%s'%( owner,name ) return __import__( name, {}, {}, name.split( '.' )) def main(): current = None for line in open( 'gl.spec' ): line = line.rstrip( '\n' ).rstrip( '\r' ) if lmatch.match( line ): current = { '': line.strip() } functions[line.strip()] = current elif not current: pass elif comment.match( line ): pass else: match = param.match( line ) if match: current.setdefault(match.group('type'),[]).append( (match.group('name'),match.group('details')) ) categories = {} for key,func in functions.items(): assert 'category' in func, func categories.setdefault( func['category'][0][0], [] ).append( func ) for category,funcs in sorted(categories.items()): try: module = module_for_category( category ) except ImportError, err: log.error( 'Whole category missing: %s', category ) else: log.info( 'Checking category: %s', category ) for func in funcs: funcname = func[''].split('(')[0] funcname = 'gl'+funcname if not hasattr( module, funcname ): log.error( "Missing entry point %s in module %s", funcname, module.__name__, ) if __name__ == "__main__": logging.basicConfig() main() PyOpenGL-3.0.2/src/togl.py0000755000175000001440000000760612025001653016231 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Simple setup script that installs Tcl/Tk Togl widget into PyOpenGL""" import OpenGL,sys, os, shutil, logging, urllib, tarfile, zipfile, fnmatch import optparse log = logging.getLogger( 'togl-setup' ) if sys.maxint > 2L**32: suffix = '-64' else: suffix = '' # These three define what software we're going to install... TOGL_VERSION = '2.0' COMPILED_TK_VERSION = '8.4' BASE_URL = 'http://downloads.sourceforge.net/project/togl/Togl' DOWNLOAD_TEMPLATE = '%(BASE_URL)s/%(TOGL_VERSION)s/Togl%(TOGL_VERSION)s-%(COMPILED_TK_VERSION)s-%%s?use_mirror=iweb'%globals() urls = { 'win32': DOWNLOAD_TEMPLATE%('Windows.zip',), 'linux2': DOWNLOAD_TEMPLATE%('Linux.tar.gz',), 'linux2-64': DOWNLOAD_TEMPLATE%('Linux64.tar.gz',), 'darwin': DOWNLOAD_TEMPLATE%('MacOSX.tar.gz',), } #urls['linux2-64'] = 'Togl2.0-8.4-Linux64.tar.gz' WANTED_FILES = 'Togl%(TOGL_VERSION)s-%(COMPILED_TK_VERSION)s-*/lib/Togl%(TOGL_VERSION)s/*'%globals() def setup( key=None, force=False ): """Do setup by creating and populating the directories This incredibly dumb script is intended to let you unpack the Tcl/Tk library Togl from SourceForce into your PyOpenGL 3.0.1 (or above) distribution. Note: will not work with win64, both because there is no win64 package and because we don't have a url defined for it. """ if key is None: key = '%s%s'%( sys.platform,suffix ) log.info( 'Doing setup for platform key: %s', key ) target_directory = os.path.join( os.path.dirname( OpenGL.__file__ ), 'Tk', 'togl-%s'%( key, ), ) log.info( 'Target directory: %s', target_directory ) if key not in urls: log.error( """URL for platform key %s is not present, please update script""", key, ) sys.exit( 1 ) if os.path.exists( target_directory ): return False url = urls[key] log.info( 'Downloading: %s', url ) filename,headers = urllib.urlretrieve( url ) log.info( 'Downloaded to: %s', filename ) if not os.path.isdir( target_directory ): log.warn( 'Creating directory: %s', target_directory ) try: os.makedirs( target_directory ) except OSError, err: log.error( "Unable to create directory: %s", target_directory ) sys.exit( 2 ) if '.tar.gz' in url: log.info( 'Opening TarFile' ) fh = tarfile.open( filename, 'r:gz') def getnames(): return fh.getnames() def getfile( name ): return fh.extractfile( name ) elif '.zip' in url: log.info( 'Opening ZipFile' ) fh = zipfile.ZipFile( filename ) def getnames(): return fh.namelist() def getfile( name ): return fh.open( name ) try: for name in getnames(): log.debug( 'Found file: %s', name ) if fnmatch.fnmatch( name, WANTED_FILES ): if not name.endswith( '/' ): log.info( 'Found wanted file: %s', name ) source = getfile( name ) try: new = os.path.join( target_directory, os.path.basename( name ), ) log.info( 'Writing file: %s', new ) open( new,'wb' ).write( source.read() ) finally: if hasattr( source, 'close' ): source.close() finally: fh.close() if filename != url: os.remove( filename ) return True if __name__ == "__main__": logging.basicConfig(level=logging.INFO) if sys.argv[1:]: if sys.argv[1] == 'all': keys = urls.keys() else: keys = sys.arv[1:] for key in keys: setup( key ) else: setup() PyOpenGL-3.0.2/src/gengl.py0000755000175000001440000003232112025001653016350 0ustar mcfletchusers00000000000000#!/usr/bin/env python '''Hacked version of Pyglet's gengl that produces PyOpenGL-based modules To use, you have to do an svn co of pyglet to get the "tools" directory, add the package "wraptypes" to your site-packages and you should be able to run this script. Note: currently the AGL module can only be generated on OS-X, GLX can only be generated on a GLX platform (e.g. Linux), WGL should generate anywhere as I'm using Alex's hacked/derived wgl.h as the source for it. TODO: This wrapper is missing a lot of the operations from the original openglgenerator module. It's only appropriate for generating the platform-specific modules (GLX, WGL, AGL). Eventually should port the code from the openglgenerator module to support creating the extensions and core GL modules. ''' # Copyright (c) 2006-2008 Alex Holkner # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of pyglet nor the names of its # contributors may be used to endorse or promote products # derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. __docformat__ = 'restructuredtext' __version__ = '$Id: gengl.py,v 1.3 2008/05/02 18:49:57 mcfletch Exp $' import marshal import optparse import os.path import urllib2 import sys import textwrap import re # monkey-patching the tool to support argument names... from wraptypes import ctypesparser class CtypesFunction( ctypesparser.CtypesFunction ): def __init__(self, restype, parameters): if parameters and parameters[-1] == '...': parameters = parameters[:-1] self.argnames = [ self.argname(p.declarator) for p in parameters ] super( CtypesFunction, self ).__init__( restype, parameters ) def argname( self, parameter ): if not getattr( parameter, 'pointer', None ): return parameter else: return self.argname( parameter.pointer ) ctypesparser.CtypesFunction = CtypesFunction from wraptypes import wrap script_dir = os.path.abspath(os.path.dirname(__file__)) GLEXT_ABI_H = 'http://oss.sgi.com/projects/ogl-sample/ABI/glext.h' GLEXT_NV_H = 'http://developer.download.nvidia.com/opengl/includes/glext.h' GLXEXT_ABI_H = 'http://oss.sgi.com/projects/ogl-sample/ABI/glxext.h' GLXEXT_NV_H = 'http://developer.download.nvidia.com/opengl/includes/glxext.h' WGLEXT_ABI_H = 'http://oss.sgi.com/projects/ogl-sample/ABI/wglext.h' WGLEXT_NV_H = 'http://developer.download.nvidia.com/opengl/includes/wglext.h' AGL_H = '/System/Library/Frameworks/AGL.framework/Headers/agl.h' GL_H = '/usr/include/GL/gl.h' GLU_H = '/usr/include/GL/glu.h' GLX_H = '/usr/include/GL/glx.h' WGL_H = os.path.join(script_dir, 'wgl.h') OSMESA_H = '/usr/include/GL/osmesa.h' CACHE_FILE = os.path.join(script_dir, '.gengl.cache') _cache = {} def load_cache(): global _cache if os.path.exists(CACHE_FILE): try: _cache = marshal.load(open(CACHE_FILE, 'rb')) or {} except: pass _cache = {} def save_cache(): try: marshal.dump(_cache, open(CACHE_FILE, 'wb')) except: pass def read_url(url): if url in _cache: return _cache[url] if os.path.exists(url): data = open(url).read() else: data = urllib2.urlopen(url).read() _cache[url] = data save_cache() return data class GLWrapper(wrap.CtypesWrapper): requires = None requires_prefix = None def __init__(self, header, match_re): self.header = header self.match_re = match_re super(GLWrapper, self).__init__() def handle_declaration(self, declaration, filename, lineno): """Overridden solely to pass in the argument names""" t = wrap.get_ctypes_type(declaration.type, declaration.declarator) declarator = declaration.declarator if declarator is None: # XXX TEMPORARY while struct with no typedef not filled in return while declarator.pointer: declarator = declarator.pointer name = declarator.identifier if declaration.storage == 'typedef': self.handle_ctypes_type_definition( name, wrap.remove_function_pointer(t), filename, lineno) elif type(t) == CtypesFunction: # this is the line we override self.handle_ctypes_function( name, t.restype, t.argtypes, filename, lineno, t.argnames) elif declaration.storage != 'static': self.handle_ctypes_variable(name, t, filename, lineno) def print_preamble(self): import time print >> self.file, textwrap.dedent(""" # This content is generated by %(script)s. # Wrapper for %(header)s from OpenGL import platform, constant from ctypes import * c_void = None """ % { 'header': self.header, 'date': time.ctime(), 'script': __file__, }).lstrip() def libFromRequires( self, requires ): return self.library or 'platform.GL' def handle_ctypes_function(self, name, restype, argtypes, filename, lineno, argnames): if self.does_emit(name, filename): self.emit_type(restype) for a in argtypes: self.emit_type(a) self.all_names.append(name) #print >> self.file, '# %s:%d' % (filename, lineno) print >> self.file, '''%(name)s = platform.createBaseFunction( %(name)r, dll=%(libname)s, resultType=%(returnType)s, argTypes=[%(argTypes)s], doc=%(documentation)r, argNames=%(argNames)r, )'''%dict( name = name, libname = self.libFromRequires( self.requires ), returnType = restype, argTypes = ', '.join([str(a) for a in argtypes]), documentation = self.documentation( name, argnames, argtypes, restype ), argNames = [str(x) for x in argnames], ) print >> self.file def documentation( self, name, argnames, args, returntype ): """Customisation point for documenting a given function""" return str("%s( %s ) -> %s"%( name, ", ".join( [ '%s(%s)'%( typ, name) for (typ,name) in zip(args,argnames) ] ), returntype, )) def handle_ifndef(self, name, filename, lineno): if ( self.requires_prefix and name[:len(self.requires_prefix)] == self.requires_prefix ): self.requires = name[len(self.requires_prefix):] print >> self.file, '# %s (%s:%d)' % \ (self.requires, filename, lineno) def handle_ctypes_constant(self, name, value, filename, lineno): if self.does_emit( name, filename ): print >> self.file, '%(name)s = constant.Constant( %(name)r, %(value)r )'%locals() self.all_names.append(name) def does_emit(self, symbol, filename): base = super( GLWrapper, self ).does_emit( symbol, filename ) if base: if self.match_re: if self.match_re.match( symbol ): return True else: return False return base def progress(msg): print >> sys.stderr, msg marker_begin = '# BEGIN GENERATED CONTENT (do not edit below this line)\n' marker_end = '# END GENERATED CONTENT (do not edit above this line)\n' class ModuleWrapper(object): def __init__( self, header, filename, prologue='', requires_prefix=None, system_header=None, match_re=None, library=None, ): self.header = header self.filename = filename self.prologue = prologue self.requires_prefix = requires_prefix self.system_header = system_header self.match_re = match_re self.library = library def wrap(self, dir): progress('Updating %s...' % self.filename) source = read_url(self.header) filename = os.path.join(dir, self.filename) prologue = [] epilogue = [] state = 'prologue' try: for line in open(filename): if state == 'prologue': prologue.append(line) if line == marker_begin: state = 'generated' elif state == 'generated': if line == marker_end: state = 'epilogue' epilogue.append(line) elif state == 'epilogue': epilogue.append(line) except IOError: prologue = [marker_begin] epilogue = [marker_end] state = 'epilogue' if state != 'epilogue': raise Exception('File exists, but generated markers are corrupt ' 'or missing') outfile = open(filename, 'w') print >> outfile, ''.join(prologue) wrapper = GLWrapper(self.header, self.match_re) if self.system_header: wrapper.preprocessor_parser.system_headers[self.system_header] = \ source header_name = self.system_header or self.header wrapper.requires_prefix = self.requires_prefix wrapper.begin_output(outfile, library=self.library, emit_filenames=(header_name,)) source = self.prologue + source wrapper.wrap(header_name, source) wrapper.end_output() print >> outfile, ''.join(epilogue) modules = { 'gl': ModuleWrapper(GL_H, 'gl.py'), ## 'glu': ## ModuleWrapper(GLU_H, 'glu.py'), ## 'glext_arb': ## ModuleWrapper(GLEXT_ABI_H, 'glext_arb.py', ## requires_prefix='GL_', system_header='GL/glext.h', ## prologue='#define GL_GLEXT_PROTOTYPES\n#include \n'), ## 'glext_nv': ## ModuleWrapper(GLEXT_NV_H, 'glext_nv.py', ## requires_prefix='GL_', system_header='GL/glext.h', ## prologue='#define GL_GLEXT_PROTOTYPES\n#include \n'), # 'glx': # ModuleWrapper(GLX_H, '_GLX.py', # requires_prefix='GLX_', # match_re = re.compile( 'glX|GLX' ), # ), # 'glx_arb': # ModuleWrapper(GLXEXT_ABI_H, '_GLX_ARB.py', requires_prefix='GLX_', # system_header='GL/glxext.h', # prologue='#define GLX_GLXEXT_PROTOTYPES\n#include \n', # match_re = re.compile( 'glX|GLX_' ), # ), # 'glx_nv': # ModuleWrapper(GLXEXT_NV_H, '_GLX_NV.py', requires_prefix='GLX_', # system_header='GL/glxext.h', # prologue='#define GLX_GLXEXT_PROTOTYPES\n#include \n', # match_re = re.compile( 'glX|GLX_' ), # ), # 'agl': # ModuleWrapper(AGL_H, 'AGL.py'), # 'wgl': # ModuleWrapper(WGL_H, '_WGL.py'), # 'wgl_arb': # ModuleWrapper(WGLEXT_ABI_H, '_WGL_ARB.py', requires_prefix='WGL_', # prologue='#define WGL_WGLEXT_PROTOTYPES\n'\ # '#include "%s"\n' % WGL_H.encode('string_escape')), # 'wgl_nv': # ModuleWrapper(WGLEXT_NV_H, '_WGL_NV.py', requires_prefix='WGL_', # prologue='#define WGL_WGLEXT_PROTOTYPES\n'\ # '#include "%s"\n' % WGL_H.encode('string_escape')), # 'osmesa': # ModuleWrapper(OSMESA_H,'osmesa.py',requires_prefix='OSMESA_', # library = 'OSMESA', # ), } if __name__ == '__main__': op = optparse.OptionParser() op.add_option('-D', '--dir', dest='dir', help='output directory') op.add_option('-r', '--refresh-cache', dest='refresh_cache', help='clear cache first', action='store_true') options, args = op.parse_args() if not options.refresh_cache: load_cache() else: save_cache() if not args: print >> sys.stderr, 'Specify module(s) to generate:' print >> sys.stderr, ' %s' % ' '.join(modules.keys()) if not options.dir: options.dir = os.path.join(script_dir, os.path.pardir, 'OpenGL', 'raw') if not os.path.exists(options.dir): os.makedirs(options.dir) for arg in args: if arg not in modules: print >> sys.stderr, "Don't know how to make '%s'" % arg continue modules[arg].wrap(options.dir) PyOpenGL-3.0.2/src/buildgledll.py0000755000175000001440000000641412025001653017543 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Build the (Open)GLE distribution Start a VC shell: "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\Visual Studio 2008 Command Prompt.lnk" "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\Visual Studio 2008 x64 Win64 Command Prompt.lnk" Then run this script with the appropriate (32-bit or 64-bit python): c:\python27-32\python.exe buildgledll.py c:\python27-64\python.exe buildgledll.py Note: the name "opengle" is required because someone issues DMCA takedown orders against anything named "gle.dll" despite the name GLE referring to the GLE project for a very long time (they took PyOpenGL offline for a while due to such a takedown notice). """ import sys, os, subprocess, requests, logging, platform, shutil, glob log = logging.getLogger( 'buildgle' ) DOWNLOAD_URL = 'http://downloads.sourceforge.net/project/gle/gle/gle-3.1.0/gle-3.1.0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fgle%2F&ts=1315332658&use_mirror=voxel' GLE_VERSION = '3.1.0' GLE_SOURCE_DIR = 'gle-%(GLE_VERSION)s'%globals() TAR_FILE = '%(GLE_SOURCE_DIR)s.tar.gz'%globals() EXPORTS = """ gleExtrusion gleGetNumSides gleSetJoinStyle glePolyCylinder gleSpiral gleSetNumSides uview_direction gleScrew gleHelicoid gleToroid gleExtrusion gleTextureMode gleSuperExtrusion gleLathe gleGetJoinStyle glePolyCone gleTwistExtrusion urot_omega rot_about_axis urot_prince rot_prince urot_about_axis rot_omega rot_axis uviewpoint urot_axis""" if sys.hexversion < 0x2070000: VC = 'vc7' # TODO: add Python 3.x compiler compatibility... else: VC = 'vc9' def download_and_unpack(): if not os.path.exists( TAR_FILE ): response = requests.get( DOWNLOAD_URL ) if response.ok: open( TAR_FILE, 'wb').write( response.content ) if not os.path.exists( GLE_SOURCE_DIR ): subprocess.check_call( 'tar -zxvf %(TAR_FILE)s'%globals() ) def size(): return platform.architecture()[0].strip( 'bits' ) def build(): current = os.getcwd() suffix = size() shutil.copyfile( os.path.join( GLE_SOURCE_DIR, 'ms-visual-c', 'config.h' ), os.path.join(GLE_SOURCE_DIR,'config.h') ) shutil.copyfile( os.path.join( GLE_SOURCE_DIR, 'ms-visual-c', 'config.h' ), os.path.join(GLE_SOURCE_DIR,'src','config.h') ) os.chdir( os.path.join( GLE_SOURCE_DIR, 'src' )) try: for file in glob.glob( '*.obj' ): os.remove( file ) for file in glob.glob( '*%(suffix)s.dll'%locals() ): os.remove( file ) vc = VC outfile = 'opengle%(suffix)s.%(vc)s.dll'%locals() target = os.path.join( current, '..', 'OpenGL','DLLS', outfile ) exports = " ".join([ '/EXPORT:%s'%(x) for x in EXPORTS.split() if x]) subprocess.check_call( 'cl -c /D"WIN32" /D "_WINDLL" /Gd /MD *.c' ) subprocess.check_call( 'link /LIBPATH:"C:\Program Files\Microsoft Platform SDK\Lib" %(exports)s /DLL /OUT:%(outfile)s opengl32.lib glu32.lib *.obj'%locals() ) shutil.copyfile( outfile, target ) print 'Created file %(target)s'%locals() finally: os.chdir( current ) def main(): download_and_unpack() build() if __name__ == "__main__": logging.basicConfig( level=logging.INFO ) main() PyOpenGL-3.0.2/src/core.py0000644000175000001440000000534512025001653016207 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Script to pull out OpenGL core definitions from the linux opengl header""" import re import get_gl_extensions constant = re.compile( '^[#]define\W+(?P[A-Z_0-9]+)\W+(?P0x[a-fA-F0-9]+)$', re.M ) function = re.compile( '^GLAPI\W+(?P[A-Z_0-9a-z *]+)\W+GLAPIENTRY\W+(?P[a-zA-Z_0-9]+)(?P[(].*?[)])\W*[;]', re.DOTALL|re.M ) class CoreModule( get_gl_extensions.VersionModule ): _header = None dll = 'None' GLGET_CONSTANT = '_GLGET_CONSTANTS[ %(name)s ] = %(size)s' @property def RAW_MODULE_TEMPLATE( self ): assert not 'glget' in get_gl_extensions.WRAPPER_TEMPLATE return get_gl_extensions.WRAPPER_TEMPLATE + get_gl_extensions.INIT_TEMPLATE def read_header( self ): if not self._header: content = open( '/usr/include/GL/gl.h' ).read() start = content.index( ' * Constants' ) stop = content.index( ' * OpenGL 1.2' ) self._header = content[start:stop] return self._header def findFunctions( self ): declarations = self.read_header() functions = [] for match in function.finditer(declarations): match_dict = match.groupdict() f = get_gl_extensions.Function( match_dict['return'], match_dict['name'], " ".join(match_dict['signature'].splitlines()) ) if 'ptr' in f.argNames: f.argNames[f.argNames.index('ptr')] = 'pointer' functions.append( f ) self.functions = functions def core(): # avoid import loops... get_gl_extensions.WRAPPER_TEMPLATE = get_gl_extensions.WRAPPER_TEMPLATE.replace( 'from OpenGL.GL import glget', '_GLGET_CONSTANTS = {}', ) assert not 'glget' in get_gl_extensions.WRAPPER_TEMPLATE class FakeHeader( object ): includeOverviews = False registry = {} glGetSizes = {} def loadGLGetSizes( self ): """Load manually-generated table of glGet* sizes""" table = self.glGetSizes try: lines = [ line.split('\t') for line in open( 'glgetsizes.csv' ).read().splitlines() ] except IOError, err: pass else: for line in lines: if line and line[0]: table[line[0].strip('"')] = [ v for v in [ v.strip('"') for v in line[1:] ] if v ] f = FakeHeader() f.loadGLGetSizes() c = CoreModule( 'GL_VERSION_GL_1_1', [], f ) c.segments = [c.read_header()] c.process() if __name__ == "__main__": core() PyOpenGL-3.0.2/src/get_gl_extensions.py0000755000175000001440000007070512031734074021013 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Script to download OpenGL extensions header and produce wrappers This script is the mechanism that allows for automatically wrapping new extensions with basic ctypes-level functionality. It doesn't do everything, but it approximates the same level of access as GLEW or pyglet will give you. The script also downloads the extension specification into .txt files that sit next to the same-named .py files, the purpose of this is to allow developers to grep through the source files looking for common features, such as references to the glGet* tables. glGetBoolean/glGetInteger/glGetFloat/glGetDouble A CSV file in this directory controls registration of constants for use with glGet, the format of the file is a tab-delimited format with the constants in the first column. Records are as follows: For no registration (e.g. when you need a custom function): CONSTANT For a static size: CONSTANT (1,) For dynamic dictionary-based lookup of size based on another parameter: CONSTANT pname LOOKUPCONSTANT (1,) LOOKUPCONSTANT (4,) ... Note that only constants which appear in a downloadable specification (.txt file) under a New Tokens header with a note that they can be passed to glGetBoolean will be so registered. """ import urllib, os, sys, re, string, traceback, logging, textwrap, keyword EXTENSION_HEADER_SOURCE = 'http://www.opengl.org/registry/api/glext.h' #ROOT_EXTENSION_SOURCE = 'http://oss.sgi.com/projects/ogl-sample/registry/' ROOT_EXTENSION_SOURCE = 'http://www.opengl.org/registry/specs/' AUTOGENERATION_SENTINEL = """### DO NOT EDIT above the line "END AUTOGENERATED SECTION" below!""" AUTOGENERATION_SENTINEL_END = """### END AUTOGENERATED SECTION""" if not os.path.isdir( os.path.join('..','OpenGL','GL') ): raise RuntimeError( """Only run this script with the src directory as the current working directory""" ) log = logging.getLogger( 'autogen' ) def download( url ): """Download the given url, informing the user of what we're doing""" sys.stderr.write( 'Download: %r\n'%(url,)) file = urllib.urlopen( url ) return file.read() registry = {} def nameToPath( name ): return os.path.join( * name.split( '_',2 ) ) def nameToPathMinusGL( name ): return "/".join( name.split( '_',2 )[1:] ) def indent( text, indent='\t' ): return "\n".join([ '%s%s'%(indent,line) for line in text.splitlines() ]) class Helper( object ): root = ROOT_EXTENSION_SOURCE def __getitem__( self, key ): item = getattr( self, key, None ) if item is None: raise KeyError( key ) if callable( item ): return item() else: return item reserved_names = set(keyword.kwlist) class Function( Helper ): def __init__( self, returnType, name, signature): """Parse definition into our various elements""" self.returnType = self.parseReturnType(returnType) self.name = name try: self.argTypes, self.argNames = self.parseArguments( signature ) except Exception, err: log.error( """Error parsing arguments for %s %s: %s""", name, signature, err ) self.argTypes, self.argNames = (), () ## self.pysignature = '(%s)'%( ## ", ".join([ ## item.split()[-1].strip('*') ## for item in signature[1:-1].split( ',' ) ## if item.strip().strip('*') ## ]) ## ) findName = re.compile( '[a-zA-z0-9]*$' ) def parseReturnType( self, returnType ): return self.cTypeToPyType( returnType ) def parseArguments( self, signature ): """Parse a C argument-type declaration into a ctypes-style argTypes and argNames""" signature = signature.strip()[1:-1] # first and easiest case is a void call... if not signature.strip() or signature.strip() == 'void': return (), () types, names = [], [] for item in signature.split( ',' ): item = item.strip() nameMatch = self.findName.search( item ) if not nameMatch: raise ValueError( item ) name = nameMatch.group(0) if name in reserved_names: name = name + '_' rest = item[:nameMatch.start(0)].strip() types.append( self.cTypeToPyType( rest ) ) names.append( name ) return types, names def cTypeToPyType( self, base ): """Given a C declared type for an argument/return type, get Python/ctypes version""" base = base.strip() if base.endswith( 'const' ): return self.cTypeToPyType( base[:-5] ) elif base.startswith( 'struct' ): return self.cTypeToPyType( base[6:] ) elif base.startswith( 'const' ): return self.cTypeToPyType( base[5:] ) elif base.endswith( '*' ): new = self.cTypeToPyType( base[:-1] ) if new == '_cs.GLvoid': return 'ctypes.c_void_p' elif new == 'ctypes.c_void_p': return 'arrays.GLvoidpArray' elif new in self.CTYPE_TO_ARRAY_TYPE: return 'arrays.%s'%(self.CTYPE_TO_ARRAY_TYPE[new]) elif new in ( 'arrays.GLcharArray','arrays.GLcharARBArray'): # can't have a pointer to these... return 'ctypes.POINTER( ctypes.POINTER( _cs.GLchar ))' elif new in ( '_cs.GLcharARB',): return 'ctypes.POINTER( ctypes.c_char_p )' else: log.warn( 'Unconverted pointer type in %s: %r', self.name, new ) return 'ctypes.POINTER(%s)'%(new) else: return '_cs.%s'%(base,) def errorReturn( self ): return '0' def declaration( self ): """Produce a declaration for this function in ctypes format""" returnType = self.returnType if self.argTypes: argTypes = ','.join(self.argTypes) else: argTypes = '' if self.argNames: argNames = ','.join(self.argNames) else: argNames = '' arguments = ', '.join([ '%(type)s(%(name)s)'%locals() for (type,name) in [ (type.split('.',1)[1],name) for type,name in zip( self.argTypes,self.argNames ) ] ]) name = self.name if returnType.strip() in ('_cs.GLvoid', '_cs.void'): returnType = pyReturn = 'None' else: pyReturn = self.returnType log.info( 'returnType %s -> %s', self.returnType, pyReturn ) doc = '%(name)s(%(arguments)s) -> %(pyReturn)s'%locals() return self.TEMPLATE%locals() TEMPLATE = """@_f @_p.types(%(returnType)s,%(argTypes)s) def %(name)s( %(argNames)s ):pass""" CTYPE_TO_ARRAY_TYPE = { '_cs.GLfloat': 'GLfloatArray', '_cs.float': 'GLfloatArray', '_cs.GLclampf': 'GLclampfArray', '_cs.GLdouble': 'GLdoubleArray', '_cs.double': 'GLdoubleArray', '_cs.int': 'GLintArray', '_cs.GLint': 'GLintArray', '_cs.GLuint': 'GLuintArray', '_cs.unsigned int':'GLuintArray', '_cs.unsigned char': 'GLbyteArray', '_cs.uint': 'GLuintArray', '_cs.GLshort': 'GLshortArray', '_cs.GLushort': 'GLushortArray', '_cs.short unsigned int':'GLushortArray', '_cs.GLubyte': 'GLubyteArray', '_cs.GLbool': 'GLbooleanArray', '_cs.GLboolean': 'GLbooleanArray', 'arrays.GLbooleanArray': 'GLbooleanArray', '_cs.GLbyte': 'GLbyteArray', '_cs.char': 'GLbyteArray', '_cs.gleDouble': 'GLdoubleArray', '_cs.GLchar': 'GLcharArray', '_cs.GLcharARB': 'GLcharARBArray', '_cs.GLhalfNV': 'GLushortArray', '_cs.GLhandle': 'GLuintArray', '_cs.GLhandleARB': 'GLuintArray', '_cs.GLenum': 'GLuintArray', # following should all have special sub-classes that enforce dimensions '_cs.gleDouble * 4': 'GLdoubleArray', '_cs.gleDouble * 3': 'GLdoubleArray', '_cs.gleDouble * 2': 'GLdoubleArray', '_cs.c_float * 3': 'GLfloatArray', '_cs.gleDouble * 3 * 2': 'GLdoubleArray', '_cs.GLsizei': 'GLsizeiArray', '_cs.GLint64': 'GLint64Array', '_cs.GLint64EXT': 'GLint64Array', '_cs.GLuint64': 'GLuint64Array', '_cs.GLuint64EXT': 'GLuint64Array', } # Don't know how Tarn got the api_versions, short of manually entering them... WRAPPER_TEMPLATE = """'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p, constants as _cs, arrays from OpenGL.GL import glget import ctypes EXTENSION_NAME = %(constantModule)r def _f( function ): return _p.createFunction( function,%(dll)s,%(constantModule)r,%(deprecatedFlag)r) %(constants)s %(declarations)s %(deprecated)s """ WRAPPER_TEMPLATE_NO_FUNCTIONS = """'''Autogenerated by get_gl_extensions script, do not edit!''' from OpenGL import platform as _p from OpenGL.GL import glget EXTENSION_NAME = %(constantModule)r %(constants)s %(deprecated)s """ WRAPPER_TEMPLATE_NOTHING = """'''Autogenerated by get_gl_extensions script, do not edit!''' EXTENSION_NAME = %(constantModule)r %(deprecated)s """ INIT_TEMPLATE = """ def glInit%(camelModule)s%(owner)s(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( EXTENSION_NAME ) """ FINAL_MODULE_TEMPLATE = """'''OpenGL extension %(owner)s.%(module)s This module customises the behaviour of the OpenGL.raw.%(prefix)s.%(owner)s.%(module)s to provide a more Python-friendly API %(overview)sThe official definition of this extension is available here: %(root)s%(owner)s/%(module)s.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.%(prefix)s.%(owner)s.%(module)s import * """ class Module( Helper ): targetDirectory = os.path.join( '..','OpenGL') rawTargetDirectory = os.path.join( '..','OpenGL','raw') prefix = 'GL' dll = '_p.GL' defineFinder = re.compile( r'\#define[ \t]+([a-zA-Z0-9_]+)[ \t]*(0x[0-9a-fA-F]+)' ) functionFinder = re.compile( r'GLAPI[ \t]+(.*?)[ \t]+APIENTRY[ \t]+([a-zA-Z0-9_]+)[ \t]*\(' ) signatureFinderTemplate = r'typedef[ \t]+%(returnTypeRE)s[ \t]+\(APIENTRYP[ \t]+PFN%(nameUpper)sPROC\)[ \t]*(\(.*?\))[;]' typeDefFinder = re.compile( r'typedef[ \t]+(([a-zA-Z0-9_]+[ \t]*)+);' ) @property def RAW_MODULE_TEMPLATE( self ): if self.functions: return WRAPPER_TEMPLATE + INIT_TEMPLATE elif self.constants: return WRAPPER_TEMPLATE_NO_FUNCTIONS + INIT_TEMPLATE else: return WRAPPER_TEMPLATE_NOTHING + INIT_TEMPLATE def __init__( self, name, segments, header ): log.info( 'name: %r', name ) if not name.startswith( 'GL_' ): name = 'GL_'+name self.name = name self.segments = segments self.header = header try: self.prefix, self.owner, self.module = name.split('_',2) self.sentinelConstant = '%s_%s'%(self.owner,self.module) except ValueError: if name.endswith( 'SGIX' ): self.prefix = "GL" self.owner = 'SGIX' self.module = name[3:-4] self.sentinelConstant = '%s%s'%(self.module,self.owner) else: log.error( """Unable to parse module name: %s""", name ) raise if self.module[0] in string.digits: self.module = 'GL_%s'%(self.module,) self.camelModule = "".join([x.title() for x in self.module.split('_')]) self.rawModule = self.module # XXX need to figure this out better self.rawOwner = self.owner while self.owner and self.owner[0] in string.digits: self.owner = self.owner[1:] self.rawPathName = os.path.join( self.rawTargetDirectory, self.prefix, self.owner, self.module+'.py' ) self.pathName = os.path.join( self.targetDirectory, self.prefix, self.owner, self.module+'.py' ) self.findFunctions() self.constantModule = '%(prefix)s_%(owner)s_%(rawModule)s'%self if self.rawModule.endswith( '_DEPRECATED' ): self.constantModule = self.constantModule[:-len('_DEPRECATED')] self.deprecatedFlag = True else: self.deprecatedFlag = False specification = self.getSpecification() self.overview = '' if self.header.includeOverviews: for title,section in specification.blocks( specification.source ): if title.startswith( 'Overview' ): self.overview = 'Overview (from the spec)\n%s\n\n'%( indent( section.replace('\xd4','O').replace('\xd5','O').decode( 'ascii', 'ignore' ).encode( 'ascii', 'ignore' ) ) ) break def shouldReplace( self ): """Should we replace the given filename?""" filename = self.pathName if not os.path.isfile( filename ): return True else: hasLines = 0 for line in open( filename ): if line.strip() == AUTOGENERATION_SENTINEL_END.strip(): return True hasLines = 1 if not hasLines: return True return False def findFunctions( self ): """Find all of our function definitions""" result = [] for segment in self.segments: for match in self.functionFinder.finditer(segment): returnType, name = match.groups() nameUpper = re.escape(name.upper()) returnTypeRE = re.escape( returnType ) signatureFinder = re.compile( self.signatureFinderTemplate%locals() ) try: signature = signatureFinder.search( segment ).group(1) result.append( Function( returnType, name, signature )) except AttributeError: log.warn( "Couldn't find signature for function %s %s", returnType,name, ) self.functions = result def declarations( self ): """ DECLARE_VOID_EXT(glPointParameterfARB, (GLenum pname, GLfloat param), (pname, param)) DECLARE_VOID_EXT(glPointParameterfvARB, (GLenum pname, const GLfloat* param), (pname, param)) """ result = [] for function in self.functions: result.append( function.declaration() ) return "\n".join( result ) def functionNames( self ): """ "glPointParameterfARB", "glPointParameterfvARB", """ result = [] for function in self.functions: result.append( '"%s",'%(function.name,)) return "\n".join(result) def swigFunctionDeclarations( self ): """ void glPointParameterfARB(GLenum pname, GLfloat param); DOC(glPointParameterfARB, "glPointParameterfARB(pname, param) -> None") void glPointParameterfvARB(GLenum pname, const GLfloat* param); DOC(glPointParameterfvARB, "glPointParameterfvARB(pname, param) -> None") """ result = [] for segment in self.segments: for match in self.typeDefFinder.finditer( segment ): result.append( match.group(0)) for function in self.functions: result.append( '%(returnType)s %(name)s%(signature)s;'%function ) result.append( 'DOC(%(name)s, "%(name)s%(pysignature)s")'%function ) return "\n".join( result ) GLGET_CONSTANT = """glget.addGLGetConstant( %(name)s, %(size)s )""" def constants( self ): """Retrieve constants from the segments This is, of course, all heuristically done :) """ result = [] glget_set = [] glGets = self.getSpecification().glGetConstants() glGetSizes = self.header.glGetSizes for segment in self.segments: for match in self.defineFinder.finditer( segment ): name,value = match.groups() value = int(value,0) result.append( '%(name)s 0x%(value)X'%locals() ) if name in glGets or name in glGetSizes: size = glGetSizes.get( name, [] ) if len(size) == 0: # not yet specified... glGetSizes[ name ] = [] elif len(size) == 1: # static size... size = size[0] glget_set.append( self.GLGET_CONSTANT %locals() ) else: # param name, then (key,value) for rest of elements param = size[0] rest = size[1:] set = {} while rest: current = rest[:2] del rest[:2] if len(current) == 2: set[current[0]] = current[1] else: log.warn( """Incorrect format for glGet constant %s (unevent set of values)""", name, ) size = '{ %s }'%( ','.join([ '%s : %s'%( key,value ) for (key,value) in set ]) ) glget_set.append( """glget.addGLGetConstant( %(name)s, %(size)s, %(param)r )"""%locals() ) if result: constants = "\n".join( result ) result = [ '_p.unpack_constants( """%(constants)s""", globals())'%locals() ] if glget_set: result.extend( glget_set ) return "\n".join( result ) SPEC_EXCEPTIONS = { # different URLs... grr... '3DFX/multisample': 'http://oss.sgi.com/projects/ogl-sample/registry/3DFX/3dfx_multisample.txt', #'EXT/color_matrix': 'http://oss.sgi.com/projects/ogl-sample/registry/SGI/color_matrix.txt', #'EXT/texture_cube_map': 'http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_cube_map.txt', 'SGIS/fog_function': 'http://oss.sgi.com/projects/ogl-sample/registry/SGIS/fog_func.txt', } def getSpecification( self ): """Retrieve our specification document... Retrieves the .txt file which defines this specification, allowing us to review the document locally in order to provide a reasonable wrapping of it... """ specFile = os.path.splitext( self.pathName )[0] + '.txt' specURLFragment = nameToPathMinusGL(self.name) if specURLFragment in self.SPEC_EXCEPTIONS: specURL = self.SPEC_EXCEPTIONS[ specURLFragment ] else: specURL = '%s/%s.txt'%( ROOT_EXTENSION_SOURCE, specURLFragment, ) if not os.path.isfile( specFile ): try: data = download(specURL) except Exception, err: log.warn( """Failure downloading specification %s: %s""", specURL, err ) data = "" else: try: open(specFile,'w').write( data ) except IOError, err: pass else: data = open( specFile ).read() if 'Error 404' in data: log.info( """Spec 404: %s""", specURL) data = '' return Specification( data ) def process( self ): """(re)Wrap the given module""" # first the raw wrapped API... directory = os.path.dirname(self.rawPathName) try: os.makedirs( directory ) except os.error: pass if not os.path.isfile( os.path.join(directory, '__init__.py')): open( os.path.join(directory, '__init__.py'),'w').write( '''"""OpenGL Extensions"""''' ) current = '' toWrite = self.RAW_MODULE_TEMPLATE % self try: current = open( self.rawPathName, 'r').read() except Exception, err: pass if current.strip() != toWrite.strip(): fh = open( self.rawPathName, 'w') fh.write( toWrite ) fh.close() if self.shouldReplace( ): # now the final module with any included custom code... toWrite = FINAL_MODULE_TEMPLATE % self current = '' try: current = open( self.pathName, 'r').read() except Exception, err: pass else: found = current.rfind( '\n'+AUTOGENERATION_SENTINEL_END ) if found >= -1: if current[:found].strip() == toWrite.strip(): # we aren't going to change anything... return False found += len( '\n' + AUTOGENERATION_SENTINEL_END ) current = current[found:] else: current = '' try: fh = open( self.pathName, 'w') except IOError, err: log.warn( "Unable to create module for %r %s", self.name, err ) return False else: fh.write( toWrite ) fh.write( AUTOGENERATION_SENTINEL_END ) fh.write( current ) fh.close() return True return False def deprecated( self ): """Produce import line for deprecated functions if appropriate""" name = self.name + '_DEPRECATED' if self.header.registry.get( name ): return '''# import deprecated from OpenGL.raw.%(prefix)s.%(owner)s.%(module)s_DEPRECATED import *'''%self return '' class VersionModule( Module ): """Module representing an OpenGL version's extension to the spec""" targetDirectory = os.path.join( '..','OpenGL') rawTargetDirectory = os.path.join( '..','OpenGL','raw') prefix = 'GL' RAW_MODULE_TEMPLATE = WRAPPER_TEMPLATE def getSpecification( self ): """Retrieve our specification document... Retrieves the .txt file which defines this specification, allowing us to review the document locally in order to provide a reasonable wrapping of it... """ return Specification( '' ) class Specification( object ): """Parser for parsing OpenGL specifications for interesting information """ def __init__( self, source ): """Store the source text for the specification""" self.source = source def blocks( self, data ): """Retrieve the set of all blocks""" data = data.splitlines() title = [] block = [] for line in data: if line and line.lstrip() == line: if block: yield "\n".join(title), textwrap.dedent( "\n".join(block) ) title = [ ] block = [ ] title.append( line ) else: block.append( line ) if block: yield "\n".join(title), textwrap.dedent( "\n".join(block) ) def constantBlocks( self ): """Retrieve the set of constant blocks""" for title,block in self.blocks( self.source ): if title and title.startswith( 'New Tokens' ): yield block def glGetConstants( self ): """Retrieve the set of constants which pass to glGet* functions""" table = {} for block in self.constantBlocks(): for title, section in self.blocks( block ): for possible in ( 'GetBooleanv','GetIntegerv',' of Get' ): if possible in title: for line in section.splitlines(): line = line.strip().split() if len(line) == 2: constant,value = line table['GL_%s'%(constant,)] = value break return table class Header( object ): """Manages the overall header source registry -- registry of extensions/versions found with the header segments that define them... includeOverviews -- if True, include the specification's overviews in the indivdual extensions """ registry = None includeOverviews = True def getFile( self ): """Load or download the source of the glext.h header""" if not os.path.isfile( 'glext.h' ): data = download( EXTENSION_HEADER_SOURCE ) open( 'glext.h', 'w').write( data ) else: data = open( 'glext.h' ).read() return data def getRegistry( self ): """Retrieve a parsed registry of extensions/versions This uses accidents of the header definition to produce the results, but the header is fairly consistent... returns { name: segments} to pass to Module init """ if self.registry: return self.registry file = self.getFile() index = file.find( '#define GL_GLEXT_VERSION' ) file = file[index:] extensions = file.split( '\n#ifndef ' )[1:] for item in extensions: name, definition = item.split( None, 1 ) definition = '#ifndef '+item registry.setdefault( name, []).append( definition ) self.registry = registry return registry def iterModules( self ): """Yield each Module( name, segments ) for all extensions extensions do *not* include the GL core versions... """ items = self.getRegistry().items() items.sort() for name, segments in items: if name in ('APIENTRY','APIENTRYP','GLAPI'): continue if not name.startswith( 'GL_VERSION' ): yield Module( name, segments, header=self ) else: yield VersionModule( name, segments, header=self ) def iterVersions( self ): """Yield each Version( name, segments ) for all versions""" items = self.getRegistry().items() items.sort() for name, segments in items: if name.startswith( 'GL_VERSION' ): yield Version( name, segments ) def autoGenerate( self ): """Autogenerate all Modules in this header""" new = {} total = count = 0 for module in self.iterModules(): if module.process( ): new[module.constantModule] = module count += 1 total += 1 return total, count def constantSections( self ): """Print the constant sections for all modules""" for module in self.iterModules(): module.getSpecification() for constant, value in module.getSpecification().glGetConstants().items(): #print title print constant glGetSizes = {} def loadGLGetSizes( self ): """Load manually-generated table of glGet* sizes""" table = self.glGetSizes try: lines = [ line.split('\t') for line in open( 'glgetsizes.csv' ).read().splitlines() ] except IOError, err: pass else: for line in lines: if line and line[0]: table[line[0].strip('"')] = [ v for v in [ v.strip('"') for v in line[1:] ] if v ] def saveGLGetSizes( self ): """Save out sorted list of glGet sizes to disk""" items = self.glGetSizes.items() items.sort() data = "\n".join([ '%s\t%s'%( key,"\t".join(value) ) for (key,value) in items ]) open( 'glgetsizes.csv','w').write( data ) if __name__ == "__main__": logging.basicConfig() log.setLevel( logging.WARN ) header = Header() header.loadGLGetSizes() total,count = Header().autoGenerate() print '%s total %s replaced'%(total,count) header.saveGLGetSizes() #header.constantSections() PyOpenGL-3.0.2/src/find_glget_constants.py0000644000175000001440000000304112025001653021444 0ustar mcfletchusers00000000000000#! /usr/bin/env python """Do a lot of hacking about to find glGet-able constants...""" from OpenGL import constant, error from OpenGL.raw import GL from OpenGLContext import testingcontext BaseContext = testingcontext.getInteractive() from OpenGLContext import arrays from OpenGL.GL import glget import sys class TestContext( BaseContext ): def OnInit( self ): """Do our testing here...""" weird_value = -701496917 data = arrays.zeros( (256,),'i') for name in dir( GL ): value = getattr( GL, name ) if isinstance( value, constant.Constant ): if value in glget.GL_GET_SIZES: continue data[:] = weird_value try: GL.glGetIntegerv( value, data ) except error.GLError, err: if err.err == 1280: print '# No: %s'%( value.name, ) else: print 'simple.%s: (1,), # TODO: Check size!'%( value.name, ) else: ordinality = 256 - arrays.sum( (data == weird_value) ) if ordinality == 16: ordinality = (4,4) else: ordinality = (ordinality,) print 'simple.%s: %s,'%(value.name,ordinality) sys.exit( 0) if __name__ == "__main__": TestContext.ContextMainLoop() PyOpenGL-3.0.2/PKG-INFO0000644000175000001440000000130612032640120015200 0ustar mcfletchusers00000000000000Metadata-Version: 1.1 Name: PyOpenGL Version: 3.0.2 Summary: Standard OpenGL bindings for Python Home-page: http://pyopengl.sourceforge.net Author: Mike C. Fletcher Author-email: mcfletch@vrplumber.com License: BSD Download-URL: http://sourceforge.net/projects/pyopengl/files/PyOpenGL/ Description: UNKNOWN Keywords: Graphics,3D,OpenGL,GLU,GLUT,GLE,GLX,EXT,ARB,Mesa,ctypes Platform: UNKNOWN Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Intended Audience :: Developers