# This .cfg file is used to generate the interface and implementing
# class for the GLX extensions.
Package com.sun.opengl.impl.x11
Style InterfaceAndImpl
JavaClass GLXExt
ImplPackage com.sun.opengl.impl.x11
ImplJavaClass GLXExtImpl
Include gl-common-x11.cfg

EmitProcAddressTable true
ProcAddressTableClassName GLXExtProcAddressTable
GetProcAddressTableExpr _context.getGLXExtProcAddressTable()

# Ignore everything that doesn't start with glX or GLX
IgnoreNot ^(glX|GLX).+

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 GLXExt      public boolean isFunctionAvailable(String glFunctionName);
CustomJavaCode GLXExt      public boolean isExtensionAvailable(String glExtensionName);

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

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

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

CustomJavaCode GLXExtImpl  private X11GLContext _context;


# These Ignores cause the core GLX routines to be ignored from the
# GLXExt interface and GLXExtImpl implementing class.
Ignore glXChooseVisual
Ignore glXCreateContext
Ignore glXDestroyContext
Ignore glXMakeCurrent
Ignore glXCopyContext
Ignore glXSwapBuffers
Ignore glXCreateGLXPixmap
Ignore glXDestroyGLXPixmap
Ignore glXQueryExtension
Ignore glXQueryVersion
Ignore glXIsDirect
Ignore glXGetConfig
Ignore glXGetCurrentContext
Ignore glXGetCurrentDrawable
Ignore glXWaitGL
Ignore glXWaitX
Ignore glXUseXFont
Ignore glXQueryExtensionsString
Ignore glXQueryServerString
Ignore glXGetClientString
Ignore glXGetCurrentDisplay
Ignore glXChooseFBConfig
Ignore glXGetFBConfigAttrib
Ignore glXGetFBConfigs
Ignore glXGetVisualFromFBConfig
Ignore glXCreateWindow
Ignore glXDestroyWindow
Ignore glXCreatePixmap
Ignore glXDestroyPixmap
Ignore glXCreatePbuffer
Ignore glXDestroyPbuffer
Ignore glXQueryDrawable
Ignore glXCreateNewContext
Ignore glXMakeContextCurrent
Ignore glXGetCurrentReadDrawable
Ignore glXQueryContext
Ignore glXSelectEvent
Ignore glXGetSelectedEvent
Ignore glXGetProcAddress

# Ignore a few extensions that bring in data types we don't want to
# expose in the public API (and that are useless anyway without
# exposing more of the implementation)
Ignore glXGetFBConfigAttribSGIX
Ignore glXChooseFBConfigSGIX
Ignore glXCreateGLXPixmapWithConfigSGIX
Ignore glXCreateContextWithConfigSGIX
Ignore glXGetVisualFromFBConfigSGIX
Ignore glXGetFBConfigFromVisualSGIX
Ignore glXCreateGLXPbufferSGIX
Ignore glXDestroyGLXPbufferSGIX
Ignore glXQueryGLXPbufferSGIX
Ignore glXSelectEventSGIX
Ignore glXGetSelectedEventSGIX
Ignore glXCreateGLXPixmapMESA

# Now we can ignore the GLXFBConfig and XVisualInfo data types
Ignore GLXFBConfig
Ignore XVisualInfo

# Ignore the SGI hyperpipe extension, which will require more GlueGen
# work to expose the pipeName fields in the various structs
Ignore glXQueryHyperpipeNetworkSGIX
Ignore glXHyperpipeConfigSGIX
Ignore glXQueryHyperpipeConfigSGIX
Ignore glXDestroyHyperpipeConfigSGIX
Ignore glXBindHyperpipeSGIX
Ignore glXQueryHyperpipeBestAttribSGIX
Ignore glXHyperpipeAttribSGIX
Ignore glXQueryHyperpipeAttribSGIX
Ignore GLXHyperpipeNetworkSGIX
Ignore GLXHyperpipeConfigSGIX
Ignore GLXPipeRect
Ignore GLXPipeRectLimits
