# This .cfg file provides common options used among all GLU glue code
# generated for Jogl on all platforms.
Package net.java.games.jogl
ImplPackage net.java.games.jogl.impl
JavaClass GLU
ImplJavaClass GLUImpl
JavaOutputDir ../build/gensrc/classes
NativeOutputDir ../build/gensrc/native/jogl
HierarchicalNativeOutput false

#
# Imports needed by all glue code
#
Import java.nio.*
Import net.java.games.jogl.*
Import net.java.games.jogl.impl.*

# Raise GLException instead of RuntimeException in glue code
RuntimeExceptionType GLException

#
# Opaques and other directives for platform-independent routines
#

Opaque boolean GLboolean
Opaque boolean BOOL

#
# Some functions that return native byte pointers or accept them as
# arguments should have them auto-converted to Java Strings
#
ReturnsString gluGetString
ReturnsString gluErrorString
ArgumentIsString gluCheckExtension 0 1

#
# Some routines should only use the Java New IO package
#
#NIOOnly gluScaleImage
#NIOOnly gluBuild1DMipmaps
#NIOOnly gluBuild2DMipmaps
#NIOOnly gluBuild3DMipmaps
#NIOOnly gluBuild1DMipmapLevels
#NIOOnly gluBuild2DMipmapLevels
#NIOOnly gluBuild3DMipmapLevels

#
# Don't output #defines of GLU version identifier strings as constants, 
# because we don't need them java-side. 
#
Ignore GLU_VERSION_.+

#
# Ignore the non-GLU functions 
#
Ignore gl[^u].+

#
# Ignore the non-GLU constants
#
Ignore GL[^U]?_.+

#
# Ignore the GLU extension constants, since we don't need them java-side
#
Ignore GLU_EXT_.+

# Javadoc for the GLU class
ClassJavadoc GLU /**
ClassJavadoc GLU  * Provides access to the OpenGL utility library routines.
ClassJavadoc GLU  * See {@link GL} for more information.
ClassJavadoc GLU  */

# Javadoc for the GLUnurbs class
ClassJavadoc GLUnurbs /**
ClassJavadoc GLUnurbs  * Wrapper for a GLU NURBS object.
ClassJavadoc GLUnurbs  */

# Javadoc for the GLUquadric class
ClassJavadoc GLUquadric /**
ClassJavadoc GLUquadric  * Wrapper for a GLU quadric object.
ClassJavadoc GLUquadric  */

# Javadoc for the GLUtesselator class
ClassJavadoc GLUtesselator /**
ClassJavadoc GLUtesselator  * Wrapper for a GLU tesselator object.
ClassJavadoc GLUtesselator  */

#
# ------------------------
#         NURBS
# ------------------------
#

#
# !!!!!!!!!!!!! FIXME:
# Ignore these Nurbs things until we get other stuff working
#
Ignore gluBeginCurve
Ignore gluBeginSurface
Ignore gluBeginTrim
Ignore gluEndCurve
Ignore gluEndSurface
Ignore gluEndTrim
Ignore gluLoadSamplingMatrices
Ignore gluPwlCurve
Ignore gluNewNurbsRenderer
Ignore gluDeleteNurbsRenderer
Ignore gluNurbsProperty
Ignore gluGetNurbsProperty
Ignore gluNurbsCallback.*
Ignore gluNurbsCurve
Ignore gluNurbsSurface
Ignore GLU_NURB.+
Ignore GLU_.*PARAMETRIC.+

#
# ------------------------
#     Tesselators
# ------------------------
#

#
# Ignore these methods; we must manually implement their C and Java code
#
Ignore gluBeginPolygon
Ignore gluTessCallback
Ignore gluDeleteTess
Ignore gluEndPolygon
Ignore gluGetTessProperty
Ignore gluNewTess
Ignore gluNextContour
Ignore gluTessBeginContour
Ignore gluTessBeginPolygon
Ignore gluTessEndContour
Ignore gluTessEndPolygon
Ignore gluTessNormal
Ignore gluTessProperty
Ignore gluTessVertex
Ignore gluTessCallback.*
Ignore GLUtesselator

#
# ------------------------
#     Quadrics
# ------------------------
#
#
# !!!!!!!!!!!!! FIXME:
# Ignore these Quadric things until we get other stuff working
#
Ignore gluQuadricCallback.*

# Manually implement the GLU quadric functionality to mostly conform
# to the C APIs
Ignore GLUquadric
ManuallyImplement gluCylinder
ManuallyImplement gluDeleteQuadric
ManuallyImplement gluDisk
ManuallyImplement gluNewQuadric
ManuallyImplement gluPartialDisk
ManuallyImplement gluQuadricDrawStyle
ManuallyImplement gluQuadricNormals
ManuallyImplement gluQuadricOrientation
ManuallyImplement gluQuadricTexture
ManuallyImplement gluSphere

# Ignore a few of the projection/unprojection APIs altogether because
# their signatures aren't specified correctly in the header file
Ignore gluProject
Ignore gluUnProject
Ignore gluUnProject4

# Manually implement the rest of the projection / unprojection APIs
ManuallyImplement gluOrtho2D
ManuallyImplement gluPerspective
ManuallyImplement gluLookAt
ManuallyImplement gluPickMatrix

#
# ------------------------
#     Mipmaps
# ------------------------
#
# Ignore the mipmap routines and use GKW's Java port instead.
# Currently the Java and native code have fallback paths to the
# C code, but this will be removed in a future release.

Ignore gluBuild1DMipmapLevels
Ignore gluBuild1DMipmaps
Ignore gluBuild2DMipmapLevels
Ignore gluBuild2DMipmaps
Ignore gluBuild3DMipmapLevels
Ignore gluBuild3DMipmaps
Ignore gluScaleImage

# Must force proc address generation for these routines, though, since
# we still fall back on the C implementations

ForceProcAddressGen gluBuild1DMipmapLevels
ForceProcAddressGen gluBuild1DMipmaps
ForceProcAddressGen gluBuild2DMipmapLevels
ForceProcAddressGen gluBuild2DMipmaps
ForceProcAddressGen gluBuild3DMipmapLevels
ForceProcAddressGen gluBuild3DMipmaps
ForceProcAddressGen gluScaleImage