From http://www.jwz.org/xscreensaver/xscreensaver-5.35.tar.gz
[xscreensaver] / jwxyz / jwzglesI.h
diff --git a/jwxyz/jwzglesI.h b/jwxyz/jwzglesI.h
new file mode 100644 (file)
index 0000000..588e301
--- /dev/null
@@ -0,0 +1,346 @@
+/* xscreensaver, Copyright (c) 2012-2015 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ */
+
+/* A compatibility shim to allow OpenGL 1.3 source code to work in an
+   OpenGLES environment, where almost every OpenGL 1.3 function has
+   been "deprecated".  See jwzgles.c for details.
+ */
+
+#ifndef __JWZGLES_I_H__
+#define __JWZGLES_I_H__
+
+#ifdef GL_VERSION_ES_CM_1_0  /* compiling against OpenGLES 1.x */
+
+/* These OpenGL 1.3 constants are not present in OpenGLES 1.
+   Fortunately, it looks like they didn't re-use any of the numbers,
+   so we can just keep using the OpenGL 1.3 values.  I'm actually
+   kind of shocked that the GLES folks passed up that opportunity
+   for further clusterfuckery.
+ */
+# define GLdouble double
+
+# define GL_ACCUM_BUFFER_BIT                   0x00000200
+# define GL_ALL_ATTRIB_BITS                    0x000FFFFF
+# define GL_AUTO_NORMAL                                0x0D80
+# define GL_BLEND_SRC_ALPHA                    0x80CB
+# define GL_C3F_V3F                            0x2A24
+# define GL_C4F_N3F_V3F                                0x2A26
+# define GL_C4UB_V2F                           0x2A22
+# define GL_C4UB_V3F                           0x2A23
+# define GL_CLAMP                              0x2900
+# define GL_COLOR_BUFFER_BIT                   0x00004000
+# define GL_COLOR_MATERIAL_FACE                        0x0B55
+# define GL_COLOR_MATERIAL_PARAMETER           0x0B56
+# define GL_COMPILE                            0x1300
+# define GL_CURRENT_BIT                                0x00000001
+# define GL_DEPTH_BUFFER_BIT                   0x00000100
+# define GL_DOUBLEBUFFER                       0x0C32
+# define GL_ENABLE_BIT                         0x00002000
+# define GL_EVAL_BIT                           0x00010000
+# define GL_EYE_LINEAR                         0x2400
+# define GL_EYE_PLANE                          0x2502
+# define GL_FEEDBACK                           0x1C01
+# define GL_FILL                               0x1B02
+# define GL_FOG_BIT                            0x00000080
+# define GL_HINT_BIT                           0x00008000
+# define GL_INTENSITY                          0x8049
+# define GL_LIGHTING_BIT                       0x00000040
+# define GL_LIGHT_MODEL_COLOR_CONTROL          0x81F8
+# define GL_LIGHT_MODEL_LOCAL_VIEWER           0x0B51
+# define GL_LINE                               0x1B01
+# define GL_LINE_BIT                           0x00000004
+# define GL_LIST_BIT                           0x00020000
+# define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT     0x84FF
+# define GL_N3F_V3F                            0x2A25
+# define GL_OBJECT_LINEAR                      0x2401
+# define GL_OBJECT_PLANE                       0x2501
+# define GL_PIXEL_MODE_BIT                     0x00000020
+# define GL_POINT_BIT                          0x00000002
+# define GL_POLYGON                            0x0009
+# define GL_POLYGON_BIT                                0x00000008
+# define GL_POLYGON_MODE                       0x0B40
+# define GL_POLYGON_SMOOTH                     0x0B41
+# define GL_POLYGON_STIPPLE                    0x0B42
+# define GL_POLYGON_STIPPLE_BIT                        0x00000010
+# define GL_Q                                  0x2003
+# define GL_QUADS                              0x0007
+# define GL_QUAD_STRIP                         0x0008
+# define GL_R                                  0x2002
+# define GL_RENDER                             0x1C00
+# define GL_RGBA_MODE                          0x0C31
+# define GL_S                                  0x2000
+# define GL_SCISSOR_BIT                                0x00080000
+# define GL_SELECT                             0x1C02
+# define GL_SEPARATE_SPECULAR_COLOR            0x81FA
+# define GL_SINGLE_COLOR                       0x81F9
+# define GL_SPHERE_MAP                         0x2402
+# define GL_STENCIL_BUFFER_BIT                 0x00000400
+# define GL_T                                  0x2001
+# define GL_T2F_C3F_V3F                                0x2A2A
+# define GL_T2F_C4F_N3F_V3F                    0x2A2C
+# define GL_T2F_C4UB_V3F                       0x2A29
+# define GL_T2F_N3F_V3F                                0x2A2B
+# define GL_T2F_V3F                            0x2A27
+# define GL_T4F_C4F_N3F_V4F                    0x2A2D
+# define GL_T4F_V4F                            0x2A28
+# define GL_TEXTURE_1D                         0x0DE0
+# define GL_TEXTURE_ALPHA_SIZE                 0x805F
+# define GL_TEXTURE_BIT                                0x00040000
+# define GL_TEXTURE_BLUE_SIZE                  0x805E
+# define GL_TEXTURE_BORDER                     0x1005
+# define GL_TEXTURE_BORDER_COLOR               0x1004
+# define GL_TEXTURE_COMPONENTS                 0x1003
+# define GL_TEXTURE_GEN_MODE                   0x2500
+# define GL_TEXTURE_GEN_Q                      0x0C63
+# define GL_TEXTURE_GEN_R                      0x0C62
+# define GL_TEXTURE_GEN_S                      0x0C60
+# define GL_TEXTURE_GEN_T                      0x0C61
+# define GL_TEXTURE_GREEN_SIZE                 0x805D
+# define GL_TEXTURE_HEIGHT                     0x1001
+# define GL_TEXTURE_INTENSITY_SIZE             0x8061
+# define GL_TEXTURE_LUMINANCE_SIZE             0x8060
+# define GL_TEXTURE_MAX_ANISOTROPY_EXT         0x84FE
+# define GL_TEXTURE_RED_SIZE                   0x805C
+# define GL_TEXTURE_WIDTH                      0x1000
+# define GL_TRANSFORM_BIT                      0x00001000
+# define GL_UNPACK_ROW_LENGTH                  0x0CF2
+# define GL_UNSIGNED_INT_8_8_8_8_REV           0x8367
+# define GL_V2F                                        0x2A20
+# define GL_V3F                                        0x2A21
+# define GL_VIEWPORT_BIT                       0x00000800
+# define GL_INT                                        0x1404
+# define GL_DOUBLE                             0x140A
+
+#endif
+
+
+extern void jwzgles_reset (void);
+
+
+/* Prototypes for the things re-implemented in jwzgles.c 
+ */
+
+extern int  jwzgles_glGenLists (int n);
+extern void jwzgles_glNewList (int id, int mode);
+extern void jwzgles_glEndList (void);
+extern void jwzgles_glDeleteLists (int list, int range);
+extern void jwzgles_glBegin (int mode);
+extern void jwzgles_glNormal3fv (const GLfloat *);
+extern void jwzgles_glNormal3f (GLfloat x, GLfloat y, GLfloat z);
+extern void jwzgles_glTexCoord1f (GLfloat s);
+extern void jwzgles_glTexCoord2fv (const GLfloat *);
+extern void jwzgles_glTexCoord2f (GLfloat s, GLfloat t);
+extern void jwzgles_glTexCoord3fv (const GLfloat *);
+extern void jwzgles_glTexCoord3f (GLfloat s, GLfloat t, GLfloat r);
+extern void jwzgles_glTexCoord4fv (const GLfloat *);
+extern void jwzgles_glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+extern void jwzgles_glVertex2f (GLfloat x, GLfloat y);
+extern void jwzgles_glVertex2dv (const GLdouble *);
+extern void jwzgles_glVertex2fv (const GLfloat *);
+extern void jwzgles_glVertex2i (GLint x, GLint y);
+extern void jwzgles_glVertex3f (GLfloat x, GLfloat y, GLfloat z);
+extern void jwzgles_glVertex3dv (const GLdouble *);
+extern void jwzgles_glVertex3fv (const GLfloat *);
+extern void jwzgles_glVertex3i (GLint x, GLint y, GLint z);
+extern void jwzgles_glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+extern void jwzgles_glVertex4fv (const GLfloat *);
+extern void jwzgles_glVertex4i (GLint x, GLint y, GLint z, GLint w);
+extern void jwzgles_glEnd (void);
+extern void jwzgles_glCallList (int id);
+extern void jwzgles_glClearIndex(GLfloat c);
+extern void jwzgles_glBitmap (GLsizei, GLsizei, GLfloat, GLfloat, GLfloat,
+                              GLfloat, const GLubyte *);
+extern void jwzgles_glPushAttrib(int);
+extern void jwzgles_glPopAttrib(void);
+
+
+/* These functions are present in both OpenGL 1.3 and in OpenGLES 1,
+   but are allowed within glNewList/glEndList, so we must wrap them
+   to allow them to be recorded.
+ */
+extern void jwzgles_glActiveTexture (GLuint);
+extern void jwzgles_glBindTexture (GLuint, GLuint);
+extern void jwzgles_glBlendFunc (GLuint, GLuint);
+extern void jwzgles_glClear (GLuint);
+extern void jwzgles_glClearColor (GLclampf, GLclampf, GLclampf, GLclampf);
+extern void jwzgles_glClearStencil (GLuint);
+extern void jwzgles_glColorMask (GLuint, GLuint, GLuint, GLuint);
+extern void jwzgles_glCullFace (GLuint);
+extern void jwzgles_glDepthFunc (GLuint);
+extern void jwzgles_glDepthMask (GLuint);
+extern void jwzgles_glDisable (GLuint);
+extern void jwzgles_glDrawArrays (GLuint, GLuint, GLuint);
+extern GLboolean jwzgles_glIsEnabled (GLuint);
+extern void jwzgles_glEnable (GLuint);
+extern void jwzgles_glFrontFace (GLuint);
+extern void jwzgles_glHint (GLuint, GLuint);
+extern void jwzgles_glLineWidth (GLfloat);
+extern void jwzgles_glLoadIdentity (void);
+extern void jwzgles_glLogicOp (GLuint);
+extern void jwzgles_glMatrixMode (GLuint);
+extern void jwzgles_glMultMatrixf (const GLfloat *);
+extern void jwzgles_glPointSize (GLfloat);
+extern void jwzgles_glPolygonOffset (GLfloat, GLfloat);
+extern void jwzgles_glPopMatrix (void);
+extern void jwzgles_glPushMatrix (void);
+extern void jwzgles_glScissor (GLuint, GLuint, GLuint, GLuint);
+extern void jwzgles_glShadeModel (GLuint);
+extern void jwzgles_glStencilFunc (GLuint, GLuint, GLuint);
+extern void jwzgles_glStencilMask (GLuint);
+extern void jwzgles_glStencilOp (GLuint, GLuint, GLuint);
+extern void jwzgles_glViewport (GLuint, GLuint, GLuint, GLuint);
+extern void jwzgles_glTranslatef (GLfloat, GLfloat, GLfloat);
+extern void jwzgles_glRotatef (GLfloat, GLfloat, GLfloat, GLfloat);
+extern void jwzgles_glRotated (GLdouble, GLdouble x, GLdouble y, GLdouble z);
+extern void jwzgles_glScalef (GLfloat, GLfloat, GLfloat);
+extern void jwzgles_glColor3f (GLfloat, GLfloat, GLfloat);
+extern void jwzgles_glColor4f (GLfloat, GLfloat, GLfloat, GLfloat);
+extern void jwzgles_glColor3fv (const GLfloat *);
+extern void jwzgles_glColor4fv (const GLfloat *);
+extern void jwzgles_glColor3s (GLshort, GLshort, GLshort);
+extern void jwzgles_glColor4s (GLshort, GLshort, GLshort, GLshort);
+extern void jwzgles_glColor3sv (const GLshort *);
+extern void jwzgles_glColor4sv (const GLshort *);
+extern void jwzgles_glColor3us (GLushort, GLushort, GLushort);
+extern void jwzgles_glColor4us (GLushort, GLushort, GLushort, GLushort);
+extern void jwzgles_glColor3usv (const GLushort *);
+extern void jwzgles_glColor4usv (const GLushort *);
+extern void jwzgles_glColor3d (GLdouble, GLdouble, GLdouble);
+extern void jwzgles_glColor4d (GLdouble, GLdouble, GLdouble, GLdouble);
+extern void jwzgles_glColor3dv (const GLdouble *);
+extern void jwzgles_glColor4dv (const GLdouble *);
+extern void jwzgles_glColor4i (GLint, GLint, GLint, GLint);
+extern void jwzgles_glColor3i (GLint, GLint, GLint);
+extern void jwzgles_glColor3iv (const GLint *);
+extern void jwzgles_glColor4iv (const GLint *);
+extern void jwzgles_glColor4ui (GLuint, GLuint, GLuint, GLuint);
+extern void jwzgles_glColor3ui (GLuint, GLuint, GLuint);
+extern void jwzgles_glColor3uiv (const GLuint *);
+extern void jwzgles_glColor4uiv (const GLuint *);
+extern void jwzgles_glColor4b (GLbyte, GLbyte, GLbyte, GLbyte);
+extern void jwzgles_glColor3b (GLbyte, GLbyte, GLbyte);
+extern void jwzgles_glColor4bv (const GLbyte *);
+extern void jwzgles_glColor3bv (const GLbyte *);
+extern void jwzgles_glColor4ub (GLubyte, GLubyte, GLubyte, GLubyte);
+extern void jwzgles_glColor3ub (GLubyte, GLubyte, GLubyte);
+extern void jwzgles_glColor4ubv (const GLubyte *);
+extern void jwzgles_glColor3ubv (const GLubyte *);
+extern void jwzgles_glMaterialf (GLuint, GLuint, GLfloat);
+extern void jwzgles_glMateriali (GLuint, GLuint, GLuint);
+extern void jwzgles_glMaterialfv (GLuint, GLuint, const GLfloat *);
+extern void jwzgles_glMaterialiv (GLuint, GLuint, const GLint *);
+extern void jwzgles_glFinish (void);
+extern void jwzgles_glFlush (void);
+extern void jwzgles_glPixelStorei (GLuint, GLuint);
+extern void jwzgles_glEnableClientState (GLuint);
+extern void jwzgles_glDisableClientState (GLuint);
+
+extern void jwzgles_glInitNames (void);
+extern void jwzgles_glPushName (GLuint);
+extern GLuint jwzgles_glPopName (void);
+extern GLuint jwzgles_glRenderMode (GLuint);
+extern void jwzgles_glSelectBuffer (GLsizei, GLuint *);
+extern void jwzgles_glLightf (GLenum, GLenum, GLfloat);
+extern void jwzgles_glLighti (GLenum, GLenum, GLint);
+extern void jwzgles_glLightfv (GLenum, GLenum, const GLfloat *);
+extern void jwzgles_glLightiv (GLenum, GLenum, const GLint *);
+extern void jwzgles_glLightModelf (GLenum, GLfloat);
+extern void jwzgles_glLightModeli (GLenum, GLint);
+extern void jwzgles_glLightModelfv (GLenum, const GLfloat *);
+extern void jwzgles_glLightModeliv (GLenum, const GLint *);
+extern void jwzgles_glGenTextures (GLuint, GLuint *);
+extern void jwzgles_glFrustum (GLfloat, GLfloat, GLfloat, GLfloat,
+                               GLfloat, GLfloat);
+extern void jwzgles_glOrtho (GLfloat, GLfloat, GLfloat, GLfloat, 
+                             GLfloat, GLfloat);
+extern void jwzgles_glTexImage1D (GLenum target, GLint level,
+                                  GLint internalFormat,
+                                  GLsizei width, GLint border,
+                                  GLenum format, GLenum type,
+                                  const GLvoid *pixels);
+extern void jwzgles_glTexImage2D (GLenum target,
+                                  GLint        level,
+                                  GLint        internalFormat,
+                                  GLsizei      width,
+                                  GLsizei      height,
+                                  GLint        border,
+                                  GLenum       format,
+                                  GLenum       type,
+                                  const GLvoid *data);
+extern void jwzgles_glTexSubImage2D (GLenum target, GLint level,
+                                     GLint xoffset, GLint yoffset,
+                                     GLsizei width, GLsizei height,
+                                     GLenum format, GLenum type,
+                                     const GLvoid *pixels);
+extern void jwzgles_glCopyTexImage2D (GLenum target, GLint level, 
+                                      GLenum internalformat,
+                                      GLint x, GLint y, 
+                                      GLsizei width, GLsizei height, 
+                                      GLint border);
+extern void jwzgles_glInterleavedArrays (GLenum, GLsizei, const GLvoid *);
+extern void jwzgles_glTexEnvf (GLuint, GLuint, GLfloat);
+extern void jwzgles_glTexEnvi (GLuint, GLuint, GLuint);
+extern void jwzgles_glTexParameterf (GLuint, GLuint, GLfloat);
+extern void jwzgles_glTexParameteri (GLuint, GLuint, GLuint);
+extern void jwzgles_glTexGeni (GLenum, GLenum, GLint);
+extern void jwzgles_glTexGenfv (GLenum, GLenum, const GLfloat *);
+extern void jwzgles_glGetTexGenfv (GLenum, GLenum, GLfloat *);
+extern void jwzgles_glRectf (GLfloat, GLfloat, GLfloat, GLfloat);
+extern void jwzgles_glRecti (GLint, GLint, GLint, GLint);
+extern void jwzgles_glLightModelfv (GLenum, const GLfloat *);
+extern void jwzgles_glClearDepth (GLfloat);
+extern GLboolean jwzgles_glIsList (GLuint);
+extern void jwzgles_glColorMaterial (GLenum, GLenum);
+extern void jwzgles_glPolygonMode (GLenum, GLenum);
+extern void jwzgles_glFogf (GLenum, GLfloat);
+extern void jwzgles_glFogi (GLenum, GLint);
+extern void jwzgles_glFogfv (GLenum, const GLfloat *);
+extern void jwzgles_glFogiv (GLenum, const GLint *);
+extern void jwzgles_glAlphaFunc (GLenum, GLfloat);
+extern void jwzgles_glClipPlane (GLenum, const GLdouble *);
+extern void jwzgles_glDrawBuffer (GLenum);
+extern void jwzgles_glDeleteTextures (GLuint, const GLuint *);
+
+extern void jwzgles_gluPerspective (GLdouble fovy, GLdouble aspect, 
+                                    GLdouble near, GLdouble far);
+extern void jwzgles_gluLookAt (GLfloat eyex, GLfloat eyey, GLfloat eyez,
+                               GLfloat centerx, GLfloat centery, 
+                               GLfloat centerz,
+                               GLfloat upx, GLfloat upy, GLfloat upz);
+extern GLint jwzgles_gluProject (GLdouble objx, GLdouble objy, GLdouble objz, 
+                                 const GLdouble modelMatrix[16], 
+                                 const GLdouble projMatrix[16],
+                                 const GLint viewport[4],
+                                 GLdouble *winx, GLdouble *winy, 
+                                 GLdouble *winz);
+extern int jwzgles_gluBuild2DMipmaps (GLenum target,
+                                      GLint internalFormat,
+                                      GLsizei width,
+                                      GLsizei height,
+                                      GLenum format,
+                                      GLenum type,
+                                      const GLvoid *data);
+extern GLboolean jwzgles_gluCheckExtension (const GLubyte *ext_name,
+                                            const GLubyte *ext_string);
+extern void jwzgles_glGetFloatv (GLenum pname, GLfloat *params);
+extern void jwzgles_glGetPointerv (GLenum pname, GLvoid **params);
+extern void jwzgles_glGetDoublev (GLenum pname, GLdouble *params);
+extern void jwzgles_glGetIntegerv (GLenum pname, GLint *params);
+extern void jwzgles_glGetBooleanv (GLenum pname, GLboolean *params);
+extern void jwzgles_glVertexPointer (GLuint, GLuint, GLuint, const void *);
+extern void jwzgles_glNormalPointer (GLenum, GLuint, const void *);
+extern void jwzgles_glColorPointer (GLuint, GLuint, GLuint, const void *);
+extern void jwzgles_glTexCoordPointer (GLuint, GLuint, GLuint, const void *);
+extern void jwzgles_glBindBuffer (GLuint, GLuint);
+extern void jwzgles_glBufferData (GLenum, GLsizeiptr, const void *, GLenum);
+extern const char *jwzgles_gluErrorString (GLenum error);
+
+#endif /* __JWZGLES_I_H__ */