1 // This implements support common to all glGet functions.
2 //
3 // Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
4 //
5 // This file is part of PyQt5.
6 //
7 // This file may be used under the terms of the GNU General Public License
8 // version 3.0 as published by the Free Software Foundation and appearing in
9 // the file LICENSE included in the packaging of this file.  Please review the
10 // following information to ensure the GNU General Public License version 3.0
11 // requirements will be met: http://www.gnu.org/copyleft/gpl.html.
12 //
13 // If you do not wish to use this file under the terms of the GPL version 3.0
14 // then you may purchase a commercial license.  For more information contact
15 // info@riverbankcomputing.com.
16 //
17 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
18 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 
20 
21 #include "sipAPIQtGui.h"
22 
23 #if defined(SIP_FEATURE_PyQt_OpenGL)
24 
25 #include "qpyopengl_api.h"
26 
27 
28 #if QT_VERSION >= 0x050100
29 
30 // Return the number of values returned for a particular parameter, or the
31 // subsequent query needed to obtain the number of values.
qpyopengl_get(GLenum pname,GLenum * query)32 GLint qpyopengl_get(GLenum pname, GLenum *query)
33 {
34     GLint nr_params = 0;
35 
36     switch (pname)
37     {
38 #if defined(GL_COMPRESSED_TEXTURE_FORMATS)
39     case GL_COMPRESSED_TEXTURE_FORMATS:
40         *query = GL_NUM_COMPRESSED_TEXTURE_FORMATS;
41         break;
42 #endif
43 
44 #if defined(GL_PROGRAM_BINARY_FORMATS)
45     case GL_PROGRAM_BINARY_FORMATS:
46         *query = GL_NUM_PROGRAM_BINARY_FORMATS;
47         break;
48 #endif
49 
50 #if defined(GL_SHADER_BINARY_FORMATS)
51     case GL_SHADER_BINARY_FORMATS:
52         *query = GL_NUM_SHADER_BINARY_FORMATS;
53         break;
54 #endif
55 
56 #if defined(GL_COLOR_MATRIX)
57     case GL_COLOR_MATRIX:
58 #endif
59 #if defined(GL_MODELVIEW_MATRIX)
60     case GL_MODELVIEW_MATRIX:
61 #endif
62 #if defined(GL_PROJECTION_MATRIX)
63     case GL_PROJECTION_MATRIX:
64 #endif
65 #if defined(GL_TEXTURE_MATRIX)
66     case GL_TEXTURE_MATRIX:
67 #endif
68 #if defined(GL_TRANSPOSE_COLOR_MATRIX)
69     case GL_TRANSPOSE_COLOR_MATRIX:
70 #endif
71 #if defined(GL_TRANSPOSE_MODELVIEW_MATRIX)
72     case GL_TRANSPOSE_MODELVIEW_MATRIX:
73 #endif
74 #if defined(GL_TRANSPOSE_PROJECTION_MATRIX)
75     case GL_TRANSPOSE_PROJECTION_MATRIX:
76 #endif
77 #if defined(GL_TRANSPOSE_TEXTURE_MATRIX)
78     case GL_TRANSPOSE_TEXTURE_MATRIX:
79 #endif
80         nr_params = 16;
81         break;
82 
83 #if defined(GL_ACCUM_CLEAR_VALUE)
84     case GL_ACCUM_CLEAR_VALUE:
85 #endif
86 #if defined(GL_BLEND_COLOR)
87     case GL_BLEND_COLOR:
88 #endif
89 #if defined(GL_COLOR_CLEAR_VALUE)
90     case GL_COLOR_CLEAR_VALUE:
91 #endif
92 #if defined(GL_COLOR_WRITEMASK)
93     case GL_COLOR_WRITEMASK:
94 #endif
95 #if defined(GL_CURRENT_COLOR)
96     case GL_CURRENT_COLOR:
97 #endif
98 #if defined(GL_CURRENT_RASTER_COLOR)
99     case GL_CURRENT_RASTER_COLOR:
100 #endif
101 #if defined(GL_CURRENT_RASTER_POSITION)
102     case GL_CURRENT_RASTER_POSITION:
103 #endif
104 #if defined(GL_CURRENT_RASTER_SECONDARY_COLOR)
105     case GL_CURRENT_RASTER_SECONDARY_COLOR:
106 #endif
107 #if defined(GL_CURRENT_RASTER_TEXTURE_COORDS)
108     case GL_CURRENT_RASTER_TEXTURE_COORDS:
109 #endif
110 #if defined(GL_CURRENT_SECONDARY_COLOR)
111     case GL_CURRENT_SECONDARY_COLOR:
112 #endif
113 #if defined(GL_CURRENT_TEXTURE_COORDS)
114     case GL_CURRENT_TEXTURE_COORDS:
115 #endif
116 #if defined(GL_FOG_COLOR)
117     case GL_FOG_COLOR:
118 #endif
119 #if defined(GL_LIGHT_MODEL_AMBIENT)
120     case GL_LIGHT_MODEL_AMBIENT:
121 #endif
122 #if defined(GL_MAP2_GRID_DOMAIN)
123     case GL_MAP2_GRID_DOMAIN:
124 #endif
125 #if defined(GL_SCISSOR_BOX)
126     case GL_SCISSOR_BOX:
127 #endif
128 #if defined(GL_VIEWPORT)
129     case GL_VIEWPORT:
130 #endif
131         nr_params = 4;
132         break;
133 
134 #if defined(GL_SMOOTH_POINT_SIZE_RANGE)
135     case GL_SMOOTH_POINT_SIZE_RANGE:
136 #endif
137 #if defined(GL_POINT_SIZE_RANGE) && (!defined(GL_SMOOTH_POINT_SIZE_RANGE) || GL_SMOOTH_POINT_SIZE_RANGE != GL_POINT_SIZE_RANGE)
138     case GL_POINT_SIZE_RANGE:
139 #endif
140 
141 #if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
142     case GL_SMOOTH_LINE_WIDTH_RANGE:
143 #endif
144 #if defined(GL_LINE_WIDTH_RANGE) && (!defined(GL_SMOOTH_LINE_WIDTH_RANGE) || GL_SMOOTH_LINE_WIDTH_RANGE != GL_LINE_WIDTH_RANGE)
145     case GL_LINE_WIDTH_RANGE:
146 #endif
147 
148 #if defined(GL_ALIASED_POINT_SIZE_RANGE)
149     case GL_ALIASED_POINT_SIZE_RANGE:
150 #endif
151 #if defined(GL_ALIASED_LINE_WIDTH_RANGE)
152     case GL_ALIASED_LINE_WIDTH_RANGE:
153 #endif
154 #if defined(GL_DEPTH_RANGE)
155     case GL_DEPTH_RANGE:
156 #endif
157 #if defined(GL_MAP1_GRID_DOMAIN)
158     case GL_MAP1_GRID_DOMAIN:
159 #endif
160 #if defined(GL_MAP2_GRID_SEGMENTS)
161     case GL_MAP2_GRID_SEGMENTS:
162 #endif
163 #if defined(GL_MAX_VIEWPORT_DIMS)
164     case GL_MAX_VIEWPORT_DIMS:
165 #endif
166 #if defined(GL_POLYGON_MODE)
167     case GL_POLYGON_MODE:
168 #endif
169 #if defined(GL_VIEWPORT_BOUNDS_RANGE)
170     case GL_VIEWPORT_BOUNDS_RANGE:
171 #endif
172         nr_params = 2;
173         break;
174 
175     default:
176         nr_params = 1;
177     }
178 
179     return nr_params;
180 }
181 
182 #endif
183 
184 #endif
185