# This .cfg file is used to generate the GL interface and implementing class.
JavaOutputDir gensrc/classes
NativeOutputDir gensrc/native/jogl/es1

ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL.java
ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2ES1.java
ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java
ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLMatrixFunc.java
ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLPointerFunc.java
ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLLightingFunc.java

# There are a few routines we don't handle yet
Ignore glGetBufferPointervOES
Package javax.media.opengl
Style InterfaceAndImpl
JavaClass GLES1
Extends GLES1 GLBase
Extends GLES1 GL
Extends GLES1 GL2ES1
ImplPackage com.jogamp.opengl.impl.es1
ImplJavaClass GLES1Impl
Implements GLES1Impl GLBase
Implements GLES1Impl GL
Implements GLES1Impl GL2ES1
HierarchicalNativeOutput false
Include gl-common.cfg
Include gl-common-extensions.cfg

EmitProcAddressTable true
ProcAddressTableClassName GLES1ProcAddressTable
GetProcAddressTableExpr ((GLES1ProcAddressTable)_context.getGLProcAddressTable())

# Inform the glue code generator of the association between #defines
# and functions and the extensions in which they are defined
GLHeader GLES/gl.h
GLHeader GLES/glext.h
GLHeader GL/gl.h
GLHeader GL/glext.h

# Force all of the methods to be emitted using dynamic linking so we
# don't need to link against any emulation library on the desktop or
# depend on the presence of an import library for a particular device
ForceProcAddressGen __ALL__

# Also force the calling conventions of the locally generated function
# pointer typedefs for these routines to GL_APIENTRY
LocalProcAddressCallingConvention __ALL__ GL_APIENTRY

# Pick up on-line OpenGL javadoc thanks to user cylab on javagaming.org forums
TagNativeBinding true

# Ignore certain extensions that will be picked up by the dynamic
# lookup mechanism anyway if they are present
IgnoreExtension GL_OES_fixed_point
IgnoreExtension GL_OES_single_precision

# Add PixelStorei StateTracker
#
# Add input validation to glPixelStorei, just to be sure.
CustomJavaCode GLES1Impl private static final int params_offset = 0; // just a helper for JavaPrologue ..

JavaPrologue glPixelStorei if (pname != GL_PACK_ALIGNMENT && pname != GL_UNPACK_ALIGNMENT) {
JavaPrologue glPixelStorei     throw new GLException("Unsupported pixel store parameter name 0x" + Integer.toHexString(pname));
JavaPrologue glPixelStorei }
JavaPrologue glPixelStorei glStateTracker.setInt(pname, param);

JavaPrologue glGetIntegerv if ( glStateTracker.getInt(pname, params, params_offset) ) { return; }

CustomJavaCode GLES1Impl  public void glOrtho(double left, double right, double bottom, double top, double near_val, double far_val) {
CustomJavaCode GLES1Impl    glOrtho((float) left, (float) right, (float) bottom, (float) top, (float) near_val, (float) far_val); }
                
CustomJavaCode GLES1Impl  public void glFrustum(double left, double right, double bottom, double top, double zNear, double zFar) {
CustomJavaCode GLES1Impl    glFrustumf((float) left, (float) right, (float) bottom, (float) top, (float) zNear, (float) zFar); }
                
CustomJavaCode GLES1Impl  public void glClearDepth(double depth) {
CustomJavaCode GLES1Impl   glClearDepthf((float)depth); }

CustomJavaCode GLES1Impl  public void glDepthRange(double zNear, double zFar) {
CustomJavaCode GLES1Impl   glDepthRangef((float)zNear, (float)zFar); }

CustomCCode /* Define GL_GLEXT_PROTOTYPES so that the OpenGL extension prototypes in
CustomCCode    "glext.h" are parsed. */
CustomCCode #define GL_GLEXT_PROTOTYPES

CustomCCode /* Include the OpenGL headers */
CustomCCode /* #define GL_APICALL __declspec(dllimport) */
CustomCCode #include <GLES/gl.h>
CustomCCode #include <GLES/glext.h>
CustomCCode #include <stdlib.h>
Include ../intptr.cfg

IncludeAs CustomJavaCode GLES1Impl gl-impl-CustomJavaCode-common.java
IncludeAs CustomJavaCode GLES1Impl gl-impl-CustomJavaCode-gles1.java
IncludeAs CustomJavaCode GLES1Impl gl-impl-CustomJavaCode-embedded.java
IncludeAs CustomCCode gl-impl-CustomCCode-gles1.c

Import javax.media.opengl.GLES1
Import javax.media.opengl.GLES2
Import javax.media.opengl.GL2
Import com.jogamp.common.nio.Buffers;