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

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

Style ImplOnly
ImplPackage com.jogamp.opengl.impl.gl2es12
ImplJavaClass GL2ES12Impl
Implements GL2ES12Impl GLBase
Implements GL2ES12Impl GL
Implements GL2ES12Impl GL2ES1
Implements GL2ES12Impl GL2ES2

Include gl-common.cfg
Include gl-common-extensions.cfg
Include gl-desktop.cfg
Include gl2_es2-common.cfg

# 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 APIENTRY
LocalProcAddressCallingConvention __ALL__ APIENTRY

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

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

# There seem to be some errors in the glue code generation where we are not ignoring
# enough routines from desktop GL in GL2ES12Impl. For now manually ignore those which
# we know shouldn't be in there
Ignore glGetTexImage
Ignore glPixelStoref

# Add PixelStorei StateTracker
#
# Add input validation to glPixelStorei to make sure that, even if we
# are running on top of desktop OpenGL, parameters not exposed in
# OpenGL ES can not be changed
CustomJavaCode GL2ES12Impl 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 GL2ES12Impl public void glFrustumf(float left, float right, float bottom, float top, float zNear, float zFar) {
CustomJavaCode GL2ES12Impl   glFrustum((double)left, (double)right, (double)bottom, (double)top, (double)zNear, (double)zFar); }

CustomJavaCode GL2ES12Impl public void glOrthof(float left, float right, float bottom, float top, float zNear, float zFar) {
CustomJavaCode GL2ES12Impl   glOrtho((double)left, (double)right, (double)bottom, (double)top, (double)zNear, (double)zFar); }

Include gl-headers.cfg
Include ../intptr.cfg

IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-common.java
IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-gl2es12.java
IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-embedded.java
IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-gl2_es2.java
IncludeAs CustomCCode gl-impl-CustomCCode-gl2es12.c

Import javax.media.opengl.GLES1
Import javax.media.opengl.GLES2
Import com.jogamp.common.nio.Buffers;
Import java.io.PrintStream