module Graphics.UI.GLUT.QueryUtils (
Getter, simpleGet, layerGet, deviceGet, glutSetOption
) where
import Foreign.C.Types ( CInt )
import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum )
import Graphics.UI.GLUT.Extensions
#include "HsGLUTExt.h"
type PrimGetter = GLenum -> IO CInt
type Getter a = (CInt -> a) -> GLenum -> IO a
makeGetter :: PrimGetter -> Getter a
makeGetter g f = fmap f . g
simpleGet, layerGet, deviceGet :: Getter a
simpleGet = makeGetter glutGet
layerGet = makeGetter glutLayerGet
deviceGet = makeGetter glutDeviceGet
foreign import CALLCONV unsafe "glutGet" glutGet :: PrimGetter
foreign import CALLCONV unsafe "glutLayerGet" glutLayerGet :: PrimGetter
foreign import CALLCONV unsafe "glutDeviceGet" glutDeviceGet :: PrimGetter
EXTENSION_ENTRY(unsafe,"freeglut",glutSetOption,GLenum -> CInt -> IO ())