# This .cfg file is used to generate the interface to the CGL routines
# used internally by the MacOSXGLContext implementation.
JavaOutputDir gensrc/classes
NativeOutputDir gensrc/native/jogl/MacOSX

Package jogamp.opengl.macosx.cgl
JavaClass CGL
Style AllStatic
Include gl-common.cfg
Include gl-common-extensions.cfg
Include gl-desktop.cfg

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

GLHeader GL/cglext.h

Opaque long void *

# Opaque directives for low-level CGL binding (for Java2D/JOGL bridge)
Opaque long CGLContextObj
Opaque long CGLShareGroupObj
Opaque long CGLPBufferObj
Opaque long CGLPixelFormatObj

Opaque long NSOpenGLPixelFormat *
Opaque long NSOpenGLContext *
Opaque long NSView *
Opaque long NSOpenGLView *
Opaque long NSOpenGLPixelBuffer *
Opaque long NSOpenGLLayer *

CustomCCode #include <machine/types.h>
CustomCCode #include "macosx-window-system.h"

AccessControl createNSOpenGLLayerImpl PRIVATE
AccessControl setNSOpenGLLayerEnabledImpl PRIVATE
AccessControl releaseNSOpenGLLayerImpl PRIVATE
RenameJavaMethod createNSOpenGLLayer createNSOpenGLLayerImpl
RenameJavaMethod setNSOpenGLLayerEnabled setNSOpenGLLayerEnabledImpl
RenameJavaMethod releaseNSOpenGLLayer releaseNSOpenGLLayerImpl

IncludeAs CustomJavaCode CGL cgl-macosx-CustomJavaCode.java

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

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

Import com.jogamp.common.util.Function
Import jogamp.nativewindow.macosx.OSXUtil