/* File generated from glfw.idl */

#ifndef _CAMLIDL_GLFW_H
#define _CAMLIDL_GLFW_H

#ifdef __cplusplus
#define _CAMLIDL_EXTERN_C extern "C"
#else
#define _CAMLIDL_EXTERN_C extern
#endif

#ifdef _WIN32
#pragma pack(push,8) /* necessary for COM interfaces */
#endif

struct GLFWvidmode {
  int Width;
  int Height;
  int RedBits;
  int BlueBits;
  int GreenBits;
};

struct GLFWimage {
  int Width;
  int Height;
  int Format;
  int BytesPerPixel;
  unsigned char *Data;
};

_CAMLIDL_EXTERN_C int glfwInit(void);

_CAMLIDL_EXTERN_C void glfwTerminate(void);

_CAMLIDL_EXTERN_C void glfwGetVersion(/*out*/ int *major, /*out*/ int *minor, /*out*/ int *rev);

_CAMLIDL_EXTERN_C int glfwOpenWindow(/*in*/ int width, /*in*/ int height, /*in*/ int redbits, /*in*/ int greenbits, /*in*/ int bluebits, /*in*/ int alphabits, /*in*/ int depthbits, /*in*/ int stencilbits, /*in*/ int mode);

_CAMLIDL_EXTERN_C void glfwOpenWindowHint(/*in*/ int target, /*in*/ int hint);

_CAMLIDL_EXTERN_C void glfwCloseWindow(void);

_CAMLIDL_EXTERN_C void glfwSetWindowTitle(/*in*/ char const *title);

_CAMLIDL_EXTERN_C void glfwGetWindowSize(/*out*/ int *width, /*out*/ int *height);

_CAMLIDL_EXTERN_C void glfwSetWindowSize(/*in*/ int width, /*in*/ int height);

_CAMLIDL_EXTERN_C void glfwSetWindowPos(/*in*/ int x, /*in*/ int y);

_CAMLIDL_EXTERN_C void glfwIconifyWindow(void);

_CAMLIDL_EXTERN_C void glfwRestoreWindow(void);

_CAMLIDL_EXTERN_C void glfwSwapBuffers(void);

_CAMLIDL_EXTERN_C void glfwSwapInterval(/*in*/ int interval);

_CAMLIDL_EXTERN_C int glfwGetWindowParam(/*in*/ int param);

_CAMLIDL_EXTERN_C int glfwGetVideoModes(/*out*/ struct GLFWvidmode *list, /*in*/ int len);

_CAMLIDL_EXTERN_C void glfwGetDesktopMode(/*out*/ struct GLFWvidmode *mode);

_CAMLIDL_EXTERN_C void glfwPollEvents(void);

_CAMLIDL_EXTERN_C int glfwGetKey(/*in*/ int key);

_CAMLIDL_EXTERN_C int glfwGetMouseButton(/*in*/ int button);

_CAMLIDL_EXTERN_C void glfwGetMousePos(/*out*/ int *xpos, /*out*/ int *ypos);

_CAMLIDL_EXTERN_C void glfwSetMousePos(/*in*/ int xpos, /*in*/ int ypos);

_CAMLIDL_EXTERN_C int glfwGetMouseWheel(void);

_CAMLIDL_EXTERN_C void glfwSetMouseWheel(/*in*/ int pos);

/* */
_CAMLIDL_EXTERN_C void  glfwSetKeyCallback( void* cbfun );
_CAMLIDL_EXTERN_C void  glfwSetCharCallback( void* cbfun );
_CAMLIDL_EXTERN_C void  glfwSetMouseButtonCallback( void* cbfun );
_CAMLIDL_EXTERN_C void  glfwSetMousePosCallback( void* cbfun );
_CAMLIDL_EXTERN_C void  glfwSetMouseWheelCallback( void* cbfun );
_CAMLIDL_EXTERN_C void  glfwSetWindowSizeCallback( void* cbfun );
/* */

_CAMLIDL_EXTERN_C int glfwGetJoystickParam(/*in*/ int joy, /*in*/ int param);

_CAMLIDL_EXTERN_C int glfwGetJoystickPos(/*in*/ int joy, /*out*/ float *pos, /*in*/ int numaxes);

_CAMLIDL_EXTERN_C int glfwGetJoystickButtons(/*in*/ int joy, /*out*/ unsigned char *buttons, /*in*/ int numbuttons);

_CAMLIDL_EXTERN_C double glfwGetTime(void);

_CAMLIDL_EXTERN_C void glfwSetTime(/*in*/ double time);

_CAMLIDL_EXTERN_C void glfwSleep(/*in*/ double time);

_CAMLIDL_EXTERN_C int glfwExtensionSupported(/*in*/ char const *extension);

_CAMLIDL_EXTERN_C void glfwGetGLVersion(/*out*/ int *major, /*out*/ int *minor, /*out*/ int *rev);

_CAMLIDL_EXTERN_C int glfwGetNumberOfProcessors(void);

_CAMLIDL_EXTERN_C void glfwEnable(/*in*/ int token);

_CAMLIDL_EXTERN_C void glfwDisable(/*in*/ int token);

_CAMLIDL_EXTERN_C int glfwReadImage(/*in*/ char const *name, /*out*/ struct GLFWimage *img, /*in*/ int flags);

_CAMLIDL_EXTERN_C void glfwFreeImage(/*in*/ struct GLFWimage *img);

_CAMLIDL_EXTERN_C int glfwLoadTexture2D(/*in*/ char const *name, /*in*/ int flags);

#ifdef _WIN32
#pragma pack(pop)
#endif


#endif /* !_CAMLIDL_GLFW_H */
