GNU Octave  9.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
oct-opengl.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (C) 2016-2024 The Octave Project Developers
4 //
5 // See the file COPYRIGHT.md in the top-level directory of this
6 // distribution or <https://octave.org/copyright/>.
7 //
8 // This file is part of Octave.
9 //
10 // Octave is free software: you can redistribute it and/or modify it
11 // under the terms of the GNU General Public License as published by
12 // the Free Software Foundation, either version 3 of the License, or
13 // (at your option) any later version.
14 //
15 // Octave is distributed in the hope that it will be useful, but
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 // GNU General Public License for more details.
19 //
20 // You should have received a copy of the GNU General Public License
21 // along with Octave; see the file COPYING. If not, see
22 // <https://www.gnu.org/licenses/>.
23 //
24 ////////////////////////////////////////////////////////////////////////
25 
26 #if ! defined (octave_oct_opengl_h)
27 #define octave_oct_opengl_h 1
28 
29 #include "octave-config.h"
30 
31 #if defined (HAVE_OPENGL)
32 
33 # if defined (HAVE_GL_GL_H)
34 # include <GL/gl.h>
35 # elif defined (HAVE_OPENGL_GL_H) || defined (HAVE_FRAMEWORK_OPENGL)
36 # include <OpenGL/gl.h>
37 # endif
38 
39 # if defined (HAVE_GL_GLU_H)
40 # include <GL/glu.h>
41 # elif defined (HAVE_OPENGL_GLU_H) || defined (HAVE_FRAMEWORK_OPENGL)
42 # include <OpenGL/glu.h>
43 # endif
44 
45 # if defined (HAVE_GL_GLEXT_H)
46 # include <GL/glext.h>
47 # elif defined (HAVE_OPENGL_GLEXT_H) || defined (HAVE_FRAMEWORK_OPENGL)
48 # include <OpenGL/glext.h>
49 # endif
50 
51 #endif
52 
54 
56 {
57 public:
58 
60 
61  opengl_functions (const opengl_functions&) = default;
62 
63  opengl_functions& operator = (const opengl_functions&) = default;
64 
65  virtual ~opengl_functions () = default;
66 
67 #if defined (HAVE_OPENGL)
68 
69  // If OpenGL is not available, opengl_functions will be a dummy
70  // class that does nothing. This makes the implementation of
71  // other things that rely on this class slightly simpler.
72 
73  virtual void glAlphaFunc (GLenum fcn, GLclampf ref)
74  {
75  ::glAlphaFunc (fcn, ref);
76  }
77 
78  virtual void glBegin (GLenum mode)
79  {
80  ::glBegin (mode);
81  }
82 
83  virtual void glBindTexture (GLenum target, GLuint texture)
84  {
85  ::glBindTexture (target, texture);
86  }
87 
88  virtual void glBitmap (GLsizei width, GLsizei height, GLfloat xorig,
89  GLfloat yorig, GLfloat xmove, GLfloat ymove,
90  const GLubyte *bitmap)
91  {
92  ::glBitmap (width, height, xorig, yorig, xmove, ymove, bitmap);
93  }
94 
95  virtual void glBlendFunc (GLenum sfactor, GLenum dfactor)
96  {
97  ::glBlendFunc (sfactor, dfactor);
98  }
99 
100  virtual void glCallList (GLuint list)
101  {
102  ::glCallList (list);
103  }
104 
105  virtual void glClearColor (GLclampf red, GLclampf green, GLclampf blue,
106  GLclampf alpha)
107  {
108  ::glClearColor (red, green, blue, alpha);
109  }
110 
111  virtual void glClear (GLbitfield mask)
112  {
113  ::glClear (mask);
114  }
115 
116  virtual void glClipPlane (GLenum plane, const GLdouble *equation)
117  {
118  ::glClipPlane (plane, equation);
119  }
120 
121  virtual void glColor3dv (const GLdouble *v)
122  {
123  ::glColor3dv (v);
124  }
125 
126  virtual void glColor3f (GLfloat red, GLfloat green, GLfloat blue)
127  {
128  ::glColor3f (red, green, blue);
129  }
130 
131  virtual void glColor3fv (const GLfloat *v)
132  {
133  ::glColor3fv (v);
134  }
135 
136  virtual void glColor4d (GLdouble red, GLdouble green, GLdouble blue,
137  GLdouble alpha)
138  {
139  ::glColor4d (red, green, blue, alpha);
140  }
141 
142  virtual void glColor4f (GLfloat red, GLfloat green, GLfloat blue,
143  GLfloat alpha)
144  {
145  ::glColor4f (red, green, blue, alpha);
146  }
147 
148  virtual void glColor4fv (const GLfloat *v)
149  {
150  ::glColor4fv (v);
151  }
152 
153  virtual void glDeleteLists (GLuint list, GLsizei range)
154  {
155  ::glDeleteLists (list, range);
156  }
157 
158  virtual void glDeleteTextures (GLsizei n, const GLuint *textures)
159  {
160  ::glDeleteTextures (n, textures);
161  }
162 
163  virtual void glDepthFunc (GLenum fcn)
164  {
165  ::glDepthFunc (fcn);
166  }
167 
168  virtual void glDisable (GLenum cap)
169  {
170  ::glDisable (cap);
171  }
172 
173  virtual void glDrawPixels (GLsizei width, GLsizei height, GLenum format,
174  GLenum type, const GLvoid *pixels)
175  {
176  ::glDrawPixels (width, height, format, type, pixels);
177  }
178 
179  virtual void glEdgeFlag (GLboolean flag)
180  {
181  ::glEdgeFlag (flag);
182  }
183 
184  virtual void glEnable (GLenum cap)
185  {
186  ::glEnable (cap);
187  }
188 
189  virtual void glEndList ()
190  {
191  ::glEndList ();
192  }
193 
194  virtual void glEnd ()
195  {
196  ::glEnd ();
197  }
198 
199  virtual void glFinish ()
200  {
201  ::glFinish ();
202  }
203 
204  virtual GLuint glGenLists (GLsizei range)
205  {
206  return ::glGenLists (range);
207  }
208 
209  virtual void glGenTextures (GLsizei n, GLuint *textures)
210  {
211  ::glGenTextures (n, textures);
212  }
213 
214  virtual void glGetBooleanv (GLenum pname, GLboolean *data)
215  {
216  ::glGetBooleanv (pname, data);
217  }
218 
219  virtual void glGetDoublev (GLenum pname, GLdouble *data)
220  {
221  ::glGetDoublev (pname, data);
222  }
223 
224  virtual GLenum glGetError ()
225  {
226  return ::glGetError ();
227  }
228 
229  virtual void glGetFloatv (GLenum pname, GLfloat *data)
230  {
231  ::glGetFloatv (pname, data);
232  }
233 
234  virtual void glGetIntegerv (GLenum pname, GLint *data)
235  {
236  ::glGetIntegerv (pname, data);
237  }
238 
239  virtual const GLubyte * glGetString (GLenum name)
240  {
241  return ::glGetString (name);
242  }
243 
244  virtual void glHint (GLenum target, GLenum mode)
245  {
246  ::glHint (target, mode);
247  }
248 
249  virtual void glInitNames ()
250  {
251  ::glInitNames ();
252  }
253 
254  virtual GLboolean glIsEnabled (GLenum cap)
255  {
256  return ::glIsEnabled (cap);
257  }
258 
259  virtual void glLightfv (GLenum light, GLenum pname, const GLfloat *params)
260  {
261  ::glLightfv (light, pname, params);
262  }
263 
264  virtual void glLineStipple (GLint factor, GLushort pattern)
265  {
266  ::glLineStipple (factor, pattern);
267  }
268 
269  virtual void glLineWidth (GLfloat width)
270  {
271  ::glLineWidth (width);
272  }
273 
274  virtual void glLoadIdentity ()
275  {
276  ::glLoadIdentity ();
277  }
278 
279  virtual void glMaterialf (GLenum face, GLenum pname, GLfloat param)
280  {
281  ::glMaterialf (face, pname, param);
282  }
283 
284  virtual void glMaterialfv (GLenum face, GLenum pname, const GLfloat *params)
285  {
286  ::glMaterialfv (face, pname, params);
287  }
288 
289  virtual void glMatrixMode (GLenum mode)
290  {
291  ::glMatrixMode (mode);
292  }
293 
294  virtual void glMultMatrixd (const GLdouble *m)
295  {
296  ::glMultMatrixd (m);
297  }
298 
299  virtual void glNewList (GLuint list, GLenum mode)
300  {
301  ::glNewList (list, mode);
302  }
303 
304  virtual void glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz)
305  {
306  ::glNormal3d (nx, ny, nz);
307  }
308 
309  virtual void glNormal3dv (const GLdouble *v)
310  {
311  ::glNormal3dv (v);
312  }
313 
314  virtual void glOrtho (GLdouble left, GLdouble right, GLdouble bottom,
315  GLdouble top, GLdouble near_val, GLdouble far_val)
316  {
317  ::glOrtho (left, right, bottom, top, near_val, far_val);
318  }
319 
320  virtual void glPixelStorei (GLenum pname, GLint param)
321  {
322  ::glPixelStorei (pname, param);
323  }
324 
325  virtual void glPixelZoom (GLfloat xfactor, GLfloat yfactor)
326  {
327  ::glPixelZoom (xfactor, yfactor);
328  }
329 
330  virtual void glPolygonMode (GLenum face, GLenum mode)
331  {
332  ::glPolygonMode (face, mode);
333  }
334 
335  virtual void glPolygonOffset (GLfloat factor, GLfloat units)
336  {
337  ::glPolygonOffset (factor, units);
338  }
339 
340  virtual void glPopAttrib ()
341  {
342  ::glPopAttrib ();
343  }
344 
345  virtual void glPopMatrix ()
346  {
347  ::glPopMatrix ();
348  }
349 
350  virtual void glPopName ()
351  {
352  ::glPopName ();
353  }
354 
355  virtual void glPushAttrib (GLbitfield mask)
356  {
357  ::glPushAttrib (mask);
358  }
359 
360  virtual void glPushMatrix ()
361  {
362  ::glPushMatrix ();
363  }
364 
365  virtual void glPushName (GLuint name)
366  {
367  ::glPushName (name);
368  }
369 
370  virtual void glRasterPos3d (GLdouble x, GLdouble y, GLdouble z)
371  {
372  ::glRasterPos3d (x, y, z);
373  }
374 
375  virtual void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height,
376  GLenum format, GLenum type, GLvoid *pixels)
377  {
378  ::glReadPixels (x, y, width, height, format, type, pixels);
379  }
380 
381  virtual GLint glRenderMode (GLenum mode)
382  {
383  return ::glRenderMode (mode);
384  }
385 
386  virtual void glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
387  {
388  ::glRotated (angle, x, y, z);
389  }
390 
391  virtual void glScaled (GLdouble x, GLdouble y, GLdouble z)
392  {
393  ::glScaled (x, y, z);
394  }
395 
396  virtual void glScalef (GLfloat x, GLfloat y, GLfloat z)
397  {
398  ::glScalef (x, y, z);
399  }
400 
401  virtual void glSelectBuffer (GLsizei size, GLuint *buffer)
402  {
403  ::glSelectBuffer (size, buffer);
404  }
405 
406  virtual void glShadeModel (GLenum mode)
407  {
408  ::glShadeModel (mode);
409  }
410 
411  virtual void glTexCoord2d (GLdouble s, GLdouble t)
412  {
413  ::glTexCoord2d (s, t);
414  }
415 
416  virtual void glTexImage2D (GLenum target, GLint level, GLint internalFormat,
417  GLsizei width, GLsizei height, GLint border,
418  GLenum format, GLenum type, const GLvoid *pixels)
419  {
420  ::glTexImage2D (target, level, internalFormat, width, height, border,
421  format, type, pixels);
422  }
423 
424  virtual void glTexParameteri (GLenum target, GLenum pname, GLint param)
425  {
426  ::glTexParameteri (target, pname, param);
427  }
428 
429  virtual void glTranslated (GLdouble x, GLdouble y, GLdouble z)
430  {
431  ::glTranslated (x, y, z);
432  }
433 
434  virtual void glTranslatef (GLfloat x, GLfloat y, GLfloat z)
435  {
436  ::glTranslatef (x, y, z);
437  }
438 
439  virtual void glVertex2d (GLdouble x, GLdouble y)
440  {
441  ::glVertex2d (x, y);
442  }
443 
444  virtual void glVertex3d (GLdouble x, GLdouble y, GLdouble z)
445  {
446  ::glVertex3d (x, y, z);
447  }
448 
449  virtual void glVertex3dv (const GLdouble *v)
450  {
451  ::glVertex3dv (v);
452  }
453 
454  virtual void glViewport (GLint x, GLint y, GLsizei width, GLsizei height)
455  {
456  ::glViewport (x, y, width, height);
457  }
458 
459 #endif
460 };
461 
462 OCTAVE_END_NAMESPACE(octave)
463 
464 
465 #endif
virtual void glPushName(GLuint name)
Definition: oct-opengl.h:365
virtual GLboolean glIsEnabled(GLenum cap)
Definition: oct-opengl.h:254
virtual void glHint(GLenum target, GLenum mode)
Definition: oct-opengl.h:244
virtual void glGetIntegerv(GLenum pname, GLint *data)
Definition: oct-opengl.h:234
virtual void glBegin(GLenum mode)
Definition: oct-opengl.h:78
virtual void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
Definition: oct-opengl.h:375
virtual void glClipPlane(GLenum plane, const GLdouble *equation)
Definition: oct-opengl.h:116
virtual void glGetFloatv(GLenum pname, GLfloat *data)
Definition: oct-opengl.h:229
virtual void glMatrixMode(GLenum mode)
Definition: oct-opengl.h:289
virtual void glBindTexture(GLenum target, GLuint texture)
Definition: oct-opengl.h:83
virtual const GLubyte * glGetString(GLenum name)
Definition: oct-opengl.h:239
virtual void glEndList()
Definition: oct-opengl.h:189
virtual ~opengl_functions()=default
virtual void glVertex2d(GLdouble x, GLdouble y)
Definition: oct-opengl.h:439
virtual void glNewList(GLuint list, GLenum mode)
Definition: oct-opengl.h:299
virtual void glPopMatrix()
Definition: oct-opengl.h:345
virtual void glDeleteTextures(GLsizei n, const GLuint *textures)
Definition: oct-opengl.h:158
virtual void glVertex3d(GLdouble x, GLdouble y, GLdouble z)
Definition: oct-opengl.h:444
virtual void glLineStipple(GLint factor, GLushort pattern)
Definition: oct-opengl.h:264
virtual void glLoadIdentity()
Definition: oct-opengl.h:274
virtual void glPolygonOffset(GLfloat factor, GLfloat units)
Definition: oct-opengl.h:335
virtual void glSelectBuffer(GLsizei size, GLuint *buffer)
Definition: oct-opengl.h:401
virtual void glLineWidth(GLfloat width)
Definition: oct-opengl.h:269
virtual void glColor3fv(const GLfloat *v)
Definition: oct-opengl.h:131
virtual void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
Definition: oct-opengl.h:454
virtual void glScalef(GLfloat x, GLfloat y, GLfloat z)
Definition: oct-opengl.h:396
virtual void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
Definition: oct-opengl.h:136
virtual void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
Definition: oct-opengl.h:386
virtual void glGenTextures(GLsizei n, GLuint *textures)
Definition: oct-opengl.h:209
virtual GLint glRenderMode(GLenum mode)
Definition: oct-opengl.h:381
virtual void glTranslatef(GLfloat x, GLfloat y, GLfloat z)
Definition: oct-opengl.h:434
virtual void glDisable(GLenum cap)
Definition: oct-opengl.h:168
virtual void glCallList(GLuint list)
Definition: oct-opengl.h:100
virtual void glTexCoord2d(GLdouble s, GLdouble t)
Definition: oct-opengl.h:411
virtual void glDepthFunc(GLenum fcn)
Definition: oct-opengl.h:163
virtual void glClear(GLbitfield mask)
Definition: oct-opengl.h:111
virtual void glNormal3dv(const GLdouble *v)
Definition: oct-opengl.h:309
virtual void glColor3f(GLfloat red, GLfloat green, GLfloat blue)
Definition: oct-opengl.h:126
virtual void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
Definition: oct-opengl.h:142
virtual void glVertex3dv(const GLdouble *v)
Definition: oct-opengl.h:449
virtual void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)
Definition: oct-opengl.h:304
virtual void glEnd()
Definition: oct-opengl.h:194
virtual void glAlphaFunc(GLenum fcn, GLclampf ref)
Definition: oct-opengl.h:73
virtual void glMaterialf(GLenum face, GLenum pname, GLfloat param)
Definition: oct-opengl.h:279
virtual void glPolygonMode(GLenum face, GLenum mode)
Definition: oct-opengl.h:330
virtual void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
Definition: oct-opengl.h:105
virtual void glColor3dv(const GLdouble *v)
Definition: oct-opengl.h:121
virtual GLuint glGenLists(GLsizei range)
Definition: oct-opengl.h:204
virtual void glDeleteLists(GLuint list, GLsizei range)
Definition: oct-opengl.h:153
virtual void glColor4fv(const GLfloat *v)
Definition: oct-opengl.h:148
virtual void glTexParameteri(GLenum target, GLenum pname, GLint param)
Definition: oct-opengl.h:424
virtual void glPopAttrib()
Definition: oct-opengl.h:340
virtual void glEnable(GLenum cap)
Definition: oct-opengl.h:184
virtual void glGetBooleanv(GLenum pname, GLboolean *data)
Definition: oct-opengl.h:214
virtual void glBlendFunc(GLenum sfactor, GLenum dfactor)
Definition: oct-opengl.h:95
virtual void glShadeModel(GLenum mode)
Definition: oct-opengl.h:406
virtual void glEdgeFlag(GLboolean flag)
Definition: oct-opengl.h:179
virtual void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val)
Definition: oct-opengl.h:314
virtual void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)
Definition: oct-opengl.h:88
virtual void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z)
Definition: oct-opengl.h:370
virtual void glTexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
Definition: oct-opengl.h:416
virtual void glGetDoublev(GLenum pname, GLdouble *data)
Definition: oct-opengl.h:219
virtual void glPushAttrib(GLbitfield mask)
Definition: oct-opengl.h:355
virtual void glMultMatrixd(const GLdouble *m)
Definition: oct-opengl.h:294
virtual void glPixelStorei(GLenum pname, GLint param)
Definition: oct-opengl.h:320
virtual void glPushMatrix()
Definition: oct-opengl.h:360
virtual void glScaled(GLdouble x, GLdouble y, GLdouble z)
Definition: oct-opengl.h:391
opengl_functions(const opengl_functions &)=default
virtual void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
Definition: oct-opengl.h:173
virtual void glPopName()
Definition: oct-opengl.h:350
virtual void glLightfv(GLenum light, GLenum pname, const GLfloat *params)
Definition: oct-opengl.h:259
virtual GLenum glGetError()
Definition: oct-opengl.h:224
virtual void glTranslated(GLdouble x, GLdouble y, GLdouble z)
Definition: oct-opengl.h:429
virtual void glInitNames()
Definition: oct-opengl.h:249
virtual void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params)
Definition: oct-opengl.h:284
virtual void glPixelZoom(GLfloat xfactor, GLfloat yfactor)
Definition: oct-opengl.h:325
virtual void glFinish()
Definition: oct-opengl.h:199
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
F77_RET_T const F77_DBLE * x
T octave_idx_type m
Definition: mx-inlines.cc:781
octave_idx_type n
Definition: mx-inlines.cc:761
std::size_t format(std::ostream &os, const char *fmt,...)