{-# LANGUAGE ForeignFunctionInterface, CPP #-}
-- #hide
-----------------------------------------------------------------------------
-- |
-- Module      :  Graphics.UI.GLUT.Raw.Functions
-- Copyright   :  (c) Sven Panne 2009
-- License     :  BSD-style (see the file LICENSE)
--
-- Maintainer  :  sven.panne@aedion.de
-- Stability   :  stable
-- Portability :  portable
--
-- All raw functions from GLUT and freeglut.
--
-----------------------------------------------------------------------------

module Graphics.UI.GLUT.Raw.Functions (
   glutGetProcAddress,
   glutGetColor,
   glutStrokeHeight,
   glutBitmapHeight,
   glutBitmapLength,
   glutBitmapWidth,
   glutCreateMenu,
   glutCreateSubWindow,
   glutCreateWindow,
   glutDeviceGet,
   glutEnterGameMode,
   glutExtensionSupported,
   glutGameModeGet,
   glutGet,
   glutGetMenu,
   glutGetModifiers,
   glutGetWindow,
   glutLayerGet,
   glutStrokeLength,
   glutStrokeWidth,
   glutVideoResizeGet,
   glutGetModeValues,
   glutAddMenuEntry,
   glutAddSubMenu,
   glutAttachMenu,
   glutBitmapCharacter,
   glutBitmapString,
   glutButtonBoxFunc,
   glutChangeToMenuEntry,
   glutChangeToSubMenu,
   glutCloseFunc,
   glutCopyColormap,
   glutDestroyMenu,
   glutDestroyWindow,
   glutDetachMenu,
   glutDialsFunc,
   glutDisplayFunc,
   glutEntryFunc,
   glutEstablishOverlay,
   glutExit,
   glutForceJoystickFunc,
   glutFullScreen,
   glutFullScreenToggle,
   glutGameModeString,
   glutHideOverlay,
   glutHideWindow,
   glutIconifyWindow,
   glutIdleFunc,
   glutIgnoreKeyRepeat,
   glutInit,
   glutInitContextFlags,
   glutInitContextVersion,
   glutInitContextProfile,
   glutInitDisplayMode,
   glutInitDisplayString,
   glutInitWindowPosition,
   glutInitWindowSize,
   glutJoystickFunc,
   glutKeyboardFunc,
   glutKeyboardUpFunc,
   glutLeaveGameMode,
   glutLeaveMainLoop,
   glutMainLoop,
   glutMainLoopEvent,
   glutMenuDestroyFunc,
   glutMenuStateFunc,
   glutMenuStatusFunc,
   glutMotionFunc,
   glutMouseFunc,
   glutMouseWheelFunc,
   glutOverlayDisplayFunc,
   glutPassiveMotionFunc,
   glutPopWindow,
   glutPositionWindow,
   glutPostOverlayRedisplay,
   glutPostRedisplay,
   glutPostWindowOverlayRedisplay,
   glutPostWindowRedisplay,
   glutPushWindow,
   glutRemoveMenuItem,
   glutRemoveOverlay,
   glutReportErrors,
   glutReshapeFunc,
   glutReshapeWindow,
   glutSetColor,
   glutSetCursor,
   glutSetIconTitle,
   glutSetKeyRepeat,
   glutSetMenu,
   glutSetMenuData,
   glutSetOption,
   glutSetWindow,
   glutSetWindowData,
   glutSetWindowTitle,
   glutSetupVideoResizing,
   glutShowOverlay,
   glutShowWindow,
   glutSolidCone,
   glutSolidCube,
   glutSolidCylinder,
   glutSolidDodecahedron,
   glutSolidIcosahedron,
   glutSolidOctahedron,
   glutSolidRhombicDodecahedron,
   glutSolidSierpinskiSponge,
   glutSolidSphere,
   glutSolidTeapot,
   glutSolidTetrahedron,
   glutSolidTorus,
   glutSpaceballButtonFunc,
   glutSpaceballMotionFunc,
   glutSpaceballRotateFunc,
   glutSpecialFunc,
   glutSpecialUpFunc,
   glutStopVideoResizing,
   glutStrokeCharacter,
   glutStrokeString,
   glutSwapBuffers,
   glutTabletButtonFunc,
   glutTabletMotionFunc,
   glutTimerFunc,
   glutUseLayer,
   glutVideoPan,
   glutVideoResize,
   glutVisibilityFunc,
   glutWMCloseFunc,
   glutWarpPointer,
   glutWindowStatusFunc,
   glutWireCone,
   glutWireCube,
   glutWireCylinder,
   glutWireDodecahedron,
   glutWireIcosahedron,
   glutWireOctahedron,
   glutWireRhombicDodecahedron,
   glutWireSierpinskiSponge,
   glutWireSphere,
   glutWireTeapot,
   glutWireTetrahedron,
   glutWireTorus,
   glutGetMenuData,
   glutGetWindowData
) where

import Foreign.C.Types
import Foreign.Ptr
import Graphics.Rendering.OpenGL.Raw.Core31.Types
import Graphics.UI.GLUT.Raw.APIEntry
import Graphics.UI.GLUT.Raw.Callbacks

#include "HsGLUTExt.h"

API_ENTRY(glutGetProcAddress,Ptr CChar -> IO (FunPtr a))
API_ENTRY(glutGetColor,CInt -> CInt -> IO GLfloat)
API_ENTRY(glutStrokeHeight,Ptr a -> IO GLfloat)
API_ENTRY(glutBitmapHeight,Ptr a -> IO CInt)
API_ENTRY(glutBitmapLength,Ptr a -> Ptr CUChar -> IO CInt)
API_ENTRY(glutBitmapWidth,Ptr a -> CInt -> IO CInt)
API_ENTRY(glutCreateMenu,FunPtr MenuFunc -> IO CInt)
API_ENTRY(glutCreateSubWindow,CInt -> CInt -> CInt -> CInt -> CInt -> IO CInt)
API_ENTRY(glutCreateWindow,Ptr CChar -> IO CInt)
API_ENTRY(glutDeviceGet,GLenum -> IO CInt)
API_ENTRY(glutEnterGameMode,IO CInt)
API_ENTRY(glutExtensionSupported,Ptr CChar -> IO CInt)
API_ENTRY(glutGameModeGet,GLenum -> IO CInt)
API_ENTRY(glutGet,GLenum -> IO CInt)
API_ENTRY(glutGetMenu,IO CInt)
API_ENTRY(glutGetModifiers,IO CInt)
API_ENTRY(glutGetWindow,IO CInt)
API_ENTRY(glutLayerGet,GLenum -> IO CInt)
API_ENTRY(glutStrokeLength,Ptr a -> Ptr CUChar -> IO CInt)
API_ENTRY(glutStrokeWidth,Ptr a -> CInt -> IO CInt)
API_ENTRY(glutVideoResizeGet,GLenum -> IO CInt)
API_ENTRY(glutGetModeValues,GLenum -> Ptr CInt -> IO (Ptr CInt))
API_ENTRY(glutAddMenuEntry,Ptr CChar -> CInt -> IO ())
API_ENTRY(glutAddSubMenu,Ptr CChar -> CInt -> IO ())
API_ENTRY(glutAttachMenu,CInt -> IO ())
API_ENTRY(glutBitmapCharacter,Ptr a -> CInt -> IO ())
API_ENTRY(glutBitmapString,Ptr a -> Ptr CUChar -> IO ())
API_ENTRY(glutButtonBoxFunc,FunPtr ButtonBoxFunc -> IO ())
API_ENTRY(glutChangeToMenuEntry,CInt -> Ptr CChar -> CInt -> IO ())
API_ENTRY(glutChangeToSubMenu,CInt -> Ptr CChar -> CInt -> IO ())
API_ENTRY(glutCloseFunc,FunPtr CloseFunc -> IO ())
API_ENTRY(glutCopyColormap,CInt -> IO ())
API_ENTRY(glutDestroyMenu,CInt -> IO ())
API_ENTRY(glutDestroyWindow,CInt -> IO ())
API_ENTRY(glutDetachMenu,CInt -> IO ())
API_ENTRY(glutDialsFunc,FunPtr DialsFunc -> IO ())
API_ENTRY(glutDisplayFunc,FunPtr DisplayFunc -> IO ())
API_ENTRY(glutEntryFunc,FunPtr EntryFunc -> IO ())
API_ENTRY_SAFE(glutEstablishOverlay,IO ())
API_ENTRY(glutExit,IO ())
API_ENTRY(glutForceJoystickFunc,IO ())
API_ENTRY(glutFullScreen,IO ())
API_ENTRY(glutFullScreenToggle,IO ())
API_ENTRY(glutGameModeString,Ptr CChar -> IO ())
API_ENTRY_SAFE(glutHideOverlay,IO ())
API_ENTRY(glutHideWindow,IO ())
API_ENTRY(glutIconifyWindow,IO ())
API_ENTRY(glutIdleFunc,FunPtr IdleFunc -> IO ())
API_ENTRY(glutIgnoreKeyRepeat,CInt -> IO ())
API_ENTRY(glutInit,Ptr CInt -> Ptr (Ptr CChar) -> IO ())
API_ENTRY(glutInitContextFlags,CInt -> IO ())
API_ENTRY(glutInitContextVersion,CInt -> CInt -> IO ())
API_ENTRY(glutInitContextProfile,CInt -> IO ())
API_ENTRY(glutInitDisplayMode,CUInt -> IO ())
API_ENTRY(glutInitDisplayString,Ptr CChar -> IO ())
API_ENTRY(glutInitWindowPosition,CInt -> CInt -> IO ())
API_ENTRY(glutInitWindowSize,CInt -> CInt -> IO ())
API_ENTRY(glutJoystickFunc,FunPtr JoystickFunc -> CInt -> IO ())
API_ENTRY(glutKeyboardFunc,FunPtr KeyboardFunc -> IO ())
API_ENTRY(glutKeyboardUpFunc,FunPtr KeyboardUpFunc -> IO ())
API_ENTRY(glutLeaveGameMode,IO ())
API_ENTRY_SAFE(glutLeaveMainLoop,IO ())
API_ENTRY_SAFE(glutMainLoop,IO ())
API_ENTRY_SAFE(glutMainLoopEvent,IO ())
API_ENTRY(glutMenuDestroyFunc,FunPtr MenuDestroyFunc -> IO ())
API_ENTRY(glutMenuStateFunc,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr Menu>,FunPtr