/* C routines encapsulating small amounts of Objective C code to allow
   nsContext creation and manipulation to occur from Java

   It's unfortunate this couldn't be placed in the macosx
   stub_includes directory, but due to the presence of the jni.h stub
   headers in that directory, if that is in the include path during
   compilation then the build fails.
*/

typedef int Bool;

// CGL ..
void CGLQueryPixelFormat(void* pixelFormat, int* iattrs, int niattrs, int* ivalues);

// NS ..
void* createPixelFormat(int* iattrs, int niattrs, int* ivalues);
void queryPixelFormat(void* pixelFormat, int* iattrs, int niattrs, int* ivalues);
void deletePixelFormat(void* pixelFormat);

// NS ..
void *getCurrentContext(void);
void *getNSView(void* nsContext);

void* createContext(void* shareContext,
                    void* nsView,
                    void* pixelFormat,
                    int* viewNotReady);
void *getCGLContext(void* nsContext);
Bool  makeCurrentContext(void* nsContext);
Bool  clearCurrentContext(void *nsContext);
Bool  deleteContext(void* nsContext);
Bool  flushBuffer(void* nsContext);
void  setContextOpacity(void* nsContext, int opacity);
void  updateContext(void* nsContext);
void  copyContext(void* destContext, void* srcContext, int mask);

void* updateContextRegister(void* nsContext, void* nsView);
void  updateContextUnregister(void* updater);

void* createPBuffer(int renderTarget, int internalFormat, int width, int height);
Bool destroyPBuffer(void* pBuffer);
void setContextPBuffer(void* nsContext, void* pBuffer);
void setContextTextureImageToPBuffer(void* nsContext, void* pBuffer, int colorBuffer);

void* getProcAddress(const char *procName);

void setSwapInterval(void* nsContext, int interval);

/* Gamma-related functionality */
Bool setGammaRamp(int tableSize, float* redRamp, float* greenRamp, float* blueRamp);
void resetGammaRamp();

/****************************************************************************************/
/* Java2D/JOGL bridge support; need to be able to create pbuffers and
   contexts using the CGL APIs to be able to share textures, etc. with
   contexts created by Java2D/JOGL bridge, which are CGLContextObjs */

/* Pick up copies of CGL signatures from Mac OS X stub_includes/window-system-build directory */
#include <OpenGL/OpenGL.h>