module SFML.Window.Mouse
(
MouseButton(..)
, MouseWheel(..)
, 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)
data MouseWheel
= MouseVerticalWheel
| MouseHorizontalWheel
deriving (Eq, Enum, Bounded, Show)
instance Storable MouseWheel where
sizeOf _ = (4)
alignment _ = 4
peek ptr = peek (castPtr ptr :: Ptr CInt) >>= return . toEnum . fromIntegral
poke ptr mw = poke (castPtr ptr :: Ptr CInt) (fromIntegral . fromEnum $ mw)
instance Storable MouseButton where
sizeOf _ = (4)
alignment _ = 4
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