-- #hide -------------------------------------------------------------------------------- -- | -- Module : Graphics.UI.GLUT.QueryUtils -- Copyright : (c) Sven Panne 2002-2005 -- License : BSD-style (see the file libraries/GLUT/LICENSE) -- -- Maintainer : sven.panne@aedion.de -- Stability : stable -- Portability : portable -- -- This is a purely internal module with utilities to query GLUT state. -- -------------------------------------------------------------------------------- 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 -- Not really a query function, but it's quite handy to have it here EXTENSION_ENTRY(unsafe,"freeglut",glutSetOption,GLenum -> CInt -> IO ())