module SFML.Window.Mouse
(
MouseButton(..)
, isMouseButtonPressed
)
where
import SFML.Window.Types
import SFML.System.Vector2
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Ptr
import Foreign.Storable
data MouseButton
= MouseLeft
| MouseRight
| MouseMiddle
| MouseXButton1
| MouseXButton2
deriving (Eq, Enum, Bounded, Show)
sizeInt = (4)
instance Storable MouseButton where
sizeOf _ = sizeInt
alignment _ = alignment (undefined :: CInt)
peek ptr = peek (castPtr ptr :: Ptr CInt) >>= return . toEnum . fromIntegral
poke ptr bt = poke (castPtr ptr :: Ptr CInt) (fromIntegral . fromEnum $ bt)
isMouseButtonPressed :: MouseButton -> IO Bool
isMouseButtonPressed bt = sfMouse_isButtonPressed (fromEnum bt) >>= return . (/=0)
foreign import ccall unsafe "sfMouse_isButtonPressed"
sfMouse_isButtonPressed :: Int -> IO CChar