1from OpenGL import platform as _p, constant, extensions
2from ctypes import *
3from OpenGL.raw.GL._types import *
4from OpenGL._bytes import as_8_bit
5c_void = None
6void = None
7Bool = c_uint
8
9class _GLXQuerier( extensions.ExtensionQuerier ):
10    prefix = as_8_bit('GLX_')
11    assumed_version = [1,1]
12    version_prefix = as_8_bit('GLX_VERSION_GLX_')
13    def getDisplay( self ):
14        from OpenGL.raw.GLX import _types
15        from OpenGL.platform import ctypesloader
16        import ctypes, os
17        X11 = ctypesloader.loadLibrary( ctypes.cdll, 'X11' )
18        XOpenDisplay = X11.XOpenDisplay
19        XOpenDisplay.restype = ctypes.POINTER(_types.Display)
20        return XOpenDisplay( os.environ.get( 'DISPLAY' ))
21    def getScreen( self, display ):
22        from OpenGL.platform import ctypesloader
23        from OpenGL.raw.GLX import _types
24        import ctypes, os
25        X11 = ctypesloader.loadLibrary( ctypes.cdll, 'X11' )
26        XDefaultScreen = X11.XDefaultScreen
27        XDefaultScreen.argtypes = [ctypes.POINTER(_types.Display)]
28        return XDefaultScreen( display )
29
30    def pullVersion( self ):
31        from OpenGL.GLX import glXQueryVersion
32        import ctypes
33        if glXQueryVersion:
34            display = self.getDisplay()
35            major,minor = ctypes.c_int(),ctypes.c_int()
36            glXQueryVersion(display, major, minor)
37            return [major.value,minor.value]
38        else:
39            return [1,1]
40    def pullExtensions( self ):
41        if self.getVersion() >= [1,2]:
42            from OpenGL.GLX import glXQueryExtensionsString
43            display = self.getDisplay()
44            screen = self.getScreen( display )
45
46            if glXQueryExtensionsString:
47                return glXQueryExtensionsString( display,screen ).split()
48        return []
49GLXQuerier=_GLXQuerier()
50
51
52class struct___GLXcontextRec(Structure):
53    __slots__ = [
54    ]
55struct___GLXcontextRec._fields_ = [
56    ('_opaque_struct', c_int)
57]
58
59class struct___GLXcontextRec(Structure):
60    __slots__ = [
61    ]
62struct___GLXcontextRec._fields_ = [
63    ('_opaque_struct', c_int)
64]
65
66GLXContext = POINTER(struct___GLXcontextRec) 	# /usr/include/GL/glx.h:178
67XID = c_ulong 	# /usr/include/X11/X.h:66
68GLXPixmap = XID 	# /usr/include/GL/glx.h:179
69GLXDrawable = XID 	# /usr/include/GL/glx.h:180
70class struct___GLXFBConfigRec(Structure):
71    __slots__ = [
72    ]
73struct___GLXFBConfigRec._fields_ = [
74    ('_opaque_struct', c_int)
75]
76
77class struct___GLXFBConfigRec(Structure):
78    __slots__ = [
79    ]
80struct___GLXFBConfigRec._fields_ = [
81    ('_opaque_struct', c_int)
82]
83
84GLXFBConfig = POINTER(struct___GLXFBConfigRec) 	# /usr/include/GL/glx.h:182
85GLXFBConfigID = XID 	# /usr/include/GL/glx.h:183
86GLXContextID = XID 	# /usr/include/GL/glx.h:184
87GLXWindow = XID 	# /usr/include/GL/glx.h:185
88GLXPbuffer = XID 	# /usr/include/GL/glx.h:186
89GLXPbufferSGIX = XID
90GLXVideoSourceSGIX = XID
91
92class struct_anon_103(Structure):
93    __slots__ = [
94        'visual',
95        'visualid',
96        'screen',
97        'depth',
98        'class',
99        'red_mask',
100        'green_mask',
101        'blue_mask',
102        'colormap_size',
103        'bits_per_rgb',
104    ]
105class struct_anon_18(Structure):
106    __slots__ = [
107        'ext_data',
108        'visualid',
109        'class',
110        'red_mask',
111        'green_mask',
112        'blue_mask',
113        'bits_per_rgb',
114        'map_entries',
115    ]
116class struct__XExtData(Structure):
117    __slots__ = [
118        'number',
119        'next',
120        'free_private',
121        'private_data',
122    ]
123XPointer = c_char_p 	# /usr/include/X11/Xlib.h:84
124struct__XExtData._fields_ = [
125    ('number', c_int),
126    ('next', POINTER(struct__XExtData)),
127    ('free_private', POINTER(CFUNCTYPE(c_int, POINTER(struct__XExtData)))),
128    ('private_data', XPointer),
129]
130
131XExtData = struct__XExtData 	# /usr/include/X11/Xlib.h:163
132VisualID = c_ulong 	# /usr/include/X11/X.h:76
133struct_anon_18._fields_ = [
134    ('ext_data', POINTER(XExtData)),
135    ('visualid', VisualID),
136    ('class', c_int),
137    ('red_mask', c_ulong),
138    ('green_mask', c_ulong),
139    ('blue_mask', c_ulong),
140    ('bits_per_rgb', c_int),
141    ('map_entries', c_int),
142]
143
144Visual = struct_anon_18 	# /usr/include/X11/Xlib.h:246
145struct_anon_103._fields_ = [
146    ('visual', POINTER(Visual)),
147    ('visualid', VisualID),
148    ('screen', c_int),
149    ('depth', c_int),
150    ('class', c_int),
151    ('red_mask', c_ulong),
152    ('green_mask', c_ulong),
153    ('blue_mask', c_ulong),
154    ('colormap_size', c_int),
155    ('bits_per_rgb', c_int),
156]
157
158XVisualInfo = struct_anon_103 	# /usr/include/X11/Xutil.h:294
159class struct__XDisplay(Structure):
160    __slots__ = [
161    ]
162struct__XDisplay._fields_ = [
163    ('_opaque_struct', c_int)
164]
165
166class struct__XDisplay(Structure):
167    __slots__ = [
168    ]
169struct__XDisplay._fields_ = [
170    ('_opaque_struct', c_int)
171]
172
173Display = struct__XDisplay 	# /usr/include/X11/Xlib.h:495
174
175Pixmap = XID 	# /usr/include/X11/X.h:102
176Font = XID 	# /usr/include/X11/X.h:100
177Window = XID 	# /usr/include/X11/X.h:96
178GLX_ARB_get_proc_address = constant.Constant( 'GLX_ARB_get_proc_address', 1 )
179__GLXextFuncPtr = CFUNCTYPE(None) 	# /usr/include/GL/glx.h:330
180
181# EXT_texture_from_pixmap (/usr/include/GL/glx.h:436)
182class struct_anon_111(Structure):
183    __slots__ = [
184        'event_type',
185        'draw_type',
186        'serial',
187        'send_event',
188        'display',
189        'drawable',
190        'buffer_mask',
191        'aux_buffer',
192        'x',
193        'y',
194        'width',
195        'height',
196        'count',
197    ]
198struct_anon_111._fields_ = [
199    ('event_type', c_int),
200    ('draw_type', c_int),
201    ('serial', c_ulong),
202    ('send_event', c_int),
203    ('display', POINTER(Display)),
204    ('drawable', GLXDrawable),
205    ('buffer_mask', c_uint),
206    ('aux_buffer', c_uint),
207    ('x', c_int),
208    ('y', c_int),
209    ('width', c_int),
210    ('height', c_int),
211    ('count', c_int),
212]
213
214GLXPbufferClobberEvent = struct_anon_111 	# /usr/include/GL/glx.h:502
215class struct_anon_112(Structure):
216    __slots__ = [
217        'type',
218        'serial',
219        'send_event',
220        'display',
221        'drawable',
222        'event_type',
223        'ust',
224        'msc',
225        'sbc',
226    ]
227struct_anon_112._fields_ = [
228    ('type', c_int),
229    ('serial', c_ulong),
230    ('send_event', c_int),
231    ('display', POINTER(Display)),
232    ('drawable', GLXDrawable),
233    ('event_type', c_int),
234    ('ust', c_int64),
235    ('msc', c_int64),
236    ('sbc', c_int64),
237]
238
239GLXBufferSwapComplete = struct_anon_112 	# /usr/include/GL/glx.h:514
240class struct___GLXEvent(Union):
241    __slots__ = [
242        'glxpbufferclobber',
243        'glxbufferswapcomplete',
244        'pad',
245    ]
246struct___GLXEvent._fields_ = [
247    ('glxpbufferclobber', GLXPbufferClobberEvent),
248    ('glxbufferswapcomplete', GLXBufferSwapComplete),
249    ('pad', c_long * 24),
250]
251
252GLXEvent = struct___GLXEvent 	# /usr/include/GL/glx.h:520
253
254class GLXHyperpipeConfigSGIX( Structure ):
255    _fields_ = [
256        ('pipeName', c_char * 80),
257        ('channel',c_int),
258        ('participationType',c_uint),
259        ('timeSlice',c_int),
260    ]
261
262