# This .cfg file is used to generate the class which implements the GL
# interface on a particular platform.
Package net.java.games.jogl
Style ImplOnly
JavaClass GL
ImplPackage net.java.games.jogl.impl.x11
ImplJavaClass X11GLImpl
Include gl-common-x11.cfg
Include gl-glx-common.cfg

EmitProcAddressTable true
ProcAddressTableClassName GLProcAddressTable
ContextVariableName _context

CustomCCode #include <inttypes.h>
CustomCCode #include <stdlib.h>
CustomCCode #include <X11/Xlib.h>

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

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

CustomCCode /* Include the OpenGL headers */
CustomCCode #include <GL/gl.h>
CustomCCode #include <GL/glx.h>
CustomCCode #include <GL/glxext.h>

CustomCCode /* Provide Windows typedefs */
CustomCCode typedef void* LPVOID;
CustomCCode typedef unsigned int* PUINT;

CustomJavaCode X11GLImpl  public X11GLImpl(X11GLContext context) { 
CustomJavaCode X11GLImpl    this._context = context; 
CustomJavaCode X11GLImpl  }

CustomJavaCode X11GLImpl  public boolean isFunctionAvailable(String glFunctionName)
CustomJavaCode X11GLImpl  {
CustomJavaCode X11GLImpl    return _context.isFunctionAvailable(glFunctionName);
CustomJavaCode X11GLImpl  }

CustomJavaCode X11GLImpl  public boolean isExtensionAvailable(String glExtensionName)
CustomJavaCode X11GLImpl  {
CustomJavaCode X11GLImpl    return _context.isExtensionAvailable(glExtensionName);
CustomJavaCode X11GLImpl  }

CustomJavaCode X11GLImpl  private X11GLContext _context;

CustomJavaCode X11GLImpl   /**
CustomJavaCode X11GLImpl    * Provides platform-independent access to the wglAllocateMemoryNV /
CustomJavaCode X11GLImpl    * glXAllocateMemoryNV extension.
CustomJavaCode X11GLImpl    */
CustomJavaCode X11GLImpl   public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3) {
CustomJavaCode X11GLImpl     return glXAllocateMemoryNV(arg0, arg1, arg2, arg3);
CustomJavaCode X11GLImpl   }

CustomJavaCode X11GLImpl   public void setSwapInterval(int interval) {
CustomJavaCode X11GLImpl     if (isExtensionAvailable("GLX_SGI_swap_control")) {
CustomJavaCode X11GLImpl       glXSwapIntervalSGI(interval);
CustomJavaCode X11GLImpl     }
CustomJavaCode X11GLImpl   }

IncludeAs CustomJavaCode X11GLImpl gl-impl-CustomJavaCode.java
IncludeAs CustomCCode gl-impl-CustomCCode.c