# 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.macosx
ImplJavaClass MacOSXGLImpl
Include gl-common-macosx.cfg
Include gl-glx-common.cfg

EmitProcAddressTable true
ProcAddressTableClassName GLProcAddressTable
ContextVariableName _context

CustomCCode #include <inttypes.h>
CustomCCode #include <stdlib.h>

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 #include <GL/gl.h>

CustomCCode #include </usr/include/machine/types.h>

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

CustomJavaCode MacOSXGLImpl  public MacOSXGLImpl(MacOSXGLContext context)
CustomJavaCode MacOSXGLImpl  {
CustomJavaCode MacOSXGLImpl    this._context = context; 
CustomJavaCode MacOSXGLImpl  }

CustomJavaCode MacOSXGLImpl  /** This constructor should be used manually in order to
CustomJavaCode MacOSXGLImpl      create a GL object that can be used with the Cocoa NSOpenGLView. */
CustomJavaCode MacOSXGLImpl  public MacOSXGLImpl()
CustomJavaCode MacOSXGLImpl  {
CustomJavaCode MacOSXGLImpl    this._context = new MacOSXDummyGLContext(this);
CustomJavaCode MacOSXGLImpl  }

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

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

CustomJavaCode MacOSXGLImpl  /** Forces a recomputation of which extensions are available.
CustomJavaCode MacOSXGLImpl      Should only be called if this MacOSXGLImpl is being used
CustomJavaCode MacOSXGLImpl      in conjunction with an NSOpenGLView instead of a GLCanvas. */
CustomJavaCode MacOSXGLImpl  public void resetGLFunctionAvailability()
CustomJavaCode MacOSXGLImpl  {
CustomJavaCode MacOSXGLImpl    if (!(_context instanceof MacOSXDummyGLContext)) {
CustomJavaCode MacOSXGLImpl      throw new GLException("Should only be called if being used with NSOpenGLView");
CustomJavaCode MacOSXGLImpl    }
CustomJavaCode MacOSXGLImpl    ((MacOSXDummyGLContext) _context).resetGLFunctionAvailability();
CustomJavaCode MacOSXGLImpl  }

CustomJavaCode MacOSXGLImpl  private MacOSXGLContext _context;

CustomJavaCode MacOSXGLImpl  /**
CustomJavaCode MacOSXGLImpl   * Provides platform-independent access to the wglAllocateMemoryNV /
CustomJavaCode MacOSXGLImpl   * glXAllocateMemoryNV extension.
CustomJavaCode MacOSXGLImpl   */
CustomJavaCode MacOSXGLImpl  public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3)
CustomJavaCode MacOSXGLImpl  {
CustomJavaCode MacOSXGLImpl    // FIXME
CustomJavaCode MacOSXGLImpl    throw new GLException("Not yet implemented");
CustomJavaCode MacOSXGLImpl  }

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