# This .cfg file is used to generate the interface to the wgl routines
# used internally by the WindowsGLContext implementation.
JavaOutputDir gensrc/classes
NativeOutputDir gensrc/native/jogl/Windows

ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/jogamp/nativewindow/windows/GDI.java

Package jogamp.opengl.windows.wgl
JavaClass WGL
Style AllStatic
Include gl-common.cfg
Include gl-common-extensions.cfg
Include gl-desktop.cfg

GLHeader wingdi.h
GLHeader GL/wglext.h

ForceProcAddressGen __ALL__
LocalProcAddressCallingConvention __ALL__ APIENTRY

# Only NIO direct function, no arrays ..
NIOOnly __ALL__
NIODirectOnly __ALL__

AllowNonGLExtensions true
EmitProcAddressTable true
ProcAddressTableClassName WGLProcAddressTable
GetProcAddressTableExpr wglProcAddressTable

Ignore PIXELFORMATDESCRIPTOR

Import jogamp.nativewindow.windows.PIXELFORMATDESCRIPTOR
Import com.jogamp.gluegen.runtime.opengl.GLProcAddressResolver

CustomJavaCode WGL private static WGLProcAddressTable wglProcAddressTable = new WGLProcAddressTable(new GLProcAddressResolver());
CustomJavaCode WGL public  static WGLProcAddressTable getWGLProcAddressTable() { return wglProcAddressTable; }

# Implement the first argument to wglGetProcAddress as String instead
# of byte[]
ArgumentIsString wglGetProcAddress 0

CustomCCode #define WIN32_LEAN_AND_MEAN
CustomCCode #include <windows.h>
CustomCCode #undef WIN32_LEAN_AND_MEAN

CustomCCode #include <gluegen_stdint.h>
CustomCCode #include <wingdi.h>
CustomCCode #include <stddef.h>

DropUniqVendorExtensions AMD
# We need GL_APPLE_float_pixels for our pbuffer implementation
# DropUniqVendorExtensions APPLE
DropUniqVendorExtensions ATI
DropUniqVendorExtensions HP
DropUniqVendorExtensions IBM
DropUniqVendorExtensions MESA
DropUniqVendorExtensions MESAX
DropUniqVendorExtensions NV
DropUniqVendorExtensions SGI
DropUniqVendorExtensions SGIS
DropUniqVendorExtensions SGIX
DropUniqVendorExtensions SUN
DropUniqVendorExtensions WIN

CustomJavaCode WGL  protected static long wglGetProcAddress(long wglGetProcAddressHandle, java.lang.String procname)
CustomJavaCode WGL  {
CustomJavaCode WGL    if (wglGetProcAddressHandle == 0) {
CustomJavaCode WGL      throw new GLException("Passed null pointer for method \"wglGetProcAddress\"");
CustomJavaCode WGL    }
CustomJavaCode WGL    return dispatch_wglGetProcAddress0(procname, wglGetProcAddressHandle);
CustomJavaCode WGL  }