packages feed

hois-0.1.0.0: OIS/OISMouse.hs

{-# LANGUAGE ForeignFunctionInterface #-}
module OIS.OISMouse(
mouseState_with, 
mouseEvent_with, 
mouseState_delete, 
mouseState_new, 
mouseState_buttonDown, 
mouseState_clear, 
mouseEvent_new, 
mouseEvent_delete, 
mouseListener_delete, 
mouseListener_mouseMoved, 
mouseListener_mousePressed, 
mouseListener_mouseReleased, 
mouse_delete, 
mouse_setEventCallback, 
mouse_getEventCallback, 
mouse_getMouseState
)

where

import OIS.Types
import Control.Monad

import Foreign
import Foreign.C.String
import Foreign.C.Types

mouseState_with :: (MouseState -> IO a) -> IO a
mouseState_with  f = do
    obj <- mouseState_new 
    res <- f obj
    mouseState_delete obj
    return res

mouseEvent_with :: Object -> MouseState -> (MouseEvent -> IO a) -> IO a
mouseEvent_with p1 p2 f = do
    obj <- mouseEvent_new p1 p2
    res <- f obj
    mouseEvent_delete obj
    return res

foreign import ccall "OISMouse.h OIS_MouseState_delete" c_mouseState_delete :: MouseState -> IO ()
mouseState_delete :: MouseState -> IO ()
mouseState_delete p1 =   c_mouseState_delete p1

foreign import ccall "OISMouse.h OIS_MouseState_new" c_mouseState_new :: IO MouseState
mouseState_new :: IO MouseState
mouseState_new  =   c_mouseState_new 

foreign import ccall "OISMouse.h OIS_MouseState_buttonDown" c_mouseState_buttonDown :: MouseState -> CInt -> IO CBool
mouseState_buttonDown :: MouseState -> MouseButtonID -> IO Bool
mouseState_buttonDown p1 p2 =  liftM toBool $  c_mouseState_buttonDown p1 (mouseButtonIDToCInt p2)

foreign import ccall "OISMouse.h OIS_MouseState_clear" c_mouseState_clear :: MouseState -> IO ()
mouseState_clear :: MouseState -> IO ()
mouseState_clear p1 =   c_mouseState_clear p1

foreign import ccall "OISMouse.h OIS_MouseEvent_new" c_mouseEvent_new :: Object -> MouseState -> IO MouseEvent
mouseEvent_new :: Object -> MouseState -> IO MouseEvent
mouseEvent_new p1 p2 =   c_mouseEvent_new p1 p2

foreign import ccall "OISMouse.h OIS_MouseEvent_delete" c_mouseEvent_delete :: MouseEvent -> IO ()
mouseEvent_delete :: MouseEvent -> IO ()
mouseEvent_delete p1 =   c_mouseEvent_delete p1

foreign import ccall "OISMouse.h OIS_MouseListener_delete" c_mouseListener_delete :: MouseListener -> IO ()
mouseListener_delete :: MouseListener -> IO ()
mouseListener_delete p1 =   c_mouseListener_delete p1

foreign import ccall "OISMouse.h OIS_MouseListener_mouseMoved" c_mouseListener_mouseMoved :: MouseListener -> MouseEvent -> IO CBool
mouseListener_mouseMoved :: MouseListener -> MouseEvent -> IO Bool
mouseListener_mouseMoved p1 p2 =  liftM toBool $  c_mouseListener_mouseMoved p1 p2

foreign import ccall "OISMouse.h OIS_MouseListener_mousePressed" c_mouseListener_mousePressed :: MouseListener -> MouseEvent -> CInt -> IO CBool
mouseListener_mousePressed :: MouseListener -> MouseEvent -> MouseButtonID -> IO Bool
mouseListener_mousePressed p1 p2 p3 =  liftM toBool $  c_mouseListener_mousePressed p1 p2 (mouseButtonIDToCInt p3)

foreign import ccall "OISMouse.h OIS_MouseListener_mouseReleased" c_mouseListener_mouseReleased :: MouseListener -> MouseEvent -> CInt -> IO CBool
mouseListener_mouseReleased :: MouseListener -> MouseEvent -> MouseButtonID -> IO Bool
mouseListener_mouseReleased p1 p2 p3 =  liftM toBool $  c_mouseListener_mouseReleased p1 p2 (mouseButtonIDToCInt p3)

foreign import ccall "OISMouse.h OIS_Mouse_delete" c_mouse_delete :: Mouse -> IO ()
mouse_delete :: Mouse -> IO ()
mouse_delete p1 =   c_mouse_delete p1

foreign import ccall "OISMouse.h OIS_Mouse_setEventCallback" c_mouse_setEventCallback :: Mouse -> MouseListener -> IO ()
mouse_setEventCallback :: Mouse -> MouseListener -> IO ()
mouse_setEventCallback p1 p2 =   c_mouse_setEventCallback p1 p2

foreign import ccall "OISMouse.h OIS_Mouse_getEventCallback" c_mouse_getEventCallback :: Mouse -> IO MouseListener
mouse_getEventCallback :: Mouse -> IO MouseListener
mouse_getEventCallback p1 =   c_mouse_getEventCallback p1

foreign import ccall "OISMouse.h OIS_Mouse_getMouseState" c_mouse_getMouseState :: Mouse -> IO MouseState
mouse_getMouseState :: Mouse -> IO MouseState
mouse_getMouseState p1 =   c_mouse_getMouseState p1