1 ##########################################################################
3 # Copyright 2011 Jose Fonseca
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
7 # of this software and associated documentation files (the "Software"), to deal
8 # in the Software without restriction, including without limitation the rights
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 # copies of the Software, and to permit persons to whom the Software is
11 # furnished to do so, subject to the following conditions:
13 # The above copyright notice and this permission notice shall be included in
14 # all copies or substantial portions of the Software.
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 ##########################################################################/
29 from glenum import GLenum
37 (F, 1, "GL_POINT_SIZE"), # 0x0B11
38 (F, 2, "GL_POINT_SIZE_RANGE"), # 0x0B12
39 (F, 1, "GL_POINT_SIZE_GRANULARITY"), # 0x0B13
40 (I, 1, "GL_LINE_SMOOTH"), # 0x0B20
41 (F, 1, "GL_LINE_WIDTH"), # 0x0B21
42 (F, 2, "GL_LINE_WIDTH_RANGE"), # 0x0B22
43 (F, 1, "GL_LINE_WIDTH_GRANULARITY"), # 0x0B23
44 (I, 1, "GL_POLYGON_SMOOTH"), # 0x0B41
45 (I, 1, "GL_CULL_FACE"), # 0x0B44
46 (I, 1, "GL_CULL_FACE_MODE"), # 0x0B45
47 (I, 1, "GL_FRONT_FACE"), # 0x0B46
48 (F, 2, "GL_DEPTH_RANGE"), # 0x0B70
49 (I, 1, "GL_DEPTH_TEST"), # 0x0B71
50 (I, 1, "GL_DEPTH_WRITEMASK"), # 0x0B72
51 (F, 1, "GL_DEPTH_CLEAR_VALUE"), # 0x0B73
52 (I, 1, "GL_DEPTH_FUNC"), # 0x0B74
53 (I, 1, "GL_STENCIL_TEST"), # 0x0B90
54 (I, 1, "GL_STENCIL_CLEAR_VALUE"), # 0x0B91
55 (I, 1, "GL_STENCIL_FUNC"), # 0x0B92
56 (I, 1, "GL_STENCIL_VALUE_MASK"), # 0x0B93
57 (I, 1, "GL_STENCIL_FAIL"), # 0x0B94
58 (I, 1, "GL_STENCIL_PASS_DEPTH_FAIL"), # 0x0B95
59 (I, 1, "GL_STENCIL_PASS_DEPTH_PASS"), # 0x0B96
60 (I, 1, "GL_STENCIL_REF"), # 0x0B97
61 (I, 1, "GL_STENCIL_WRITEMASK"), # 0x0B98
62 (I, 4, "GL_VIEWPORT"), # 0x0BA2
63 (I, 1, "GL_DITHER"), # 0x0BD0
64 (I, 1, "GL_BLEND_DST"), # 0x0BE0
65 (I, 1, "GL_BLEND_SRC"), # 0x0BE1
66 (I, 1, "GL_BLEND"), # 0x0BE2
67 (I, 1, "GL_LOGIC_OP_MODE"), # 0x0BF0
68 (I, 1, "GL_COLOR_LOGIC_OP"), # 0x0BF2
69 (I, 1, "GL_DRAW_BUFFER"), # 0x0C01
70 (I, 1, "GL_READ_BUFFER"), # 0x0C02
71 (I, 4, "GL_SCISSOR_BOX"), # 0x0C10
72 (I, 1, "GL_SCISSOR_TEST"), # 0x0C11
73 (F, 4, "GL_COLOR_CLEAR_VALUE"), # 0x0C22
74 (I, 4, "GL_COLOR_WRITEMASK"), # 0x0C23
75 (I, 1, "GL_DOUBLEBUFFER"), # 0x0C32
76 (I, 1, "GL_STEREO"), # 0x0C33
77 (I, 1, "GL_LINE_SMOOTH_HINT"), # 0x0C52
78 (I, 1, "GL_POLYGON_SMOOTH_HINT"), # 0x0C53
79 (I, 1, "GL_UNPACK_SWAP_BYTES"), # 0x0CF0
80 (I, 1, "GL_UNPACK_LSB_FIRST"), # 0x0CF1
81 (I, 1, "GL_UNPACK_ROW_LENGTH"), # 0x0CF2
82 (I, 1, "GL_UNPACK_SKIP_ROWS"), # 0x0CF3
83 (I, 1, "GL_UNPACK_SKIP_PIXELS"), # 0x0CF4
84 (I, 1, "GL_UNPACK_ALIGNMENT"), # 0x0CF5
85 (I, 1, "GL_PACK_SWAP_BYTES"), # 0x0D00
86 (I, 1, "GL_PACK_LSB_FIRST"), # 0x0D01
87 (I, 1, "GL_PACK_ROW_LENGTH"), # 0x0D02
88 (I, 1, "GL_PACK_SKIP_ROWS"), # 0x0D03
89 (I, 1, "GL_PACK_SKIP_PIXELS"), # 0x0D04
90 (I, 1, "GL_PACK_ALIGNMENT"), # 0x0D05
91 (I, 1, "GL_MAX_TEXTURE_SIZE"), # 0x0D33
92 (F, 2, "GL_MAX_VIEWPORT_DIMS"), # 0x0D3A
93 (I, 1, "GL_SUBPIXEL_BITS"), # 0x0D50
94 (I, 1, "GL_TEXTURE_1D"), # 0x0DE0
95 (I, 1, "GL_TEXTURE_2D"), # 0x0DE1
96 (F, 1, "GL_POLYGON_OFFSET_UNITS"), # 0x2A00
97 (I, 1, "GL_POLYGON_OFFSET_POINT"), # 0x2A01
98 (I, 1, "GL_POLYGON_OFFSET_LINE"), # 0x2A02
99 (I, 1, "GL_POLYGON_OFFSET_FILL"), # 0x8037
100 (F, 1, "GL_POLYGON_OFFSET_FACTOR"), # 0x8038
101 (I, 1, "GL_TEXTURE_BINDING_1D"), # 0x8068
102 (I, 1, "GL_TEXTURE_BINDING_2D"), # 0x8069
103 (F, 4, "GL_CURRENT_COLOR"), # 0x0B00
104 (F, 1, "GL_CURRENT_INDEX"), # 0x0B01
105 (F, 3, "GL_CURRENT_NORMAL"), # 0x0B02
106 (F, 4, "GL_CURRENT_TEXTURE_COORDS"), # 0x0B03
107 (F, 4, "GL_CURRENT_RASTER_COLOR"), # 0x0B04
108 (F, 1, "GL_CURRENT_RASTER_INDEX"), # 0x0B05
109 (F, 4, "GL_CURRENT_RASTER_TEXTURE_COORDS"), # 0x0B06
110 (F, 4, "GL_CURRENT_RASTER_POSITION"), # 0x0B07
111 (I, 1, "GL_CURRENT_RASTER_POSITION_VALID"), # 0x0B08
112 (F, 1, "GL_CURRENT_RASTER_DISTANCE"), # 0x0B09
113 (I, 1, "GL_POINT_SMOOTH"), # 0x0B10
114 (I, 1, "GL_LINE_STIPPLE"), # 0x0B24
115 (I, 1, "GL_LINE_STIPPLE_PATTERN"), # 0x0B25
116 (I, 1, "GL_LINE_STIPPLE_REPEAT"), # 0x0B26
117 (I, 1, "GL_LIST_MODE"), # 0x0B30
118 (I, 1, "GL_MAX_LIST_NESTING"), # 0x0B31
119 (I, 1, "GL_LIST_BASE"), # 0x0B32
120 (I, 1, "GL_LIST_INDEX"), # 0x0B33
121 (I, 2, "GL_POLYGON_MODE"), # 0x0B40
122 (I, 1, "GL_POLYGON_STIPPLE"), # 0x0B42
123 (I, 1, "GL_EDGE_FLAG"), # 0x0B43
124 (I, 1, "GL_LIGHTING"), # 0x0B50
125 (I, 1, "GL_LIGHT_MODEL_LOCAL_VIEWER"), # 0x0B51
126 (I, 1, "GL_LIGHT_MODEL_TWO_SIDE"), # 0x0B52
127 (F, 4, "GL_LIGHT_MODEL_AMBIENT"), # 0x0B53
128 (I, 1, "GL_SHADE_MODEL"), # 0x0B54
129 (I, 1, "GL_COLOR_MATERIAL_FACE"), # 0x0B55
130 (I, 1, "GL_COLOR_MATERIAL_PARAMETER"), # 0x0B56
131 (I, 1, "GL_COLOR_MATERIAL"), # 0x0B57
132 (I, 1, "GL_FOG"), # 0x0B60
133 (I, 1, "GL_FOG_INDEX"), # 0x0B61
134 (F, 1, "GL_FOG_DENSITY"), # 0x0B62
135 (F, 1, "GL_FOG_START"), # 0x0B63
136 (F, 1, "GL_FOG_END"), # 0x0B64
137 (I, 1, "GL_FOG_MODE"), # 0x0B65
138 (F, 4, "GL_FOG_COLOR"), # 0x0B66
139 (F, 4, "GL_ACCUM_CLEAR_VALUE"), # 0x0B80
140 (I, 1, "GL_MATRIX_MODE"), # 0x0BA0
141 (I, 1, "GL_NORMALIZE"), # 0x0BA1
142 (I, 1, "GL_MODELVIEW_STACK_DEPTH"), # 0x0BA3
143 (I, 1, "GL_PROJECTION_STACK_DEPTH"), # 0x0BA4
144 (I, 1, "GL_TEXTURE_STACK_DEPTH"), # 0x0BA5
145 (F, 16, "GL_MODELVIEW_MATRIX"), # 0x0BA6
146 (F, 16, "GL_PROJECTION_MATRIX"), # 0x0BA7
147 (F, 16, "GL_TEXTURE_MATRIX"), # 0x0BA8
148 (I, 1, "GL_ATTRIB_STACK_DEPTH"), # 0x0BB0
149 (I, 1, "GL_CLIENT_ATTRIB_STACK_DEPTH"), # 0x0BB1
150 (I, 1, "GL_ALPHA_TEST"), # 0x0BC0
151 (I, 1, "GL_ALPHA_TEST_FUNC"), # 0x0BC1
152 (F, 1, "GL_ALPHA_TEST_REF"), # 0x0BC2
153 (I, 1, "GL_INDEX_LOGIC_OP"), # 0x0BF1
154 (I, 1, "GL_LOGIC_OP"), # 0x0BF1
155 (I, 1, "GL_AUX_BUFFERS"), # 0x0C00
156 (I, 1, "GL_INDEX_CLEAR_VALUE"), # 0x0C20
157 (I, 1, "GL_INDEX_WRITEMASK"), # 0x0C21
158 (I, 1, "GL_INDEX_MODE"), # 0x0C30
159 (I, 1, "GL_RGBA_MODE"), # 0x0C31
160 (I, 1, "GL_RENDER_MODE"), # 0x0C40
161 (I, 1, "GL_PERSPECTIVE_CORRECTION_HINT"), # 0x0C50
162 (I, 1, "GL_POINT_SMOOTH_HINT"), # 0x0C51
163 (I, 1, "GL_FOG_HINT"), # 0x0C54
164 (I, 1, "GL_TEXTURE_GEN_S"), # 0x0C60
165 (I, 1, "GL_TEXTURE_GEN_T"), # 0x0C61
166 (I, 1, "GL_TEXTURE_GEN_R"), # 0x0C62
167 (I, 1, "GL_TEXTURE_GEN_Q"), # 0x0C63
168 (I, 1, "GL_PIXEL_MAP_I_TO_I_SIZE"), # 0x0CB0
169 (I, 1, "GL_PIXEL_MAP_S_TO_S_SIZE"), # 0x0CB1
170 (I, 1, "GL_PIXEL_MAP_I_TO_R_SIZE"), # 0x0CB2
171 (I, 1, "GL_PIXEL_MAP_I_TO_G_SIZE"), # 0x0CB3
172 (I, 1, "GL_PIXEL_MAP_I_TO_B_SIZE"), # 0x0CB4
173 (I, 1, "GL_PIXEL_MAP_I_TO_A_SIZE"), # 0x0CB5
174 (I, 1, "GL_PIXEL_MAP_R_TO_R_SIZE"), # 0x0CB6
175 (I, 1, "GL_PIXEL_MAP_G_TO_G_SIZE"), # 0x0CB7
176 (I, 1, "GL_PIXEL_MAP_B_TO_B_SIZE"), # 0x0CB8
177 (I, 1, "GL_PIXEL_MAP_A_TO_A_SIZE"), # 0x0CB9
178 (I, 1, "GL_MAP_COLOR"), # 0x0D10
179 (I, 1, "GL_MAP_STENCIL"), # 0x0D11
180 (I, 1, "GL_INDEX_SHIFT"), # 0x0D12
181 (I, 1, "GL_INDEX_OFFSET"), # 0x0D13
182 (F, 1, "GL_RED_SCALE"), # 0x0D14
183 (F, 1, "GL_RED_BIAS"), # 0x0D15
184 (F, 1, "GL_ZOOM_X"), # 0x0D16
185 (F, 1, "GL_ZOOM_Y"), # 0x0D17
186 (F, 1, "GL_GREEN_SCALE"), # 0x0D18
187 (F, 1, "GL_GREEN_BIAS"), # 0x0D19
188 (F, 1, "GL_BLUE_SCALE"), # 0x0D1A
189 (F, 1, "GL_BLUE_BIAS"), # 0x0D1B
190 (F, 1, "GL_ALPHA_SCALE"), # 0x0D1C
191 (F, 1, "GL_ALPHA_BIAS"), # 0x0D1D
192 (F, 1, "GL_DEPTH_SCALE"), # 0x0D1E
193 (F, 1, "GL_DEPTH_BIAS"), # 0x0D1F
194 (I, 1, "GL_MAX_EVAL_ORDER"), # 0x0D30
195 (I, 1, "GL_MAX_LIGHTS"), # 0x0D31
196 (I, 1, "GL_MAX_CLIP_PLANES"), # 0x0D32
197 (I, 1, "GL_MAX_PIXEL_MAP_TABLE"), # 0x0D34
198 (I, 1, "GL_MAX_ATTRIB_STACK_DEPTH"), # 0x0D35
199 (I, 1, "GL_MAX_MODELVIEW_STACK_DEPTH"), # 0x0D36
200 (I, 1, "GL_MAX_NAME_STACK_DEPTH"), # 0x0D37
201 (I, 1, "GL_MAX_PROJECTION_STACK_DEPTH"), # 0x0D38
202 (I, 1, "GL_MAX_TEXTURE_STACK_DEPTH"), # 0x0D39
203 (I, 1, "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH"), # 0x0D3B
204 (I, 1, "GL_INDEX_BITS"), # 0x0D51
205 (I, 1, "GL_RED_BITS"), # 0x0D52
206 (I, 1, "GL_GREEN_BITS"), # 0x0D53
207 (I, 1, "GL_BLUE_BITS"), # 0x0D54
208 (I, 1, "GL_ALPHA_BITS"), # 0x0D55
209 (I, 1, "GL_DEPTH_BITS"), # 0x0D56
210 (I, 1, "GL_STENCIL_BITS"), # 0x0D57
211 (I, 1, "GL_ACCUM_RED_BITS"), # 0x0D58
212 (I, 1, "GL_ACCUM_GREEN_BITS"), # 0x0D59
213 (I, 1, "GL_ACCUM_BLUE_BITS"), # 0x0D5A
214 (I, 1, "GL_ACCUM_ALPHA_BITS"), # 0x0D5B
215 (I, 1, "GL_NAME_STACK_DEPTH"), # 0x0D70
216 (I, 1, "GL_AUTO_NORMAL"), # 0x0D80
217 (I, 1, "GL_MAP1_COLOR_4"), # 0x0D90
218 (I, 1, "GL_MAP1_INDEX"), # 0x0D91
219 (I, 1, "GL_MAP1_NORMAL"), # 0x0D92
220 (I, 1, "GL_MAP1_TEXTURE_COORD_1"), # 0x0D93
221 (I, 1, "GL_MAP1_TEXTURE_COORD_2"), # 0x0D94
222 (I, 1, "GL_MAP1_TEXTURE_COORD_3"), # 0x0D95
223 (I, 1, "GL_MAP1_TEXTURE_COORD_4"), # 0x0D96
224 (I, 1, "GL_MAP1_VERTEX_3"), # 0x0D97
225 (I, 1, "GL_MAP1_VERTEX_4"), # 0x0D98
226 (I, 1, "GL_MAP2_COLOR_4"), # 0x0DB0
227 (I, 1, "GL_MAP2_INDEX"), # 0x0DB1
228 (I, 1, "GL_MAP2_NORMAL"), # 0x0DB2
229 (I, 1, "GL_MAP2_TEXTURE_COORD_1"), # 0x0DB3
230 (I, 1, "GL_MAP2_TEXTURE_COORD_2"), # 0x0DB4
231 (I, 1, "GL_MAP2_TEXTURE_COORD_3"), # 0x0DB5
232 (I, 1, "GL_MAP2_TEXTURE_COORD_4"), # 0x0DB6
233 (I, 1, "GL_MAP2_VERTEX_3"), # 0x0DB7
234 (I, 1, "GL_MAP2_VERTEX_4"), # 0x0DB8
235 (F, 2, "GL_MAP1_GRID_DOMAIN"), # 0x0DD0
236 (I, 1, "GL_MAP1_GRID_SEGMENTS"), # 0x0DD1
237 (F, 4, "GL_MAP2_GRID_DOMAIN"), # 0x0DD2
238 (I, 2, "GL_MAP2_GRID_SEGMENTS"), # 0x0DD3
239 (I, 1, "GL_FEEDBACK_BUFFER_SIZE"), # 0x0DF1
240 (I, 1, "GL_FEEDBACK_BUFFER_TYPE"), # 0x0DF2
241 (I, 1, "GL_SELECTION_BUFFER_SIZE"), # 0x0DF4
242 (I, 1, "GL_VERTEX_ARRAY"), # 0x8074
243 (I, 1, "GL_NORMAL_ARRAY"), # 0x8075
244 (I, 1, "GL_COLOR_ARRAY"), # 0x8076
245 (I, 1, "GL_INDEX_ARRAY"), # 0x8077
246 (I, 1, "GL_TEXTURE_COORD_ARRAY"), # 0x8078
247 (I, 1, "GL_EDGE_FLAG_ARRAY"), # 0x8079
248 (I, 1, "GL_VERTEX_ARRAY_SIZE"), # 0x807A
249 (I, 1, "GL_VERTEX_ARRAY_TYPE"), # 0x807B
250 (I, 1, "GL_VERTEX_ARRAY_STRIDE"), # 0x807C
251 (I, 1, "GL_NORMAL_ARRAY_TYPE"), # 0x807E
252 (I, 1, "GL_NORMAL_ARRAY_STRIDE"), # 0x807F
253 (I, 1, "GL_COLOR_ARRAY_SIZE"), # 0x8081
254 (I, 1, "GL_COLOR_ARRAY_TYPE"), # 0x8082
255 (I, 1, "GL_COLOR_ARRAY_STRIDE"), # 0x8083
256 (I, 1, "GL_INDEX_ARRAY_TYPE"), # 0x8085
257 (I, 1, "GL_INDEX_ARRAY_STRIDE"), # 0x8086
258 (I, 1, "GL_TEXTURE_COORD_ARRAY_SIZE"), # 0x8088
259 (I, 1, "GL_TEXTURE_COORD_ARRAY_TYPE"), # 0x8089
260 (I, 1, "GL_TEXTURE_COORD_ARRAY_STRIDE"), # 0x808A
261 (I, 1, "GL_EDGE_FLAG_ARRAY_STRIDE"), # 0x808C
271 print '#include <string.h>'
273 print '#include "json.hpp"'
274 print '#include "glimports.hpp"'
275 print '#include "glstate.hpp"'
277 print 'void state_dump(std::ostream &os)'
279 print ' JSONWriter json(os);'
280 self.dump_parameters()
285 def dump_parameters(self):
286 print ' GLint iparams[16];'
287 print ' GLfloat fparams[16];'
288 print ' json.beginMember("parameters");'
289 print ' json.beginObject();'
290 for type, count, name in parameters:
291 print ' json.beginMember("%s");' % name
293 print ' memset(iparams, 0, %u * sizeof *iparams);' % count
294 print ' glGetIntegerv(%s, iparams);' % name
296 print ' json.writeNumber(iparams[0]);'
298 print ' json.beginArray();'
299 for i in range(count):
300 print ' json.writeNumber(iparams[%u]);' % i
301 print ' json.endArray();'
303 print ' memset(fparams, 0, %u * sizeof *fparams);' % count
304 print ' glGetFloatv(%s, fparams);' % name
306 print ' json.writeNumber(fparams[0]);'
308 print ' json.beginArray();'
309 for i in range(count):
310 print ' json.writeNumber(fparams[%u]);' % i
311 print ' json.endArray();'
312 print ' json.endMember();'
313 print ' json.endObject();'
314 print ' json.endMember(); // parameters'
318 self.write(' '*self.level + s + '\n')
331 if __name__ == '__main__':