packages feed

sdl2 1.2.0 → 1.3.0

raw patch · 17 files changed

+5813/−6536 lines, 17 filesdep +transformersdep ~base

Dependencies added: transformers

Dependency ranges changed: base

Files

Graphics/UI/SDL.hs view
@@ -1,17 +1,17 @@ -- | Raw low-level FFI bindings to the sdl2 C library. module Graphics.UI.SDL (-	module Graphics.UI.SDL.Audio,-	module Graphics.UI.SDL.Basic,-	module Graphics.UI.SDL.Enum,-	module Graphics.UI.SDL.Event,-	module Graphics.UI.SDL.Filesystem,-	module Graphics.UI.SDL.Haptic,-	module Graphics.UI.SDL.Platform,-	module Graphics.UI.SDL.Power,-	module Graphics.UI.SDL.Thread,-	module Graphics.UI.SDL.Timer,-	module Graphics.UI.SDL.Types,-	module Graphics.UI.SDL.Video+  module Graphics.UI.SDL.Audio,+  module Graphics.UI.SDL.Basic,+  module Graphics.UI.SDL.Enum,+  module Graphics.UI.SDL.Event,+  module Graphics.UI.SDL.Filesystem,+  module Graphics.UI.SDL.Haptic,+  module Graphics.UI.SDL.Platform,+  module Graphics.UI.SDL.Power,+  module Graphics.UI.SDL.Thread,+  module Graphics.UI.SDL.Timer,+  module Graphics.UI.SDL.Types,+  module Graphics.UI.SDL.Video ) where  import Graphics.UI.SDL.Audio
Graphics/UI/SDL/Audio.hs view
@@ -1,33 +1,34 @@ module Graphics.UI.SDL.Audio (-	-- * Audio Device Management, Playing and Recording-	audioInit,-	audioQuit,-	buildAudioCVT,-	closeAudio,-	closeAudioDevice,-	convertAudio,-	freeWAV,-	getAudioDeviceName,-	getAudioDeviceStatus,-	getAudioDriver,-	getAudioStatus,-	getCurrentAudioDriver,-	getNumAudioDevices,-	getNumAudioDrivers,-	loadWAV,-	loadWAV_RW,-	lockAudio,-	lockAudioDevice,-	mixAudio,-	mixAudioFormat,-	openAudio,-	openAudioDevice,-	pauseAudio,-	pauseAudioDevice,-	unlockAudio,-	unlockAudioDevice+  -- * Audio Device Management, Playing and Recording+  audioInit,+  audioQuit,+  buildAudioCVT,+  closeAudio,+  closeAudioDevice,+  convertAudio,+  freeWAV,+  getAudioDeviceName,+  getAudioDeviceStatus,+  getAudioDriver,+  getAudioStatus,+  getCurrentAudioDriver,+  getNumAudioDevices,+  getNumAudioDrivers,+  loadWAV,+  loadWAV_RW,+  lockAudio,+  lockAudioDevice,+  mixAudio,+  mixAudioFormat,+  openAudio,+  openAudioDevice,+  pauseAudio,+  pauseAudioDevice,+  unlockAudio,+  unlockAudioDevice ) where +import Control.Monad.IO.Class import Data.Word import Foreign.C.String import Foreign.C.Types@@ -36,33 +37,134 @@ import Graphics.UI.SDL.Filesystem import Graphics.UI.SDL.Types -foreign import ccall "SDL.h SDL_AudioInit" audioInit :: CString -> IO CInt-foreign import ccall "SDL.h SDL_AudioQuit" audioQuit :: IO ()-foreign import ccall "SDL.h SDL_BuildAudioCVT" buildAudioCVT :: Ptr AudioCVT -> AudioFormat -> Word8 -> CInt -> AudioFormat -> Word8 -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_CloseAudio" closeAudio :: IO ()-foreign import ccall "SDL.h SDL_CloseAudioDevice" closeAudioDevice :: AudioDeviceID -> IO ()-foreign import ccall "SDL.h SDL_ConvertAudio" convertAudio :: Ptr AudioCVT -> IO CInt-foreign import ccall "SDL.h SDL_FreeWAV" freeWAV :: Ptr Word8 -> IO ()-foreign import ccall "SDL.h SDL_GetAudioDeviceName" getAudioDeviceName :: CInt -> CInt -> IO CString-foreign import ccall "SDL.h SDL_GetAudioDeviceStatus" getAudioDeviceStatus :: AudioDeviceID -> IO AudioStatus-foreign import ccall "SDL.h SDL_GetAudioDriver" getAudioDriver :: CInt -> IO CString-foreign import ccall "SDL.h SDL_GetAudioStatus" getAudioStatus :: IO AudioStatus-foreign import ccall "SDL.h SDL_GetCurrentAudioDriver" getCurrentAudioDriver :: IO CString-foreign import ccall "SDL.h SDL_GetNumAudioDevices" getNumAudioDevices :: CInt -> IO CInt-foreign import ccall "SDL.h SDL_GetNumAudioDrivers" getNumAudioDrivers :: IO CInt-foreign import ccall "SDL.h SDL_LoadWAV_RW" loadWAV_RW :: Ptr RWops -> CInt -> Ptr AudioSpec -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Ptr AudioSpec)-foreign import ccall "SDL.h SDL_LockAudio" lockAudio :: IO ()-foreign import ccall "SDL.h SDL_LockAudioDevice" lockAudioDevice :: AudioDeviceID -> IO () -foreign import ccall "SDL.h SDL_MixAudio" mixAudio :: Ptr Word8 -> Ptr Word8 -> Word32 -> CInt -> IO ()-foreign import ccall "SDL.h SDL_MixAudioFormat" mixAudioFormat :: Ptr Word8 -> Ptr Word8 -> AudioFormat -> Word32 -> CInt -> IO ()-foreign import ccall "SDL.h SDL_OpenAudio" openAudio :: Ptr AudioSpec -> Ptr AudioSpec -> IO CInt-foreign import ccall "SDL.h SDL_OpenAudioDevice" openAudioDevice :: CString -> CInt -> Ptr AudioSpec -> Ptr AudioSpec -> CInt -> IO AudioDeviceID-foreign import ccall "SDL.h SDL_PauseAudio" pauseAudio :: CInt -> IO ()-foreign import ccall "SDL.h SDL_PauseAudioDevice" pauseAudioDevice :: AudioDeviceID -> CInt -> IO ()-foreign import ccall "SDL.h SDL_UnlockAudio" unlockAudio :: IO ()-foreign import ccall "SDL.h SDL_UnlockAudioDevice" unlockAudioDevice :: AudioDeviceID -> IO ()+foreign import ccall "SDL.h SDL_AudioInit" audioInit' :: CString -> IO CInt+foreign import ccall "SDL.h SDL_AudioQuit" audioQuit' :: IO ()+foreign import ccall "SDL.h SDL_BuildAudioCVT" buildAudioCVT' :: Ptr AudioCVT -> AudioFormat -> Word8 -> CInt -> AudioFormat -> Word8 -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_CloseAudio" closeAudio' :: IO ()+foreign import ccall "SDL.h SDL_CloseAudioDevice" closeAudioDevice' :: AudioDeviceID -> IO ()+foreign import ccall "SDL.h SDL_ConvertAudio" convertAudio' :: Ptr AudioCVT -> IO CInt+foreign import ccall "SDL.h SDL_FreeWAV" freeWAV' :: Ptr Word8 -> IO ()+foreign import ccall "SDL.h SDL_GetAudioDeviceName" getAudioDeviceName' :: CInt -> CInt -> IO CString+foreign import ccall "SDL.h SDL_GetAudioDeviceStatus" getAudioDeviceStatus' :: AudioDeviceID -> IO AudioStatus+foreign import ccall "SDL.h SDL_GetAudioDriver" getAudioDriver' :: CInt -> IO CString+foreign import ccall "SDL.h SDL_GetAudioStatus" getAudioStatus' :: IO AudioStatus+foreign import ccall "SDL.h SDL_GetCurrentAudioDriver" getCurrentAudioDriver' :: IO CString+foreign import ccall "SDL.h SDL_GetNumAudioDevices" getNumAudioDevices' :: CInt -> IO CInt+foreign import ccall "SDL.h SDL_GetNumAudioDrivers" getNumAudioDrivers' :: IO CInt+foreign import ccall "SDL.h SDL_LoadWAV_RW" loadWAV_RW' :: Ptr RWops -> CInt -> Ptr AudioSpec -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Ptr AudioSpec)+foreign import ccall "SDL.h SDL_LockAudio" lockAudio' :: IO ()+foreign import ccall "SDL.h SDL_LockAudioDevice" lockAudioDevice' :: AudioDeviceID -> IO ()+foreign import ccall "SDL.h SDL_MixAudio" mixAudio' :: Ptr Word8 -> Ptr Word8 -> Word32 -> CInt -> IO ()+foreign import ccall "SDL.h SDL_MixAudioFormat" mixAudioFormat' :: Ptr Word8 -> Ptr Word8 -> AudioFormat -> Word32 -> CInt -> IO ()+foreign import ccall "SDL.h SDL_OpenAudio" openAudio' :: Ptr AudioSpec -> Ptr AudioSpec -> IO CInt+foreign import ccall "SDL.h SDL_OpenAudioDevice" openAudioDevice' :: CString -> CInt -> Ptr AudioSpec -> Ptr AudioSpec -> CInt -> IO AudioDeviceID+foreign import ccall "SDL.h SDL_PauseAudio" pauseAudio' :: CInt -> IO ()+foreign import ccall "SDL.h SDL_PauseAudioDevice" pauseAudioDevice' :: AudioDeviceID -> CInt -> IO ()+foreign import ccall "SDL.h SDL_UnlockAudio" unlockAudio' :: IO ()+foreign import ccall "SDL.h SDL_UnlockAudioDevice" unlockAudioDevice' :: AudioDeviceID -> IO () -loadWAV :: CString -> Ptr AudioSpec -> Ptr (Ptr Word8) -> Ptr Word32 -> IO (Ptr AudioSpec)-loadWAV file spec audio_buf audio_len = do-	rw <- withCString "rb" $ rwFromFile file-	loadWAV_RW rw 1 spec audio_buf audio_len+audioInit :: MonadIO m => CString -> m CInt+audioInit v1 = liftIO $ audioInit' v1+{-# INLINE audioInit #-}++audioQuit :: MonadIO m => m ()+audioQuit = liftIO audioQuit'+{-# INLINE audioQuit #-}++buildAudioCVT :: MonadIO m => Ptr AudioCVT -> AudioFormat -> Word8 -> CInt -> AudioFormat -> Word8 -> CInt -> m CInt+buildAudioCVT v1 v2 v3 v4 v5 v6 v7 = liftIO $ buildAudioCVT' v1 v2 v3 v4 v5 v6 v7+{-# INLINE buildAudioCVT #-}++closeAudio :: MonadIO m => m ()+closeAudio = liftIO closeAudio'+{-# INLINE closeAudio #-}++closeAudioDevice :: MonadIO m => AudioDeviceID -> m ()+closeAudioDevice v1 = liftIO $ closeAudioDevice' v1+{-# INLINE closeAudioDevice #-}++convertAudio :: MonadIO m => Ptr AudioCVT -> m CInt+convertAudio v1 = liftIO $ convertAudio' v1+{-# INLINE convertAudio #-}++freeWAV :: MonadIO m => Ptr Word8 -> m ()+freeWAV v1 = liftIO $ freeWAV' v1+{-# INLINE freeWAV #-}++getAudioDeviceName :: MonadIO m => CInt -> CInt -> m CString+getAudioDeviceName v1 v2 = liftIO $ getAudioDeviceName' v1 v2+{-# INLINE getAudioDeviceName #-}++getAudioDeviceStatus :: MonadIO m => AudioDeviceID -> m AudioStatus+getAudioDeviceStatus v1 = liftIO $ getAudioDeviceStatus' v1+{-# INLINE getAudioDeviceStatus #-}++getAudioDriver :: MonadIO m => CInt -> m CString+getAudioDriver v1 = liftIO $ getAudioDriver' v1+{-# INLINE getAudioDriver #-}++getAudioStatus :: MonadIO m => m AudioStatus+getAudioStatus = liftIO getAudioStatus'+{-# INLINE getAudioStatus #-}++getCurrentAudioDriver :: MonadIO m => m CString+getCurrentAudioDriver = liftIO getCurrentAudioDriver'+{-# INLINE getCurrentAudioDriver #-}++getNumAudioDevices :: MonadIO m => CInt -> m CInt+getNumAudioDevices v1 = liftIO $ getNumAudioDevices' v1+{-# INLINE getNumAudioDevices #-}++getNumAudioDrivers :: MonadIO m => m CInt+getNumAudioDrivers = liftIO getNumAudioDrivers'+{-# INLINE getNumAudioDrivers #-}++loadWAV :: MonadIO m => CString -> Ptr AudioSpec -> Ptr (Ptr Word8) -> Ptr Word32 -> m (Ptr AudioSpec)+loadWAV file spec audio_buf audio_len = liftIO $ do+  rw <- withCString "rb" $ rwFromFile file+  loadWAV_RW rw 1 spec audio_buf audio_len+{-# INLINE loadWAV #-}++loadWAV_RW :: MonadIO m => Ptr RWops -> CInt -> Ptr AudioSpec -> Ptr (Ptr Word8) -> Ptr Word32 -> m (Ptr AudioSpec)+loadWAV_RW v1 v2 v3 v4 v5 = liftIO $ loadWAV_RW' v1 v2 v3 v4 v5+{-# INLINE loadWAV_RW #-}++lockAudio :: MonadIO m => m ()+lockAudio = liftIO lockAudio'+{-# INLINE lockAudio #-}++lockAudioDevice :: MonadIO m => AudioDeviceID -> m ()+lockAudioDevice v1 = liftIO $ lockAudioDevice' v1+{-# INLINE lockAudioDevice #-}++mixAudio :: MonadIO m => Ptr Word8 -> Ptr Word8 -> Word32 -> CInt -> m ()+mixAudio v1 v2 v3 v4 = liftIO $ mixAudio' v1 v2 v3 v4+{-# INLINE mixAudio #-}++mixAudioFormat :: MonadIO m => Ptr Word8 -> Ptr Word8 -> AudioFormat -> Word32 -> CInt -> m ()+mixAudioFormat v1 v2 v3 v4 v5 = liftIO $ mixAudioFormat' v1 v2 v3 v4 v5+{-# INLINE mixAudioFormat #-}++openAudio :: MonadIO m => Ptr AudioSpec -> Ptr AudioSpec -> m CInt+openAudio v1 v2 = liftIO $ openAudio' v1 v2+{-# INLINE openAudio #-}++openAudioDevice :: MonadIO m => CString -> CInt -> Ptr AudioSpec -> Ptr AudioSpec -> CInt -> m AudioDeviceID+openAudioDevice v1 v2 v3 v4 v5 = liftIO $ openAudioDevice' v1 v2 v3 v4 v5+{-# INLINE openAudioDevice #-}++pauseAudio :: MonadIO m => CInt -> m ()+pauseAudio v1 = liftIO $ pauseAudio' v1+{-# INLINE pauseAudio #-}++pauseAudioDevice :: MonadIO m => AudioDeviceID -> CInt -> m ()+pauseAudioDevice v1 v2 = liftIO $ pauseAudioDevice' v1 v2+{-# INLINE pauseAudioDevice #-}++unlockAudio :: MonadIO m => m ()+unlockAudio = liftIO unlockAudio'+{-# INLINE unlockAudio #-}++unlockAudioDevice :: MonadIO m => AudioDeviceID -> m ()+unlockAudioDevice v1 = liftIO $ unlockAudioDevice' v1+{-# INLINE unlockAudioDevice #-}
Graphics/UI/SDL/Basic.hs view
@@ -1,51 +1,51 @@ module Graphics.UI.SDL.Basic (-	-- * Initialization and Shutdown-	init,-	initSubSystem,-	quit,-	quitSubSystem,-	setMainReady,-	wasInit,+  -- * Initialization and Shutdown+  init,+  initSubSystem,+  quit,+  quitSubSystem,+  setMainReady,+  wasInit, -	-- * Configuration Variables-	addHintCallback,-	clearHints,-	delHintCallback,-	getHint,-	setHint,-	setHintWithPriority,+  -- * Configuration Variables+  addHintCallback,+  clearHints,+  delHintCallback,+  getHint,+  setHint,+  setHintWithPriority, -	-- * Error Handling-	clearError,-	getError,-	setError,+  -- * Error Handling+  clearError,+  getError,+  setError, -	-- * Log Handling-	log,-	logCritical,-	logDebug,-	logError,-	logGetOutputFunction,-	logGetPriority,-	logInfo,-	logMessage,-	logResetPriorities,-	logSetAllPriority,-	logSetOutputFunction,-	logSetPriority,-	logVerbose,-	logWarn,+  -- * Log Handling+  log,+  logCritical,+  logDebug,+  logError,+  logGetOutputFunction,+  logGetPriority,+  logInfo,+  logMessage,+  logResetPriorities,+  logSetAllPriority,+  logSetOutputFunction,+  logSetPriority,+  logVerbose,+  logWarn, -	-- * Assertions-	-- | Use Haskell's own assertion primitives rather than SDL's.+  -- * Assertions+  -- | Use Haskell's own assertion primitives rather than SDL's. -	-- * Querying SDL Version-	getRevision,-	getRevisionNumber,-	getVersion+  -- * Querying SDL Version+  getRevision,+  getRevisionNumber,+  getVersion ) where -import Data.Word+import Control.Monad.IO.Class import Foreign.C.String import Foreign.C.Types import Foreign.Ptr@@ -53,53 +53,160 @@ import Graphics.UI.SDL.Types import Prelude hiding (init, log) -foreign import ccall "SDL.h SDL_Init" init :: InitFlag -> IO CInt-foreign import ccall "SDL.h SDL_InitSubSystem" initSubSystem :: InitFlag -> IO CInt-foreign import ccall "SDL.h SDL_Quit" quit :: IO ()-foreign import ccall "SDL.h SDL_QuitSubSystem" quitSubSystem :: InitFlag -> IO ()-foreign import ccall "SDL.h SDL_SetMainReady" setMainReady :: IO ()-foreign import ccall "SDL.h SDL_WasInit" wasInit :: InitFlag -> IO Word32+foreign import ccall "SDL.h SDL_Init" init' :: InitFlag -> IO CInt+foreign import ccall "SDL.h SDL_InitSubSystem" initSubSystem' :: InitFlag -> IO CInt+foreign import ccall "SDL.h SDL_Quit" quit' :: IO ()+foreign import ccall "SDL.h SDL_QuitSubSystem" quitSubSystem' :: InitFlag -> IO ()+foreign import ccall "SDL.h SDL_SetMainReady" setMainReady' :: IO ()+foreign import ccall "SDL.h SDL_WasInit" wasInit' :: InitFlag -> IO InitFlag -foreign import ccall "SDL.h SDL_AddHintCallback" addHintCallback :: CString -> HintCallback -> Ptr () -> IO ()-foreign import ccall "SDL.h SDL_ClearHints" clearHints :: IO ()-foreign import ccall "SDL.h SDL_DelHintCallback" delHintCallback :: CString -> HintCallback -> Ptr () -> IO ()-foreign import ccall "SDL.h SDL_GetHint" getHint :: CString -> IO CString-foreign import ccall "SDL.h SDL_SetHint" setHint :: CString -> CString -> IO Bool-foreign import ccall "SDL.h SDL_SetHintWithPriority" setHintWithPriority :: CString -> CString -> HintPriority -> IO Bool+foreign import ccall "SDL.h SDL_AddHintCallback" addHintCallback' :: CString -> HintCallback -> Ptr () -> IO ()+foreign import ccall "SDL.h SDL_ClearHints" clearHints' :: IO ()+foreign import ccall "SDL.h SDL_DelHintCallback" delHintCallback' :: CString -> HintCallback -> Ptr () -> IO ()+foreign import ccall "SDL.h SDL_GetHint" getHint' :: CString -> IO CString+foreign import ccall "SDL.h SDL_SetHint" setHint' :: CString -> CString -> IO Bool+foreign import ccall "SDL.h SDL_SetHintWithPriority" setHintWithPriority' :: CString -> CString -> HintPriority -> IO Bool -foreign import ccall "SDL.h SDL_ClearError" clearError :: IO ()-foreign import ccall "SDL.h SDL_GetError" getError :: IO CString-foreign import ccall "sdlhelper.c SDLHelper_SetError" setError :: CString -> IO CInt+foreign import ccall "SDL.h SDL_ClearError" clearError' :: IO ()+foreign import ccall "SDL.h SDL_GetError" getError' :: IO CString+foreign import ccall "sdlhelper.c SDLHelper_SetError" setError' :: CString -> IO CInt -foreign import ccall "SDL.h SDL_LogGetOutputFunction" logGetOutputFunction :: Ptr LogOutputFunction -> Ptr (Ptr ()) -> IO ()-foreign import ccall "SDL.h SDL_LogGetPriority" logGetPriority :: CInt -> IO LogPriority-foreign import ccall "sdlhelper.c SDLHelper_LogMessage" logMessage :: CInt -> LogPriority -> CString -> IO ()-foreign import ccall "SDL.h SDL_LogResetPriorities" logResetPriorities :: IO ()-foreign import ccall "SDL.h SDL_LogSetAllPriority" logSetAllPriority :: LogPriority -> IO ()-foreign import ccall "SDL.h SDL_LogSetOutputFunction" logSetOutputFunction :: LogOutputFunction -> Ptr () -> IO ()-foreign import ccall "SDL.h SDL_LogSetPriority" logSetPriority :: CInt -> LogPriority -> IO ()+foreign import ccall "SDL.h SDL_LogGetOutputFunction" logGetOutputFunction' :: Ptr LogOutputFunction -> Ptr (Ptr ()) -> IO ()+foreign import ccall "SDL.h SDL_LogGetPriority" logGetPriority' :: CInt -> IO LogPriority+foreign import ccall "sdlhelper.c SDLHelper_LogMessage" logMessage' :: CInt -> LogPriority -> CString -> IO ()+foreign import ccall "SDL.h SDL_LogResetPriorities" logResetPriorities' :: IO ()+foreign import ccall "SDL.h SDL_LogSetAllPriority" logSetAllPriority' :: LogPriority -> IO ()+foreign import ccall "SDL.h SDL_LogSetOutputFunction" logSetOutputFunction' :: LogOutputFunction -> Ptr () -> IO ()+foreign import ccall "SDL.h SDL_LogSetPriority" logSetPriority' :: CInt -> LogPriority -> IO () -foreign import ccall "SDL.h SDL_GetRevision" getRevision :: IO CString-foreign import ccall "SDL.h SDL_GetRevisionNumber" getRevisionNumber :: IO CInt-foreign import ccall "SDL.h SDL_GetVersion" getVersion :: Ptr Version -> IO ()+foreign import ccall "SDL.h SDL_GetRevision" getRevision' :: IO CString+foreign import ccall "SDL.h SDL_GetRevisionNumber" getRevisionNumber' :: IO CInt+foreign import ccall "SDL.h SDL_GetVersion" getVersion' :: Ptr Version -> IO () +init :: MonadIO m => InitFlag -> m CInt+init v1 = liftIO $ init' v1+{-# INLINE init #-}++initSubSystem :: MonadIO m => InitFlag -> m CInt+initSubSystem v1 = liftIO $ initSubSystem' v1+{-# INLINE initSubSystem #-}++quit :: MonadIO m => m ()+quit = liftIO quit'+{-# INLINE quit #-}++quitSubSystem :: MonadIO m => InitFlag -> m ()+quitSubSystem v1 = liftIO $ quitSubSystem' v1+{-# INLINE quitSubSystem #-}++setMainReady :: MonadIO m => m ()+setMainReady = liftIO setMainReady'+{-# INLINE setMainReady #-}++wasInit :: MonadIO m => InitFlag -> m InitFlag+wasInit v1 = liftIO $ wasInit' v1+{-# INLINE wasInit #-}++addHintCallback :: MonadIO m => CString -> HintCallback -> Ptr () -> m ()+addHintCallback v1 v2 v3 = liftIO $ addHintCallback' v1 v2 v3+{-# INLINE addHintCallback #-}++clearHints :: MonadIO m => m ()+clearHints = liftIO clearHints'+{-# INLINE clearHints #-}++delHintCallback :: MonadIO m => CString -> HintCallback -> Ptr () -> m ()+delHintCallback v1 v2 v3 = liftIO $ delHintCallback' v1 v2 v3+{-# INLINE delHintCallback #-}++getHint :: MonadIO m => CString -> m CString+getHint v1 = liftIO $ getHint' v1+{-# INLINE getHint #-}++setHint :: MonadIO m => CString -> CString -> m Bool+setHint v1 v2 = liftIO $ setHint' v1 v2+{-# INLINE setHint #-}++setHintWithPriority :: MonadIO m => CString -> CString -> HintPriority -> m Bool+setHintWithPriority v1 v2 v3 = liftIO $ setHintWithPriority' v1 v2 v3+{-# INLINE setHintWithPriority #-}++clearError :: MonadIO m => m ()+clearError = liftIO clearError'+{-# INLINE clearError #-}++getError :: MonadIO m => m CString+getError = liftIO getError'+{-# INLINE getError #-}++setError :: MonadIO m => CString -> m CInt+setError v1 = liftIO $ setError' v1+{-# INLINE setError #-}+ log :: CString -> IO ()-log = logMessage logCategoryApplication logPriorityInfo+log = logMessage SDL_LOG_CATEGORY_APPLICATION SDL_LOG_PRIORITY_INFO+{-# INLINE log #-}  logCritical :: CInt -> CString -> IO ()-logCritical category = logMessage category logPriorityCritical+logCritical category = logMessage category SDL_LOG_PRIORITY_CRITICAL+{-# INLINE logCritical #-}  logDebug :: CInt -> CString -> IO ()-logDebug category = logMessage category logPriorityDebug+logDebug category = logMessage category SDL_LOG_PRIORITY_DEBUG+{-# INLINE logDebug #-}  logError :: CInt -> CString -> IO ()-logError category = logMessage category logPriorityError+logError category = logMessage category SDL_LOG_PRIORITY_ERROR+{-# INLINE logError #-} +logGetOutputFunction :: MonadIO m => Ptr LogOutputFunction -> Ptr (Ptr ()) -> m ()+logGetOutputFunction v1 v2 = liftIO $ logGetOutputFunction' v1 v2+{-# INLINE logGetOutputFunction #-}++logGetPriority :: MonadIO m => CInt -> m LogPriority+logGetPriority v1 = liftIO $ logGetPriority' v1+{-# INLINE logGetPriority #-}+ logInfo :: CInt -> CString -> IO ()-logInfo category = logMessage category logPriorityInfo+logInfo category = logMessage category SDL_LOG_PRIORITY_INFO+{-# INLINE logInfo #-} +logMessage :: MonadIO m => CInt -> LogPriority -> CString -> m ()+logMessage v1 v2 v3 = liftIO $ logMessage' v1 v2 v3+{-# INLINE logMessage #-}++logResetPriorities :: MonadIO m => m ()+logResetPriorities = liftIO logResetPriorities'+{-# INLINE logResetPriorities #-}++logSetAllPriority :: MonadIO m => LogPriority -> m ()+logSetAllPriority v1 = liftIO $ logSetAllPriority' v1+{-# INLINE logSetAllPriority #-}++logSetOutputFunction :: MonadIO m => LogOutputFunction -> Ptr () -> m ()+logSetOutputFunction v1 v2 = liftIO $ logSetOutputFunction' v1 v2+{-# INLINE logSetOutputFunction #-}++logSetPriority :: MonadIO m => CInt -> LogPriority -> m ()+logSetPriority v1 v2 = liftIO $ logSetPriority' v1 v2+{-# INLINE logSetPriority #-}+ logVerbose :: CInt -> CString -> IO ()-logVerbose category = logMessage category logPriorityVerbose+logVerbose category = logMessage category SDL_LOG_PRIORITY_VERBOSE+{-# INLINE logVerbose #-}  logWarn :: CInt -> CString -> IO ()-logWarn category = logMessage category logPriorityWarn+logWarn category = logMessage category SDL_LOG_PRIORITY_WARN+{-# INLINE logWarn #-}++getRevision :: MonadIO m => m CString+getRevision = liftIO getRevision'+{-# INLINE getRevision #-}++getRevisionNumber :: MonadIO m => m CInt+getRevisionNumber = liftIO getRevisionNumber'+{-# INLINE getRevisionNumber #-}++getVersion :: MonadIO m => Ptr Version -> m ()+getVersion v1 = liftIO $ getVersion' v1+{-# INLINE getVersion #-}
Graphics/UI/SDL/Enum.hsc view
@@ -1,2450 +1,1677 @@-module Graphics.UI.SDL.Enum (-	-- * Enumerations--	-- ** Audio Status-	AudioStatus,-	audioStatusStopped,-	audioStatusPlaying,-	audioStatusPaused,--	-- ** Blend Mode-	BlendMode,-	blendModeNone,-	blendModeBlend,-	blendModeAdd,-	blendModeMod,--	-- ** Event Action-	EventAction,-	eventActionAddEvent,-	eventActionPeekEvent,-	eventActionGetEvent,--	-- ** Game Controller Axis-	GameControllerAxis,-	gameControllerAxisInvalid,-	gameControllerAxisLeftX,-	gameControllerAxisLeftY,-	gameControllerAxisRightX,-	gameControllerAxisRightY,-	gameControllerAxisTriggerLeft,-	gameControllerAxisTriggerRight,-	gameControllerAxisMax,--	-- ** Game Controller Button-	GameControllerButton,-	gameControllerButtonInvalid,-	gameControllerButtonA,-	gameControllerButtonB,-	gameControllerButtonX,-	gameControllerButtonY,-	gameControllerButtonBack,-	gameControllerButtonGuide,-	gameControllerButtonStart,-	gameControllerButtonLeftStick,-	gameControllerButtonRightStick,-	gameControllerButtonLeftShoulder,-	gameControllerButtonRightShoulder,-	gameControllerButtonDPadUp,-	gameControllerButtonDPadDown,-	gameControllerButtonDPadLeft,-	gameControllerButtonDPadRight,-	gameControllerButtonMax,--	-- ** OpenGL Attribute-	GLattr,-	glAttrRedSize,-	glAttrGreenSize,-	glAttrBlueSize,-	glAttrAlphaSize,-	glAttrBufferSize,-	glAttrDoubleBuffer,-	glAttrDepthSize,-	glAttrStencilSize,-	glAttrAccumRedSize,-	glAttrAccumGreenSize,-	glAttrAccumBlueSize,-	glAttrAccumAlphaSize,-	glAttrStereo,-	glAttrMultiSampleBuffers,-	glAttrMultiSampleSamples,-	glAttrAcceleratedVisual,-	glAttrRetainedBacking,-	glAttrContextMajorVersion,-	glAttrContextMinorVersion,-	glAttrContextEGL,-	glAttrContextFlags,-	glAttrContextProfileMask,-	glAttrShareWithCurrentContext,-	glAttrFramebufferSRGBCapable,--	-- ** Hint Priority-	HintPriority,-	hintPriorityDefault,-	hintPriorityNormal,-	hintPriorityOverride,--	-- ** Initialization Flag-	InitFlag,-	initFlagTimer,-	initFlagAudio,-	initFlagVideo,-	initFlagJoystick,-	initFlagHaptic,-	initFlagGameController,-	initFlagEvents,-	initFlagNoParachute,-	initFlagEverything,--	-- ** Keycode-	Keycode,-	keycodeUnknown,-	keycodeReturn,-	keycodeEscape,-	keycodeBackspace,-	keycodeTab,-	keycodeSpace,-	keycodeExclaim,-	keycodeQuoteDbl,-	keycodeHash,-	keycodePercent,-	keycodeDollar,-	keycodeAmpersand,-	keycodeQuote,-	keycodeLeftParen,-	keycodeRightParen,-	keycodeAsterisk,-	keycodePlus,-	keycodeComma,-	keycodeMinus,-	keycodePeriod,-	keycodeSlash,-	keycode0,-	keycode1,-	keycode2,-	keycode3,-	keycode4,-	keycode5,-	keycode6,-	keycode7,-	keycode8,-	keycode9,-	keycodeColon,-	keycodeSemicolon,-	keycodeLess,-	keycodeEquals,-	keycodeGreater,-	keycodeQuestion,-	keycodeAt,-	keycodeLeftBracket,-	keycodeBackslash,-	keycodeRightBracket,-	keycodeCaret,-	keycodeUnderscore,-	keycodeBackquote,-	keycodeA,-	keycodeB,-	keycodeC,-	keycodeD,-	keycodeE,-	keycodeF,-	keycodeG,-	keycodeH,-	keycodeI,-	keycodeJ,-	keycodeK,-	keycodeL,-	keycodeM,-	keycodeN,-	keycodeO,-	keycodeP,-	keycodeQ,-	keycodeR,-	keycodeS,-	keycodeT,-	keycodeU,-	keycodeV,-	keycodeW,-	keycodeX,-	keycodeY,-	keycodeZ,-	keycodeCapsLock,-	keycodeF1,-	keycodeF2,-	keycodeF3,-	keycodeF4,-	keycodeF5,-	keycodeF6,-	keycodeF7,-	keycodeF8,-	keycodeF9,-	keycodeF10,-	keycodeF11,-	keycodeF12,-	keycodePrintScreen,-	keycodeScrollLock,-	keycodePause,-	keycodeInsert,-	keycodeHome,-	keycodePageUp,-	keycodeDelete,-	keycodeEnd,-	keycodePageDown,-	keycodeRight,-	keycodeLeft,-	keycodeDown,-	keycodeUp,-	keycodeNumLockClear,-	keycodeKPDivide,-	keycodeKPMultiply,-	keycodeKPMinus,-	keycodeKPPlus,-	keycodeKPEnter,-	keycodeKP1,-	keycodeKP2,-	keycodeKP3,-	keycodeKP4,-	keycodeKP5,-	keycodeKP6,-	keycodeKP7,-	keycodeKP8,-	keycodeKP9,-	keycodeKP0,-	keycodeKPPeriod,-	keycodeApplication,-	keycodePower,-	keycodeKPEquals,-	keycodeF13,-	keycodeF14,-	keycodeF15,-	keycodeF16,-	keycodeF17,-	keycodeF18,-	keycodeF19,-	keycodeF20,-	keycodeF21,-	keycodeF22,-	keycodeF23,-	keycodeF24,-	keycodeExecute,-	keycodeHelp,-	keycodeMenu,-	keycodeSelect,-	keycodeStop,-	keycodeAgain,-	keycodeUndo,-	keycodeCut,-	keycodeCopy,-	keycodePaste,-	keycodeFind,-	keycodeMute,-	keycodeVolumeUp,-	keycodeVolumeDown,-	keycodeKPComma,-	keycodeKPEqualsAS400,-	keycodeAltErase,-	keycodeSysReq,-	keycodeCancel,-	keycodeClear,-	keycodePrior,-	keycodeReturn2,-	keycodeSeparator,-	keycodeOut,-	keycodeOper,-	keycodeClearAgain,-	keycodeCrSel,-	keycodeExSel,-	keycodeKP00,-	keycodeKP000,-	keycodeThousandsSeparator,-	keycodeDecimalSeparator,-	keycodeCurrencyUnit,-	keycodeCurrencySubunit,-	keycodeKPLeftParen,-	keycodeKPRightParen,-	keycodeKPLeftBrace,-	keycodeKPRightBrace,-	keycodeKPTab,-	keycodeKPBackspace,-	keycodeKPA,-	keycodeKPB,-	keycodeKPC,-	keycodeKPD,-	keycodeKPE,-	keycodeKPF,-	keycodeKPXor,-	keycodeKPPower,-	keycodeKPPercent,-	keycodeKPLess,-	keycodeKPGreater,-	keycodeKPAmpersand,-	keycodeKPDblAmpersand,-	keycodeKPVecticalBar,-	keycodeKPDblVerticalBar,-	keycodeKPColon,-	keycodeKPHash,-	keycodeKPSpace,-	keycodeKPAt,-	keycodeKPExclam,-	keycodeKPMemStore,-	keycodeKPMemRecall,-	keycodeKPMemClear,-	keycodeKPMemAdd,-	keycodeKPMemSubtract,-	keycodeKPMemMultiply,-	keycodeKPMemDivide,-	keycodeKPPlusMinus,-	keycodeKPClear,-	keycodeKPClearEntry,-	keycodeKPBinary,-	keycodeKPOctal,-	keycodeKPDecimal,-	keycodeKPHexadecimal,-	keycodeLCtrl,-	keycodeLShift,-	keycodeLAlt,-	keycodeLGUI,-	keycodeRCtrl,-	keycodeRShift,-	keycodeRAlt,-	keycodeRGUI,-	keycodeMode,-	keycodeAudioNext,-	keycodeAudioPrev,-	keycodeAudioStop,-	keycodeAudioPlay,-	keycodeAudioMute,-	keycodeMediaSelect,-	keycodeWWW,-	keycodeMail,-	keycodeCalculator,-	keycodeComputer,-	keycodeACSearch,-	keycodeACHome,-	keycodeACBack,-	keycodeACForward,-	keycodeACStop,-	keycodeACRefresh,-	keycodeACBookmarks,-	keycodeBrightnessDown,-	keycodeBrightnessUp,-	keycodeDisplaySwitch,-	keycodeKbdIllumToggle,-	keycodeKbdIllumDown,-	keycodeKbdIllumUp,-	keycodeEject,-	keycodeSleep,--	-- ** Key Modifier-	Keymod,-	keymodNone,-	keymodLShift,-	keymodRShift,-	keymodShift,-	keymodLCtrl,-	keymodRCtrl,-	keymodCtrl,-	keymodLAlt,-	keymodRAlt,-	keymodAlt,-	keymodLGUI,-	keymodRGUI,-	keymodGUI,-	keymodNum,-	keymodCaps,-	keymodMode,-	keymodReserved,--	-- ** Log Priority-	LogPriority,-	logPriorityVerbose,-	logPriorityDebug,-	logPriorityInfo,-	logPriorityWarn,-	logPriorityError,-	logPriorityCritical,-	logPriorityPriorities,--	-- ** Power State-	PowerState,-	powerStateUnknown,-	powerStateOnBattery,-	powerStateNoBattery,-	powerStateCharging,-	powerStateCharged,--	-- ** Renderer Flip-	RendererFlip,-	rendererFlipNone,-	rendererFlipHorizontal,-	rendererFlipVertical,--	-- ** Scancode-	Scancode,-	scancodeUnknown,-	scancodeA,-	scancodeB,-	scancodeC,-	scancodeD,-	scancodeE,-	scancodeF,-	scancodeG,-	scancodeH,-	scancodeI,-	scancodeJ,-	scancodeK,-	scancodeL,-	scancodeM,-	scancodeN,-	scancodeO,-	scancodeP,-	scancodeQ,-	scancodeR,-	scancodeS,-	scancodeT,-	scancodeU,-	scancodeV,-	scancodeW,-	scancodeX,-	scancodeY,-	scancodeZ,-	scancode1,-	scancode2,-	scancode3,-	scancode4,-	scancode5,-	scancode6,-	scancode7,-	scancode8,-	scancode9,-	scancode0,-	scancodeReturn,-	scancodeEscape,-	scancodeBackspace,-	scancodeTab,-	scancodeSpace,-	scancodeMinus,-	scancodeEquals,-	scancodeLeftBracket,-	scancodeRightBracket,-	scancodeBackslash,-	scancodeNonUSHash,-	scancodeSemicolon,-	scancodeApostrophe,-	scancodeGrave,-	scancodeComma,-	scancodePeriod,-	scancodeSlash,-	scancodeCapsLock,-	scancodeF1,-	scancodeF2,-	scancodeF3,-	scancodeF4,-	scancodeF5,-	scancodeF6,-	scancodeF7,-	scancodeF8,-	scancodeF9,-	scancodeF10,-	scancodeF11,-	scancodeF12,-	scancodePrintScreen,-	scancodeScrollLock,-	scancodePause,-	scancodeInsert,-	scancodeHome,-	scancodePageUp,-	scancodeDelete,-	scancodeEnd,-	scancodePageDown,-	scancodeRight,-	scancodeLeft,-	scancodeDown,-	scancodeUp,-	scancodeNumLockClear,-	scancodeKPDivide,-	scancodeKPMultiply,-	scancodeKPMinus,-	scancodeKPPlus,-	scancodeKPEnter,-	scancodeKP1,-	scancodeKP2,-	scancodeKP3,-	scancodeKP4,-	scancodeKP5,-	scancodeKP6,-	scancodeKP7,-	scancodeKP8,-	scancodeKP9,-	scancodeKP0,-	scancodeKPPeriod,-	scancodeNonUSBackslash,-	scancodeApplication,-	scancodePower,-	scancodeKPEquals,-	scancodeF13,-	scancodeF14,-	scancodeF15,-	scancodeF16,-	scancodeF17,-	scancodeF18,-	scancodeF19,-	scancodeF20,-	scancodeF21,-	scancodeF22,-	scancodeF23,-	scancodeF24,-	scancodeExecute,-	scancodeHelp,-	scancodeMenu,-	scancodeSelect,-	scancodeStop,-	scancodeAgain,-	scancodeUndo,-	scancodeCut,-	scancodeCopy,-	scancodePaste,-	scancodeFind,-	scancodeMute,-	scancodeVolumeUp,-	scancodeVolumeDown,-	scancodeKPComma,-	scancodeEqualsAs400,-	scancodeInternational1,-	scancodeInternational2,-	scancodeInternational3,-	scancodeInternational4,-	scancodeInternational5,-	scancodeInternational6,-	scancodeInternational7,-	scancodeInternational8,-	scancodeInternational9,-	scancodeLang1,-	scancodeLang2,-	scancodeLang3,-	scancodeLang4,-	scancodeLang5,-	scancodeLang6,-	scancodeLang7,-	scancodeLang8,-	scancodeLang9,-	scancodeAltErase,-	scancodeSysReq,-	scancodeCancel,-	scancodeClear,-	scancodePrior,-	scancodeReturn2,-	scancodeSeparator,-	scancodeOut,-	scancodeOper,-	scancodeClearAgain,-	scancodeCrSel,-	scancodeExSel,-	scancodeKP00,-	scancodeKP000,-	scancodeThousandsSeparator,-	scancodeDecimalSeparator,-	scancodeCurrencyUnit,-	scancodeCurrencySubunit,-	scancodeLeftParen,-	scancodeRightParen,-	scancodeLeftBrace,-	scancodeRightBrace,-	scancodeKPTab,-	scancodeKPBackspace,-	scancodeKPA,-	scancodeKPB,-	scancodeKPC,-	scancodeKPD,-	scancodeKPE,-	scancodeKPF,-	scancodeKPXOR,-	scancodeKPPower,-	scancodeKPPercent,-	scancodeKPLess,-	scancodeKPGreater,-	scancodeKPAmpersand,-	scancodeKPDBLAmpersand,-	scancodeKPVerticalBar,-	scancodeKPDBLVerticalBar,-	scancodeKPColon,-	scancodeKPHash,-	scancodeKPSpace,-	scancodeKPAt,-	scancodeKPExclam,-	scancodeKPMemStore,-	scancodeKPMemRecall,-	scancodeKPMemClear,-	scancodeKPMemAdd,-	scancodeKPMemSubtract,-	scancodeKPMemMultiply,-	scancodeKPMemDivide,-	scancodeKPPlusMinus,-	scancodeKPClear,-	scancodeKPClearEntry,-	scancodeKPBinary,-	scancodeKPOctal,-	scancodeKPDecimal,-	scancodeKPHexadecimal,-	scancodeLCtrl,-	scancodeLShift,-	scancodeLAlt,-	scancodeLGUI,-	scancodeRCtrl,-	scancodeRShift,-	scancodeRAlt,-	scancodeRGUI,-	scancodeMode,-	scancodeAudioNext,-	scancodeAudioPrev,-	scancodeAudioStop,-	scancodeAudioPlay,-	scancodeAudioMute,-	scancodeMediaSelect,-	scancodeWWW,-	scancodeMail,-	scancodeCalculator,-	scancodeComputer,-	scancodeACSearch,-	scancodeACHome,-	scancodeACBack,-	scancodeACForward,-	scancodeACStop,-	scancodeACRefresh,-	scancodeACBookmarks,-	scancodeBrightnessDown,-	scancodeBrightnessUp,-	scancodeDisplaySwitch,-	scancodeKBDIllumToggle,-	scancodeKBDIllumDown,-	scancodeKBDIllumUp,-	scancodeEject,-	scancodeSleep,-	scancodeApp1,-	scancodeApp2,-	scancodeNum,--	-- ** System Cursor-	SystemCursor,-	systemCursorArrow,-	systemCursorIBeam,-	systemCursorWait,-	systemCursorCrosshair,-	systemCursorWaitArrow,-	systemCursorSizeNWSE,-	systemCursorSizeNESW,-	systemCursorSizeWE,-	systemCursorSizeNS,-	systemCursorSizeAll,-	systemCursorNo,-	systemCursorHand,-	systemCursorNum,--	-- ** Thread Priority-	ThreadPriority,-	threadPriorityLow,-	threadPriorityNormal,-	threadPriorityHigh,--	-- * Miscellaneous Enumerations-	-- | These enumerations are not used directly by any SDL function, thus they have a polymorphic type.--	-- ** Audio Allowed Changes-	audioAllowFrequencyChange,-	audioAllowFormatChange,-	audioAllowChannelsChange,-	audioAllowAnyChange,--	-- ** Button-	buttonLeft,-	buttonMiddle,-	buttonRight,-	buttonX1,-	buttonX2,-	buttonLMask,-	buttonMMask,-	buttonRMask,-	buttonX1Mask,-	buttonX2Mask,--	-- ** Event Type-	eventTypeFirstEvent,-	eventTypeQuit,-	eventTypeAppTerminating,-	eventTypeAppLowMemory,-	eventTypeAppWillEnterBackground,-	eventTypeAppDidEnterBackground,-	eventTypeAppWillEnterForeground,-	eventTypeAppDidEnterForeground,-	eventTypeWindowEvent,-	eventTypeSysWMEvent,-	eventTypeKeyDown,-	eventTypeKeyUp,-	eventTypeTextEditing,-	eventTypeTextInput,-	eventTypeMouseMotion,-	eventTypeMouseButtonDown,-	eventTypeMouseButtonUp,-	eventTypeMouseWheel,-	eventTypeJoyAxisMotion,-	eventTypeJoyBallMotion,-	eventTypeJoyHatMotion,-	eventTypeJoyButtonDown,-	eventTypeJoyButtonUp,-	eventTypeJoyDeviceAdded,-	eventTypeJoyDeviceRemoved,-	eventTypeControllerAxisMotion,-	eventTypeControllerButtonDown,-	eventTypeControllerButtonUp,-	eventTypeControllerDeviceAdded,-	eventTypeControllerDeviceRemoved,-	eventTypeControllerDeviceRemapped,-	eventTypeFingerDown,-	eventTypeFingerUp,-	eventTypeFingerMotion,-	eventTypeDollarGesture,-	eventTypeDollarRecord,-	eventTypeMultiGesture,-	eventTypeClipboardUpdate,-	eventTypeDropFile,-	eventTypeUserEvent,-	eventTypeLastEvent,--	-- ** Joystick Hat Position-	joystickHatCentered,-	joystickHatUp,-	joystickHatRight,-	joystickHatDown,-	joystickHatLeft,-	joystickHatRightUp,-	joystickHatRightDown,-	joystickHatLeftUp,-	joystickHatLeftDown,--	-- ** Key States-	keyPressed,-	keyReleased,--	-- ** Log Category-	logCategoryApplication,-	logCategoryError,-	logCategoryAssert,-	logCategorySystem,-	logCategoryAudio,-	logCategoryVideo,-	logCategoryRender,-	logCategoryInput,-	logCategoryTest,-	logCategoryCustom,--	-- ** Message Box Flags-	messageBoxFlagError,-	messageBoxFlagWarning,-	messageBoxFlagInformation,--	-- ** Message Box Button Flags-	messageBoxButtonFlagReturnKeyDefault,-	messageBoxButtonFlagEscapeKeyDefault,--	-- ** OpenGL Profile-	glProfileCore,-	glProfileCompatibility,-	glProfileES,--	-- ** OpenGL Context Flag-	glContextFlagDebug,-	glContextFlagForwardCompatible,-	glContextFlagRobustAccess,-	glContextFlagResetIsolation,--	-- ** Pixel Formats-	pixelFormatUnknown,-	pixelFormatIndex1LSB,-	pixelFormatIndex1MSB,-	pixelFormatIndex4LSB,-	pixelFormatIndex4MSB,-	pixelFormatIndex8,-	pixelFormatRGB332,-	pixelFormatRGB444,-	pixelFormatRGB555,-	pixelFormatBGR555,-	pixelFormatARGB4444,-	pixelFormatRGBA4444,-	pixelFormatABGR4444,-	pixelFormatBGRA4444,-	pixelFormatARGB1555,-	pixelFormatRGBA5551,-	pixelFormatABGR1555,-	pixelFormatBGRA5551,-	pixelFormatRGB565,-	pixelFormatBGR565,-	pixelFormatRGB24,-	pixelFormatBGR24,-	pixelFormatRGB888,-	pixelFormatRGBX8888,-	pixelFormatBGR888,-	pixelFormatBGRX8888,-	pixelFormatARGB8888,-	pixelFormatRGBA8888,-	pixelFormatABGR8888,-	pixelFormatBGRA8888,-	pixelFormatARGB2101010,-	pixelFormatYV12,-	pixelFormatIYUV,-	pixelFormatYUY2,-	pixelFormatUYVY,-	pixelFormatYVYU,--	-- ** Renderer Flags-	rendererFlagSoftware,-	rendererFlagAccelerated,-	rendererFlagPresentVSync,-	rendererFlagTargetTexture,--	-- ** Texture Access-	textureAccessStatic,-	textureAccessStreaming,-	textureAccessTarget,--	-- ** Texture Modulate-	textureModulateNone,-	textureModulateColor,-	textureModulateAlpha,--	-- ** Touch-	touchMouseID,--	-- ** Window Event-	windowEventNone,-	windowEventShown,-	windowEventHidden,-	windowEventExposed,-	windowEventMoved,-	windowEventResized,-	windowEventSizeChanged,-	windowEventMinimized,-	windowEventMaximized,-	windowEventRestored,-	windowEventEnter,-	windowEventLeave,-	windowEventFocusGained,-	windowEventFocusLost,-	windowEventClose,--	-- ** Window Flags-	windowFlagFullscreen,-	windowFlagOpenGL,-	windowFlagShown,-	windowFlagHidden,-	windowFlagBorderless,-	windowFlagResizable,-	windowFlagMinimized,-	windowFlagMaximized,-	windowFlagInputGrabbed,-	windowFlagInputFocus,-	windowFlagMouseFocus,-	windowFlagFullscreenDesktop,-	windowFlagForeign,-	windowFlagAllowHighDPI,--	-- ** Window Positioning-	windowPosUndefined,-	windowPosCentered-) where--#include "SDL.h"--import Graphics.UI.SDL.Enum.Internal--audioStatusStopped :: AudioStatus-audioStatusPlaying :: AudioStatus-audioStatusPaused :: AudioStatus--audioStatusStopped = (#const SDL_AUDIO_STOPPED)-audioStatusPlaying = (#const SDL_AUDIO_PLAYING)-audioStatusPaused = (#const SDL_AUDIO_PAUSED)--blendModeNone :: BlendMode-blendModeBlend :: BlendMode-blendModeAdd :: BlendMode-blendModeMod :: BlendMode--blendModeNone = (#const SDL_BLENDMODE_NONE)-blendModeBlend = (#const SDL_BLENDMODE_BLEND)-blendModeAdd = (#const SDL_BLENDMODE_ADD)-blendModeMod = (#const SDL_BLENDMODE_MOD)--eventActionAddEvent :: EventAction-eventActionPeekEvent :: EventAction-eventActionGetEvent :: EventAction--eventActionAddEvent = (#const SDL_ADDEVENT)-eventActionPeekEvent = (#const SDL_PEEKEVENT)-eventActionGetEvent = (#const SDL_GETEVENT)--gameControllerAxisInvalid :: GameControllerAxis-gameControllerAxisLeftX :: GameControllerAxis-gameControllerAxisLeftY :: GameControllerAxis-gameControllerAxisRightX :: GameControllerAxis-gameControllerAxisRightY :: GameControllerAxis-gameControllerAxisTriggerLeft :: GameControllerAxis-gameControllerAxisTriggerRight :: GameControllerAxis-gameControllerAxisMax :: GameControllerAxis--gameControllerAxisInvalid = (#const SDL_CONTROLLER_AXIS_INVALID)-gameControllerAxisLeftX = (#const SDL_CONTROLLER_AXIS_LEFTX)-gameControllerAxisLeftY = (#const SDL_CONTROLLER_AXIS_LEFTY)-gameControllerAxisRightX = (#const SDL_CONTROLLER_AXIS_RIGHTX)-gameControllerAxisRightY = (#const SDL_CONTROLLER_AXIS_RIGHTY)-gameControllerAxisTriggerLeft = (#const SDL_CONTROLLER_AXIS_TRIGGERLEFT)-gameControllerAxisTriggerRight = (#const SDL_CONTROLLER_AXIS_TRIGGERRIGHT)-gameControllerAxisMax = (#const SDL_CONTROLLER_AXIS_MAX)--gameControllerButtonInvalid :: GameControllerButton-gameControllerButtonA :: GameControllerButton-gameControllerButtonB :: GameControllerButton-gameControllerButtonX :: GameControllerButton-gameControllerButtonY :: GameControllerButton-gameControllerButtonBack :: GameControllerButton-gameControllerButtonGuide :: GameControllerButton-gameControllerButtonStart :: GameControllerButton-gameControllerButtonLeftStick :: GameControllerButton-gameControllerButtonRightStick :: GameControllerButton-gameControllerButtonLeftShoulder :: GameControllerButton-gameControllerButtonRightShoulder :: GameControllerButton-gameControllerButtonDPadUp :: GameControllerButton-gameControllerButtonDPadDown :: GameControllerButton-gameControllerButtonDPadLeft :: GameControllerButton-gameControllerButtonDPadRight :: GameControllerButton-gameControllerButtonMax :: GameControllerButton--gameControllerButtonInvalid = (#const SDL_CONTROLLER_BUTTON_INVALID)-gameControllerButtonA = (#const SDL_CONTROLLER_BUTTON_A)-gameControllerButtonB = (#const SDL_CONTROLLER_BUTTON_B)-gameControllerButtonX = (#const SDL_CONTROLLER_BUTTON_X)-gameControllerButtonY = (#const SDL_CONTROLLER_BUTTON_Y)-gameControllerButtonBack = (#const SDL_CONTROLLER_BUTTON_BACK)-gameControllerButtonGuide = (#const SDL_CONTROLLER_BUTTON_GUIDE)-gameControllerButtonStart = (#const SDL_CONTROLLER_BUTTON_START)-gameControllerButtonLeftStick = (#const SDL_CONTROLLER_BUTTON_LEFTSTICK)-gameControllerButtonRightStick = (#const SDL_CONTROLLER_BUTTON_RIGHTSTICK)-gameControllerButtonLeftShoulder = (#const SDL_CONTROLLER_BUTTON_LEFTSHOULDER)-gameControllerButtonRightShoulder = (#const SDL_CONTROLLER_BUTTON_RIGHTSHOULDER)-gameControllerButtonDPadUp = (#const SDL_CONTROLLER_BUTTON_DPAD_UP)-gameControllerButtonDPadDown = (#const SDL_CONTROLLER_BUTTON_DPAD_DOWN)-gameControllerButtonDPadLeft = (#const SDL_CONTROLLER_BUTTON_DPAD_LEFT)-gameControllerButtonDPadRight = (#const SDL_CONTROLLER_BUTTON_DPAD_RIGHT)-gameControllerButtonMax = (#const SDL_CONTROLLER_BUTTON_MAX)--glAttrRedSize :: GLattr-glAttrGreenSize :: GLattr-glAttrBlueSize :: GLattr-glAttrAlphaSize :: GLattr-glAttrBufferSize :: GLattr-glAttrDoubleBuffer :: GLattr-glAttrDepthSize :: GLattr-glAttrStencilSize :: GLattr-glAttrAccumRedSize :: GLattr-glAttrAccumGreenSize :: GLattr-glAttrAccumBlueSize :: GLattr-glAttrAccumAlphaSize :: GLattr-glAttrStereo :: GLattr-glAttrMultiSampleBuffers :: GLattr-glAttrMultiSampleSamples :: GLattr-glAttrAcceleratedVisual :: GLattr-glAttrRetainedBacking :: GLattr-glAttrContextMajorVersion :: GLattr-glAttrContextMinorVersion :: GLattr-glAttrContextEGL :: GLattr-glAttrContextFlags :: GLattr-glAttrContextProfileMask :: GLattr-glAttrShareWithCurrentContext :: GLattr-glAttrFramebufferSRGBCapable :: GLattr--glAttrRedSize = (#const SDL_GL_RED_SIZE)-glAttrGreenSize = (#const SDL_GL_GREEN_SIZE)-glAttrBlueSize = (#const SDL_GL_BLUE_SIZE)-glAttrAlphaSize = (#const SDL_GL_ALPHA_SIZE)-glAttrBufferSize = (#const SDL_GL_BUFFER_SIZE)-glAttrDoubleBuffer = (#const SDL_GL_DOUBLEBUFFER)-glAttrDepthSize = (#const SDL_GL_DEPTH_SIZE)-glAttrStencilSize = (#const SDL_GL_STENCIL_SIZE)-glAttrAccumRedSize = (#const SDL_GL_ACCUM_RED_SIZE)-glAttrAccumGreenSize = (#const SDL_GL_ACCUM_GREEN_SIZE)-glAttrAccumBlueSize = (#const SDL_GL_ACCUM_BLUE_SIZE)-glAttrAccumAlphaSize = (#const SDL_GL_ACCUM_ALPHA_SIZE)-glAttrStereo = (#const SDL_GL_STEREO)-glAttrMultiSampleBuffers = (#const SDL_GL_MULTISAMPLEBUFFERS)-glAttrMultiSampleSamples = (#const SDL_GL_MULTISAMPLESAMPLES)-glAttrAcceleratedVisual = (#const SDL_GL_ACCELERATED_VISUAL)-glAttrRetainedBacking = (#const SDL_GL_RETAINED_BACKING)-glAttrContextMajorVersion = (#const SDL_GL_CONTEXT_MAJOR_VERSION)-glAttrContextMinorVersion = (#const SDL_GL_CONTEXT_MINOR_VERSION)-glAttrContextEGL = (#const SDL_GL_CONTEXT_EGL)-glAttrContextFlags = (#const SDL_GL_CONTEXT_FLAGS)-glAttrContextProfileMask = (#const SDL_GL_CONTEXT_PROFILE_MASK)-glAttrShareWithCurrentContext = (#const SDL_GL_SHARE_WITH_CURRENT_CONTEXT)-glAttrFramebufferSRGBCapable = (#const SDL_GL_FRAMEBUFFER_SRGB_CAPABLE)--hintPriorityDefault :: HintPriority-hintPriorityNormal :: HintPriority-hintPriorityOverride :: HintPriority--hintPriorityDefault = (#const SDL_HINT_DEFAULT)-hintPriorityNormal = (#const SDL_HINT_NORMAL)-hintPriorityOverride = (#const SDL_HINT_OVERRIDE)--initFlagTimer :: InitFlag-initFlagAudio :: InitFlag-initFlagVideo :: InitFlag-initFlagJoystick :: InitFlag-initFlagHaptic :: InitFlag-initFlagGameController :: InitFlag-initFlagEvents :: InitFlag-initFlagNoParachute :: InitFlag-initFlagEverything :: InitFlag--initFlagTimer = (#const SDL_INIT_TIMER)-initFlagAudio = (#const SDL_INIT_AUDIO)-initFlagVideo = (#const SDL_INIT_VIDEO)-initFlagJoystick = (#const SDL_INIT_JOYSTICK)-initFlagHaptic = (#const SDL_INIT_HAPTIC)-initFlagGameController = (#const SDL_INIT_GAMECONTROLLER)-initFlagEvents = (#const SDL_INIT_EVENTS)-initFlagNoParachute = (#const SDL_INIT_NOPARACHUTE)-initFlagEverything = (#const SDL_INIT_EVERYTHING)--keycodeUnknown :: Keycode-keycodeReturn :: Keycode-keycodeEscape :: Keycode-keycodeBackspace :: Keycode-keycodeTab :: Keycode-keycodeSpace :: Keycode-keycodeExclaim :: Keycode-keycodeQuoteDbl :: Keycode-keycodeHash :: Keycode-keycodePercent :: Keycode-keycodeDollar :: Keycode-keycodeAmpersand :: Keycode-keycodeQuote :: Keycode-keycodeLeftParen :: Keycode-keycodeRightParen :: Keycode-keycodeAsterisk :: Keycode-keycodePlus :: Keycode-keycodeComma :: Keycode-keycodeMinus :: Keycode-keycodePeriod :: Keycode-keycodeSlash :: Keycode-keycode0 :: Keycode-keycode1 :: Keycode-keycode2 :: Keycode-keycode3 :: Keycode-keycode4 :: Keycode-keycode5 :: Keycode-keycode6 :: Keycode-keycode7 :: Keycode-keycode8 :: Keycode-keycode9 :: Keycode-keycodeColon :: Keycode-keycodeSemicolon :: Keycode-keycodeLess :: Keycode-keycodeEquals :: Keycode-keycodeGreater :: Keycode-keycodeQuestion :: Keycode-keycodeAt :: Keycode-keycodeLeftBracket :: Keycode-keycodeBackslash :: Keycode-keycodeRightBracket :: Keycode-keycodeCaret :: Keycode-keycodeUnderscore :: Keycode-keycodeBackquote :: Keycode-keycodeA :: Keycode-keycodeB :: Keycode-keycodeC :: Keycode-keycodeD :: Keycode-keycodeE :: Keycode-keycodeF :: Keycode-keycodeG :: Keycode-keycodeH :: Keycode-keycodeI :: Keycode-keycodeJ :: Keycode-keycodeK :: Keycode-keycodeL :: Keycode-keycodeM :: Keycode-keycodeN :: Keycode-keycodeO :: Keycode-keycodeP :: Keycode-keycodeQ :: Keycode-keycodeR :: Keycode-keycodeS :: Keycode-keycodeT :: Keycode-keycodeU :: Keycode-keycodeV :: Keycode-keycodeW :: Keycode-keycodeX :: Keycode-keycodeY :: Keycode-keycodeZ :: Keycode-keycodeCapsLock :: Keycode-keycodeF1 :: Keycode-keycodeF2 :: Keycode-keycodeF3 :: Keycode-keycodeF4 :: Keycode-keycodeF5 :: Keycode-keycodeF6 :: Keycode-keycodeF7 :: Keycode-keycodeF8 :: Keycode-keycodeF9 :: Keycode-keycodeF10 :: Keycode-keycodeF11 :: Keycode-keycodeF12 :: Keycode-keycodePrintScreen :: Keycode-keycodeScrollLock :: Keycode-keycodePause :: Keycode-keycodeInsert :: Keycode-keycodeHome :: Keycode-keycodePageUp :: Keycode-keycodeDelete :: Keycode-keycodeEnd :: Keycode-keycodePageDown :: Keycode-keycodeRight :: Keycode-keycodeLeft :: Keycode-keycodeDown :: Keycode-keycodeUp :: Keycode-keycodeNumLockClear :: Keycode-keycodeKPDivide :: Keycode-keycodeKPMultiply :: Keycode-keycodeKPMinus :: Keycode-keycodeKPPlus :: Keycode-keycodeKPEnter :: Keycode-keycodeKP1 :: Keycode-keycodeKP2 :: Keycode-keycodeKP3 :: Keycode-keycodeKP4 :: Keycode-keycodeKP5 :: Keycode-keycodeKP6 :: Keycode-keycodeKP7 :: Keycode-keycodeKP8 :: Keycode-keycodeKP9 :: Keycode-keycodeKP0 :: Keycode-keycodeKPPeriod :: Keycode-keycodeApplication :: Keycode-keycodePower :: Keycode-keycodeKPEquals :: Keycode-keycodeF13 :: Keycode-keycodeF14 :: Keycode-keycodeF15 :: Keycode-keycodeF16 :: Keycode-keycodeF17 :: Keycode-keycodeF18 :: Keycode-keycodeF19 :: Keycode-keycodeF20 :: Keycode-keycodeF21 :: Keycode-keycodeF22 :: Keycode-keycodeF23 :: Keycode-keycodeF24 :: Keycode-keycodeExecute :: Keycode-keycodeHelp :: Keycode-keycodeMenu :: Keycode-keycodeSelect :: Keycode-keycodeStop :: Keycode-keycodeAgain :: Keycode-keycodeUndo :: Keycode-keycodeCut :: Keycode-keycodeCopy :: Keycode-keycodePaste :: Keycode-keycodeFind :: Keycode-keycodeMute :: Keycode-keycodeVolumeUp :: Keycode-keycodeVolumeDown :: Keycode-keycodeKPComma :: Keycode-keycodeKPEqualsAS400 :: Keycode-keycodeAltErase :: Keycode-keycodeSysReq :: Keycode-keycodeCancel :: Keycode-keycodeClear :: Keycode-keycodePrior :: Keycode-keycodeReturn2 :: Keycode-keycodeSeparator :: Keycode-keycodeOut :: Keycode-keycodeOper :: Keycode-keycodeClearAgain :: Keycode-keycodeCrSel :: Keycode-keycodeExSel :: Keycode-keycodeKP00 :: Keycode-keycodeKP000 :: Keycode-keycodeThousandsSeparator :: Keycode-keycodeDecimalSeparator :: Keycode-keycodeCurrencyUnit :: Keycode-keycodeCurrencySubunit :: Keycode-keycodeKPLeftParen :: Keycode-keycodeKPRightParen :: Keycode-keycodeKPLeftBrace :: Keycode-keycodeKPRightBrace :: Keycode-keycodeKPTab :: Keycode-keycodeKPBackspace :: Keycode-keycodeKPA :: Keycode-keycodeKPB :: Keycode-keycodeKPC :: Keycode-keycodeKPD :: Keycode-keycodeKPE :: Keycode-keycodeKPF :: Keycode-keycodeKPXor :: Keycode-keycodeKPPower :: Keycode-keycodeKPPercent :: Keycode-keycodeKPLess :: Keycode-keycodeKPGreater :: Keycode-keycodeKPAmpersand :: Keycode-keycodeKPDblAmpersand :: Keycode-keycodeKPVecticalBar :: Keycode-keycodeKPDblVerticalBar :: Keycode-keycodeKPColon :: Keycode-keycodeKPHash :: Keycode-keycodeKPSpace :: Keycode-keycodeKPAt :: Keycode-keycodeKPExclam :: Keycode-keycodeKPMemStore :: Keycode-keycodeKPMemRecall :: Keycode-keycodeKPMemClear :: Keycode-keycodeKPMemAdd :: Keycode-keycodeKPMemSubtract :: Keycode-keycodeKPMemMultiply :: Keycode-keycodeKPMemDivide :: Keycode-keycodeKPPlusMinus :: Keycode-keycodeKPClear :: Keycode-keycodeKPClearEntry :: Keycode-keycodeKPBinary :: Keycode-keycodeKPOctal :: Keycode-keycodeKPDecimal :: Keycode-keycodeKPHexadecimal :: Keycode-keycodeLCtrl :: Keycode-keycodeLShift :: Keycode-keycodeLAlt :: Keycode-keycodeLGUI :: Keycode-keycodeRCtrl :: Keycode-keycodeRShift :: Keycode-keycodeRAlt :: Keycode-keycodeRGUI :: Keycode-keycodeMode :: Keycode-keycodeAudioNext :: Keycode-keycodeAudioPrev :: Keycode-keycodeAudioStop :: Keycode-keycodeAudioPlay :: Keycode-keycodeAudioMute :: Keycode-keycodeMediaSelect :: Keycode-keycodeWWW :: Keycode-keycodeMail :: Keycode-keycodeCalculator :: Keycode-keycodeComputer :: Keycode-keycodeACSearch :: Keycode-keycodeACHome :: Keycode-keycodeACBack :: Keycode-keycodeACForward :: Keycode-keycodeACStop :: Keycode-keycodeACRefresh :: Keycode-keycodeACBookmarks :: Keycode-keycodeBrightnessDown :: Keycode-keycodeBrightnessUp :: Keycode-keycodeDisplaySwitch :: Keycode-keycodeKbdIllumToggle :: Keycode-keycodeKbdIllumDown :: Keycode-keycodeKbdIllumUp :: Keycode-keycodeEject :: Keycode-keycodeSleep :: Keycode--keycodeUnknown = (#const SDLK_UNKNOWN)-keycodeReturn = (#const SDLK_RETURN)-keycodeEscape = (#const SDLK_ESCAPE)-keycodeBackspace = (#const SDLK_BACKSPACE)-keycodeTab = (#const SDLK_TAB)-keycodeSpace = (#const SDLK_SPACE)-keycodeExclaim = (#const SDLK_EXCLAIM)-keycodeQuoteDbl = (#const SDLK_QUOTEDBL)-keycodeHash = (#const SDLK_HASH)-keycodePercent = (#const SDLK_PERCENT)-keycodeDollar = (#const SDLK_DOLLAR)-keycodeAmpersand = (#const SDLK_AMPERSAND)-keycodeQuote = (#const SDLK_QUOTE)-keycodeLeftParen = (#const SDLK_LEFTPAREN)-keycodeRightParen = (#const SDLK_RIGHTPAREN)-keycodeAsterisk = (#const SDLK_ASTERISK)-keycodePlus = (#const SDLK_PLUS)-keycodeComma = (#const SDLK_COMMA)-keycodeMinus = (#const SDLK_MINUS)-keycodePeriod = (#const SDLK_PERIOD)-keycodeSlash = (#const SDLK_SLASH)-keycode0 = (#const SDLK_0)-keycode1 = (#const SDLK_1)-keycode2 = (#const SDLK_2)-keycode3 = (#const SDLK_3)-keycode4 = (#const SDLK_4)-keycode5 = (#const SDLK_5)-keycode6 = (#const SDLK_6)-keycode7 = (#const SDLK_7)-keycode8 = (#const SDLK_8)-keycode9 = (#const SDLK_9)-keycodeColon = (#const SDLK_COLON)-keycodeSemicolon = (#const SDLK_SEMICOLON)-keycodeLess = (#const SDLK_LESS)-keycodeEquals = (#const SDLK_EQUALS)-keycodeGreater = (#const SDLK_GREATER)-keycodeQuestion = (#const SDLK_QUESTION)-keycodeAt = (#const SDLK_AT)-keycodeLeftBracket = (#const SDLK_LEFTBRACKET)-keycodeBackslash = (#const SDLK_BACKSLASH)-keycodeRightBracket = (#const SDLK_RIGHTBRACKET)-keycodeCaret = (#const SDLK_CARET)-keycodeUnderscore = (#const SDLK_UNDERSCORE)-keycodeBackquote = (#const SDLK_BACKQUOTE)-keycodeA = (#const SDLK_a)-keycodeB = (#const SDLK_b)-keycodeC = (#const SDLK_c)-keycodeD = (#const SDLK_d)-keycodeE = (#const SDLK_e)-keycodeF = (#const SDLK_f)-keycodeG = (#const SDLK_g)-keycodeH = (#const SDLK_h)-keycodeI = (#const SDLK_i)-keycodeJ = (#const SDLK_j)-keycodeK = (#const SDLK_k)-keycodeL = (#const SDLK_l)-keycodeM = (#const SDLK_m)-keycodeN = (#const SDLK_n)-keycodeO = (#const SDLK_o)-keycodeP = (#const SDLK_p)-keycodeQ = (#const SDLK_q)-keycodeR = (#const SDLK_r)-keycodeS = (#const SDLK_s)-keycodeT = (#const SDLK_t)-keycodeU = (#const SDLK_u)-keycodeV = (#const SDLK_v)-keycodeW = (#const SDLK_w)-keycodeX = (#const SDLK_x)-keycodeY = (#const SDLK_y)-keycodeZ = (#const SDLK_z)-keycodeCapsLock = (#const SDLK_CAPSLOCK)-keycodeF1 = (#const SDLK_F1)-keycodeF2 = (#const SDLK_F2)-keycodeF3 = (#const SDLK_F3)-keycodeF4 = (#const SDLK_F4)-keycodeF5 = (#const SDLK_F5)-keycodeF6 = (#const SDLK_F6)-keycodeF7 = (#const SDLK_F7)-keycodeF8 = (#const SDLK_F8)-keycodeF9 = (#const SDLK_F9)-keycodeF10 = (#const SDLK_F10)-keycodeF11 = (#const SDLK_F11)-keycodeF12 = (#const SDLK_F12)-keycodePrintScreen = (#const SDLK_PRINTSCREEN)-keycodeScrollLock = (#const SDLK_SCROLLLOCK)-keycodePause = (#const SDLK_PAUSE)-keycodeInsert = (#const SDLK_INSERT)-keycodeHome = (#const SDLK_HOME)-keycodePageUp = (#const SDLK_PAGEUP)-keycodeDelete = (#const SDLK_DELETE)-keycodeEnd = (#const SDLK_END)-keycodePageDown = (#const SDLK_PAGEDOWN)-keycodeRight = (#const SDLK_RIGHT)-keycodeLeft = (#const SDLK_LEFT)-keycodeDown = (#const SDLK_DOWN)-keycodeUp = (#const SDLK_UP)-keycodeNumLockClear = (#const SDLK_NUMLOCKCLEAR)-keycodeKPDivide = (#const SDLK_KP_DIVIDE)-keycodeKPMultiply = (#const SDLK_KP_MULTIPLY)-keycodeKPMinus = (#const SDLK_KP_MINUS)-keycodeKPPlus = (#const SDLK_KP_PLUS)-keycodeKPEnter = (#const SDLK_KP_ENTER)-keycodeKP1 = (#const SDLK_KP_1)-keycodeKP2 = (#const SDLK_KP_2)-keycodeKP3 = (#const SDLK_KP_3)-keycodeKP4 = (#const SDLK_KP_4)-keycodeKP5 = (#const SDLK_KP_5)-keycodeKP6 = (#const SDLK_KP_6)-keycodeKP7 = (#const SDLK_KP_7)-keycodeKP8 = (#const SDLK_KP_8)-keycodeKP9 = (#const SDLK_KP_9)-keycodeKP0 = (#const SDLK_KP_0)-keycodeKPPeriod = (#const SDLK_KP_PERIOD)-keycodeApplication = (#const SDLK_APPLICATION)-keycodePower = (#const SDLK_POWER)-keycodeKPEquals = (#const SDLK_KP_EQUALS)-keycodeF13 = (#const SDLK_F13)-keycodeF14 = (#const SDLK_F14)-keycodeF15 = (#const SDLK_F15)-keycodeF16 = (#const SDLK_F16)-keycodeF17 = (#const SDLK_F17)-keycodeF18 = (#const SDLK_F18)-keycodeF19 = (#const SDLK_F19)-keycodeF20 = (#const SDLK_F20)-keycodeF21 = (#const SDLK_F21)-keycodeF22 = (#const SDLK_F22)-keycodeF23 = (#const SDLK_F23)-keycodeF24 = (#const SDLK_F24)-keycodeExecute = (#const SDLK_EXECUTE)-keycodeHelp = (#const SDLK_HELP)-keycodeMenu = (#const SDLK_MENU)-keycodeSelect = (#const SDLK_SELECT)-keycodeStop = (#const SDLK_STOP)-keycodeAgain = (#const SDLK_AGAIN)-keycodeUndo = (#const SDLK_UNDO)-keycodeCut = (#const SDLK_CUT)-keycodeCopy = (#const SDLK_COPY)-keycodePaste = (#const SDLK_PASTE)-keycodeFind = (#const SDLK_FIND)-keycodeMute = (#const SDLK_MUTE)-keycodeVolumeUp = (#const SDLK_VOLUMEUP)-keycodeVolumeDown = (#const SDLK_VOLUMEDOWN)-keycodeKPComma = (#const SDLK_KP_COMMA)-keycodeKPEqualsAS400 = (#const SDLK_KP_EQUALSAS400)-keycodeAltErase = (#const SDLK_ALTERASE)-keycodeSysReq = (#const SDLK_SYSREQ)-keycodeCancel = (#const SDLK_CANCEL)-keycodeClear = (#const SDLK_CLEAR)-keycodePrior = (#const SDLK_PRIOR)-keycodeReturn2 = (#const SDLK_RETURN2)-keycodeSeparator = (#const SDLK_SEPARATOR)-keycodeOut = (#const SDLK_OUT)-keycodeOper = (#const SDLK_OPER)-keycodeClearAgain = (#const SDLK_CLEARAGAIN)-keycodeCrSel = (#const SDLK_CRSEL)-keycodeExSel = (#const SDLK_EXSEL)-keycodeKP00 = (#const SDLK_KP_00)-keycodeKP000 = (#const SDLK_KP_000)-keycodeThousandsSeparator = (#const SDLK_THOUSANDSSEPARATOR)-keycodeDecimalSeparator = (#const SDLK_DECIMALSEPARATOR)-keycodeCurrencyUnit = (#const SDLK_CURRENCYUNIT)-keycodeCurrencySubunit = (#const SDLK_CURRENCYSUBUNIT)-keycodeKPLeftParen = (#const SDLK_KP_LEFTPAREN)-keycodeKPRightParen = (#const SDLK_KP_RIGHTPAREN)-keycodeKPLeftBrace = (#const SDLK_KP_LEFTBRACE)-keycodeKPRightBrace = (#const SDLK_KP_RIGHTBRACE)-keycodeKPTab = (#const SDLK_KP_TAB)-keycodeKPBackspace = (#const SDLK_KP_BACKSPACE)-keycodeKPA = (#const SDLK_KP_A)-keycodeKPB = (#const SDLK_KP_B)-keycodeKPC = (#const SDLK_KP_C)-keycodeKPD = (#const SDLK_KP_D)-keycodeKPE = (#const SDLK_KP_E)-keycodeKPF = (#const SDLK_KP_F)-keycodeKPXor = (#const SDLK_KP_XOR)-keycodeKPPower = (#const SDLK_KP_POWER)-keycodeKPPercent = (#const SDLK_KP_PERCENT)-keycodeKPLess = (#const SDLK_KP_LESS)-keycodeKPGreater = (#const SDLK_KP_GREATER)-keycodeKPAmpersand = (#const SDLK_KP_AMPERSAND)-keycodeKPDblAmpersand = (#const SDLK_KP_DBLAMPERSAND)-keycodeKPVecticalBar = (#const SDLK_KP_VERTICALBAR)-keycodeKPDblVerticalBar = (#const SDLK_KP_DBLVERTICALBAR)-keycodeKPColon = (#const SDLK_KP_COLON)-keycodeKPHash = (#const SDLK_KP_HASH)-keycodeKPSpace = (#const SDLK_KP_SPACE)-keycodeKPAt = (#const SDLK_KP_AT)-keycodeKPExclam = (#const SDLK_KP_EXCLAM)-keycodeKPMemStore = (#const SDLK_KP_MEMSTORE)-keycodeKPMemRecall = (#const SDLK_KP_MEMRECALL)-keycodeKPMemClear = (#const SDLK_KP_MEMCLEAR)-keycodeKPMemAdd = (#const SDLK_KP_MEMADD)-keycodeKPMemSubtract = (#const SDLK_KP_MEMSUBTRACT)-keycodeKPMemMultiply = (#const SDLK_KP_MEMMULTIPLY)-keycodeKPMemDivide = (#const SDLK_KP_MEMDIVIDE)-keycodeKPPlusMinus = (#const SDLK_KP_PLUSMINUS)-keycodeKPClear = (#const SDLK_KP_CLEAR)-keycodeKPClearEntry = (#const SDLK_KP_CLEARENTRY)-keycodeKPBinary = (#const SDLK_KP_BINARY)-keycodeKPOctal = (#const SDLK_KP_OCTAL)-keycodeKPDecimal = (#const SDLK_KP_DECIMAL)-keycodeKPHexadecimal = (#const SDLK_KP_HEXADECIMAL)-keycodeLCtrl = (#const SDLK_LCTRL)-keycodeLShift = (#const SDLK_LSHIFT)-keycodeLAlt = (#const SDLK_LALT)-keycodeLGUI = (#const SDLK_LGUI)-keycodeRCtrl = (#const SDLK_RCTRL)-keycodeRShift = (#const SDLK_RSHIFT)-keycodeRAlt = (#const SDLK_RALT)-keycodeRGUI = (#const SDLK_RGUI)-keycodeMode = (#const SDLK_MODE)-keycodeAudioNext = (#const SDLK_AUDIONEXT)-keycodeAudioPrev = (#const SDLK_AUDIONEXT)-keycodeAudioStop = (#const SDLK_AUDIOSTOP)-keycodeAudioPlay = (#const SDLK_AUDIOPLAY)-keycodeAudioMute = (#const SDLK_AUDIOMUTE)-keycodeMediaSelect = (#const SDLK_MEDIASELECT)-keycodeWWW = (#const SDLK_WWW)-keycodeMail = (#const SDLK_MAIL)-keycodeCalculator = (#const SDLK_CALCULATOR)-keycodeComputer = (#const SDLK_COMPUTER)-keycodeACSearch = (#const SDLK_AC_SEARCH)-keycodeACHome = (#const SDLK_AC_HOME)-keycodeACBack = (#const SDLK_AC_BACK)-keycodeACForward = (#const SDLK_AC_FORWARD)-keycodeACStop = (#const SDLK_AC_STOP)-keycodeACRefresh = (#const SDLK_AC_REFRESH)-keycodeACBookmarks = (#const SDLK_AC_BOOKMARKS)-keycodeBrightnessDown = (#const SDLK_BRIGHTNESSDOWN)-keycodeBrightnessUp = (#const SDLK_BRIGHTNESSUP)-keycodeDisplaySwitch = (#const SDLK_DISPLAYSWITCH)-keycodeKbdIllumToggle = (#const SDLK_KBDILLUMTOGGLE)-keycodeKbdIllumDown = (#const SDLK_KBDILLUMDOWN)-keycodeKbdIllumUp = (#const SDLK_KBDILLUMUP)-keycodeEject = (#const SDLK_EJECT)-keycodeSleep = (#const SDLK_SLEEP)--keymodNone :: Num a => a-keymodLShift :: Num a => a-keymodRShift :: Num a => a-keymodShift :: Num a => a-keymodLCtrl :: Num a => a-keymodRCtrl :: Num a => a-keymodCtrl :: Num a => a-keymodLAlt :: Num a => a-keymodRAlt :: Num a => a-keymodAlt :: Num a => a-keymodLGUI :: Num a => a-keymodRGUI :: Num a => a-keymodGUI :: Num a => a-keymodNum :: Num a => a-keymodCaps :: Num a => a-keymodMode :: Num a => a-keymodReserved :: Num a => a--keymodNone = (#const KMOD_NONE)-keymodLShift = (#const KMOD_LSHIFT)-keymodRShift = (#const KMOD_RSHIFT)-keymodShift = (#const KMOD_SHIFT)-keymodLCtrl = (#const KMOD_LCTRL)-keymodRCtrl = (#const KMOD_RCTRL)-keymodCtrl = (#const KMOD_CTRL)-keymodLAlt = (#const KMOD_LALT)-keymodRAlt = (#const KMOD_RALT)-keymodAlt = (#const KMOD_ALT)-keymodLGUI = (#const KMOD_LGUI)-keymodRGUI = (#const KMOD_RGUI)-keymodGUI = (#const KMOD_GUI)-keymodNum = (#const KMOD_NUM)-keymodCaps = (#const KMOD_CAPS)-keymodMode = (#const KMOD_MODE)-keymodReserved = (#const KMOD_RESERVED)--logPriorityVerbose :: LogPriority-logPriorityDebug :: LogPriority-logPriorityInfo :: LogPriority-logPriorityWarn :: LogPriority-logPriorityError :: LogPriority-logPriorityCritical :: LogPriority-logPriorityPriorities :: LogPriority--logPriorityVerbose = (#const SDL_LOG_PRIORITY_VERBOSE)-logPriorityDebug = (#const SDL_LOG_PRIORITY_DEBUG)-logPriorityInfo = (#const SDL_LOG_PRIORITY_INFO)-logPriorityWarn = (#const SDL_LOG_PRIORITY_WARN)-logPriorityError = (#const SDL_LOG_PRIORITY_ERROR)-logPriorityCritical = (#const SDL_LOG_PRIORITY_CRITICAL)-logPriorityPriorities = (#const SDL_NUM_LOG_PRIORITIES)--powerStateUnknown :: PowerState-powerStateOnBattery :: PowerState-powerStateNoBattery :: PowerState-powerStateCharging :: PowerState-powerStateCharged :: PowerState--powerStateUnknown = (#const SDL_POWERSTATE_UNKNOWN)-powerStateOnBattery = (#const SDL_POWERSTATE_ON_BATTERY)-powerStateNoBattery = (#const SDL_POWERSTATE_NO_BATTERY)-powerStateCharging = (#const SDL_POWERSTATE_CHARGING)-powerStateCharged = (#const SDL_POWERSTATE_CHARGED)--rendererFlipNone :: RendererFlip-rendererFlipHorizontal :: RendererFlip-rendererFlipVertical :: RendererFlip--rendererFlipNone = (#const SDL_FLIP_NONE)-rendererFlipHorizontal = (#const SDL_FLIP_HORIZONTAL)-rendererFlipVertical = (#const SDL_FLIP_VERTICAL)--scancodeUnknown :: Scancode-scancodeA :: Scancode-scancodeB :: Scancode-scancodeC :: Scancode-scancodeD :: Scancode-scancodeE :: Scancode-scancodeF :: Scancode-scancodeG :: Scancode-scancodeH :: Scancode-scancodeI :: Scancode-scancodeJ :: Scancode-scancodeK :: Scancode-scancodeL :: Scancode-scancodeM :: Scancode-scancodeN :: Scancode-scancodeO :: Scancode-scancodeP :: Scancode-scancodeQ :: Scancode-scancodeR :: Scancode-scancodeS :: Scancode-scancodeT :: Scancode-scancodeU :: Scancode-scancodeV :: Scancode-scancodeW :: Scancode-scancodeX :: Scancode-scancodeY :: Scancode-scancodeZ :: Scancode-scancode1 :: Scancode-scancode2 :: Scancode-scancode3 :: Scancode-scancode4 :: Scancode-scancode5 :: Scancode-scancode6 :: Scancode-scancode7 :: Scancode-scancode8 :: Scancode-scancode9 :: Scancode-scancode0 :: Scancode-scancodeReturn :: Scancode-scancodeEscape :: Scancode-scancodeBackspace :: Scancode-scancodeTab :: Scancode-scancodeSpace :: Scancode-scancodeMinus :: Scancode-scancodeEquals :: Scancode-scancodeLeftBracket :: Scancode-scancodeRightBracket :: Scancode-scancodeBackslash :: Scancode-scancodeNonUSHash :: Scancode-scancodeSemicolon :: Scancode-scancodeApostrophe :: Scancode-scancodeGrave :: Scancode-scancodeComma :: Scancode-scancodePeriod :: Scancode-scancodeSlash :: Scancode-scancodeCapsLock :: Scancode-scancodeF1 :: Scancode-scancodeF2 :: Scancode-scancodeF3 :: Scancode-scancodeF4 :: Scancode-scancodeF5 :: Scancode-scancodeF6 :: Scancode-scancodeF7 :: Scancode-scancodeF8 :: Scancode-scancodeF9 :: Scancode-scancodeF10 :: Scancode-scancodeF11 :: Scancode-scancodeF12 :: Scancode-scancodePrintScreen :: Scancode-scancodeScrollLock :: Scancode-scancodePause :: Scancode-scancodeInsert :: Scancode-scancodeHome :: Scancode-scancodePageUp :: Scancode-scancodeDelete :: Scancode-scancodeEnd :: Scancode-scancodePageDown :: Scancode-scancodeRight :: Scancode-scancodeLeft :: Scancode-scancodeDown :: Scancode-scancodeUp :: Scancode-scancodeNumLockClear :: Scancode-scancodeKPDivide :: Scancode-scancodeKPMultiply :: Scancode-scancodeKPMinus :: Scancode-scancodeKPPlus :: Scancode-scancodeKPEnter :: Scancode-scancodeKP1 :: Scancode-scancodeKP2 :: Scancode-scancodeKP3 :: Scancode-scancodeKP4 :: Scancode-scancodeKP5 :: Scancode-scancodeKP6 :: Scancode-scancodeKP7 :: Scancode-scancodeKP8 :: Scancode-scancodeKP9 :: Scancode-scancodeKP0 :: Scancode-scancodeKPPeriod :: Scancode-scancodeNonUSBackslash :: Scancode-scancodeApplication :: Scancode-scancodePower :: Scancode-scancodeKPEquals :: Scancode-scancodeF13 :: Scancode-scancodeF14 :: Scancode-scancodeF15 :: Scancode-scancodeF16 :: Scancode-scancodeF17 :: Scancode-scancodeF18 :: Scancode-scancodeF19 :: Scancode-scancodeF20 :: Scancode-scancodeF21 :: Scancode-scancodeF22 :: Scancode-scancodeF23 :: Scancode-scancodeF24 :: Scancode-scancodeExecute :: Scancode-scancodeHelp :: Scancode-scancodeMenu :: Scancode-scancodeSelect :: Scancode-scancodeStop :: Scancode-scancodeAgain :: Scancode-scancodeUndo :: Scancode-scancodeCut :: Scancode-scancodeCopy :: Scancode-scancodePaste :: Scancode-scancodeFind :: Scancode-scancodeMute :: Scancode-scancodeVolumeUp :: Scancode-scancodeVolumeDown :: Scancode-scancodeKPComma :: Scancode-scancodeEqualsAs400 :: Scancode-scancodeInternational1 :: Scancode-scancodeInternational2 :: Scancode-scancodeInternational3 :: Scancode-scancodeInternational4 :: Scancode-scancodeInternational5 :: Scancode-scancodeInternational6 :: Scancode-scancodeInternational7 :: Scancode-scancodeInternational8 :: Scancode-scancodeInternational9 :: Scancode-scancodeLang1 :: Scancode-scancodeLang2 :: Scancode-scancodeLang3 :: Scancode-scancodeLang4 :: Scancode-scancodeLang5 :: Scancode-scancodeLang6 :: Scancode-scancodeLang7 :: Scancode-scancodeLang8 :: Scancode-scancodeLang9 :: Scancode-scancodeAltErase :: Scancode-scancodeSysReq :: Scancode-scancodeCancel :: Scancode-scancodeClear :: Scancode-scancodePrior :: Scancode-scancodeReturn2 :: Scancode-scancodeSeparator :: Scancode-scancodeOut :: Scancode-scancodeOper :: Scancode-scancodeClearAgain :: Scancode-scancodeCrSel :: Scancode-scancodeExSel :: Scancode-scancodeKP00 :: Scancode-scancodeKP000 :: Scancode-scancodeThousandsSeparator :: Scancode-scancodeDecimalSeparator :: Scancode-scancodeCurrencyUnit :: Scancode-scancodeCurrencySubunit :: Scancode-scancodeLeftParen :: Scancode-scancodeRightParen :: Scancode-scancodeLeftBrace :: Scancode-scancodeRightBrace :: Scancode-scancodeKPTab :: Scancode-scancodeKPBackspace :: Scancode-scancodeKPA :: Scancode-scancodeKPB :: Scancode-scancodeKPC :: Scancode-scancodeKPD :: Scancode-scancodeKPE :: Scancode-scancodeKPF :: Scancode-scancodeKPXOR :: Scancode-scancodeKPPower :: Scancode-scancodeKPPercent :: Scancode-scancodeKPLess :: Scancode-scancodeKPGreater :: Scancode-scancodeKPAmpersand :: Scancode-scancodeKPDBLAmpersand :: Scancode-scancodeKPVerticalBar :: Scancode-scancodeKPDBLVerticalBar :: Scancode-scancodeKPColon :: Scancode-scancodeKPHash :: Scancode-scancodeKPSpace :: Scancode-scancodeKPAt :: Scancode-scancodeKPExclam :: Scancode-scancodeKPMemStore :: Scancode-scancodeKPMemRecall :: Scancode-scancodeKPMemClear :: Scancode-scancodeKPMemAdd :: Scancode-scancodeKPMemSubtract :: Scancode-scancodeKPMemMultiply :: Scancode-scancodeKPMemDivide :: Scancode-scancodeKPPlusMinus :: Scancode-scancodeKPClear :: Scancode-scancodeKPClearEntry :: Scancode-scancodeKPBinary :: Scancode-scancodeKPOctal :: Scancode-scancodeKPDecimal :: Scancode-scancodeKPHexadecimal :: Scancode-scancodeLCtrl :: Scancode-scancodeLShift :: Scancode-scancodeLAlt :: Scancode-scancodeLGUI :: Scancode-scancodeRCtrl :: Scancode-scancodeRShift :: Scancode-scancodeRAlt :: Scancode-scancodeRGUI :: Scancode-scancodeMode :: Scancode-scancodeAudioNext :: Scancode-scancodeAudioPrev :: Scancode-scancodeAudioStop :: Scancode-scancodeAudioPlay :: Scancode-scancodeAudioMute :: Scancode-scancodeMediaSelect :: Scancode-scancodeWWW :: Scancode-scancodeMail :: Scancode-scancodeCalculator :: Scancode-scancodeComputer :: Scancode-scancodeACSearch :: Scancode-scancodeACHome :: Scancode-scancodeACBack :: Scancode-scancodeACForward :: Scancode-scancodeACStop :: Scancode-scancodeACRefresh :: Scancode-scancodeACBookmarks :: Scancode-scancodeBrightnessDown :: Scancode-scancodeBrightnessUp :: Scancode-scancodeDisplaySwitch :: Scancode-scancodeKBDIllumToggle :: Scancode-scancodeKBDIllumDown :: Scancode-scancodeKBDIllumUp :: Scancode-scancodeEject :: Scancode-scancodeSleep :: Scancode-scancodeApp1 :: Scancode-scancodeApp2 :: Scancode-scancodeNum :: Scancode--scancodeUnknown = (#const SDL_SCANCODE_UNKNOWN)-scancodeA = (#const SDL_SCANCODE_A)-scancodeB = (#const SDL_SCANCODE_B)-scancodeC = (#const SDL_SCANCODE_C)-scancodeD = (#const SDL_SCANCODE_D)-scancodeE = (#const SDL_SCANCODE_E)-scancodeF = (#const SDL_SCANCODE_F)-scancodeG = (#const SDL_SCANCODE_G)-scancodeH = (#const SDL_SCANCODE_H)-scancodeI = (#const SDL_SCANCODE_I)-scancodeJ = (#const SDL_SCANCODE_J)-scancodeK = (#const SDL_SCANCODE_K)-scancodeL = (#const SDL_SCANCODE_L)-scancodeM = (#const SDL_SCANCODE_M)-scancodeN = (#const SDL_SCANCODE_N)-scancodeO = (#const SDL_SCANCODE_O)-scancodeP = (#const SDL_SCANCODE_P)-scancodeQ = (#const SDL_SCANCODE_Q)-scancodeR = (#const SDL_SCANCODE_R)-scancodeS = (#const SDL_SCANCODE_S)-scancodeT = (#const SDL_SCANCODE_T)-scancodeU = (#const SDL_SCANCODE_U)-scancodeV = (#const SDL_SCANCODE_V)-scancodeW = (#const SDL_SCANCODE_W)-scancodeX = (#const SDL_SCANCODE_X)-scancodeY = (#const SDL_SCANCODE_Y)-scancodeZ = (#const SDL_SCANCODE_Z)-scancode1 = (#const SDL_SCANCODE_1)-scancode2 = (#const SDL_SCANCODE_2)-scancode3 = (#const SDL_SCANCODE_3)-scancode4 = (#const SDL_SCANCODE_4)-scancode5 = (#const SDL_SCANCODE_5)-scancode6 = (#const SDL_SCANCODE_6)-scancode7 = (#const SDL_SCANCODE_7)-scancode8 = (#const SDL_SCANCODE_8)-scancode9 = (#const SDL_SCANCODE_9)-scancode0 = (#const SDL_SCANCODE_0)-scancodeReturn = (#const SDL_SCANCODE_RETURN)-scancodeEscape = (#const SDL_SCANCODE_ESCAPE)-scancodeBackspace = (#const SDL_SCANCODE_BACKSPACE)-scancodeTab = (#const SDL_SCANCODE_TAB)-scancodeSpace = (#const SDL_SCANCODE_SPACE)-scancodeMinus = (#const SDL_SCANCODE_MINUS)-scancodeEquals = (#const SDL_SCANCODE_EQUALS)-scancodeLeftBracket = (#const SDL_SCANCODE_LEFTBRACKET)-scancodeRightBracket = (#const SDL_SCANCODE_RIGHTBRACKET)-scancodeBackslash = (#const SDL_SCANCODE_BACKSLASH)-scancodeNonUSHash = (#const SDL_SCANCODE_NONUSHASH)-scancodeSemicolon = (#const SDL_SCANCODE_SEMICOLON)-scancodeApostrophe = (#const SDL_SCANCODE_APOSTROPHE)-scancodeGrave = (#const SDL_SCANCODE_GRAVE)-scancodeComma = (#const SDL_SCANCODE_COMMA)-scancodePeriod = (#const SDL_SCANCODE_PERIOD)-scancodeSlash = (#const SDL_SCANCODE_SLASH)-scancodeCapsLock = (#const SDL_SCANCODE_CAPSLOCK)-scancodeF1 = (#const SDL_SCANCODE_F1)-scancodeF2 = (#const SDL_SCANCODE_F2)-scancodeF3 = (#const SDL_SCANCODE_F3)-scancodeF4 = (#const SDL_SCANCODE_F4)-scancodeF5 = (#const SDL_SCANCODE_F5)-scancodeF6 = (#const SDL_SCANCODE_F6)-scancodeF7 = (#const SDL_SCANCODE_F7)-scancodeF8 = (#const SDL_SCANCODE_F8)-scancodeF9 = (#const SDL_SCANCODE_F9)-scancodeF10 = (#const SDL_SCANCODE_F10)-scancodeF11 = (#const SDL_SCANCODE_F11)-scancodeF12 = (#const SDL_SCANCODE_F12)-scancodePrintScreen = (#const SDL_SCANCODE_PRINTSCREEN)-scancodeScrollLock = (#const SDL_SCANCODE_SCROLLLOCK)-scancodePause = (#const SDL_SCANCODE_PAUSE)-scancodeInsert = (#const SDL_SCANCODE_INSERT)-scancodeHome = (#const SDL_SCANCODE_HOME)-scancodePageUp = (#const SDL_SCANCODE_PAGEUP)-scancodeDelete = (#const SDL_SCANCODE_DELETE)-scancodeEnd = (#const SDL_SCANCODE_END)-scancodePageDown = (#const SDL_SCANCODE_PAGEDOWN)-scancodeRight = (#const SDL_SCANCODE_RIGHT)-scancodeLeft = (#const SDL_SCANCODE_LEFT)-scancodeDown = (#const SDL_SCANCODE_DOWN)-scancodeUp = (#const SDL_SCANCODE_UP)-scancodeNumLockClear = (#const SDL_SCANCODE_NUMLOCKCLEAR)-scancodeKPDivide = (#const SDL_SCANCODE_KP_DIVIDE)-scancodeKPMultiply = (#const SDL_SCANCODE_KP_MULTIPLY)-scancodeKPMinus = (#const SDL_SCANCODE_KP_MINUS)-scancodeKPPlus = (#const SDL_SCANCODE_KP_PLUS)-scancodeKPEnter = (#const SDL_SCANCODE_KP_ENTER)-scancodeKP1 = (#const SDL_SCANCODE_KP_1)-scancodeKP2 = (#const SDL_SCANCODE_KP_2)-scancodeKP3 = (#const SDL_SCANCODE_KP_3)-scancodeKP4 = (#const SDL_SCANCODE_KP_4)-scancodeKP5 = (#const SDL_SCANCODE_KP_5)-scancodeKP6 = (#const SDL_SCANCODE_KP_6)-scancodeKP7 = (#const SDL_SCANCODE_KP_7)-scancodeKP8 = (#const SDL_SCANCODE_KP_8)-scancodeKP9 = (#const SDL_SCANCODE_KP_9)-scancodeKP0 = (#const SDL_SCANCODE_KP_0)-scancodeKPPeriod = (#const SDL_SCANCODE_KP_PERIOD)-scancodeNonUSBackslash = (#const SDL_SCANCODE_NONUSBACKSLASH)-scancodeApplication = (#const SDL_SCANCODE_APPLICATION)-scancodePower = (#const SDL_SCANCODE_POWER)-scancodeKPEquals = (#const SDL_SCANCODE_KP_EQUALS)-scancodeF13 = (#const SDL_SCANCODE_F13)-scancodeF14 = (#const SDL_SCANCODE_F14)-scancodeF15 = (#const SDL_SCANCODE_F15)-scancodeF16 = (#const SDL_SCANCODE_F16)-scancodeF17 = (#const SDL_SCANCODE_F17)-scancodeF18 = (#const SDL_SCANCODE_F18)-scancodeF19 = (#const SDL_SCANCODE_F19)-scancodeF20 = (#const SDL_SCANCODE_F20)-scancodeF21 = (#const SDL_SCANCODE_F21)-scancodeF22 = (#const SDL_SCANCODE_F22)-scancodeF23 = (#const SDL_SCANCODE_F23)-scancodeF24 = (#const SDL_SCANCODE_F24)-scancodeExecute = (#const SDL_SCANCODE_EXECUTE)-scancodeHelp = (#const SDL_SCANCODE_HELP)-scancodeMenu = (#const SDL_SCANCODE_MENU)-scancodeSelect = (#const SDL_SCANCODE_SELECT)-scancodeStop = (#const SDL_SCANCODE_STOP)-scancodeAgain = (#const SDL_SCANCODE_AGAIN)-scancodeUndo = (#const SDL_SCANCODE_UNDO)-scancodeCut = (#const SDL_SCANCODE_CUT)-scancodeCopy = (#const SDL_SCANCODE_COPY)-scancodePaste = (#const SDL_SCANCODE_PASTE)-scancodeFind = (#const SDL_SCANCODE_FIND)-scancodeMute = (#const SDL_SCANCODE_MUTE)-scancodeVolumeUp = (#const SDL_SCANCODE_VOLUMEUP)-scancodeVolumeDown = (#const SDL_SCANCODE_VOLUMEDOWN)-scancodeKPComma = (#const SDL_SCANCODE_KP_COMMA)-scancodeEqualsAs400 = (#const SDL_SCANCODE_KP_EQUALSAS400)-scancodeInternational1 = (#const SDL_SCANCODE_INTERNATIONAL1)-scancodeInternational2 = (#const SDL_SCANCODE_INTERNATIONAL2)-scancodeInternational3 = (#const SDL_SCANCODE_INTERNATIONAL3)-scancodeInternational4 = (#const SDL_SCANCODE_INTERNATIONAL4)-scancodeInternational5 = (#const SDL_SCANCODE_INTERNATIONAL5)-scancodeInternational6 = (#const SDL_SCANCODE_INTERNATIONAL6)-scancodeInternational7 = (#const SDL_SCANCODE_INTERNATIONAL7)-scancodeInternational8 = (#const SDL_SCANCODE_INTERNATIONAL8)-scancodeInternational9 = (#const SDL_SCANCODE_INTERNATIONAL9)-scancodeLang1 = (#const SDL_SCANCODE_LANG1)-scancodeLang2 = (#const SDL_SCANCODE_LANG2)-scancodeLang3 = (#const SDL_SCANCODE_LANG3)-scancodeLang4 = (#const SDL_SCANCODE_LANG4)-scancodeLang5 = (#const SDL_SCANCODE_LANG5)-scancodeLang6 = (#const SDL_SCANCODE_LANG6)-scancodeLang7 = (#const SDL_SCANCODE_LANG7)-scancodeLang8 = (#const SDL_SCANCODE_LANG8)-scancodeLang9 = (#const SDL_SCANCODE_LANG9)-scancodeAltErase = (#const SDL_SCANCODE_ALTERASE)-scancodeSysReq = (#const SDL_SCANCODE_SYSREQ)-scancodeCancel = (#const SDL_SCANCODE_CANCEL)-scancodeClear = (#const SDL_SCANCODE_CLEAR)-scancodePrior = (#const SDL_SCANCODE_PRIOR)-scancodeReturn2 = (#const SDL_SCANCODE_RETURN2)-scancodeSeparator = (#const SDL_SCANCODE_SEPARATOR)-scancodeOut = (#const SDL_SCANCODE_OUT)-scancodeOper = (#const SDL_SCANCODE_OPER)-scancodeClearAgain = (#const SDL_SCANCODE_CLEARAGAIN)-scancodeCrSel = (#const SDL_SCANCODE_CRSEL)-scancodeExSel = (#const SDL_SCANCODE_EXSEL)-scancodeKP00 = (#const SDL_SCANCODE_KP_00)-scancodeKP000 = (#const SDL_SCANCODE_KP_000)-scancodeThousandsSeparator = (#const SDL_SCANCODE_THOUSANDSSEPARATOR)-scancodeDecimalSeparator = (#const SDL_SCANCODE_DECIMALSEPARATOR)-scancodeCurrencyUnit = (#const SDL_SCANCODE_CURRENCYUNIT)-scancodeCurrencySubunit = (#const SDL_SCANCODE_CURRENCYSUBUNIT)-scancodeLeftParen = (#const SDL_SCANCODE_KP_LEFTPAREN)-scancodeRightParen = (#const SDL_SCANCODE_KP_RIGHTPAREN)-scancodeLeftBrace = (#const SDL_SCANCODE_KP_LEFTBRACE)-scancodeRightBrace = (#const SDL_SCANCODE_KP_RIGHTBRACE)-scancodeKPTab = (#const SDL_SCANCODE_KP_TAB)-scancodeKPBackspace = (#const SDL_SCANCODE_KP_BACKSPACE)-scancodeKPA = (#const SDL_SCANCODE_KP_A)-scancodeKPB = (#const SDL_SCANCODE_KP_B)-scancodeKPC = (#const SDL_SCANCODE_KP_C)-scancodeKPD = (#const SDL_SCANCODE_KP_D)-scancodeKPE = (#const SDL_SCANCODE_KP_E)-scancodeKPF = (#const SDL_SCANCODE_KP_F)-scancodeKPXOR = (#const SDL_SCANCODE_KP_XOR)-scancodeKPPower = (#const SDL_SCANCODE_KP_POWER)-scancodeKPPercent = (#const SDL_SCANCODE_KP_PERCENT)-scancodeKPLess = (#const SDL_SCANCODE_KP_LESS)-scancodeKPGreater = (#const SDL_SCANCODE_KP_GREATER)-scancodeKPAmpersand = (#const SDL_SCANCODE_KP_AMPERSAND)-scancodeKPDBLAmpersand = (#const SDL_SCANCODE_KP_DBLAMPERSAND)-scancodeKPVerticalBar = (#const SDL_SCANCODE_KP_VERTICALBAR)-scancodeKPDBLVerticalBar = (#const SDL_SCANCODE_KP_DBLVERTICALBAR)-scancodeKPColon = (#const SDL_SCANCODE_KP_COLON)-scancodeKPHash = (#const SDL_SCANCODE_KP_HASH)-scancodeKPSpace = (#const SDL_SCANCODE_KP_SPACE)-scancodeKPAt = (#const SDL_SCANCODE_KP_AT)-scancodeKPExclam = (#const SDL_SCANCODE_KP_EXCLAM)-scancodeKPMemStore = (#const SDL_SCANCODE_KP_MEMSTORE)-scancodeKPMemRecall = (#const SDL_SCANCODE_KP_MEMRECALL)-scancodeKPMemClear = (#const SDL_SCANCODE_KP_MEMCLEAR)-scancodeKPMemAdd = (#const SDL_SCANCODE_KP_MEMADD)-scancodeKPMemSubtract = (#const SDL_SCANCODE_KP_MEMSUBTRACT)-scancodeKPMemMultiply = (#const SDL_SCANCODE_KP_MEMMULTIPLY)-scancodeKPMemDivide = (#const SDL_SCANCODE_KP_MEMDIVIDE)-scancodeKPPlusMinus = (#const SDL_SCANCODE_KP_PLUSMINUS)-scancodeKPClear = (#const SDL_SCANCODE_KP_CLEAR)-scancodeKPClearEntry = (#const SDL_SCANCODE_KP_CLEARENTRY)-scancodeKPBinary = (#const SDL_SCANCODE_KP_BINARY)-scancodeKPOctal = (#const SDL_SCANCODE_KP_OCTAL)-scancodeKPDecimal = (#const SDL_SCANCODE_KP_DECIMAL)-scancodeKPHexadecimal = (#const SDL_SCANCODE_KP_HEXADECIMAL)-scancodeLCtrl = (#const SDL_SCANCODE_LCTRL)-scancodeLShift = (#const SDL_SCANCODE_LSHIFT)-scancodeLAlt = (#const SDL_SCANCODE_LALT)-scancodeLGUI = (#const SDL_SCANCODE_LGUI)-scancodeRCtrl = (#const SDL_SCANCODE_RCTRL)-scancodeRShift = (#const SDL_SCANCODE_RSHIFT)-scancodeRAlt = (#const SDL_SCANCODE_RALT)-scancodeRGUI = (#const SDL_SCANCODE_RGUI)-scancodeMode = (#const SDL_SCANCODE_MODE)-scancodeAudioNext = (#const SDL_SCANCODE_AUDIONEXT)-scancodeAudioPrev = (#const SDL_SCANCODE_AUDIOPREV)-scancodeAudioStop = (#const SDL_SCANCODE_AUDIOSTOP)-scancodeAudioPlay = (#const SDL_SCANCODE_AUDIOPLAY)-scancodeAudioMute = (#const SDL_SCANCODE_AUDIOMUTE)-scancodeMediaSelect = (#const SDL_SCANCODE_MEDIASELECT)-scancodeWWW = (#const SDL_SCANCODE_WWW)-scancodeMail = (#const SDL_SCANCODE_MAIL)-scancodeCalculator = (#const SDL_SCANCODE_CALCULATOR)-scancodeComputer = (#const SDL_SCANCODE_COMPUTER)-scancodeACSearch = (#const SDL_SCANCODE_AC_SEARCH)-scancodeACHome = (#const SDL_SCANCODE_AC_HOME)-scancodeACBack = (#const SDL_SCANCODE_AC_BACK)-scancodeACForward = (#const SDL_SCANCODE_AC_FORWARD)-scancodeACStop = (#const SDL_SCANCODE_AC_STOP)-scancodeACRefresh = (#const SDL_SCANCODE_AC_REFRESH)-scancodeACBookmarks = (#const SDL_SCANCODE_AC_BOOKMARKS)-scancodeBrightnessDown = (#const SDL_SCANCODE_BRIGHTNESSDOWN)-scancodeBrightnessUp = (#const SDL_SCANCODE_BRIGHTNESSUP)-scancodeDisplaySwitch = (#const SDL_SCANCODE_DISPLAYSWITCH)-scancodeKBDIllumToggle = (#const SDL_SCANCODE_KBDILLUMTOGGLE)-scancodeKBDIllumDown = (#const SDL_SCANCODE_KBDILLUMDOWN)-scancodeKBDIllumUp = (#const SDL_SCANCODE_KBDILLUMUP)-scancodeEject = (#const SDL_SCANCODE_EJECT)-scancodeSleep = (#const SDL_SCANCODE_SLEEP)-scancodeApp1 = (#const SDL_SCANCODE_APP1)-scancodeApp2 = (#const SDL_SCANCODE_APP2)-scancodeNum = (#const SDL_NUM_SCANCODES)--systemCursorArrow :: SystemCursor-systemCursorIBeam :: SystemCursor-systemCursorWait :: SystemCursor-systemCursorCrosshair :: SystemCursor-systemCursorWaitArrow :: SystemCursor-systemCursorSizeNWSE :: SystemCursor-systemCursorSizeNESW :: SystemCursor-systemCursorSizeWE :: SystemCursor-systemCursorSizeNS :: SystemCursor-systemCursorSizeAll :: SystemCursor-systemCursorNo :: SystemCursor-systemCursorHand :: SystemCursor-systemCursorNum :: SystemCursor--systemCursorArrow = (#const SDL_SYSTEM_CURSOR_ARROW)-systemCursorIBeam = (#const SDL_SYSTEM_CURSOR_IBEAM)-systemCursorWait = (#const SDL_SYSTEM_CURSOR_WAIT)-systemCursorCrosshair = (#const SDL_SYSTEM_CURSOR_CROSSHAIR)-systemCursorWaitArrow = (#const SDL_SYSTEM_CURSOR_WAITARROW)-systemCursorSizeNWSE = (#const SDL_SYSTEM_CURSOR_SIZENWSE)-systemCursorSizeNESW = (#const SDL_SYSTEM_CURSOR_SIZENESW)-systemCursorSizeWE = (#const SDL_SYSTEM_CURSOR_SIZEWE)-systemCursorSizeNS = (#const SDL_SYSTEM_CURSOR_SIZENS)-systemCursorSizeAll = (#const SDL_SYSTEM_CURSOR_SIZEALL)-systemCursorNo = (#const SDL_SYSTEM_CURSOR_NO)-systemCursorHand = (#const SDL_SYSTEM_CURSOR_HAND)-systemCursorNum = (#const SDL_NUM_SYSTEM_CURSORS)--threadPriorityLow :: ThreadPriority-threadPriorityNormal :: ThreadPriority-threadPriorityHigh :: ThreadPriority--threadPriorityLow = (#const SDL_THREAD_PRIORITY_LOW)-threadPriorityNormal = (#const SDL_THREAD_PRIORITY_NORMAL)-threadPriorityHigh = (#const SDL_THREAD_PRIORITY_HIGH)--audioAllowFrequencyChange :: Num a => a-audioAllowFormatChange :: Num a => a-audioAllowChannelsChange :: Num a => a-audioAllowAnyChange :: Num a => a--audioAllowFrequencyChange = (#const SDL_AUDIO_ALLOW_FREQUENCY_CHANGE)-audioAllowFormatChange = (#const SDL_AUDIO_ALLOW_FORMAT_CHANGE)-audioAllowChannelsChange = (#const SDL_AUDIO_ALLOW_CHANNELS_CHANGE)-audioAllowAnyChange = (#const SDL_AUDIO_ALLOW_ANY_CHANGE)--buttonLeft :: (Num a) => a-buttonMiddle :: (Num a) => a-buttonRight :: (Num a) => a-buttonX1 :: (Num a) => a-buttonX2 :: (Num a) => a-buttonLMask :: (Num a) => a-buttonMMask :: (Num a) => a-buttonRMask :: (Num a) => a-buttonX1Mask :: (Num a) => a-buttonX2Mask :: (Num a) => a--buttonLeft = (#const SDL_BUTTON_LEFT)-buttonMiddle = (#const SDL_BUTTON_MIDDLE)-buttonRight = (#const SDL_BUTTON_RIGHT)-buttonX1 = (#const SDL_BUTTON_X1)-buttonX2 = (#const SDL_BUTTON_X2)-buttonLMask = (#const SDL_BUTTON_LMASK)-buttonMMask = (#const SDL_BUTTON_MMASK)-buttonRMask = (#const SDL_BUTTON_RMASK)-buttonX1Mask = (#const SDL_BUTTON_X1MASK)-buttonX2Mask = (#const SDL_BUTTON_X2MASK)--eventTypeFirstEvent :: (Num a) => a-eventTypeQuit :: (Num a) => a-eventTypeAppTerminating :: (Num a) => a-eventTypeAppLowMemory :: (Num a) => a-eventTypeAppWillEnterBackground :: (Num a) => a-eventTypeAppDidEnterBackground :: (Num a) => a-eventTypeAppWillEnterForeground :: (Num a) => a-eventTypeAppDidEnterForeground :: (Num a) => a-eventTypeWindowEvent :: (Num a) => a-eventTypeSysWMEvent :: (Num a) => a-eventTypeKeyDown :: (Num a) => a-eventTypeKeyUp :: (Num a) => a-eventTypeTextEditing :: (Num a) => a-eventTypeTextInput :: (Num a) => a-eventTypeMouseMotion :: (Num a) => a-eventTypeMouseButtonDown :: (Num a) => a-eventTypeMouseButtonUp :: (Num a) => a-eventTypeMouseWheel :: (Num a) => a-eventTypeJoyAxisMotion :: (Num a) => a-eventTypeJoyBallMotion :: (Num a) => a-eventTypeJoyHatMotion :: (Num a) => a-eventTypeJoyButtonDown :: (Num a) => a-eventTypeJoyButtonUp :: (Num a) => a-eventTypeJoyDeviceAdded :: (Num a) => a-eventTypeJoyDeviceRemoved :: (Num a) => a-eventTypeControllerAxisMotion :: (Num a) => a-eventTypeControllerButtonDown :: (Num a) => a-eventTypeControllerButtonUp :: (Num a) => a-eventTypeControllerDeviceAdded :: (Num a) => a-eventTypeControllerDeviceRemoved :: (Num a) => a-eventTypeControllerDeviceRemapped :: (Num a) => a-eventTypeFingerDown :: (Num a) => a-eventTypeFingerUp :: (Num a) => a-eventTypeFingerMotion :: (Num a) => a-eventTypeDollarGesture :: (Num a) => a-eventTypeDollarRecord :: (Num a) => a-eventTypeMultiGesture :: (Num a) => a-eventTypeClipboardUpdate :: (Num a) => a-eventTypeDropFile :: (Num a) => a-eventTypeUserEvent :: (Num a) => a-eventTypeLastEvent :: (Num a) => a--eventTypeFirstEvent = (#const SDL_FIRSTEVENT)-eventTypeQuit = (#const SDL_QUIT)-eventTypeAppTerminating = (#const SDL_APP_TERMINATING)-eventTypeAppLowMemory = (#const SDL_APP_LOWMEMORY)-eventTypeAppWillEnterBackground = (#const SDL_APP_WILLENTERBACKGROUND)-eventTypeAppDidEnterBackground = (#const SDL_APP_DIDENTERBACKGROUND)-eventTypeAppWillEnterForeground = (#const SDL_APP_WILLENTERFOREGROUND)-eventTypeAppDidEnterForeground = (#const SDL_APP_DIDENTERFOREGROUND)-eventTypeWindowEvent = (#const SDL_WINDOWEVENT)-eventTypeSysWMEvent = (#const SDL_SYSWMEVENT)-eventTypeKeyDown = (#const SDL_KEYDOWN)-eventTypeKeyUp = (#const SDL_KEYUP)-eventTypeTextEditing = (#const SDL_TEXTEDITING)-eventTypeTextInput = (#const SDL_TEXTINPUT)-eventTypeMouseMotion = (#const SDL_MOUSEMOTION)-eventTypeMouseButtonDown = (#const SDL_MOUSEBUTTONDOWN)-eventTypeMouseButtonUp = (#const SDL_MOUSEBUTTONUP)-eventTypeMouseWheel = (#const SDL_MOUSEWHEEL)-eventTypeJoyAxisMotion = (#const SDL_JOYAXISMOTION)-eventTypeJoyBallMotion = (#const SDL_JOYBALLMOTION)-eventTypeJoyHatMotion = (#const SDL_JOYHATMOTION)-eventTypeJoyButtonDown = (#const SDL_JOYBUTTONDOWN)-eventTypeJoyButtonUp = (#const SDL_JOYBUTTONUP)-eventTypeJoyDeviceAdded = (#const SDL_JOYDEVICEADDED)-eventTypeJoyDeviceRemoved = (#const SDL_JOYDEVICEREMOVED)-eventTypeControllerAxisMotion = (#const SDL_CONTROLLERAXISMOTION)-eventTypeControllerButtonDown = (#const SDL_CONTROLLERBUTTONDOWN)-eventTypeControllerButtonUp = (#const SDL_CONTROLLERBUTTONUP)-eventTypeControllerDeviceAdded = (#const SDL_CONTROLLERDEVICEADDED)-eventTypeControllerDeviceRemoved = (#const SDL_CONTROLLERDEVICEREMOVED)-eventTypeControllerDeviceRemapped = (#const SDL_CONTROLLERDEVICEREMAPPED)-eventTypeFingerDown = (#const SDL_FINGERDOWN)-eventTypeFingerUp = (#const SDL_FINGERUP)-eventTypeFingerMotion = (#const SDL_FINGERMOTION)-eventTypeDollarGesture = (#const SDL_DOLLARGESTURE)-eventTypeDollarRecord = (#const SDL_DOLLARRECORD)-eventTypeMultiGesture = (#const SDL_MULTIGESTURE)-eventTypeClipboardUpdate = (#const SDL_CLIPBOARDUPDATE)-eventTypeDropFile = (#const SDL_DROPFILE)-eventTypeUserEvent = (#const SDL_USEREVENT)-eventTypeLastEvent = (#const SDL_LASTEVENT)--joystickHatCentered :: (Num a) => a-joystickHatUp :: (Num a) => a-joystickHatRight :: (Num a) => a-joystickHatDown :: (Num a) => a-joystickHatLeft :: (Num a) => a-joystickHatRightUp :: (Num a) => a-joystickHatRightDown :: (Num a) => a-joystickHatLeftUp :: (Num a) => a-joystickHatLeftDown :: (Num a) => a--joystickHatCentered = (#const SDL_HAT_CENTERED)-joystickHatUp = (#const SDL_HAT_UP)-joystickHatRight = (#const SDL_HAT_RIGHT)-joystickHatDown = (#const SDL_HAT_DOWN)-joystickHatLeft = (#const SDL_HAT_LEFT)-joystickHatRightUp = (#const SDL_HAT_RIGHTUP)-joystickHatRightDown = (#const SDL_HAT_RIGHTDOWN)-joystickHatLeftUp = (#const SDL_HAT_LEFTUP)-joystickHatLeftDown = (#const SDL_HAT_LEFTDOWN)--keyPressed :: (Num a) => a-keyReleased :: (Num a) => a--keyPressed = (#const SDL_PRESSED)-keyReleased = (#const SDL_RELEASED)--logCategoryApplication :: (Num a) => a-logCategoryError :: (Num a) => a-logCategoryAssert :: (Num a) => a-logCategorySystem :: (Num a) => a-logCategoryAudio :: (Num a) => a-logCategoryVideo :: (Num a) => a-logCategoryRender :: (Num a) => a-logCategoryInput :: (Num a) => a-logCategoryTest :: (Num a) => a-logCategoryCustom :: (Num a) => a--logCategoryApplication = (#const SDL_LOG_CATEGORY_APPLICATION)-logCategoryError = (#const SDL_LOG_CATEGORY_ERROR)-logCategoryAssert = (#const SDL_LOG_CATEGORY_ASSERT)-logCategorySystem = (#const SDL_LOG_CATEGORY_SYSTEM)-logCategoryAudio = (#const SDL_LOG_CATEGORY_AUDIO)-logCategoryVideo = (#const SDL_LOG_CATEGORY_VIDEO)-logCategoryRender = (#const SDL_LOG_CATEGORY_RENDER)-logCategoryInput = (#const SDL_LOG_CATEGORY_INPUT)-logCategoryTest = (#const SDL_LOG_CATEGORY_TEST)-logCategoryCustom = (#const SDL_LOG_CATEGORY_CUSTOM)--messageBoxFlagError :: (Num a) => a-messageBoxFlagWarning :: (Num a) => a-messageBoxFlagInformation :: (Num a) => a--messageBoxFlagError = (#const SDL_MESSAGEBOX_ERROR)-messageBoxFlagWarning = (#const SDL_MESSAGEBOX_WARNING)-messageBoxFlagInformation = (#const SDL_MESSAGEBOX_INFORMATION)--messageBoxButtonFlagReturnKeyDefault :: (Num a) => a-messageBoxButtonFlagEscapeKeyDefault :: (Num a) => a--messageBoxButtonFlagReturnKeyDefault = (#const SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT)-messageBoxButtonFlagEscapeKeyDefault = (#const SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT)--glProfileCore :: (Num a) => a-glProfileCompatibility :: (Num a) => a-glProfileES :: (Num a) => a--glProfileCore = (#const SDL_GL_CONTEXT_PROFILE_CORE)-glProfileCompatibility = (#const SDL_GL_CONTEXT_PROFILE_COMPATIBILITY)-glProfileES = (#const SDL_GL_CONTEXT_PROFILE_ES)--glContextFlagDebug :: (Num a) => a-glContextFlagForwardCompatible :: (Num a) => a-glContextFlagRobustAccess :: (Num a) => a-glContextFlagResetIsolation :: (Num a) => a--glContextFlagDebug = (#const SDL_GL_CONTEXT_DEBUG_FLAG)-glContextFlagForwardCompatible = (#const SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG)-glContextFlagRobustAccess = (#const SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG)-glContextFlagResetIsolation = (#const SDL_GL_CONTEXT_RESET_ISOLATION_FLAG)--pixelFormatUnknown :: (Num a) => a-pixelFormatIndex1LSB :: (Num a) => a-pixelFormatIndex1MSB :: (Num a) => a-pixelFormatIndex4LSB :: (Num a) => a-pixelFormatIndex4MSB :: (Num a) => a-pixelFormatIndex8 :: (Num a) => a-pixelFormatRGB332 :: (Num a) => a-pixelFormatRGB444 :: (Num a) => a-pixelFormatRGB555 :: (Num a) => a-pixelFormatBGR555 :: (Num a) => a-pixelFormatARGB4444 :: (Num a) => a-pixelFormatRGBA4444 :: (Num a) => a-pixelFormatABGR4444 :: (Num a) => a-pixelFormatBGRA4444 :: (Num a) => a-pixelFormatARGB1555 :: (Num a) => a-pixelFormatRGBA5551 :: (Num a) => a-pixelFormatABGR1555 :: (Num a) => a-pixelFormatBGRA5551 :: (Num a) => a-pixelFormatRGB565 :: (Num a) => a-pixelFormatBGR565 :: (Num a) => a-pixelFormatRGB24 :: (Num a) => a-pixelFormatBGR24 :: (Num a) => a-pixelFormatRGB888 :: (Num a) => a-pixelFormatRGBX8888 :: (Num a) => a-pixelFormatBGR888 :: (Num a) => a-pixelFormatBGRX8888 :: (Num a) => a-pixelFormatARGB8888 :: (Num a) => a-pixelFormatRGBA8888 :: (Num a) => a-pixelFormatABGR8888 :: (Num a) => a-pixelFormatBGRA8888 :: (Num a) => a-pixelFormatARGB2101010 :: (Num a) => a-pixelFormatYV12 :: (Num a) => a-pixelFormatIYUV :: (Num a) => a-pixelFormatYUY2 :: (Num a) => a-pixelFormatUYVY :: (Num a) => a-pixelFormatYVYU :: (Num a) => a--pixelFormatUnknown = (#const SDL_PIXELFORMAT_UNKNOWN)-pixelFormatIndex1LSB = (#const SDL_PIXELFORMAT_INDEX1LSB)-pixelFormatIndex1MSB = (#const SDL_PIXELFORMAT_INDEX1MSB)-pixelFormatIndex4LSB = (#const SDL_PIXELFORMAT_INDEX4LSB)-pixelFormatIndex4MSB = (#const SDL_PIXELFORMAT_INDEX4MSB)-pixelFormatIndex8 = (#const SDL_PIXELFORMAT_INDEX8)-pixelFormatRGB332 = (#const SDL_PIXELFORMAT_RGB332)-pixelFormatRGB444 = (#const SDL_PIXELFORMAT_RGB444)-pixelFormatRGB555 = (#const SDL_PIXELFORMAT_RGB555)-pixelFormatBGR555 = (#const SDL_PIXELFORMAT_BGR555)-pixelFormatARGB4444 = (#const SDL_PIXELFORMAT_ARGB4444)-pixelFormatRGBA4444 = (#const SDL_PIXELFORMAT_RGBA4444)-pixelFormatABGR4444 = (#const SDL_PIXELFORMAT_ABGR4444)-pixelFormatBGRA4444 = (#const SDL_PIXELFORMAT_BGRA4444)-pixelFormatARGB1555 = (#const SDL_PIXELFORMAT_ARGB1555)-pixelFormatRGBA5551 = (#const SDL_PIXELFORMAT_RGBA5551)-pixelFormatABGR1555 = (#const SDL_PIXELFORMAT_ABGR1555)-pixelFormatBGRA5551 = (#const SDL_PIXELFORMAT_BGRA5551)-pixelFormatRGB565 = (#const SDL_PIXELFORMAT_RGB565)-pixelFormatBGR565 = (#const SDL_PIXELFORMAT_BGR565)-pixelFormatRGB24 = (#const SDL_PIXELFORMAT_RGB24)-pixelFormatBGR24 = (#const SDL_PIXELFORMAT_BGR24)-pixelFormatRGB888 = (#const SDL_PIXELFORMAT_RGB888)-pixelFormatRGBX8888 = (#const SDL_PIXELFORMAT_RGBX8888)-pixelFormatBGR888 = (#const SDL_PIXELFORMAT_BGR888)-pixelFormatBGRX8888 = (#const SDL_PIXELFORMAT_BGRX8888)-pixelFormatARGB8888 = (#const SDL_PIXELFORMAT_ARGB8888)-pixelFormatRGBA8888 = (#const SDL_PIXELFORMAT_RGBA8888)-pixelFormatABGR8888 = (#const SDL_PIXELFORMAT_ABGR8888)-pixelFormatBGRA8888 = (#const SDL_PIXELFORMAT_BGRA8888)-pixelFormatARGB2101010 = (#const SDL_PIXELFORMAT_ARGB2101010)-pixelFormatYV12 = (#const SDL_PIXELFORMAT_YV12)-pixelFormatIYUV = (#const SDL_PIXELFORMAT_IYUV)-pixelFormatYUY2 = (#const SDL_PIXELFORMAT_YUY2)-pixelFormatUYVY = (#const SDL_PIXELFORMAT_UYVY)-pixelFormatYVYU = (#const SDL_PIXELFORMAT_YVYU)--rendererFlagSoftware :: (Num a) => a-rendererFlagAccelerated :: (Num a) => a-rendererFlagPresentVSync :: (Num a) => a-rendererFlagTargetTexture :: (Num a) => a--rendererFlagSoftware = (#const SDL_RENDERER_SOFTWARE)-rendererFlagAccelerated = (#const SDL_RENDERER_ACCELERATED)-rendererFlagPresentVSync = (#const SDL_RENDERER_PRESENTVSYNC)-rendererFlagTargetTexture = (#const SDL_RENDERER_TARGETTEXTURE)--textureAccessStatic :: (Num a) => a-textureAccessStreaming :: (Num a) => a-textureAccessTarget :: (Num a) => a--textureAccessStatic = (#const SDL_TEXTUREACCESS_STATIC)-textureAccessStreaming = (#const SDL_TEXTUREACCESS_STREAMING)-textureAccessTarget = (#const SDL_TEXTUREACCESS_TARGET)--textureModulateNone :: (Num a) => a-textureModulateColor :: (Num a) => a-textureModulateAlpha :: (Num a) => a--textureModulateNone = (#const SDL_TEXTUREMODULATE_NONE)-textureModulateColor = (#const SDL_TEXTUREMODULATE_COLOR)-textureModulateAlpha = (#const SDL_TEXTUREMODULATE_ALPHA)--touchMouseID :: (Num a) => a-touchMouseID = (#const SDL_TOUCH_MOUSEID)--windowEventNone :: (Num a) => a-windowEventShown :: (Num a) => a-windowEventHidden :: (Num a) => a-windowEventExposed :: (Num a) => a-windowEventMoved :: (Num a) => a-windowEventResized :: (Num a) => a-windowEventSizeChanged :: (Num a) => a-windowEventMinimized :: (Num a) => a-windowEventMaximized :: (Num a) => a-windowEventRestored :: (Num a) => a-windowEventEnter :: (Num a) => a-windowEventLeave :: (Num a) => a-windowEventFocusGained :: (Num a) => a-windowEventFocusLost :: (Num a) => a-windowEventClose :: (Num a) => a--windowEventNone = (#const SDL_WINDOWEVENT_NONE)-windowEventShown = (#const SDL_WINDOWEVENT_SHOWN)-windowEventHidden = (#const SDL_WINDOWEVENT_HIDDEN)-windowEventExposed = (#const SDL_WINDOWEVENT_EXPOSED)-windowEventMoved = (#const SDL_WINDOWEVENT_MOVED)-windowEventResized = (#const SDL_WINDOWEVENT_RESIZED)-windowEventSizeChanged = (#const SDL_WINDOWEVENT_SIZE_CHANGED)-windowEventMinimized = (#const SDL_WINDOWEVENT_MINIMIZED)-windowEventMaximized = (#const SDL_WINDOWEVENT_MAXIMIZED)-windowEventRestored = (#const SDL_WINDOWEVENT_RESTORED)-windowEventEnter = (#const SDL_WINDOWEVENT_ENTER)-windowEventLeave = (#const SDL_WINDOWEVENT_LEAVE)-windowEventFocusGained = (#const SDL_WINDOWEVENT_FOCUS_GAINED)-windowEventFocusLost = (#const SDL_WINDOWEVENT_FOCUS_LOST)-windowEventClose = (#const SDL_WINDOWEVENT_CLOSE)--windowFlagFullscreen :: (Num a) => a-windowFlagOpenGL :: (Num a) => a-windowFlagShown :: (Num a) => a-windowFlagHidden :: (Num a) => a-windowFlagBorderless :: (Num a) => a-windowFlagResizable :: (Num a) => a-windowFlagMinimized :: (Num a) => a-windowFlagMaximized :: (Num a) => a-windowFlagInputGrabbed :: (Num a) => a-windowFlagInputFocus :: (Num a) => a-windowFlagMouseFocus :: (Num a) => a-windowFlagFullscreenDesktop :: (Num a) => a-windowFlagForeign :: (Num a) => a-windowFlagAllowHighDPI :: (Num a) => a--windowFlagFullscreen = (#const SDL_WINDOW_FULLSCREEN)-windowFlagOpenGL = (#const SDL_WINDOW_OPENGL)-windowFlagShown = (#const SDL_WINDOW_SHOWN)-windowFlagHidden = (#const SDL_WINDOW_HIDDEN)-windowFlagBorderless = (#const SDL_WINDOW_BORDERLESS)-windowFlagResizable = (#const SDL_WINDOW_RESIZABLE)-windowFlagMinimized = (#const SDL_WINDOW_MINIMIZED)-windowFlagMaximized = (#const SDL_WINDOW_MAXIMIZED)-windowFlagInputGrabbed = (#const SDL_WINDOW_INPUT_GRABBED)-windowFlagInputFocus = (#const SDL_WINDOW_INPUT_FOCUS)-windowFlagMouseFocus = (#const SDL_WINDOW_MOUSE_FOCUS)-windowFlagFullscreenDesktop = (#const SDL_WINDOW_FULLSCREEN_DESKTOP)-windowFlagForeign = (#const SDL_WINDOW_FOREIGN)-windowFlagAllowHighDPI = (#const SDL_WINDOW_ALLOW_HIGHDPI)--windowPosUndefined :: (Num a) => a-windowPosCentered :: (Num a) => a--windowPosUndefined = (#const SDL_WINDOWPOS_UNDEFINED)-windowPosCentered = (#const SDL_WINDOWPOS_CENTERED)+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE PatternSynonyms #-}+module Graphics.UI.SDL.Enum (+  -- * Enumerations++  -- ** Audio Status+  AudioStatus,+  pattern SDL_AUDIO_STOPPED,+  pattern SDL_AUDIO_PLAYING,+  pattern SDL_AUDIO_PAUSED,++  -- ** Blend Mode+  BlendMode,+  pattern SDL_BLENDMODE_NONE,+  pattern SDL_BLENDMODE_BLEND,+  pattern SDL_BLENDMODE_ADD,+  pattern SDL_BLENDMODE_MOD,++  -- ** Event Action+  EventAction,+  pattern SDL_ADDEVENT,+  pattern SDL_PEEKEVENT,+  pattern SDL_GETEVENT,++  -- ** Game Controller Axis+  GameControllerAxis,+  pattern SDL_CONTROLLER_AXIS_INVALID,+  pattern SDL_CONTROLLER_AXIS_LEFTX,+  pattern SDL_CONTROLLER_AXIS_LEFTY,+  pattern SDL_CONTROLLER_AXIS_RIGHTX,+  pattern SDL_CONTROLLER_AXIS_RIGHTY,+  pattern SDL_CONTROLLER_AXIS_TRIGGERLEFT,+  pattern SDL_CONTROLLER_AXIS_TRIGGERRIGHT,+  pattern SDL_CONTROLLER_AXIS_MAX,++  -- ** Game Controller Button+  GameControllerButton,+  pattern SDL_CONTROLLER_BUTTON_INVALID,+  pattern SDL_CONTROLLER_BUTTON_A,+  pattern SDL_CONTROLLER_BUTTON_B,+  pattern SDL_CONTROLLER_BUTTON_X,+  pattern SDL_CONTROLLER_BUTTON_Y,+  pattern SDL_CONTROLLER_BUTTON_BACK,+  pattern SDL_CONTROLLER_BUTTON_GUIDE,+  pattern SDL_CONTROLLER_BUTTON_START,+  pattern SDL_CONTROLLER_BUTTON_LEFTSTICK,+  pattern SDL_CONTROLLER_BUTTON_RIGHTSTICK,+  pattern SDL_CONTROLLER_BUTTON_LEFTSHOULDER,+  pattern SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,+  pattern SDL_CONTROLLER_BUTTON_DPAD_UP,+  pattern SDL_CONTROLLER_BUTTON_DPAD_DOWN,+  pattern SDL_CONTROLLER_BUTTON_DPAD_LEFT,+  pattern SDL_CONTROLLER_BUTTON_DPAD_RIGHT,+  pattern SDL_CONTROLLER_BUTTON_MAX,++  -- ** OpenGL Attribute+  GLattr,+  pattern SDL_GL_RED_SIZE,+  pattern SDL_GL_GREEN_SIZE,+  pattern SDL_GL_BLUE_SIZE,+  pattern SDL_GL_ALPHA_SIZE,+  pattern SDL_GL_BUFFER_SIZE,+  pattern SDL_GL_DOUBLEBUFFER,+  pattern SDL_GL_DEPTH_SIZE,+  pattern SDL_GL_STENCIL_SIZE,+  pattern SDL_GL_ACCUM_RED_SIZE,+  pattern SDL_GL_ACCUM_GREEN_SIZE,+  pattern SDL_GL_ACCUM_BLUE_SIZE,+  pattern SDL_GL_ACCUM_ALPHA_SIZE,+  pattern SDL_GL_STEREO,+  pattern SDL_GL_MULTISAMPLEBUFFERS,+  pattern SDL_GL_MULTISAMPLESAMPLES,+  pattern SDL_GL_ACCELERATED_VISUAL,+  pattern SDL_GL_RETAINED_BACKING,+  pattern SDL_GL_CONTEXT_MAJOR_VERSION,+  pattern SDL_GL_CONTEXT_MINOR_VERSION,+  pattern SDL_GL_CONTEXT_EGL,+  pattern SDL_GL_CONTEXT_FLAGS,+  pattern SDL_GL_CONTEXT_PROFILE_MASK,+  pattern SDL_GL_SHARE_WITH_CURRENT_CONTEXT,+  pattern SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,++  -- ** Hint Priority+  HintPriority,+  pattern SDL_HINT_DEFAULT,+  pattern SDL_HINT_NORMAL,+  pattern SDL_HINT_OVERRIDE,++  -- ** Initialization Flag+  InitFlag,+  pattern SDL_INIT_TIMER,+  pattern SDL_INIT_AUDIO,+  pattern SDL_INIT_VIDEO,+  pattern SDL_INIT_JOYSTICK,+  pattern SDL_INIT_HAPTIC,+  pattern SDL_INIT_GAMECONTROLLER,+  pattern SDL_INIT_EVENTS,+  pattern SDL_INIT_NOPARACHUTE,+  pattern SDL_INIT_EVERYTHING,++  -- ** Keycode+  Keycode,+  pattern SDLK_UNKNOWN,+  pattern SDLK_RETURN,+  pattern SDLK_ESCAPE,+  pattern SDLK_BACKSPACE,+  pattern SDLK_TAB,+  pattern SDLK_SPACE,+  pattern SDLK_EXCLAIM,+  pattern SDLK_QUOTEDBL,+  pattern SDLK_HASH,+  pattern SDLK_PERCENT,+  pattern SDLK_DOLLAR,+  pattern SDLK_AMPERSAND,+  pattern SDLK_QUOTE,+  pattern SDLK_LEFTPAREN,+  pattern SDLK_RIGHTPAREN,+  pattern SDLK_ASTERISK,+  pattern SDLK_PLUS,+  pattern SDLK_COMMA,+  pattern SDLK_MINUS,+  pattern SDLK_PERIOD,+  pattern SDLK_SLASH,+  pattern SDLK_0,+  pattern SDLK_1,+  pattern SDLK_2,+  pattern SDLK_3,+  pattern SDLK_4,+  pattern SDLK_5,+  pattern SDLK_6,+  pattern SDLK_7,+  pattern SDLK_8,+  pattern SDLK_9,+  pattern SDLK_COLON,+  pattern SDLK_SEMICOLON,+  pattern SDLK_LESS,+  pattern SDLK_EQUALS,+  pattern SDLK_GREATER,+  pattern SDLK_QUESTION,+  pattern SDLK_AT,+  pattern SDLK_LEFTBRACKET,+  pattern SDLK_BACKSLASH,+  pattern SDLK_RIGHTBRACKET,+  pattern SDLK_CARET,+  pattern SDLK_UNDERSCORE,+  pattern SDLK_BACKQUOTE,+  pattern SDLK_a,+  pattern SDLK_b,+  pattern SDLK_c,+  pattern SDLK_d,+  pattern SDLK_e,+  pattern SDLK_f,+  pattern SDLK_g,+  pattern SDLK_h,+  pattern SDLK_i,+  pattern SDLK_j,+  pattern SDLK_k,+  pattern SDLK_l,+  pattern SDLK_m,+  pattern SDLK_n,+  pattern SDLK_o,+  pattern SDLK_p,+  pattern SDLK_q,+  pattern SDLK_r,+  pattern SDLK_s,+  pattern SDLK_t,+  pattern SDLK_u,+  pattern SDLK_v,+  pattern SDLK_w,+  pattern SDLK_x,+  pattern SDLK_y,+  pattern SDLK_z,+  pattern SDLK_CAPSLOCK,+  pattern SDLK_F1,+  pattern SDLK_F2,+  pattern SDLK_F3,+  pattern SDLK_F4,+  pattern SDLK_F5,+  pattern SDLK_F6,+  pattern SDLK_F7,+  pattern SDLK_F8,+  pattern SDLK_F9,+  pattern SDLK_F10,+  pattern SDLK_F11,+  pattern SDLK_F12,+  pattern SDLK_PRINTSCREEN,+  pattern SDLK_SCROLLLOCK,+  pattern SDLK_PAUSE,+  pattern SDLK_INSERT,+  pattern SDLK_HOME,+  pattern SDLK_PAGEUP,+  pattern SDLK_DELETE,+  pattern SDLK_END,+  pattern SDLK_PAGEDOWN,+  pattern SDLK_RIGHT,+  pattern SDLK_LEFT,+  pattern SDLK_DOWN,+  pattern SDLK_UP,+  pattern SDLK_NUMLOCKCLEAR,+  pattern SDLK_KP_DIVIDE,+  pattern SDLK_KP_MULTIPLY,+  pattern SDLK_KP_MINUS,+  pattern SDLK_KP_PLUS,+  pattern SDLK_KP_ENTER,+  pattern SDLK_KP_1,+  pattern SDLK_KP_2,+  pattern SDLK_KP_3,+  pattern SDLK_KP_4,+  pattern SDLK_KP_5,+  pattern SDLK_KP_6,+  pattern SDLK_KP_7,+  pattern SDLK_KP_8,+  pattern SDLK_KP_9,+  pattern SDLK_KP_0,+  pattern SDLK_KP_PERIOD,+  pattern SDLK_APPLICATION,+  pattern SDLK_POWER,+  pattern SDLK_KP_EQUALS,+  pattern SDLK_F13,+  pattern SDLK_F14,+  pattern SDLK_F15,+  pattern SDLK_F16,+  pattern SDLK_F17,+  pattern SDLK_F18,+  pattern SDLK_F19,+  pattern SDLK_F20,+  pattern SDLK_F21,+  pattern SDLK_F22,+  pattern SDLK_F23,+  pattern SDLK_F24,+  pattern SDLK_EXECUTE,+  pattern SDLK_HELP,+  pattern SDLK_MENU,+  pattern SDLK_SELECT,+  pattern SDLK_STOP,+  pattern SDLK_AGAIN,+  pattern SDLK_UNDO,+  pattern SDLK_CUT,+  pattern SDLK_COPY,+  pattern SDLK_PASTE,+  pattern SDLK_FIND,+  pattern SDLK_MUTE,+  pattern SDLK_VOLUMEUP,+  pattern SDLK_VOLUMEDOWN,+  pattern SDLK_KP_COMMA,+  pattern SDLK_KP_EQUALSAS400,+  pattern SDLK_ALTERASE,+  pattern SDLK_SYSREQ,+  pattern SDLK_CANCEL,+  pattern SDLK_CLEAR,+  pattern SDLK_PRIOR,+  pattern SDLK_RETURN2,+  pattern SDLK_SEPARATOR,+  pattern SDLK_OUT,+  pattern SDLK_OPER,+  pattern SDLK_CLEARAGAIN,+  pattern SDLK_CRSEL,+  pattern SDLK_EXSEL,+  pattern SDLK_KP_00,+  pattern SDLK_KP_000,+  pattern SDLK_THOUSANDSSEPARATOR,+  pattern SDLK_DECIMALSEPARATOR,+  pattern SDLK_CURRENCYUNIT,+  pattern SDLK_CURRENCYSUBUNIT,+  pattern SDLK_KP_LEFTPAREN,+  pattern SDLK_KP_RIGHTPAREN,+  pattern SDLK_KP_LEFTBRACE,+  pattern SDLK_KP_RIGHTBRACE,+  pattern SDLK_KP_TAB,+  pattern SDLK_KP_BACKSPACE,+  pattern SDLK_KP_A,+  pattern SDLK_KP_B,+  pattern SDLK_KP_C,+  pattern SDLK_KP_D,+  pattern SDLK_KP_E,+  pattern SDLK_KP_F,+  pattern SDLK_KP_XOR,+  pattern SDLK_KP_POWER,+  pattern SDLK_KP_PERCENT,+  pattern SDLK_KP_LESS,+  pattern SDLK_KP_GREATER,+  pattern SDLK_KP_AMPERSAND,+  pattern SDLK_KP_DBLAMPERSAND,+  pattern SDLK_KP_VERTICALBAR,+  pattern SDLK_KP_DBLVERTICALBAR,+  pattern SDLK_KP_COLON,+  pattern SDLK_KP_HASH,+  pattern SDLK_KP_SPACE,+  pattern SDLK_KP_AT,+  pattern SDLK_KP_EXCLAM,+  pattern SDLK_KP_MEMSTORE,+  pattern SDLK_KP_MEMRECALL,+  pattern SDLK_KP_MEMCLEAR,+  pattern SDLK_KP_MEMADD,+  pattern SDLK_KP_MEMSUBTRACT,+  pattern SDLK_KP_MEMMULTIPLY,+  pattern SDLK_KP_MEMDIVIDE,+  pattern SDLK_KP_PLUSMINUS,+  pattern SDLK_KP_CLEAR,+  pattern SDLK_KP_CLEARENTRY,+  pattern SDLK_KP_BINARY,+  pattern SDLK_KP_OCTAL,+  pattern SDLK_KP_DECIMAL,+  pattern SDLK_KP_HEXADECIMAL,+  pattern SDLK_LCTRL,+  pattern SDLK_LSHIFT,+  pattern SDLK_LALT,+  pattern SDLK_LGUI,+  pattern SDLK_RCTRL,+  pattern SDLK_RSHIFT,+  pattern SDLK_RALT,+  pattern SDLK_RGUI,+  pattern SDLK_MODE,+  pattern SDLK_AUDIONEXT,+  pattern SDLK_AUDIOPREV,+  pattern SDLK_AUDIOSTOP,+  pattern SDLK_AUDIOPLAY,+  pattern SDLK_AUDIOMUTE,+  pattern SDLK_MEDIASELECT,+  pattern SDLK_WWW,+  pattern SDLK_MAIL,+  pattern SDLK_CALCULATOR,+  pattern SDLK_COMPUTER,+  pattern SDLK_AC_SEARCH,+  pattern SDLK_AC_HOME,+  pattern SDLK_AC_BACK,+  pattern SDLK_AC_FORWARD,+  pattern SDLK_AC_STOP,+  pattern SDLK_AC_REFRESH,+  pattern SDLK_AC_BOOKMARKS,+  pattern SDLK_BRIGHTNESSDOWN,+  pattern SDLK_BRIGHTNESSUP,+  pattern SDLK_DISPLAYSWITCH,+  pattern SDLK_KBDILLUMTOGGLE,+  pattern SDLK_KBDILLUMDOWN,+  pattern SDLK_KBDILLUMUP,+  pattern SDLK_EJECT,+  pattern SDLK_SLEEP,++  -- ** Key Modifier+  Keymod,+  pattern KMOD_NONE,+  pattern KMOD_LSHIFT,+  pattern KMOD_RSHIFT,+  pattern KMOD_SHIFT,+  pattern KMOD_LCTRL,+  pattern KMOD_RCTRL,+  pattern KMOD_CTRL,+  pattern KMOD_LALT,+  pattern KMOD_RALT,+  pattern KMOD_ALT,+  pattern KMOD_LGUI,+  pattern KMOD_RGUI,+  pattern KMOD_GUI,+  pattern KMOD_NUM,+  pattern KMOD_CAPS,+  pattern KMOD_MODE,+  pattern KMOD_RESERVED,++  -- ** Log Priority+  LogPriority,+  pattern SDL_LOG_PRIORITY_VERBOSE,+  pattern SDL_LOG_PRIORITY_DEBUG,+  pattern SDL_LOG_PRIORITY_INFO,+  pattern SDL_LOG_PRIORITY_WARN,+  pattern SDL_LOG_PRIORITY_ERROR,+  pattern SDL_LOG_PRIORITY_CRITICAL,+  pattern SDL_NUM_LOG_PRIORITIES,++  -- ** Power State+  PowerState,+  pattern SDL_POWERSTATE_UNKNOWN,+  pattern SDL_POWERSTATE_ON_BATTERY,+  pattern SDL_POWERSTATE_NO_BATTERY,+  pattern SDL_POWERSTATE_CHARGING,+  pattern SDL_POWERSTATE_CHARGED,++  -- ** Renderer Flip+  RendererFlip,+  pattern SDL_FLIP_NONE,+  pattern SDL_FLIP_HORIZONTAL,+  pattern SDL_FLIP_VERTICAL,++  -- ** Scancode+  Scancode,+  pattern SDL_SCANCODE_UNKNOWN,+  pattern SDL_SCANCODE_A,+  pattern SDL_SCANCODE_B,+  pattern SDL_SCANCODE_C,+  pattern SDL_SCANCODE_D,+  pattern SDL_SCANCODE_E,+  pattern SDL_SCANCODE_F,+  pattern SDL_SCANCODE_G,+  pattern SDL_SCANCODE_H,+  pattern SDL_SCANCODE_I,+  pattern SDL_SCANCODE_J,+  pattern SDL_SCANCODE_K,+  pattern SDL_SCANCODE_L,+  pattern SDL_SCANCODE_M,+  pattern SDL_SCANCODE_N,+  pattern SDL_SCANCODE_O,+  pattern SDL_SCANCODE_P,+  pattern SDL_SCANCODE_Q,+  pattern SDL_SCANCODE_R,+  pattern SDL_SCANCODE_S,+  pattern SDL_SCANCODE_T,+  pattern SDL_SCANCODE_U,+  pattern SDL_SCANCODE_V,+  pattern SDL_SCANCODE_W,+  pattern SDL_SCANCODE_X,+  pattern SDL_SCANCODE_Y,+  pattern SDL_SCANCODE_Z,+  pattern SDL_SCANCODE_1,+  pattern SDL_SCANCODE_2,+  pattern SDL_SCANCODE_3,+  pattern SDL_SCANCODE_4,+  pattern SDL_SCANCODE_5,+  pattern SDL_SCANCODE_6,+  pattern SDL_SCANCODE_7,+  pattern SDL_SCANCODE_8,+  pattern SDL_SCANCODE_9,+  pattern SDL_SCANCODE_0,+  pattern SDL_SCANCODE_RETURN,+  pattern SDL_SCANCODE_ESCAPE,+  pattern SDL_SCANCODE_BACKSPACE,+  pattern SDL_SCANCODE_TAB,+  pattern SDL_SCANCODE_SPACE,+  pattern SDL_SCANCODE_MINUS,+  pattern SDL_SCANCODE_EQUALS,+  pattern SDL_SCANCODE_LEFTBRACKET,+  pattern SDL_SCANCODE_RIGHTBRACKET,+  pattern SDL_SCANCODE_BACKSLASH,+  pattern SDL_SCANCODE_NONUSHASH,+  pattern SDL_SCANCODE_SEMICOLON,+  pattern SDL_SCANCODE_APOSTROPHE,+  pattern SDL_SCANCODE_GRAVE,+  pattern SDL_SCANCODE_COMMA,+  pattern SDL_SCANCODE_PERIOD,+  pattern SDL_SCANCODE_SLASH,+  pattern SDL_SCANCODE_CAPSLOCK,+  pattern SDL_SCANCODE_F1,+  pattern SDL_SCANCODE_F2,+  pattern SDL_SCANCODE_F3,+  pattern SDL_SCANCODE_F4,+  pattern SDL_SCANCODE_F5,+  pattern SDL_SCANCODE_F6,+  pattern SDL_SCANCODE_F7,+  pattern SDL_SCANCODE_F8,+  pattern SDL_SCANCODE_F9,+  pattern SDL_SCANCODE_F10,+  pattern SDL_SCANCODE_F11,+  pattern SDL_SCANCODE_F12,+  pattern SDL_SCANCODE_PRINTSCREEN,+  pattern SDL_SCANCODE_SCROLLLOCK,+  pattern SDL_SCANCODE_PAUSE,+  pattern SDL_SCANCODE_INSERT,+  pattern SDL_SCANCODE_HOME,+  pattern SDL_SCANCODE_PAGEUP,+  pattern SDL_SCANCODE_DELETE,+  pattern SDL_SCANCODE_END,+  pattern SDL_SCANCODE_PAGEDOWN,+  pattern SDL_SCANCODE_RIGHT,+  pattern SDL_SCANCODE_LEFT,+  pattern SDL_SCANCODE_DOWN,+  pattern SDL_SCANCODE_UP,+  pattern SDL_SCANCODE_NUMLOCKCLEAR,+  pattern SDL_SCANCODE_KP_DIVIDE,+  pattern SDL_SCANCODE_KP_MULTIPLY,+  pattern SDL_SCANCODE_KP_MINUS,+  pattern SDL_SCANCODE_KP_PLUS,+  pattern SDL_SCANCODE_KP_ENTER,+  pattern SDL_SCANCODE_KP_1,+  pattern SDL_SCANCODE_KP_2,+  pattern SDL_SCANCODE_KP_3,+  pattern SDL_SCANCODE_KP_4,+  pattern SDL_SCANCODE_KP_5,+  pattern SDL_SCANCODE_KP_6,+  pattern SDL_SCANCODE_KP_7,+  pattern SDL_SCANCODE_KP_8,+  pattern SDL_SCANCODE_KP_9,+  pattern SDL_SCANCODE_KP_0,+  pattern SDL_SCANCODE_KP_PERIOD,+  pattern SDL_SCANCODE_NONUSBACKSLASH,+  pattern SDL_SCANCODE_APPLICATION,+  pattern SDL_SCANCODE_POWER,+  pattern SDL_SCANCODE_KP_EQUALS,+  pattern SDL_SCANCODE_F13,+  pattern SDL_SCANCODE_F14,+  pattern SDL_SCANCODE_F15,+  pattern SDL_SCANCODE_F16,+  pattern SDL_SCANCODE_F17,+  pattern SDL_SCANCODE_F18,+  pattern SDL_SCANCODE_F19,+  pattern SDL_SCANCODE_F20,+  pattern SDL_SCANCODE_F21,+  pattern SDL_SCANCODE_F22,+  pattern SDL_SCANCODE_F23,+  pattern SDL_SCANCODE_F24,+  pattern SDL_SCANCODE_EXECUTE,+  pattern SDL_SCANCODE_HELP,+  pattern SDL_SCANCODE_MENU,+  pattern SDL_SCANCODE_SELECT,+  pattern SDL_SCANCODE_STOP,+  pattern SDL_SCANCODE_AGAIN,+  pattern SDL_SCANCODE_UNDO,+  pattern SDL_SCANCODE_CUT,+  pattern SDL_SCANCODE_COPY,+  pattern SDL_SCANCODE_PASTE,+  pattern SDL_SCANCODE_FIND,+  pattern SDL_SCANCODE_MUTE,+  pattern SDL_SCANCODE_VOLUMEUP,+  pattern SDL_SCANCODE_VOLUMEDOWN,+  pattern SDL_SCANCODE_KP_COMMA,+  pattern SDL_SCANCODE_KP_EQUALSAS400,+  pattern SDL_SCANCODE_INTERNATIONAL1,+  pattern SDL_SCANCODE_INTERNATIONAL2,+  pattern SDL_SCANCODE_INTERNATIONAL3,+  pattern SDL_SCANCODE_INTERNATIONAL4,+  pattern SDL_SCANCODE_INTERNATIONAL5,+  pattern SDL_SCANCODE_INTERNATIONAL6,+  pattern SDL_SCANCODE_INTERNATIONAL7,+  pattern SDL_SCANCODE_INTERNATIONAL8,+  pattern SDL_SCANCODE_INTERNATIONAL9,+  pattern SDL_SCANCODE_LANG1,+  pattern SDL_SCANCODE_LANG2,+  pattern SDL_SCANCODE_LANG3,+  pattern SDL_SCANCODE_LANG4,+  pattern SDL_SCANCODE_LANG5,+  pattern SDL_SCANCODE_LANG6,+  pattern SDL_SCANCODE_LANG7,+  pattern SDL_SCANCODE_LANG8,+  pattern SDL_SCANCODE_LANG9,+  pattern SDL_SCANCODE_ALTERASE,+  pattern SDL_SCANCODE_SYSREQ,+  pattern SDL_SCANCODE_CANCEL,+  pattern SDL_SCANCODE_CLEAR,+  pattern SDL_SCANCODE_PRIOR,+  pattern SDL_SCANCODE_RETURN2,+  pattern SDL_SCANCODE_SEPARATOR,+  pattern SDL_SCANCODE_OUT,+  pattern SDL_SCANCODE_OPER,+  pattern SDL_SCANCODE_CLEARAGAIN,+  pattern SDL_SCANCODE_CRSEL,+  pattern SDL_SCANCODE_EXSEL,+  pattern SDL_SCANCODE_KP_00,+  pattern SDL_SCANCODE_KP_000,+  pattern SDL_SCANCODE_THOUSANDSSEPARATOR,+  pattern SDL_SCANCODE_DECIMALSEPARATOR,+  pattern SDL_SCANCODE_CURRENCYUNIT,+  pattern SDL_SCANCODE_CURRENCYSUBUNIT,+  pattern SDL_SCANCODE_KP_LEFTPAREN,+  pattern SDL_SCANCODE_KP_RIGHTPAREN,+  pattern SDL_SCANCODE_KP_LEFTBRACE,+  pattern SDL_SCANCODE_KP_RIGHTBRACE,+  pattern SDL_SCANCODE_KP_TAB,+  pattern SDL_SCANCODE_KP_BACKSPACE,+  pattern SDL_SCANCODE_KP_A,+  pattern SDL_SCANCODE_KP_B,+  pattern SDL_SCANCODE_KP_C,+  pattern SDL_SCANCODE_KP_D,+  pattern SDL_SCANCODE_KP_E,+  pattern SDL_SCANCODE_KP_F,+  pattern SDL_SCANCODE_KP_XOR,+  pattern SDL_SCANCODE_KP_POWER,+  pattern SDL_SCANCODE_KP_PERCENT,+  pattern SDL_SCANCODE_KP_LESS,+  pattern SDL_SCANCODE_KP_GREATER,+  pattern SDL_SCANCODE_KP_AMPERSAND,+  pattern SDL_SCANCODE_KP_DBLAMPERSAND,+  pattern SDL_SCANCODE_KP_VERTICALBAR,+  pattern SDL_SCANCODE_KP_DBLVERTICALBAR,+  pattern SDL_SCANCODE_KP_COLON,+  pattern SDL_SCANCODE_KP_HASH,+  pattern SDL_SCANCODE_KP_SPACE,+  pattern SDL_SCANCODE_KP_AT,+  pattern SDL_SCANCODE_KP_EXCLAM,+  pattern SDL_SCANCODE_KP_MEMSTORE,+  pattern SDL_SCANCODE_KP_MEMRECALL,+  pattern SDL_SCANCODE_KP_MEMCLEAR,+  pattern SDL_SCANCODE_KP_MEMADD,+  pattern SDL_SCANCODE_KP_MEMSUBTRACT,+  pattern SDL_SCANCODE_KP_MEMMULTIPLY,+  pattern SDL_SCANCODE_KP_MEMDIVIDE,+  pattern SDL_SCANCODE_KP_PLUSMINUS,+  pattern SDL_SCANCODE_KP_CLEAR,+  pattern SDL_SCANCODE_KP_CLEARENTRY,+  pattern SDL_SCANCODE_KP_BINARY,+  pattern SDL_SCANCODE_KP_OCTAL,+  pattern SDL_SCANCODE_KP_DECIMAL,+  pattern SDL_SCANCODE_KP_HEXADECIMAL,+  pattern SDL_SCANCODE_LCTRL,+  pattern SDL_SCANCODE_LSHIFT,+  pattern SDL_SCANCODE_LALT,+  pattern SDL_SCANCODE_LGUI,+  pattern SDL_SCANCODE_RCTRL,+  pattern SDL_SCANCODE_RSHIFT,+  pattern SDL_SCANCODE_RALT,+  pattern SDL_SCANCODE_RGUI,+  pattern SDL_SCANCODE_MODE,+  pattern SDL_SCANCODE_AUDIONEXT,+  pattern SDL_SCANCODE_AUDIOPREV,+  pattern SDL_SCANCODE_AUDIOSTOP,+  pattern SDL_SCANCODE_AUDIOPLAY,+  pattern SDL_SCANCODE_AUDIOMUTE,+  pattern SDL_SCANCODE_MEDIASELECT,+  pattern SDL_SCANCODE_WWW,+  pattern SDL_SCANCODE_MAIL,+  pattern SDL_SCANCODE_CALCULATOR,+  pattern SDL_SCANCODE_COMPUTER,+  pattern SDL_SCANCODE_AC_SEARCH,+  pattern SDL_SCANCODE_AC_HOME,+  pattern SDL_SCANCODE_AC_BACK,+  pattern SDL_SCANCODE_AC_FORWARD,+  pattern SDL_SCANCODE_AC_STOP,+  pattern SDL_SCANCODE_AC_REFRESH,+  pattern SDL_SCANCODE_AC_BOOKMARKS,+  pattern SDL_SCANCODE_BRIGHTNESSDOWN,+  pattern SDL_SCANCODE_BRIGHTNESSUP,+  pattern SDL_SCANCODE_DISPLAYSWITCH,+  pattern SDL_SCANCODE_KBDILLUMTOGGLE,+  pattern SDL_SCANCODE_KBDILLUMDOWN,+  pattern SDL_SCANCODE_KBDILLUMUP,+  pattern SDL_SCANCODE_EJECT,+  pattern SDL_SCANCODE_SLEEP,+  pattern SDL_SCANCODE_APP1,+  pattern SDL_SCANCODE_APP2,+  pattern SDL_NUM_SCANCODES,++  pattern SDL_SYSTEM_CURSOR_ARROW,+  pattern SDL_SYSTEM_CURSOR_IBEAM,+  pattern SDL_SYSTEM_CURSOR_WAIT,++  -- ** System Cursor+  SystemCursor,+  pattern SDL_SYSTEM_CURSOR_CROSSHAIR,+  pattern SDL_SYSTEM_CURSOR_WAITARROW,+  pattern SDL_SYSTEM_CURSOR_SIZENWSE,+  pattern SDL_SYSTEM_CURSOR_SIZENESW,+  pattern SDL_SYSTEM_CURSOR_SIZEWE,+  pattern SDL_SYSTEM_CURSOR_SIZENS,+  pattern SDL_SYSTEM_CURSOR_SIZEALL,+  pattern SDL_SYSTEM_CURSOR_NO,+  pattern SDL_SYSTEM_CURSOR_HAND,+  pattern SDL_NUM_SYSTEM_CURSORS,++  -- ** Thread Priority+  ThreadPriority,+  pattern SDL_THREAD_PRIORITY_LOW,+  pattern SDL_THREAD_PRIORITY_NORMAL,+  pattern SDL_THREAD_PRIORITY_HIGH,++  -- * Miscellaneous Enumerations+  -- | These enumerations are not used directly by any SDL function, thus they have a polymorphic type.++  -- ** Audio Allowed Changes+  pattern SDL_AUDIO_ALLOW_FREQUENCY_CHANGE,+  pattern SDL_AUDIO_ALLOW_FORMAT_CHANGE,+  pattern SDL_AUDIO_ALLOW_CHANNELS_CHANGE,+  pattern SDL_AUDIO_ALLOW_ANY_CHANGE,++  -- ** Mouse Buttons+  pattern SDL_BUTTON_LEFT,+  pattern SDL_BUTTON_MIDDLE,+  pattern SDL_BUTTON_RIGHT,+  pattern SDL_BUTTON_X1,+  pattern SDL_BUTTON_X2,++  -- ** Mouse Button Masks+  pattern SDL_BUTTON_LMASK,+  pattern SDL_BUTTON_MMASK,+  pattern SDL_BUTTON_RMASK,+  pattern SDL_BUTTON_X1MASK,+  pattern SDL_BUTTON_X2MASK,++  -- ** Event Type+  pattern SDL_FIRSTEVENT,+  pattern SDL_QUIT,+  pattern SDL_APP_TERMINATING,+  pattern SDL_APP_LOWMEMORY,+  pattern SDL_APP_WILLENTERBACKGROUND,+  pattern SDL_APP_DIDENTERBACKGROUND,+  pattern SDL_APP_WILLENTERFOREGROUND,+  pattern SDL_APP_DIDENTERFOREGROUND,+  pattern SDL_WINDOWEVENT,+  pattern SDL_SYSWMEVENT,+  pattern SDL_KEYDOWN,+  pattern SDL_KEYUP,+  pattern SDL_TEXTEDITING,+  pattern SDL_TEXTINPUT,+  pattern SDL_MOUSEMOTION,+  pattern SDL_MOUSEBUTTONDOWN,+  pattern SDL_MOUSEBUTTONUP,+  pattern SDL_MOUSEWHEEL,+  pattern SDL_JOYAXISMOTION,+  pattern SDL_JOYBALLMOTION,+  pattern SDL_JOYHATMOTION,+  pattern SDL_JOYBUTTONDOWN,+  pattern SDL_JOYBUTTONUP,+  pattern SDL_JOYDEVICEADDED,+  pattern SDL_JOYDEVICEREMOVED,+  pattern SDL_CONTROLLERAXISMOTION,+  pattern SDL_CONTROLLERBUTTONDOWN,+  pattern SDL_CONTROLLERBUTTONUP,+  pattern SDL_CONTROLLERDEVICEADDED,+  pattern SDL_CONTROLLERDEVICEREMOVED,+  pattern SDL_CONTROLLERDEVICEREMAPPED,+  pattern SDL_FINGERDOWN,+  pattern SDL_FINGERUP,+  pattern SDL_FINGERMOTION,+  pattern SDL_DOLLARGESTURE,+  pattern SDL_DOLLARRECORD,+  pattern SDL_MULTIGESTURE,+  pattern SDL_CLIPBOARDUPDATE,+  pattern SDL_DROPFILE,+  pattern SDL_USEREVENT,+  pattern SDL_LASTEVENT,++  -- ** Joystick Hat Position+  pattern SDL_HAT_CENTERED,+  pattern SDL_HAT_UP,+  pattern SDL_HAT_RIGHT,+  pattern SDL_HAT_DOWN,+  pattern SDL_HAT_LEFT,+  pattern SDL_HAT_RIGHTUP,+  pattern SDL_HAT_RIGHTDOWN,+  pattern SDL_HAT_LEFTUP,+  pattern SDL_HAT_LEFTDOWN,++  -- ** Key States+  pattern SDL_PRESSED,+  pattern SDL_RELEASED,++  -- ** Log Category+  pattern SDL_LOG_CATEGORY_APPLICATION,+  pattern SDL_LOG_CATEGORY_ERROR,+  pattern SDL_LOG_CATEGORY_ASSERT,+  pattern SDL_LOG_CATEGORY_SYSTEM,+  pattern SDL_LOG_CATEGORY_AUDIO,+  pattern SDL_LOG_CATEGORY_VIDEO,+  pattern SDL_LOG_CATEGORY_RENDER,+  pattern SDL_LOG_CATEGORY_INPUT,+  pattern SDL_LOG_CATEGORY_TEST,+  pattern SDL_LOG_CATEGORY_CUSTOM,++  -- ** Message Box Flags+  pattern SDL_MESSAGEBOX_ERROR,+  pattern SDL_MESSAGEBOX_WARNING,+  pattern SDL_MESSAGEBOX_INFORMATION,++  -- ** Message Box Button Flags+  pattern SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT,+  pattern SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT,++  -- ** OpenGL Profile+  pattern SDL_GL_CONTEXT_PROFILE_CORE,+  pattern SDL_GL_CONTEXT_PROFILE_COMPATIBILITY,+  pattern SDL_GL_CONTEXT_PROFILE_ES,++  -- ** OpenGL Context Flag+  pattern SDL_GL_CONTEXT_DEBUG_FLAG,+  pattern SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG,+  pattern SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG,+  pattern SDL_GL_CONTEXT_RESET_ISOLATION_FLAG,++  -- ** Pixel Formats+  pattern SDL_PIXELFORMAT_UNKNOWN,+  pattern SDL_PIXELFORMAT_INDEX1LSB,+  pattern SDL_PIXELFORMAT_INDEX1MSB,+  pattern SDL_PIXELFORMAT_INDEX4LSB,+  pattern SDL_PIXELFORMAT_INDEX4MSB,+  pattern SDL_PIXELFORMAT_INDEX8,+  pattern SDL_PIXELFORMAT_RGB332,+  pattern SDL_PIXELFORMAT_RGB444,+  pattern SDL_PIXELFORMAT_RGB555,+  pattern SDL_PIXELFORMAT_BGR555,+  pattern SDL_PIXELFORMAT_ARGB4444,+  pattern SDL_PIXELFORMAT_RGBA4444,+  pattern SDL_PIXELFORMAT_ABGR4444,+  pattern SDL_PIXELFORMAT_BGRA4444,+  pattern SDL_PIXELFORMAT_ARGB1555,+  pattern SDL_PIXELFORMAT_RGBA5551,+  pattern SDL_PIXELFORMAT_ABGR1555,+  pattern SDL_PIXELFORMAT_BGRA5551,+  pattern SDL_PIXELFORMAT_RGB565,+  pattern SDL_PIXELFORMAT_BGR565,+  pattern SDL_PIXELFORMAT_RGB24,+  pattern SDL_PIXELFORMAT_BGR24,+  pattern SDL_PIXELFORMAT_RGB888,+  pattern SDL_PIXELFORMAT_RGBX8888,+  pattern SDL_PIXELFORMAT_BGR888,+  pattern SDL_PIXELFORMAT_BGRX8888,+  pattern SDL_PIXELFORMAT_ARGB8888,+  pattern SDL_PIXELFORMAT_RGBA8888,+  pattern SDL_PIXELFORMAT_ABGR8888,+  pattern SDL_PIXELFORMAT_BGRA8888,+  pattern SDL_PIXELFORMAT_ARGB2101010,+  pattern SDL_PIXELFORMAT_YV12,+  pattern SDL_PIXELFORMAT_IYUV,+  pattern SDL_PIXELFORMAT_YUY2,+  pattern SDL_PIXELFORMAT_UYVY,+  pattern SDL_PIXELFORMAT_YVYU,++  -- ** Renderer Flags+  pattern SDL_RENDERER_SOFTWARE,+  pattern SDL_RENDERER_ACCELERATED,+  pattern SDL_RENDERER_PRESENTVSYNC,+  pattern SDL_RENDERER_TARGETTEXTURE,++  -- ** Texture Access+  pattern SDL_TEXTUREACCESS_STATIC,+  pattern SDL_TEXTUREACCESS_STREAMING,+  pattern SDL_TEXTUREACCESS_TARGET,++  -- ** Texture Modulate+  pattern SDL_TEXTUREMODULATE_NONE,+  pattern SDL_TEXTUREMODULATE_COLOR,+  pattern SDL_TEXTUREMODULATE_ALPHA,++  -- ** Touch+  pattern SDL_TOUCH_MOUSEID,++  -- ** Window Event+  pattern SDL_WINDOWEVENT_NONE,+  pattern SDL_WINDOWEVENT_SHOWN,+  pattern SDL_WINDOWEVENT_HIDDEN,+  pattern SDL_WINDOWEVENT_EXPOSED,+  pattern SDL_WINDOWEVENT_MOVED,+  pattern SDL_WINDOWEVENT_RESIZED,+  pattern SDL_WINDOWEVENT_SIZE_CHANGED,+  pattern SDL_WINDOWEVENT_MINIMIZED,+  pattern SDL_WINDOWEVENT_MAXIMIZED,+  pattern SDL_WINDOWEVENT_RESTORED,+  pattern SDL_WINDOWEVENT_ENTER,+  pattern SDL_WINDOWEVENT_LEAVE,+  pattern SDL_WINDOWEVENT_FOCUS_GAINED,+  pattern SDL_WINDOWEVENT_FOCUS_LOST,+  pattern SDL_WINDOWEVENT_CLOSE,++  -- ** Window Flags+  pattern SDL_WINDOW_FULLSCREEN,+  pattern SDL_WINDOW_OPENGL,+  pattern SDL_WINDOW_SHOWN,+  pattern SDL_WINDOW_HIDDEN,+  pattern SDL_WINDOW_BORDERLESS,+  pattern SDL_WINDOW_RESIZABLE,+  pattern SDL_WINDOW_MINIMIZED,+  pattern SDL_WINDOW_MAXIMIZED,+  pattern SDL_WINDOW_INPUT_GRABBED,+  pattern SDL_WINDOW_INPUT_FOCUS,+  pattern SDL_WINDOW_MOUSE_FOCUS,+  pattern SDL_WINDOW_FULLSCREEN_DESKTOP,+  pattern SDL_WINDOW_FOREIGN,+  pattern SDL_WINDOW_ALLOW_HIGHDPI,++  -- ** Window Positioning+  pattern SDL_WINDOWPOS_UNDEFINED,+  pattern SDL_WINDOWPOS_CENTERED+) where++#include "SDL.h"++import Data.Int+import Data.Word++type AudioStatus = (#type SDL_AudioStatus)+type BlendMode = (#type SDL_BlendMode)+type EventAction = (#type SDL_eventaction)+type GameControllerAxis = (#type SDL_GameControllerAxis)+type GameControllerButton = (#type SDL_GameControllerButton)+type GLattr = (#type SDL_GLattr)+type HintPriority = (#type SDL_HintPriority)+type InitFlag = Word32+type Keycode = (#type SDL_Keycode)+type Keymod = (#type SDL_Keymod)+type LogPriority = (#type SDL_LogPriority)+type PowerState = (#type SDL_PowerState)+type RendererFlip = (#type SDL_RendererFlip)+type Scancode = (#type SDL_Scancode)+type SystemCursor = (#type SDL_SystemCursor)+type ThreadPriority = (#type SDL_ThreadPriority)++pattern SDL_AUDIO_STOPPED = (#const SDL_AUDIO_STOPPED) :: AudioStatus+pattern SDL_AUDIO_PLAYING = (#const SDL_AUDIO_PLAYING) :: AudioStatus+pattern SDL_AUDIO_PAUSED = (#const SDL_AUDIO_PAUSED) :: AudioStatus++pattern SDL_BLENDMODE_NONE = (#const SDL_BLENDMODE_NONE) :: BlendMode+pattern SDL_BLENDMODE_BLEND = (#const SDL_BLENDMODE_BLEND) :: BlendMode+pattern SDL_BLENDMODE_ADD = (#const SDL_BLENDMODE_ADD) :: BlendMode+pattern SDL_BLENDMODE_MOD = (#const SDL_BLENDMODE_MOD) :: BlendMode++pattern SDL_ADDEVENT = (#const SDL_ADDEVENT) :: EventAction+pattern SDL_PEEKEVENT = (#const SDL_PEEKEVENT) :: EventAction+pattern SDL_GETEVENT = (#const SDL_GETEVENT) :: EventAction++pattern SDL_CONTROLLER_AXIS_INVALID = (#const SDL_CONTROLLER_AXIS_INVALID) :: GameControllerAxis+pattern SDL_CONTROLLER_AXIS_LEFTX = (#const SDL_CONTROLLER_AXIS_LEFTX) :: GameControllerAxis+pattern SDL_CONTROLLER_AXIS_LEFTY = (#const SDL_CONTROLLER_AXIS_LEFTY) :: GameControllerAxis+pattern SDL_CONTROLLER_AXIS_RIGHTX = (#const SDL_CONTROLLER_AXIS_RIGHTX) :: GameControllerAxis+pattern SDL_CONTROLLER_AXIS_RIGHTY = (#const SDL_CONTROLLER_AXIS_RIGHTY) :: GameControllerAxis+pattern SDL_CONTROLLER_AXIS_TRIGGERLEFT = (#const SDL_CONTROLLER_AXIS_TRIGGERLEFT) :: GameControllerAxis+pattern SDL_CONTROLLER_AXIS_TRIGGERRIGHT = (#const SDL_CONTROLLER_AXIS_TRIGGERRIGHT) :: GameControllerAxis+pattern SDL_CONTROLLER_AXIS_MAX = (#const SDL_CONTROLLER_AXIS_MAX) :: GameControllerAxis++pattern SDL_CONTROLLER_BUTTON_INVALID = (#const SDL_CONTROLLER_BUTTON_INVALID) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_A = (#const SDL_CONTROLLER_BUTTON_A) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_B = (#const SDL_CONTROLLER_BUTTON_B) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_X = (#const SDL_CONTROLLER_BUTTON_X) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_Y = (#const SDL_CONTROLLER_BUTTON_Y) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_BACK = (#const SDL_CONTROLLER_BUTTON_BACK) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_GUIDE = (#const SDL_CONTROLLER_BUTTON_GUIDE) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_START = (#const SDL_CONTROLLER_BUTTON_START) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_LEFTSTICK = (#const SDL_CONTROLLER_BUTTON_LEFTSTICK) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_RIGHTSTICK = (#const SDL_CONTROLLER_BUTTON_RIGHTSTICK) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_LEFTSHOULDER = (#const SDL_CONTROLLER_BUTTON_LEFTSHOULDER) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_RIGHTSHOULDER = (#const SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_DPAD_UP = (#const SDL_CONTROLLER_BUTTON_DPAD_UP) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_DPAD_DOWN = (#const SDL_CONTROLLER_BUTTON_DPAD_DOWN) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_DPAD_LEFT = (#const SDL_CONTROLLER_BUTTON_DPAD_LEFT) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_DPAD_RIGHT = (#const SDL_CONTROLLER_BUTTON_DPAD_RIGHT) :: GameControllerButton+pattern SDL_CONTROLLER_BUTTON_MAX = (#const SDL_CONTROLLER_BUTTON_MAX) :: GameControllerButton++pattern SDL_GL_RED_SIZE = (#const SDL_GL_RED_SIZE) :: GLattr+pattern SDL_GL_GREEN_SIZE = (#const SDL_GL_GREEN_SIZE) :: GLattr+pattern SDL_GL_BLUE_SIZE = (#const SDL_GL_BLUE_SIZE) :: GLattr+pattern SDL_GL_ALPHA_SIZE = (#const SDL_GL_ALPHA_SIZE) :: GLattr+pattern SDL_GL_BUFFER_SIZE = (#const SDL_GL_BUFFER_SIZE) :: GLattr+pattern SDL_GL_DOUBLEBUFFER = (#const SDL_GL_DOUBLEBUFFER) :: GLattr+pattern SDL_GL_DEPTH_SIZE = (#const SDL_GL_DEPTH_SIZE) :: GLattr+pattern SDL_GL_STENCIL_SIZE = (#const SDL_GL_STENCIL_SIZE) :: GLattr+pattern SDL_GL_ACCUM_RED_SIZE = (#const SDL_GL_ACCUM_RED_SIZE) :: GLattr+pattern SDL_GL_ACCUM_GREEN_SIZE = (#const SDL_GL_ACCUM_GREEN_SIZE) :: GLattr+pattern SDL_GL_ACCUM_BLUE_SIZE = (#const SDL_GL_ACCUM_BLUE_SIZE) :: GLattr+pattern SDL_GL_ACCUM_ALPHA_SIZE = (#const SDL_GL_ACCUM_ALPHA_SIZE) :: GLattr+pattern SDL_GL_STEREO = (#const SDL_GL_STEREO) :: GLattr+pattern SDL_GL_MULTISAMPLEBUFFERS = (#const SDL_GL_MULTISAMPLEBUFFERS) :: GLattr+pattern SDL_GL_MULTISAMPLESAMPLES = (#const SDL_GL_MULTISAMPLESAMPLES) :: GLattr+pattern SDL_GL_ACCELERATED_VISUAL = (#const SDL_GL_ACCELERATED_VISUAL) :: GLattr+pattern SDL_GL_RETAINED_BACKING = (#const SDL_GL_RETAINED_BACKING) :: GLattr+pattern SDL_GL_CONTEXT_MAJOR_VERSION = (#const SDL_GL_CONTEXT_MAJOR_VERSION) :: GLattr+pattern SDL_GL_CONTEXT_MINOR_VERSION = (#const SDL_GL_CONTEXT_MINOR_VERSION) :: GLattr+pattern SDL_GL_CONTEXT_EGL = (#const SDL_GL_CONTEXT_EGL) :: GLattr+pattern SDL_GL_CONTEXT_FLAGS = (#const SDL_GL_CONTEXT_FLAGS) :: GLattr+pattern SDL_GL_CONTEXT_PROFILE_MASK = (#const SDL_GL_CONTEXT_PROFILE_MASK) :: GLattr+pattern SDL_GL_SHARE_WITH_CURRENT_CONTEXT = (#const SDL_GL_SHARE_WITH_CURRENT_CONTEXT) :: GLattr+pattern SDL_GL_FRAMEBUFFER_SRGB_CAPABLE = (#const SDL_GL_FRAMEBUFFER_SRGB_CAPABLE) :: GLattr++pattern SDL_HINT_DEFAULT = (#const SDL_HINT_DEFAULT) :: HintPriority+pattern SDL_HINT_NORMAL = (#const SDL_HINT_NORMAL) :: HintPriority+pattern SDL_HINT_OVERRIDE = (#const SDL_HINT_OVERRIDE) :: HintPriority++pattern SDL_INIT_TIMER = (#const SDL_INIT_TIMER) :: InitFlag+pattern SDL_INIT_AUDIO = (#const SDL_INIT_AUDIO) :: InitFlag+pattern SDL_INIT_VIDEO = (#const SDL_INIT_VIDEO) :: InitFlag+pattern SDL_INIT_JOYSTICK = (#const SDL_INIT_JOYSTICK) :: InitFlag+pattern SDL_INIT_HAPTIC = (#const SDL_INIT_HAPTIC) :: InitFlag+pattern SDL_INIT_GAMECONTROLLER = (#const SDL_INIT_GAMECONTROLLER) :: InitFlag+pattern SDL_INIT_EVENTS = (#const SDL_INIT_EVENTS) :: InitFlag+pattern SDL_INIT_NOPARACHUTE = (#const SDL_INIT_NOPARACHUTE) :: InitFlag+pattern SDL_INIT_EVERYTHING = (#const SDL_INIT_EVERYTHING) :: InitFlag++pattern SDLK_UNKNOWN = (#const SDLK_UNKNOWN) :: Keycode+pattern SDLK_RETURN = (#const SDLK_RETURN) :: Keycode+pattern SDLK_ESCAPE = (#const SDLK_ESCAPE) :: Keycode+pattern SDLK_BACKSPACE = (#const SDLK_BACKSPACE) :: Keycode+pattern SDLK_TAB = (#const SDLK_TAB) :: Keycode+pattern SDLK_SPACE = (#const SDLK_SPACE) :: Keycode+pattern SDLK_EXCLAIM = (#const SDLK_EXCLAIM) :: Keycode+pattern SDLK_QUOTEDBL = (#const SDLK_QUOTEDBL) :: Keycode+pattern SDLK_HASH = (#const SDLK_HASH) :: Keycode+pattern SDLK_PERCENT = (#const SDLK_PERCENT) :: Keycode+pattern SDLK_DOLLAR = (#const SDLK_DOLLAR) :: Keycode+pattern SDLK_AMPERSAND = (#const SDLK_AMPERSAND) :: Keycode+pattern SDLK_QUOTE = (#const SDLK_QUOTE) :: Keycode+pattern SDLK_LEFTPAREN = (#const SDLK_LEFTPAREN) :: Keycode+pattern SDLK_RIGHTPAREN = (#const SDLK_RIGHTPAREN) :: Keycode+pattern SDLK_ASTERISK = (#const SDLK_ASTERISK) :: Keycode+pattern SDLK_PLUS = (#const SDLK_PLUS) :: Keycode+pattern SDLK_COMMA = (#const SDLK_COMMA) :: Keycode+pattern SDLK_MINUS = (#const SDLK_MINUS) :: Keycode+pattern SDLK_PERIOD = (#const SDLK_PERIOD) :: Keycode+pattern SDLK_SLASH = (#const SDLK_SLASH) :: Keycode+pattern SDLK_0 = (#const SDLK_0) :: Keycode+pattern SDLK_1 = (#const SDLK_1) :: Keycode+pattern SDLK_2 = (#const SDLK_2) :: Keycode+pattern SDLK_3 = (#const SDLK_3) :: Keycode+pattern SDLK_4 = (#const SDLK_4) :: Keycode+pattern SDLK_5 = (#const SDLK_5) :: Keycode+pattern SDLK_6 = (#const SDLK_6) :: Keycode+pattern SDLK_7 = (#const SDLK_7) :: Keycode+pattern SDLK_8 = (#const SDLK_8) :: Keycode+pattern SDLK_9 = (#const SDLK_9) :: Keycode+pattern SDLK_COLON = (#const SDLK_COLON) :: Keycode+pattern SDLK_SEMICOLON = (#const SDLK_SEMICOLON) :: Keycode+pattern SDLK_LESS = (#const SDLK_LESS) :: Keycode+pattern SDLK_EQUALS = (#const SDLK_EQUALS) :: Keycode+pattern SDLK_GREATER = (#const SDLK_GREATER) :: Keycode+pattern SDLK_QUESTION = (#const SDLK_QUESTION) :: Keycode+pattern SDLK_AT = (#const SDLK_AT) :: Keycode+pattern SDLK_LEFTBRACKET = (#const SDLK_LEFTBRACKET) :: Keycode+pattern SDLK_BACKSLASH = (#const SDLK_BACKSLASH) :: Keycode+pattern SDLK_RIGHTBRACKET = (#const SDLK_RIGHTBRACKET) :: Keycode+pattern SDLK_CARET = (#const SDLK_CARET) :: Keycode+pattern SDLK_UNDERSCORE = (#const SDLK_UNDERSCORE) :: Keycode+pattern SDLK_BACKQUOTE = (#const SDLK_BACKQUOTE) :: Keycode+pattern SDLK_a = (#const SDLK_a) :: Keycode+pattern SDLK_b = (#const SDLK_b) :: Keycode+pattern SDLK_c = (#const SDLK_c) :: Keycode+pattern SDLK_d = (#const SDLK_d) :: Keycode+pattern SDLK_e = (#const SDLK_e) :: Keycode+pattern SDLK_f = (#const SDLK_f) :: Keycode+pattern SDLK_g = (#const SDLK_g) :: Keycode+pattern SDLK_h = (#const SDLK_h) :: Keycode+pattern SDLK_i = (#const SDLK_i) :: Keycode+pattern SDLK_j = (#const SDLK_j) :: Keycode+pattern SDLK_k = (#const SDLK_k) :: Keycode+pattern SDLK_l = (#const SDLK_l) :: Keycode+pattern SDLK_m = (#const SDLK_m) :: Keycode+pattern SDLK_n = (#const SDLK_n) :: Keycode+pattern SDLK_o = (#const SDLK_o) :: Keycode+pattern SDLK_p = (#const SDLK_p) :: Keycode+pattern SDLK_q = (#const SDLK_q) :: Keycode+pattern SDLK_r = (#const SDLK_r) :: Keycode+pattern SDLK_s = (#const SDLK_s) :: Keycode+pattern SDLK_t = (#const SDLK_t) :: Keycode+pattern SDLK_u = (#const SDLK_u) :: Keycode+pattern SDLK_v = (#const SDLK_v) :: Keycode+pattern SDLK_w = (#const SDLK_w) :: Keycode+pattern SDLK_x = (#const SDLK_x) :: Keycode+pattern SDLK_y = (#const SDLK_y) :: Keycode+pattern SDLK_z = (#const SDLK_z) :: Keycode+pattern SDLK_CAPSLOCK = (#const SDLK_CAPSLOCK) :: Keycode+pattern SDLK_F1 = (#const SDLK_F1) :: Keycode+pattern SDLK_F2 = (#const SDLK_F2) :: Keycode+pattern SDLK_F3 = (#const SDLK_F3) :: Keycode+pattern SDLK_F4 = (#const SDLK_F4) :: Keycode+pattern SDLK_F5 = (#const SDLK_F5) :: Keycode+pattern SDLK_F6 = (#const SDLK_F6) :: Keycode+pattern SDLK_F7 = (#const SDLK_F7) :: Keycode+pattern SDLK_F8 = (#const SDLK_F8) :: Keycode+pattern SDLK_F9 = (#const SDLK_F9) :: Keycode+pattern SDLK_F10 = (#const SDLK_F10) :: Keycode+pattern SDLK_F11 = (#const SDLK_F11) :: Keycode+pattern SDLK_F12 = (#const SDLK_F12) :: Keycode+pattern SDLK_PRINTSCREEN = (#const SDLK_PRINTSCREEN) :: Keycode+pattern SDLK_SCROLLLOCK = (#const SDLK_SCROLLLOCK) :: Keycode+pattern SDLK_PAUSE = (#const SDLK_PAUSE) :: Keycode+pattern SDLK_INSERT = (#const SDLK_INSERT) :: Keycode+pattern SDLK_HOME = (#const SDLK_HOME) :: Keycode+pattern SDLK_PAGEUP = (#const SDLK_PAGEUP) :: Keycode+pattern SDLK_DELETE = (#const SDLK_DELETE) :: Keycode+pattern SDLK_END = (#const SDLK_END) :: Keycode+pattern SDLK_PAGEDOWN = (#const SDLK_PAGEDOWN) :: Keycode+pattern SDLK_RIGHT = (#const SDLK_RIGHT) :: Keycode+pattern SDLK_LEFT = (#const SDLK_LEFT) :: Keycode+pattern SDLK_DOWN = (#const SDLK_DOWN) :: Keycode+pattern SDLK_UP = (#const SDLK_UP) :: Keycode+pattern SDLK_NUMLOCKCLEAR = (#const SDLK_NUMLOCKCLEAR) :: Keycode+pattern SDLK_KP_DIVIDE = (#const SDLK_KP_DIVIDE) :: Keycode+pattern SDLK_KP_MULTIPLY = (#const SDLK_KP_MULTIPLY) :: Keycode+pattern SDLK_KP_MINUS = (#const SDLK_KP_MINUS) :: Keycode+pattern SDLK_KP_PLUS = (#const SDLK_KP_PLUS) :: Keycode+pattern SDLK_KP_ENTER = (#const SDLK_KP_ENTER) :: Keycode+pattern SDLK_KP_1 = (#const SDLK_KP_1) :: Keycode+pattern SDLK_KP_2 = (#const SDLK_KP_2) :: Keycode+pattern SDLK_KP_3 = (#const SDLK_KP_3) :: Keycode+pattern SDLK_KP_4 = (#const SDLK_KP_4) :: Keycode+pattern SDLK_KP_5 = (#const SDLK_KP_5) :: Keycode+pattern SDLK_KP_6 = (#const SDLK_KP_6) :: Keycode+pattern SDLK_KP_7 = (#const SDLK_KP_7) :: Keycode+pattern SDLK_KP_8 = (#const SDLK_KP_8) :: Keycode+pattern SDLK_KP_9 = (#const SDLK_KP_9) :: Keycode+pattern SDLK_KP_0 = (#const SDLK_KP_0) :: Keycode+pattern SDLK_KP_PERIOD = (#const SDLK_KP_PERIOD) :: Keycode+pattern SDLK_APPLICATION = (#const SDLK_APPLICATION) :: Keycode+pattern SDLK_POWER = (#const SDLK_POWER) :: Keycode+pattern SDLK_KP_EQUALS = (#const SDLK_KP_EQUALS) :: Keycode+pattern SDLK_F13 = (#const SDLK_F13) :: Keycode+pattern SDLK_F14 = (#const SDLK_F14) :: Keycode+pattern SDLK_F15 = (#const SDLK_F15) :: Keycode+pattern SDLK_F16 = (#const SDLK_F16) :: Keycode+pattern SDLK_F17 = (#const SDLK_F17) :: Keycode+pattern SDLK_F18 = (#const SDLK_F18) :: Keycode+pattern SDLK_F19 = (#const SDLK_F19) :: Keycode+pattern SDLK_F20 = (#const SDLK_F20) :: Keycode+pattern SDLK_F21 = (#const SDLK_F21) :: Keycode+pattern SDLK_F22 = (#const SDLK_F22) :: Keycode+pattern SDLK_F23 = (#const SDLK_F23) :: Keycode+pattern SDLK_F24 = (#const SDLK_F24) :: Keycode+pattern SDLK_EXECUTE = (#const SDLK_EXECUTE) :: Keycode+pattern SDLK_HELP = (#const SDLK_HELP) :: Keycode+pattern SDLK_MENU = (#const SDLK_MENU) :: Keycode+pattern SDLK_SELECT = (#const SDLK_SELECT) :: Keycode+pattern SDLK_STOP = (#const SDLK_STOP) :: Keycode+pattern SDLK_AGAIN = (#const SDLK_AGAIN) :: Keycode+pattern SDLK_UNDO = (#const SDLK_UNDO) :: Keycode+pattern SDLK_CUT = (#const SDLK_CUT) :: Keycode+pattern SDLK_COPY = (#const SDLK_COPY) :: Keycode+pattern SDLK_PASTE = (#const SDLK_PASTE) :: Keycode+pattern SDLK_FIND = (#const SDLK_FIND) :: Keycode+pattern SDLK_MUTE = (#const SDLK_MUTE) :: Keycode+pattern SDLK_VOLUMEUP = (#const SDLK_VOLUMEUP) :: Keycode+pattern SDLK_VOLUMEDOWN = (#const SDLK_VOLUMEDOWN) :: Keycode+pattern SDLK_KP_COMMA = (#const SDLK_KP_COMMA) :: Keycode+pattern SDLK_KP_EQUALSAS400 = (#const SDLK_KP_EQUALSAS400) :: Keycode+pattern SDLK_ALTERASE = (#const SDLK_ALTERASE) :: Keycode+pattern SDLK_SYSREQ = (#const SDLK_SYSREQ) :: Keycode+pattern SDLK_CANCEL = (#const SDLK_CANCEL) :: Keycode+pattern SDLK_CLEAR = (#const SDLK_CLEAR) :: Keycode+pattern SDLK_PRIOR = (#const SDLK_PRIOR) :: Keycode+pattern SDLK_RETURN2 = (#const SDLK_RETURN2) :: Keycode+pattern SDLK_SEPARATOR = (#const SDLK_SEPARATOR) :: Keycode+pattern SDLK_OUT = (#const SDLK_OUT) :: Keycode+pattern SDLK_OPER = (#const SDLK_OPER) :: Keycode+pattern SDLK_CLEARAGAIN = (#const SDLK_CLEARAGAIN) :: Keycode+pattern SDLK_CRSEL = (#const SDLK_CRSEL) :: Keycode+pattern SDLK_EXSEL = (#const SDLK_EXSEL) :: Keycode+pattern SDLK_KP_00 = (#const SDLK_KP_00) :: Keycode+pattern SDLK_KP_000 = (#const SDLK_KP_000) :: Keycode+pattern SDLK_THOUSANDSSEPARATOR = (#const SDLK_THOUSANDSSEPARATOR) :: Keycode+pattern SDLK_DECIMALSEPARATOR = (#const SDLK_DECIMALSEPARATOR) :: Keycode+pattern SDLK_CURRENCYUNIT = (#const SDLK_CURRENCYUNIT) :: Keycode+pattern SDLK_CURRENCYSUBUNIT = (#const SDLK_CURRENCYSUBUNIT) :: Keycode+pattern SDLK_KP_LEFTPAREN = (#const SDLK_KP_LEFTPAREN) :: Keycode+pattern SDLK_KP_RIGHTPAREN = (#const SDLK_KP_RIGHTPAREN) :: Keycode+pattern SDLK_KP_LEFTBRACE = (#const SDLK_KP_LEFTBRACE) :: Keycode+pattern SDLK_KP_RIGHTBRACE = (#const SDLK_KP_RIGHTBRACE) :: Keycode+pattern SDLK_KP_TAB = (#const SDLK_KP_TAB) :: Keycode+pattern SDLK_KP_BACKSPACE = (#const SDLK_KP_BACKSPACE) :: Keycode+pattern SDLK_KP_A = (#const SDLK_KP_A) :: Keycode+pattern SDLK_KP_B = (#const SDLK_KP_B) :: Keycode+pattern SDLK_KP_C = (#const SDLK_KP_C) :: Keycode+pattern SDLK_KP_D = (#const SDLK_KP_D) :: Keycode+pattern SDLK_KP_E = (#const SDLK_KP_E) :: Keycode+pattern SDLK_KP_F = (#const SDLK_KP_F) :: Keycode+pattern SDLK_KP_XOR = (#const SDLK_KP_XOR) :: Keycode+pattern SDLK_KP_POWER = (#const SDLK_KP_POWER) :: Keycode+pattern SDLK_KP_PERCENT = (#const SDLK_KP_PERCENT) :: Keycode+pattern SDLK_KP_LESS = (#const SDLK_KP_LESS) :: Keycode+pattern SDLK_KP_GREATER = (#const SDLK_KP_GREATER) :: Keycode+pattern SDLK_KP_AMPERSAND = (#const SDLK_KP_AMPERSAND) :: Keycode+pattern SDLK_KP_DBLAMPERSAND = (#const SDLK_KP_DBLAMPERSAND) :: Keycode+pattern SDLK_KP_VERTICALBAR = (#const SDLK_KP_VERTICALBAR) :: Keycode+pattern SDLK_KP_DBLVERTICALBAR = (#const SDLK_KP_DBLVERTICALBAR) :: Keycode+pattern SDLK_KP_COLON = (#const SDLK_KP_COLON) :: Keycode+pattern SDLK_KP_HASH = (#const SDLK_KP_HASH) :: Keycode+pattern SDLK_KP_SPACE = (#const SDLK_KP_SPACE) :: Keycode+pattern SDLK_KP_AT = (#const SDLK_KP_AT) :: Keycode+pattern SDLK_KP_EXCLAM = (#const SDLK_KP_EXCLAM) :: Keycode+pattern SDLK_KP_MEMSTORE = (#const SDLK_KP_MEMSTORE) :: Keycode+pattern SDLK_KP_MEMRECALL = (#const SDLK_KP_MEMRECALL) :: Keycode+pattern SDLK_KP_MEMCLEAR = (#const SDLK_KP_MEMCLEAR) :: Keycode+pattern SDLK_KP_MEMADD = (#const SDLK_KP_MEMADD) :: Keycode+pattern SDLK_KP_MEMSUBTRACT = (#const SDLK_KP_MEMSUBTRACT) :: Keycode+pattern SDLK_KP_MEMMULTIPLY = (#const SDLK_KP_MEMMULTIPLY) :: Keycode+pattern SDLK_KP_MEMDIVIDE = (#const SDLK_KP_MEMDIVIDE) :: Keycode+pattern SDLK_KP_PLUSMINUS = (#const SDLK_KP_PLUSMINUS) :: Keycode+pattern SDLK_KP_CLEAR = (#const SDLK_KP_CLEAR) :: Keycode+pattern SDLK_KP_CLEARENTRY = (#const SDLK_KP_CLEARENTRY) :: Keycode+pattern SDLK_KP_BINARY = (#const SDLK_KP_BINARY) :: Keycode+pattern SDLK_KP_OCTAL = (#const SDLK_KP_OCTAL) :: Keycode+pattern SDLK_KP_DECIMAL = (#const SDLK_KP_DECIMAL) :: Keycode+pattern SDLK_KP_HEXADECIMAL = (#const SDLK_KP_HEXADECIMAL) :: Keycode+pattern SDLK_LCTRL = (#const SDLK_LCTRL) :: Keycode+pattern SDLK_LSHIFT = (#const SDLK_LSHIFT) :: Keycode+pattern SDLK_LALT = (#const SDLK_LALT) :: Keycode+pattern SDLK_LGUI = (#const SDLK_LGUI) :: Keycode+pattern SDLK_RCTRL = (#const SDLK_RCTRL) :: Keycode+pattern SDLK_RSHIFT = (#const SDLK_RSHIFT) :: Keycode+pattern SDLK_RALT = (#const SDLK_RALT) :: Keycode+pattern SDLK_RGUI = (#const SDLK_RGUI) :: Keycode+pattern SDLK_MODE = (#const SDLK_MODE) :: Keycode+pattern SDLK_AUDIONEXT = (#const SDLK_AUDIONEXT) :: Keycode+pattern SDLK_AUDIOPREV = (#const SDLK_AUDIOPREV) :: Keycode+pattern SDLK_AUDIOSTOP = (#const SDLK_AUDIOSTOP) :: Keycode+pattern SDLK_AUDIOPLAY = (#const SDLK_AUDIOPLAY) :: Keycode+pattern SDLK_AUDIOMUTE = (#const SDLK_AUDIOMUTE) :: Keycode+pattern SDLK_MEDIASELECT = (#const SDLK_MEDIASELECT) :: Keycode+pattern SDLK_WWW = (#const SDLK_WWW) :: Keycode+pattern SDLK_MAIL = (#const SDLK_MAIL) :: Keycode+pattern SDLK_CALCULATOR = (#const SDLK_CALCULATOR) :: Keycode+pattern SDLK_COMPUTER = (#const SDLK_COMPUTER) :: Keycode+pattern SDLK_AC_SEARCH = (#const SDLK_AC_SEARCH) :: Keycode+pattern SDLK_AC_HOME = (#const SDLK_AC_HOME) :: Keycode+pattern SDLK_AC_BACK = (#const SDLK_AC_BACK) :: Keycode+pattern SDLK_AC_FORWARD = (#const SDLK_AC_FORWARD) :: Keycode+pattern SDLK_AC_STOP = (#const SDLK_AC_STOP) :: Keycode+pattern SDLK_AC_REFRESH = (#const SDLK_AC_REFRESH) :: Keycode+pattern SDLK_AC_BOOKMARKS = (#const SDLK_AC_BOOKMARKS) :: Keycode+pattern SDLK_BRIGHTNESSDOWN = (#const SDLK_BRIGHTNESSDOWN) :: Keycode+pattern SDLK_BRIGHTNESSUP = (#const SDLK_BRIGHTNESSUP) :: Keycode+pattern SDLK_DISPLAYSWITCH = (#const SDLK_DISPLAYSWITCH) :: Keycode+pattern SDLK_KBDILLUMTOGGLE = (#const SDLK_KBDILLUMTOGGLE) :: Keycode+pattern SDLK_KBDILLUMDOWN = (#const SDLK_KBDILLUMDOWN) :: Keycode+pattern SDLK_KBDILLUMUP = (#const SDLK_KBDILLUMUP) :: Keycode+pattern SDLK_EJECT = (#const SDLK_EJECT) :: Keycode+pattern SDLK_SLEEP = (#const SDLK_SLEEP) :: Keycode++pattern KMOD_NONE = (#const KMOD_NONE)+pattern KMOD_LSHIFT = (#const KMOD_LSHIFT)+pattern KMOD_RSHIFT = (#const KMOD_RSHIFT)+pattern KMOD_SHIFT = (#const KMOD_SHIFT)+pattern KMOD_LCTRL = (#const KMOD_LCTRL)+pattern KMOD_RCTRL = (#const KMOD_RCTRL)+pattern KMOD_CTRL = (#const KMOD_CTRL)+pattern KMOD_LALT = (#const KMOD_LALT)+pattern KMOD_RALT = (#const KMOD_RALT)+pattern KMOD_ALT = (#const KMOD_ALT)+pattern KMOD_LGUI = (#const KMOD_LGUI)+pattern KMOD_RGUI = (#const KMOD_RGUI)+pattern KMOD_GUI = (#const KMOD_GUI)+pattern KMOD_NUM = (#const KMOD_NUM)+pattern KMOD_CAPS = (#const KMOD_CAPS)+pattern KMOD_MODE = (#const KMOD_MODE)+pattern KMOD_RESERVED = (#const KMOD_RESERVED)++pattern SDL_LOG_PRIORITY_VERBOSE = (#const SDL_LOG_PRIORITY_VERBOSE) :: LogPriority+pattern SDL_LOG_PRIORITY_DEBUG = (#const SDL_LOG_PRIORITY_DEBUG) :: LogPriority+pattern SDL_LOG_PRIORITY_INFO = (#const SDL_LOG_PRIORITY_INFO) :: LogPriority+pattern SDL_LOG_PRIORITY_WARN = (#const SDL_LOG_PRIORITY_WARN) :: LogPriority+pattern SDL_LOG_PRIORITY_ERROR = (#const SDL_LOG_PRIORITY_ERROR) :: LogPriority+pattern SDL_LOG_PRIORITY_CRITICAL = (#const SDL_LOG_PRIORITY_CRITICAL) :: LogPriority+pattern SDL_NUM_LOG_PRIORITIES = (#const SDL_NUM_LOG_PRIORITIES) :: LogPriority++pattern SDL_POWERSTATE_UNKNOWN = (#const SDL_POWERSTATE_UNKNOWN) :: PowerState+pattern SDL_POWERSTATE_ON_BATTERY = (#const SDL_POWERSTATE_ON_BATTERY) :: PowerState+pattern SDL_POWERSTATE_NO_BATTERY = (#const SDL_POWERSTATE_NO_BATTERY) :: PowerState+pattern SDL_POWERSTATE_CHARGING = (#const SDL_POWERSTATE_CHARGING) :: PowerState+pattern SDL_POWERSTATE_CHARGED = (#const SDL_POWERSTATE_CHARGED) :: PowerState++pattern SDL_FLIP_NONE = (#const SDL_FLIP_NONE) :: RendererFlip+pattern SDL_FLIP_HORIZONTAL = (#const SDL_FLIP_HORIZONTAL) :: RendererFlip+pattern SDL_FLIP_VERTICAL = (#const SDL_FLIP_VERTICAL) :: RendererFlip++pattern SDL_SCANCODE_UNKNOWN = (#const SDL_SCANCODE_UNKNOWN) :: Scancode+pattern SDL_SCANCODE_A = (#const SDL_SCANCODE_A) :: Scancode+pattern SDL_SCANCODE_B = (#const SDL_SCANCODE_B) :: Scancode+pattern SDL_SCANCODE_C = (#const SDL_SCANCODE_C) :: Scancode+pattern SDL_SCANCODE_D = (#const SDL_SCANCODE_D) :: Scancode+pattern SDL_SCANCODE_E = (#const SDL_SCANCODE_E) :: Scancode+pattern SDL_SCANCODE_F = (#const SDL_SCANCODE_F) :: Scancode+pattern SDL_SCANCODE_G = (#const SDL_SCANCODE_G) :: Scancode+pattern SDL_SCANCODE_H = (#const SDL_SCANCODE_H) :: Scancode+pattern SDL_SCANCODE_I = (#const SDL_SCANCODE_I) :: Scancode+pattern SDL_SCANCODE_J = (#const SDL_SCANCODE_J) :: Scancode+pattern SDL_SCANCODE_K = (#const SDL_SCANCODE_K) :: Scancode+pattern SDL_SCANCODE_L = (#const SDL_SCANCODE_L) :: Scancode+pattern SDL_SCANCODE_M = (#const SDL_SCANCODE_M) :: Scancode+pattern SDL_SCANCODE_N = (#const SDL_SCANCODE_N) :: Scancode+pattern SDL_SCANCODE_O = (#const SDL_SCANCODE_O) :: Scancode+pattern SDL_SCANCODE_P = (#const SDL_SCANCODE_P) :: Scancode+pattern SDL_SCANCODE_Q = (#const SDL_SCANCODE_Q) :: Scancode+pattern SDL_SCANCODE_R = (#const SDL_SCANCODE_R) :: Scancode+pattern SDL_SCANCODE_S = (#const SDL_SCANCODE_S) :: Scancode+pattern SDL_SCANCODE_T = (#const SDL_SCANCODE_T) :: Scancode+pattern SDL_SCANCODE_U = (#const SDL_SCANCODE_U) :: Scancode+pattern SDL_SCANCODE_V = (#const SDL_SCANCODE_V) :: Scancode+pattern SDL_SCANCODE_W = (#const SDL_SCANCODE_W) :: Scancode+pattern SDL_SCANCODE_X = (#const SDL_SCANCODE_X) :: Scancode+pattern SDL_SCANCODE_Y = (#const SDL_SCANCODE_Y) :: Scancode+pattern SDL_SCANCODE_Z = (#const SDL_SCANCODE_Z) :: Scancode+pattern SDL_SCANCODE_1 = (#const SDL_SCANCODE_1) :: Scancode+pattern SDL_SCANCODE_2 = (#const SDL_SCANCODE_2) :: Scancode+pattern SDL_SCANCODE_3 = (#const SDL_SCANCODE_3) :: Scancode+pattern SDL_SCANCODE_4 = (#const SDL_SCANCODE_4) :: Scancode+pattern SDL_SCANCODE_5 = (#const SDL_SCANCODE_5) :: Scancode+pattern SDL_SCANCODE_6 = (#const SDL_SCANCODE_6) :: Scancode+pattern SDL_SCANCODE_7 = (#const SDL_SCANCODE_7) :: Scancode+pattern SDL_SCANCODE_8 = (#const SDL_SCANCODE_8) :: Scancode+pattern SDL_SCANCODE_9 = (#const SDL_SCANCODE_9) :: Scancode+pattern SDL_SCANCODE_0 = (#const SDL_SCANCODE_0) :: Scancode+pattern SDL_SCANCODE_RETURN = (#const SDL_SCANCODE_RETURN) :: Scancode+pattern SDL_SCANCODE_ESCAPE = (#const SDL_SCANCODE_ESCAPE) :: Scancode+pattern SDL_SCANCODE_BACKSPACE = (#const SDL_SCANCODE_BACKSPACE) :: Scancode+pattern SDL_SCANCODE_TAB = (#const SDL_SCANCODE_TAB) :: Scancode+pattern SDL_SCANCODE_SPACE = (#const SDL_SCANCODE_SPACE) :: Scancode+pattern SDL_SCANCODE_MINUS = (#const SDL_SCANCODE_MINUS) :: Scancode+pattern SDL_SCANCODE_EQUALS = (#const SDL_SCANCODE_EQUALS) :: Scancode+pattern SDL_SCANCODE_LEFTBRACKET = (#const SDL_SCANCODE_LEFTBRACKET) :: Scancode+pattern SDL_SCANCODE_RIGHTBRACKET = (#const SDL_SCANCODE_RIGHTBRACKET) :: Scancode+pattern SDL_SCANCODE_BACKSLASH = (#const SDL_SCANCODE_BACKSLASH) :: Scancode+pattern SDL_SCANCODE_NONUSHASH = (#const SDL_SCANCODE_NONUSHASH) :: Scancode+pattern SDL_SCANCODE_SEMICOLON = (#const SDL_SCANCODE_SEMICOLON) :: Scancode+pattern SDL_SCANCODE_APOSTROPHE = (#const SDL_SCANCODE_APOSTROPHE) :: Scancode+pattern SDL_SCANCODE_GRAVE = (#const SDL_SCANCODE_GRAVE) :: Scancode+pattern SDL_SCANCODE_COMMA = (#const SDL_SCANCODE_COMMA) :: Scancode+pattern SDL_SCANCODE_PERIOD = (#const SDL_SCANCODE_PERIOD) :: Scancode+pattern SDL_SCANCODE_SLASH = (#const SDL_SCANCODE_SLASH) :: Scancode+pattern SDL_SCANCODE_CAPSLOCK = (#const SDL_SCANCODE_CAPSLOCK) :: Scancode+pattern SDL_SCANCODE_F1 = (#const SDL_SCANCODE_F1) :: Scancode+pattern SDL_SCANCODE_F2 = (#const SDL_SCANCODE_F2) :: Scancode+pattern SDL_SCANCODE_F3 = (#const SDL_SCANCODE_F3) :: Scancode+pattern SDL_SCANCODE_F4 = (#const SDL_SCANCODE_F4) :: Scancode+pattern SDL_SCANCODE_F5 = (#const SDL_SCANCODE_F5) :: Scancode+pattern SDL_SCANCODE_F6 = (#const SDL_SCANCODE_F6) :: Scancode+pattern SDL_SCANCODE_F7 = (#const SDL_SCANCODE_F7) :: Scancode+pattern SDL_SCANCODE_F8 = (#const SDL_SCANCODE_F8) :: Scancode+pattern SDL_SCANCODE_F9 = (#const SDL_SCANCODE_F9) :: Scancode+pattern SDL_SCANCODE_F10 = (#const SDL_SCANCODE_F10) :: Scancode+pattern SDL_SCANCODE_F11 = (#const SDL_SCANCODE_F11) :: Scancode+pattern SDL_SCANCODE_F12 = (#const SDL_SCANCODE_F12) :: Scancode+pattern SDL_SCANCODE_PRINTSCREEN = (#const SDL_SCANCODE_PRINTSCREEN) :: Scancode+pattern SDL_SCANCODE_SCROLLLOCK = (#const SDL_SCANCODE_SCROLLLOCK) :: Scancode+pattern SDL_SCANCODE_PAUSE = (#const SDL_SCANCODE_PAUSE) :: Scancode+pattern SDL_SCANCODE_INSERT = (#const SDL_SCANCODE_INSERT) :: Scancode+pattern SDL_SCANCODE_HOME = (#const SDL_SCANCODE_HOME) :: Scancode+pattern SDL_SCANCODE_PAGEUP = (#const SDL_SCANCODE_PAGEUP) :: Scancode+pattern SDL_SCANCODE_DELETE = (#const SDL_SCANCODE_DELETE) :: Scancode+pattern SDL_SCANCODE_END = (#const SDL_SCANCODE_END) :: Scancode+pattern SDL_SCANCODE_PAGEDOWN = (#const SDL_SCANCODE_PAGEDOWN) :: Scancode+pattern SDL_SCANCODE_RIGHT = (#const SDL_SCANCODE_RIGHT) :: Scancode+pattern SDL_SCANCODE_LEFT = (#const SDL_SCANCODE_LEFT) :: Scancode+pattern SDL_SCANCODE_DOWN = (#const SDL_SCANCODE_DOWN) :: Scancode+pattern SDL_SCANCODE_UP = (#const SDL_SCANCODE_UP) :: Scancode+pattern SDL_SCANCODE_NUMLOCKCLEAR = (#const SDL_SCANCODE_NUMLOCKCLEAR) :: Scancode+pattern SDL_SCANCODE_KP_DIVIDE = (#const SDL_SCANCODE_KP_DIVIDE) :: Scancode+pattern SDL_SCANCODE_KP_MULTIPLY = (#const SDL_SCANCODE_KP_MULTIPLY) :: Scancode+pattern SDL_SCANCODE_KP_MINUS = (#const SDL_SCANCODE_KP_MINUS) :: Scancode+pattern SDL_SCANCODE_KP_PLUS = (#const SDL_SCANCODE_KP_PLUS) :: Scancode+pattern SDL_SCANCODE_KP_ENTER = (#const SDL_SCANCODE_KP_ENTER) :: Scancode+pattern SDL_SCANCODE_KP_1 = (#const SDL_SCANCODE_KP_1) :: Scancode+pattern SDL_SCANCODE_KP_2 = (#const SDL_SCANCODE_KP_2) :: Scancode+pattern SDL_SCANCODE_KP_3 = (#const SDL_SCANCODE_KP_3) :: Scancode+pattern SDL_SCANCODE_KP_4 = (#const SDL_SCANCODE_KP_4) :: Scancode+pattern SDL_SCANCODE_KP_5 = (#const SDL_SCANCODE_KP_5) :: Scancode+pattern SDL_SCANCODE_KP_6 = (#const SDL_SCANCODE_KP_6) :: Scancode+pattern SDL_SCANCODE_KP_7 = (#const SDL_SCANCODE_KP_7) :: Scancode+pattern SDL_SCANCODE_KP_8 = (#const SDL_SCANCODE_KP_8) :: Scancode+pattern SDL_SCANCODE_KP_9 = (#const SDL_SCANCODE_KP_9) :: Scancode+pattern SDL_SCANCODE_KP_0 = (#const SDL_SCANCODE_KP_0) :: Scancode+pattern SDL_SCANCODE_KP_PERIOD = (#const SDL_SCANCODE_KP_PERIOD) :: Scancode+pattern SDL_SCANCODE_NONUSBACKSLASH = (#const SDL_SCANCODE_NONUSBACKSLASH) :: Scancode+pattern SDL_SCANCODE_APPLICATION = (#const SDL_SCANCODE_APPLICATION) :: Scancode+pattern SDL_SCANCODE_POWER = (#const SDL_SCANCODE_POWER) :: Scancode+pattern SDL_SCANCODE_KP_EQUALS = (#const SDL_SCANCODE_KP_EQUALS) :: Scancode+pattern SDL_SCANCODE_F13 = (#const SDL_SCANCODE_F13) :: Scancode+pattern SDL_SCANCODE_F14 = (#const SDL_SCANCODE_F14) :: Scancode+pattern SDL_SCANCODE_F15 = (#const SDL_SCANCODE_F15) :: Scancode+pattern SDL_SCANCODE_F16 = (#const SDL_SCANCODE_F16) :: Scancode+pattern SDL_SCANCODE_F17 = (#const SDL_SCANCODE_F17) :: Scancode+pattern SDL_SCANCODE_F18 = (#const SDL_SCANCODE_F18) :: Scancode+pattern SDL_SCANCODE_F19 = (#const SDL_SCANCODE_F19) :: Scancode+pattern SDL_SCANCODE_F20 = (#const SDL_SCANCODE_F20) :: Scancode+pattern SDL_SCANCODE_F21 = (#const SDL_SCANCODE_F21) :: Scancode+pattern SDL_SCANCODE_F22 = (#const SDL_SCANCODE_F22) :: Scancode+pattern SDL_SCANCODE_F23 = (#const SDL_SCANCODE_F23) :: Scancode+pattern SDL_SCANCODE_F24 = (#const SDL_SCANCODE_F24) :: Scancode+pattern SDL_SCANCODE_EXECUTE = (#const SDL_SCANCODE_EXECUTE) :: Scancode+pattern SDL_SCANCODE_HELP = (#const SDL_SCANCODE_HELP) :: Scancode+pattern SDL_SCANCODE_MENU = (#const SDL_SCANCODE_MENU) :: Scancode+pattern SDL_SCANCODE_SELECT = (#const SDL_SCANCODE_SELECT) :: Scancode+pattern SDL_SCANCODE_STOP = (#const SDL_SCANCODE_STOP) :: Scancode+pattern SDL_SCANCODE_AGAIN = (#const SDL_SCANCODE_AGAIN) :: Scancode+pattern SDL_SCANCODE_UNDO = (#const SDL_SCANCODE_UNDO) :: Scancode+pattern SDL_SCANCODE_CUT = (#const SDL_SCANCODE_CUT) :: Scancode+pattern SDL_SCANCODE_COPY = (#const SDL_SCANCODE_COPY) :: Scancode+pattern SDL_SCANCODE_PASTE = (#const SDL_SCANCODE_PASTE) :: Scancode+pattern SDL_SCANCODE_FIND = (#const SDL_SCANCODE_FIND) :: Scancode+pattern SDL_SCANCODE_MUTE = (#const SDL_SCANCODE_MUTE) :: Scancode+pattern SDL_SCANCODE_VOLUMEUP = (#const SDL_SCANCODE_VOLUMEUP) :: Scancode+pattern SDL_SCANCODE_VOLUMEDOWN = (#const SDL_SCANCODE_VOLUMEDOWN) :: Scancode+pattern SDL_SCANCODE_KP_COMMA = (#const SDL_SCANCODE_KP_COMMA) :: Scancode+pattern SDL_SCANCODE_KP_EQUALSAS400 = (#const SDL_SCANCODE_KP_EQUALSAS400) :: Scancode+pattern SDL_SCANCODE_INTERNATIONAL1 = (#const SDL_SCANCODE_INTERNATIONAL1) :: Scancode+pattern SDL_SCANCODE_INTERNATIONAL2 = (#const SDL_SCANCODE_INTERNATIONAL2) :: Scancode+pattern SDL_SCANCODE_INTERNATIONAL3 = (#const SDL_SCANCODE_INTERNATIONAL3) :: Scancode+pattern SDL_SCANCODE_INTERNATIONAL4 = (#const SDL_SCANCODE_INTERNATIONAL4) :: Scancode+pattern SDL_SCANCODE_INTERNATIONAL5 = (#const SDL_SCANCODE_INTERNATIONAL5) :: Scancode+pattern SDL_SCANCODE_INTERNATIONAL6 = (#const SDL_SCANCODE_INTERNATIONAL6) :: Scancode+pattern SDL_SCANCODE_INTERNATIONAL7 = (#const SDL_SCANCODE_INTERNATIONAL7) :: Scancode+pattern SDL_SCANCODE_INTERNATIONAL8 = (#const SDL_SCANCODE_INTERNATIONAL8) :: Scancode+pattern SDL_SCANCODE_INTERNATIONAL9 = (#const SDL_SCANCODE_INTERNATIONAL9) :: Scancode+pattern SDL_SCANCODE_LANG1 = (#const SDL_SCANCODE_LANG1) :: Scancode+pattern SDL_SCANCODE_LANG2 = (#const SDL_SCANCODE_LANG2) :: Scancode+pattern SDL_SCANCODE_LANG3 = (#const SDL_SCANCODE_LANG3) :: Scancode+pattern SDL_SCANCODE_LANG4 = (#const SDL_SCANCODE_LANG4) :: Scancode+pattern SDL_SCANCODE_LANG5 = (#const SDL_SCANCODE_LANG5) :: Scancode+pattern SDL_SCANCODE_LANG6 = (#const SDL_SCANCODE_LANG6) :: Scancode+pattern SDL_SCANCODE_LANG7 = (#const SDL_SCANCODE_LANG7) :: Scancode+pattern SDL_SCANCODE_LANG8 = (#const SDL_SCANCODE_LANG8) :: Scancode+pattern SDL_SCANCODE_LANG9 = (#const SDL_SCANCODE_LANG9) :: Scancode+pattern SDL_SCANCODE_ALTERASE = (#const SDL_SCANCODE_ALTERASE) :: Scancode+pattern SDL_SCANCODE_SYSREQ = (#const SDL_SCANCODE_SYSREQ) :: Scancode+pattern SDL_SCANCODE_CANCEL = (#const SDL_SCANCODE_CANCEL) :: Scancode+pattern SDL_SCANCODE_CLEAR = (#const SDL_SCANCODE_CLEAR) :: Scancode+pattern SDL_SCANCODE_PRIOR = (#const SDL_SCANCODE_PRIOR) :: Scancode+pattern SDL_SCANCODE_RETURN2 = (#const SDL_SCANCODE_RETURN2) :: Scancode+pattern SDL_SCANCODE_SEPARATOR = (#const SDL_SCANCODE_SEPARATOR) :: Scancode+pattern SDL_SCANCODE_OUT = (#const SDL_SCANCODE_OUT) :: Scancode+pattern SDL_SCANCODE_OPER = (#const SDL_SCANCODE_OPER) :: Scancode+pattern SDL_SCANCODE_CLEARAGAIN = (#const SDL_SCANCODE_CLEARAGAIN) :: Scancode+pattern SDL_SCANCODE_CRSEL = (#const SDL_SCANCODE_CRSEL) :: Scancode+pattern SDL_SCANCODE_EXSEL = (#const SDL_SCANCODE_EXSEL) :: Scancode+pattern SDL_SCANCODE_KP_00 = (#const SDL_SCANCODE_KP_00) :: Scancode+pattern SDL_SCANCODE_KP_000 = (#const SDL_SCANCODE_KP_000) :: Scancode+pattern SDL_SCANCODE_THOUSANDSSEPARATOR = (#const SDL_SCANCODE_THOUSANDSSEPARATOR) :: Scancode+pattern SDL_SCANCODE_DECIMALSEPARATOR = (#const SDL_SCANCODE_DECIMALSEPARATOR) :: Scancode+pattern SDL_SCANCODE_CURRENCYUNIT = (#const SDL_SCANCODE_CURRENCYUNIT) :: Scancode+pattern SDL_SCANCODE_CURRENCYSUBUNIT = (#const SDL_SCANCODE_CURRENCYSUBUNIT) :: Scancode+pattern SDL_SCANCODE_KP_LEFTPAREN = (#const SDL_SCANCODE_KP_LEFTPAREN) :: Scancode+pattern SDL_SCANCODE_KP_RIGHTPAREN = (#const SDL_SCANCODE_KP_RIGHTPAREN) :: Scancode+pattern SDL_SCANCODE_KP_LEFTBRACE = (#const SDL_SCANCODE_KP_LEFTBRACE) :: Scancode+pattern SDL_SCANCODE_KP_RIGHTBRACE = (#const SDL_SCANCODE_KP_RIGHTBRACE) :: Scancode+pattern SDL_SCANCODE_KP_TAB = (#const SDL_SCANCODE_KP_TAB) :: Scancode+pattern SDL_SCANCODE_KP_BACKSPACE = (#const SDL_SCANCODE_KP_BACKSPACE) :: Scancode+pattern SDL_SCANCODE_KP_A = (#const SDL_SCANCODE_KP_A) :: Scancode+pattern SDL_SCANCODE_KP_B = (#const SDL_SCANCODE_KP_B) :: Scancode+pattern SDL_SCANCODE_KP_C = (#const SDL_SCANCODE_KP_C) :: Scancode+pattern SDL_SCANCODE_KP_D = (#const SDL_SCANCODE_KP_D) :: Scancode+pattern SDL_SCANCODE_KP_E = (#const SDL_SCANCODE_KP_E) :: Scancode+pattern SDL_SCANCODE_KP_F = (#const SDL_SCANCODE_KP_F) :: Scancode+pattern SDL_SCANCODE_KP_XOR = (#const SDL_SCANCODE_KP_XOR) :: Scancode+pattern SDL_SCANCODE_KP_POWER = (#const SDL_SCANCODE_KP_POWER) :: Scancode+pattern SDL_SCANCODE_KP_PERCENT = (#const SDL_SCANCODE_KP_PERCENT) :: Scancode+pattern SDL_SCANCODE_KP_LESS = (#const SDL_SCANCODE_KP_LESS) :: Scancode+pattern SDL_SCANCODE_KP_GREATER = (#const SDL_SCANCODE_KP_GREATER) :: Scancode+pattern SDL_SCANCODE_KP_AMPERSAND = (#const SDL_SCANCODE_KP_AMPERSAND) :: Scancode+pattern SDL_SCANCODE_KP_DBLAMPERSAND = (#const SDL_SCANCODE_KP_DBLAMPERSAND) :: Scancode+pattern SDL_SCANCODE_KP_VERTICALBAR = (#const SDL_SCANCODE_KP_VERTICALBAR) :: Scancode+pattern SDL_SCANCODE_KP_DBLVERTICALBAR = (#const SDL_SCANCODE_KP_DBLVERTICALBAR) :: Scancode+pattern SDL_SCANCODE_KP_COLON = (#const SDL_SCANCODE_KP_COLON) :: Scancode+pattern SDL_SCANCODE_KP_HASH = (#const SDL_SCANCODE_KP_HASH) :: Scancode+pattern SDL_SCANCODE_KP_SPACE = (#const SDL_SCANCODE_KP_SPACE) :: Scancode+pattern SDL_SCANCODE_KP_AT = (#const SDL_SCANCODE_KP_AT) :: Scancode+pattern SDL_SCANCODE_KP_EXCLAM = (#const SDL_SCANCODE_KP_EXCLAM) :: Scancode+pattern SDL_SCANCODE_KP_MEMSTORE = (#const SDL_SCANCODE_KP_MEMSTORE) :: Scancode+pattern SDL_SCANCODE_KP_MEMRECALL = (#const SDL_SCANCODE_KP_MEMRECALL) :: Scancode+pattern SDL_SCANCODE_KP_MEMCLEAR = (#const SDL_SCANCODE_KP_MEMCLEAR) :: Scancode+pattern SDL_SCANCODE_KP_MEMADD = (#const SDL_SCANCODE_KP_MEMADD) :: Scancode+pattern SDL_SCANCODE_KP_MEMSUBTRACT = (#const SDL_SCANCODE_KP_MEMSUBTRACT) :: Scancode+pattern SDL_SCANCODE_KP_MEMMULTIPLY = (#const SDL_SCANCODE_KP_MEMMULTIPLY) :: Scancode+pattern SDL_SCANCODE_KP_MEMDIVIDE = (#const SDL_SCANCODE_KP_MEMDIVIDE) :: Scancode+pattern SDL_SCANCODE_KP_PLUSMINUS = (#const SDL_SCANCODE_KP_PLUSMINUS) :: Scancode+pattern SDL_SCANCODE_KP_CLEAR = (#const SDL_SCANCODE_KP_CLEAR) :: Scancode+pattern SDL_SCANCODE_KP_CLEARENTRY = (#const SDL_SCANCODE_KP_CLEARENTRY) :: Scancode+pattern SDL_SCANCODE_KP_BINARY = (#const SDL_SCANCODE_KP_BINARY) :: Scancode+pattern SDL_SCANCODE_KP_OCTAL = (#const SDL_SCANCODE_KP_OCTAL) :: Scancode+pattern SDL_SCANCODE_KP_DECIMAL = (#const SDL_SCANCODE_KP_DECIMAL) :: Scancode+pattern SDL_SCANCODE_KP_HEXADECIMAL = (#const SDL_SCANCODE_KP_HEXADECIMAL) :: Scancode+pattern SDL_SCANCODE_LCTRL = (#const SDL_SCANCODE_LCTRL) :: Scancode+pattern SDL_SCANCODE_LSHIFT = (#const SDL_SCANCODE_LSHIFT) :: Scancode+pattern SDL_SCANCODE_LALT = (#const SDL_SCANCODE_LALT) :: Scancode+pattern SDL_SCANCODE_LGUI = (#const SDL_SCANCODE_LGUI) :: Scancode+pattern SDL_SCANCODE_RCTRL = (#const SDL_SCANCODE_RCTRL) :: Scancode+pattern SDL_SCANCODE_RSHIFT = (#const SDL_SCANCODE_RSHIFT) :: Scancode+pattern SDL_SCANCODE_RALT = (#const SDL_SCANCODE_RALT) :: Scancode+pattern SDL_SCANCODE_RGUI = (#const SDL_SCANCODE_RGUI) :: Scancode+pattern SDL_SCANCODE_MODE = (#const SDL_SCANCODE_MODE) :: Scancode+pattern SDL_SCANCODE_AUDIONEXT = (#const SDL_SCANCODE_AUDIONEXT) :: Scancode+pattern SDL_SCANCODE_AUDIOPREV = (#const SDL_SCANCODE_AUDIOPREV) :: Scancode+pattern SDL_SCANCODE_AUDIOSTOP = (#const SDL_SCANCODE_AUDIOSTOP) :: Scancode+pattern SDL_SCANCODE_AUDIOPLAY = (#const SDL_SCANCODE_AUDIOPLAY) :: Scancode+pattern SDL_SCANCODE_AUDIOMUTE = (#const SDL_SCANCODE_AUDIOMUTE) :: Scancode+pattern SDL_SCANCODE_MEDIASELECT = (#const SDL_SCANCODE_MEDIASELECT) :: Scancode+pattern SDL_SCANCODE_WWW = (#const SDL_SCANCODE_WWW) :: Scancode+pattern SDL_SCANCODE_MAIL = (#const SDL_SCANCODE_MAIL) :: Scancode+pattern SDL_SCANCODE_CALCULATOR = (#const SDL_SCANCODE_CALCULATOR) :: Scancode+pattern SDL_SCANCODE_COMPUTER = (#const SDL_SCANCODE_COMPUTER) :: Scancode+pattern SDL_SCANCODE_AC_SEARCH = (#const SDL_SCANCODE_AC_SEARCH) :: Scancode+pattern SDL_SCANCODE_AC_HOME = (#const SDL_SCANCODE_AC_HOME) :: Scancode+pattern SDL_SCANCODE_AC_BACK = (#const SDL_SCANCODE_AC_BACK) :: Scancode+pattern SDL_SCANCODE_AC_FORWARD = (#const SDL_SCANCODE_AC_FORWARD) :: Scancode+pattern SDL_SCANCODE_AC_STOP = (#const SDL_SCANCODE_AC_STOP) :: Scancode+pattern SDL_SCANCODE_AC_REFRESH = (#const SDL_SCANCODE_AC_REFRESH) :: Scancode+pattern SDL_SCANCODE_AC_BOOKMARKS = (#const SDL_SCANCODE_AC_BOOKMARKS) :: Scancode+pattern SDL_SCANCODE_BRIGHTNESSDOWN = (#const SDL_SCANCODE_BRIGHTNESSDOWN) :: Scancode+pattern SDL_SCANCODE_BRIGHTNESSUP = (#const SDL_SCANCODE_BRIGHTNESSUP) :: Scancode+pattern SDL_SCANCODE_DISPLAYSWITCH = (#const SDL_SCANCODE_DISPLAYSWITCH) :: Scancode+pattern SDL_SCANCODE_KBDILLUMTOGGLE = (#const SDL_SCANCODE_KBDILLUMTOGGLE) :: Scancode+pattern SDL_SCANCODE_KBDILLUMDOWN = (#const SDL_SCANCODE_KBDILLUMDOWN) :: Scancode+pattern SDL_SCANCODE_KBDILLUMUP = (#const SDL_SCANCODE_KBDILLUMUP) :: Scancode+pattern SDL_SCANCODE_EJECT = (#const SDL_SCANCODE_EJECT) :: Scancode+pattern SDL_SCANCODE_SLEEP = (#const SDL_SCANCODE_SLEEP) :: Scancode+pattern SDL_SCANCODE_APP1 = (#const SDL_SCANCODE_APP1) :: Scancode+pattern SDL_SCANCODE_APP2 = (#const SDL_SCANCODE_APP2) :: Scancode+pattern SDL_NUM_SCANCODES = (#const SDL_NUM_SCANCODES) :: Scancode++pattern SDL_SYSTEM_CURSOR_ARROW = (#const SDL_SYSTEM_CURSOR_ARROW) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_IBEAM = (#const SDL_SYSTEM_CURSOR_IBEAM) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_WAIT = (#const SDL_SYSTEM_CURSOR_WAIT) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_CROSSHAIR = (#const SDL_SYSTEM_CURSOR_CROSSHAIR) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_WAITARROW = (#const SDL_SYSTEM_CURSOR_WAITARROW) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_SIZENWSE = (#const SDL_SYSTEM_CURSOR_SIZENWSE) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_SIZENESW = (#const SDL_SYSTEM_CURSOR_SIZENESW) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_SIZEWE = (#const SDL_SYSTEM_CURSOR_SIZEWE) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_SIZENS = (#const SDL_SYSTEM_CURSOR_SIZENS) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_SIZEALL = (#const SDL_SYSTEM_CURSOR_SIZEALL) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_NO = (#const SDL_SYSTEM_CURSOR_NO) :: SystemCursor+pattern SDL_SYSTEM_CURSOR_HAND = (#const SDL_SYSTEM_CURSOR_HAND) :: SystemCursor+pattern SDL_NUM_SYSTEM_CURSORS = (#const SDL_NUM_SYSTEM_CURSORS) :: SystemCursor++pattern SDL_THREAD_PRIORITY_LOW = (#const SDL_THREAD_PRIORITY_LOW) :: ThreadPriority+pattern SDL_THREAD_PRIORITY_NORMAL = (#const SDL_THREAD_PRIORITY_NORMAL) :: ThreadPriority+pattern SDL_THREAD_PRIORITY_HIGH = (#const SDL_THREAD_PRIORITY_HIGH) :: ThreadPriority++pattern SDL_AUDIO_ALLOW_FREQUENCY_CHANGE = (#const SDL_AUDIO_ALLOW_FREQUENCY_CHANGE)+pattern SDL_AUDIO_ALLOW_FORMAT_CHANGE = (#const SDL_AUDIO_ALLOW_FORMAT_CHANGE)+pattern SDL_AUDIO_ALLOW_CHANNELS_CHANGE = (#const SDL_AUDIO_ALLOW_CHANNELS_CHANGE)+pattern SDL_AUDIO_ALLOW_ANY_CHANGE = (#const SDL_AUDIO_ALLOW_ANY_CHANGE)++pattern SDL_BUTTON_LEFT = (#const SDL_BUTTON_LEFT)+pattern SDL_BUTTON_MIDDLE = (#const SDL_BUTTON_MIDDLE)+pattern SDL_BUTTON_RIGHT = (#const SDL_BUTTON_RIGHT)+pattern SDL_BUTTON_X1 = (#const SDL_BUTTON_X1)+pattern SDL_BUTTON_X2 = (#const SDL_BUTTON_X2)+pattern SDL_BUTTON_LMASK = (#const SDL_BUTTON_LMASK)+pattern SDL_BUTTON_MMASK = (#const SDL_BUTTON_MMASK)+pattern SDL_BUTTON_RMASK = (#const SDL_BUTTON_RMASK)+pattern SDL_BUTTON_X1MASK = (#const SDL_BUTTON_X1MASK)+pattern SDL_BUTTON_X2MASK = (#const SDL_BUTTON_X2MASK)++pattern SDL_FIRSTEVENT = (#const SDL_FIRSTEVENT)+pattern SDL_QUIT = (#const SDL_QUIT)+pattern SDL_APP_TERMINATING = (#const SDL_APP_TERMINATING)+pattern SDL_APP_LOWMEMORY = (#const SDL_APP_LOWMEMORY)+pattern SDL_APP_WILLENTERBACKGROUND = (#const SDL_APP_WILLENTERBACKGROUND)+pattern SDL_APP_DIDENTERBACKGROUND = (#const SDL_APP_DIDENTERBACKGROUND)+pattern SDL_APP_WILLENTERFOREGROUND = (#const SDL_APP_WILLENTERFOREGROUND)+pattern SDL_APP_DIDENTERFOREGROUND = (#const SDL_APP_DIDENTERFOREGROUND)+pattern SDL_WINDOWEVENT = (#const SDL_WINDOWEVENT)+pattern SDL_SYSWMEVENT = (#const SDL_SYSWMEVENT)+pattern SDL_KEYDOWN = (#const SDL_KEYDOWN)+pattern SDL_KEYUP = (#const SDL_KEYUP)+pattern SDL_TEXTEDITING = (#const SDL_TEXTEDITING)+pattern SDL_TEXTINPUT = (#const SDL_TEXTINPUT)+pattern SDL_MOUSEMOTION = (#const SDL_MOUSEMOTION)+pattern SDL_MOUSEBUTTONDOWN = (#const SDL_MOUSEBUTTONDOWN)+pattern SDL_MOUSEBUTTONUP = (#const SDL_MOUSEBUTTONUP)+pattern SDL_MOUSEWHEEL = (#const SDL_MOUSEWHEEL)+pattern SDL_JOYAXISMOTION = (#const SDL_JOYAXISMOTION)+pattern SDL_JOYBALLMOTION = (#const SDL_JOYBALLMOTION)+pattern SDL_JOYHATMOTION = (#const SDL_JOYHATMOTION)+pattern SDL_JOYBUTTONDOWN = (#const SDL_JOYBUTTONDOWN)+pattern SDL_JOYBUTTONUP = (#const SDL_JOYBUTTONUP)+pattern SDL_JOYDEVICEADDED = (#const SDL_JOYDEVICEADDED)+pattern SDL_JOYDEVICEREMOVED = (#const SDL_JOYDEVICEREMOVED)+pattern SDL_CONTROLLERAXISMOTION = (#const SDL_CONTROLLERAXISMOTION)+pattern SDL_CONTROLLERBUTTONDOWN = (#const SDL_CONTROLLERBUTTONDOWN)+pattern SDL_CONTROLLERBUTTONUP = (#const SDL_CONTROLLERBUTTONUP)+pattern SDL_CONTROLLERDEVICEADDED = (#const SDL_CONTROLLERDEVICEADDED)+pattern SDL_CONTROLLERDEVICEREMOVED = (#const SDL_CONTROLLERDEVICEREMOVED)+pattern SDL_CONTROLLERDEVICEREMAPPED = (#const SDL_CONTROLLERDEVICEREMAPPED)+pattern SDL_FINGERDOWN = (#const SDL_FINGERDOWN)+pattern SDL_FINGERUP = (#const SDL_FINGERUP)+pattern SDL_FINGERMOTION = (#const SDL_FINGERMOTION)+pattern SDL_DOLLARGESTURE = (#const SDL_DOLLARGESTURE)+pattern SDL_DOLLARRECORD = (#const SDL_DOLLARRECORD)+pattern SDL_MULTIGESTURE = (#const SDL_MULTIGESTURE)+pattern SDL_CLIPBOARDUPDATE = (#const SDL_CLIPBOARDUPDATE)+pattern SDL_DROPFILE = (#const SDL_DROPFILE)+pattern SDL_USEREVENT = (#const SDL_USEREVENT)+pattern SDL_LASTEVENT = (#const SDL_LASTEVENT)++pattern SDL_HAT_CENTERED = (#const SDL_HAT_CENTERED)+pattern SDL_HAT_UP = (#const SDL_HAT_UP)+pattern SDL_HAT_RIGHT = (#const SDL_HAT_RIGHT)+pattern SDL_HAT_DOWN = (#const SDL_HAT_DOWN)+pattern SDL_HAT_LEFT = (#const SDL_HAT_LEFT)+pattern SDL_HAT_RIGHTUP = (#const SDL_HAT_RIGHTUP)+pattern SDL_HAT_RIGHTDOWN = (#const SDL_HAT_RIGHTDOWN)+pattern SDL_HAT_LEFTUP = (#const SDL_HAT_LEFTUP)+pattern SDL_HAT_LEFTDOWN = (#const SDL_HAT_LEFTDOWN)++pattern SDL_PRESSED = (#const SDL_PRESSED)+pattern SDL_RELEASED = (#const SDL_RELEASED)++pattern SDL_LOG_CATEGORY_APPLICATION = (#const SDL_LOG_CATEGORY_APPLICATION)+pattern SDL_LOG_CATEGORY_ERROR = (#const SDL_LOG_CATEGORY_ERROR)+pattern SDL_LOG_CATEGORY_ASSERT = (#const SDL_LOG_CATEGORY_ASSERT)+pattern SDL_LOG_CATEGORY_SYSTEM = (#const SDL_LOG_CATEGORY_SYSTEM)+pattern SDL_LOG_CATEGORY_AUDIO = (#const SDL_LOG_CATEGORY_AUDIO)+pattern SDL_LOG_CATEGORY_VIDEO = (#const SDL_LOG_CATEGORY_VIDEO)+pattern SDL_LOG_CATEGORY_RENDER = (#const SDL_LOG_CATEGORY_RENDER)+pattern SDL_LOG_CATEGORY_INPUT = (#const SDL_LOG_CATEGORY_INPUT)+pattern SDL_LOG_CATEGORY_TEST = (#const SDL_LOG_CATEGORY_TEST)+pattern SDL_LOG_CATEGORY_CUSTOM = (#const SDL_LOG_CATEGORY_CUSTOM)++pattern SDL_MESSAGEBOX_ERROR = (#const SDL_MESSAGEBOX_ERROR)+pattern SDL_MESSAGEBOX_WARNING = (#const SDL_MESSAGEBOX_WARNING)+pattern SDL_MESSAGEBOX_INFORMATION = (#const SDL_MESSAGEBOX_INFORMATION)++pattern SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = (#const SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT)+pattern SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = (#const SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT)++pattern SDL_GL_CONTEXT_PROFILE_CORE = (#const SDL_GL_CONTEXT_PROFILE_CORE)+pattern SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = (#const SDL_GL_CONTEXT_PROFILE_COMPATIBILITY)+pattern SDL_GL_CONTEXT_PROFILE_ES = (#const SDL_GL_CONTEXT_PROFILE_ES)++pattern SDL_GL_CONTEXT_DEBUG_FLAG = (#const SDL_GL_CONTEXT_DEBUG_FLAG)+pattern SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = (#const SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG)+pattern SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = (#const SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG)+pattern SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = (#const SDL_GL_CONTEXT_RESET_ISOLATION_FLAG)++pattern SDL_PIXELFORMAT_UNKNOWN = (#const SDL_PIXELFORMAT_UNKNOWN)+pattern SDL_PIXELFORMAT_INDEX1LSB = (#const SDL_PIXELFORMAT_INDEX1LSB)+pattern SDL_PIXELFORMAT_INDEX1MSB = (#const SDL_PIXELFORMAT_INDEX1MSB)+pattern SDL_PIXELFORMAT_INDEX4LSB = (#const SDL_PIXELFORMAT_INDEX4LSB)+pattern SDL_PIXELFORMAT_INDEX4MSB = (#const SDL_PIXELFORMAT_INDEX4MSB)+pattern SDL_PIXELFORMAT_INDEX8 = (#const SDL_PIXELFORMAT_INDEX8)+pattern SDL_PIXELFORMAT_RGB332 = (#const SDL_PIXELFORMAT_RGB332)+pattern SDL_PIXELFORMAT_RGB444 = (#const SDL_PIXELFORMAT_RGB444)+pattern SDL_PIXELFORMAT_RGB555 = (#const SDL_PIXELFORMAT_RGB555)+pattern SDL_PIXELFORMAT_BGR555 = (#const SDL_PIXELFORMAT_BGR555)+pattern SDL_PIXELFORMAT_ARGB4444 = (#const SDL_PIXELFORMAT_ARGB4444)+pattern SDL_PIXELFORMAT_RGBA4444 = (#const SDL_PIXELFORMAT_RGBA4444)+pattern SDL_PIXELFORMAT_ABGR4444 = (#const SDL_PIXELFORMAT_ABGR4444)+pattern SDL_PIXELFORMAT_BGRA4444 = (#const SDL_PIXELFORMAT_BGRA4444)+pattern SDL_PIXELFORMAT_ARGB1555 = (#const SDL_PIXELFORMAT_ARGB1555)+pattern SDL_PIXELFORMAT_RGBA5551 = (#const SDL_PIXELFORMAT_RGBA5551)+pattern SDL_PIXELFORMAT_ABGR1555 = (#const SDL_PIXELFORMAT_ABGR1555)+pattern SDL_PIXELFORMAT_BGRA5551 = (#const SDL_PIXELFORMAT_BGRA5551)+pattern SDL_PIXELFORMAT_RGB565 = (#const SDL_PIXELFORMAT_RGB565)+pattern SDL_PIXELFORMAT_BGR565 = (#const SDL_PIXELFORMAT_BGR565)+pattern SDL_PIXELFORMAT_RGB24 = (#const SDL_PIXELFORMAT_RGB24)+pattern SDL_PIXELFORMAT_BGR24 = (#const SDL_PIXELFORMAT_BGR24)+pattern SDL_PIXELFORMAT_RGB888 = (#const SDL_PIXELFORMAT_RGB888)+pattern SDL_PIXELFORMAT_RGBX8888 = (#const SDL_PIXELFORMAT_RGBX8888)+pattern SDL_PIXELFORMAT_BGR888 = (#const SDL_PIXELFORMAT_BGR888)+pattern SDL_PIXELFORMAT_BGRX8888 = (#const SDL_PIXELFORMAT_BGRX8888)+pattern SDL_PIXELFORMAT_ARGB8888 = (#const SDL_PIXELFORMAT_ARGB8888)+pattern SDL_PIXELFORMAT_RGBA8888 = (#const SDL_PIXELFORMAT_RGBA8888)+pattern SDL_PIXELFORMAT_ABGR8888 = (#const SDL_PIXELFORMAT_ABGR8888)+pattern SDL_PIXELFORMAT_BGRA8888 = (#const SDL_PIXELFORMAT_BGRA8888)+pattern SDL_PIXELFORMAT_ARGB2101010 = (#const SDL_PIXELFORMAT_ARGB2101010)+pattern SDL_PIXELFORMAT_YV12 = (#const SDL_PIXELFORMAT_YV12)+pattern SDL_PIXELFORMAT_IYUV = (#const SDL_PIXELFORMAT_IYUV)+pattern SDL_PIXELFORMAT_YUY2 = (#const SDL_PIXELFORMAT_YUY2)+pattern SDL_PIXELFORMAT_UYVY = (#const SDL_PIXELFORMAT_UYVY)+pattern SDL_PIXELFORMAT_YVYU = (#const SDL_PIXELFORMAT_YVYU)++pattern SDL_RENDERER_SOFTWARE = (#const SDL_RENDERER_SOFTWARE)+pattern SDL_RENDERER_ACCELERATED = (#const SDL_RENDERER_ACCELERATED)+pattern SDL_RENDERER_PRESENTVSYNC = (#const SDL_RENDERER_PRESENTVSYNC)+pattern SDL_RENDERER_TARGETTEXTURE = (#const SDL_RENDERER_TARGETTEXTURE)++pattern SDL_TEXTUREACCESS_STATIC = (#const SDL_TEXTUREACCESS_STATIC)+pattern SDL_TEXTUREACCESS_STREAMING = (#const SDL_TEXTUREACCESS_STREAMING)+pattern SDL_TEXTUREACCESS_TARGET = (#const SDL_TEXTUREACCESS_TARGET)++pattern SDL_TEXTUREMODULATE_NONE = (#const SDL_TEXTUREMODULATE_NONE)+pattern SDL_TEXTUREMODULATE_COLOR = (#const SDL_TEXTUREMODULATE_COLOR)+pattern SDL_TEXTUREMODULATE_ALPHA = (#const SDL_TEXTUREMODULATE_ALPHA)++pattern SDL_TOUCH_MOUSEID = (#const SDL_TOUCH_MOUSEID)++pattern SDL_WINDOWEVENT_NONE = (#const SDL_WINDOWEVENT_NONE)+pattern SDL_WINDOWEVENT_SHOWN = (#const SDL_WINDOWEVENT_SHOWN)+pattern SDL_WINDOWEVENT_HIDDEN = (#const SDL_WINDOWEVENT_HIDDEN)+pattern SDL_WINDOWEVENT_EXPOSED = (#const SDL_WINDOWEVENT_EXPOSED)+pattern SDL_WINDOWEVENT_MOVED = (#const SDL_WINDOWEVENT_MOVED)+pattern SDL_WINDOWEVENT_RESIZED = (#const SDL_WINDOWEVENT_RESIZED)+pattern SDL_WINDOWEVENT_SIZE_CHANGED = (#const SDL_WINDOWEVENT_SIZE_CHANGED)+pattern SDL_WINDOWEVENT_MINIMIZED = (#const SDL_WINDOWEVENT_MINIMIZED)+pattern SDL_WINDOWEVENT_MAXIMIZED = (#const SDL_WINDOWEVENT_MAXIMIZED)+pattern SDL_WINDOWEVENT_RESTORED = (#const SDL_WINDOWEVENT_RESTORED)+pattern SDL_WINDOWEVENT_ENTER = (#const SDL_WINDOWEVENT_ENTER)+pattern SDL_WINDOWEVENT_LEAVE = (#const SDL_WINDOWEVENT_LEAVE)+pattern SDL_WINDOWEVENT_FOCUS_GAINED = (#const SDL_WINDOWEVENT_FOCUS_GAINED)+pattern SDL_WINDOWEVENT_FOCUS_LOST = (#const SDL_WINDOWEVENT_FOCUS_LOST)+pattern SDL_WINDOWEVENT_CLOSE = (#const SDL_WINDOWEVENT_CLOSE)++pattern SDL_WINDOW_FULLSCREEN = (#const SDL_WINDOW_FULLSCREEN)+pattern SDL_WINDOW_OPENGL = (#const SDL_WINDOW_OPENGL)+pattern SDL_WINDOW_SHOWN = (#const SDL_WINDOW_SHOWN)+pattern SDL_WINDOW_HIDDEN = (#const SDL_WINDOW_HIDDEN)+pattern SDL_WINDOW_BORDERLESS = (#const SDL_WINDOW_BORDERLESS)+pattern SDL_WINDOW_RESIZABLE = (#const SDL_WINDOW_RESIZABLE)+pattern SDL_WINDOW_MINIMIZED = (#const SDL_WINDOW_MINIMIZED)+pattern SDL_WINDOW_MAXIMIZED = (#const SDL_WINDOW_MAXIMIZED)+pattern SDL_WINDOW_INPUT_GRABBED = (#const SDL_WINDOW_INPUT_GRABBED)+pattern SDL_WINDOW_INPUT_FOCUS = (#const SDL_WINDOW_INPUT_FOCUS)+pattern SDL_WINDOW_MOUSE_FOCUS = (#const SDL_WINDOW_MOUSE_FOCUS)+pattern SDL_WINDOW_FULLSCREEN_DESKTOP = (#const SDL_WINDOW_FULLSCREEN_DESKTOP)+pattern SDL_WINDOW_FOREIGN = (#const SDL_WINDOW_FOREIGN)+pattern SDL_WINDOW_ALLOW_HIGHDPI = (#const SDL_WINDOW_ALLOW_HIGHDPI)++pattern SDL_WINDOWPOS_UNDEFINED = (#const SDL_WINDOWPOS_UNDEFINED)+pattern SDL_WINDOWPOS_CENTERED = (#const SDL_WINDOWPOS_CENTERED)
− Graphics/UI/SDL/Enum/Internal.hsc
@@ -1,41 +0,0 @@-module Graphics.UI.SDL.Enum.Internal (-	-- * Enumerations-	AudioStatus,-	BlendMode,-	EventAction,-	GameControllerAxis,-	GameControllerButton,-	GLattr,-	HintPriority,-	InitFlag,-	Keycode,-	Keymod,-	LogPriority,-	PowerState,-	RendererFlip,-	Scancode,-	SystemCursor,-	ThreadPriority-) where--#include "SDL.h"--import Data.Int-import Data.Word--type AudioStatus = (#type SDL_AudioStatus)-type BlendMode = (#type SDL_BlendMode)-type EventAction = (#type SDL_eventaction)-type GameControllerAxis = (#type SDL_GameControllerAxis)-type GameControllerButton = (#type SDL_GameControllerButton)-type GLattr = (#type SDL_GLattr)-type HintPriority = (#type SDL_HintPriority)-type InitFlag = Word32-type Keycode = (#type SDL_Keycode)-type Keymod = (#type SDL_Keymod)-type LogPriority = (#type SDL_LogPriority)-type PowerState = (#type SDL_PowerState)-type RendererFlip = (#type SDL_RendererFlip)-type Scancode = (#type SDL_Scancode)-type SystemCursor = (#type SDL_SystemCursor)-type ThreadPriority = (#type SDL_ThreadPriority)
− Graphics/UI/SDL/Enum/Pattern.hsc
@@ -1,1658 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE PatternSynonyms #-}--- | This module is analogous to "Graphics.UI.SDL.Enum", providing pattern--- synonyms for all enumerators.-module Graphics.UI.SDL.Enum.Pattern (-	-- * Enumerations--	-- ** Audio Status-	AudioStatus,-	pattern AudioStatusStopped,-	pattern AudioStatusPlaying,-	pattern AudioStatusPaused,--	-- ** Blend Mode-	BlendMode,-	pattern BlendModeNone,-	pattern BlendModeBlend,-	pattern BlendModeAdd,-	pattern BlendModeMod,--	-- ** Event Action-	EventAction,-	pattern EventActionAddEvent,-	pattern EventActionPeekEvent,-	pattern EventActionGetEvent,--	-- ** Game Controller Axis-	GameControllerAxis,-	pattern GameControllerAxisInvalid,-	pattern GameControllerAxisLeftX,-	pattern GameControllerAxisLeftY,-	pattern GameControllerAxisRightX,-	pattern GameControllerAxisRightY,-	pattern GameControllerAxisTriggerLeft,-	pattern GameControllerAxisTriggerRight,-	pattern GameControllerAxisMax,--	-- ** Game Controller Button-	GameControllerButton,-	pattern GameControllerButtonInvalid,-	pattern GameControllerButtonA,-	pattern GameControllerButtonB,-	pattern GameControllerButtonX,-	pattern GameControllerButtonY,-	pattern GameControllerButtonBack,-	pattern GameControllerButtonGuide,-	pattern GameControllerButtonStart,-	pattern GameControllerButtonLeftStick,-	pattern GameControllerButtonRightStick,-	pattern GameControllerButtonLeftShoulder,-	pattern GameControllerButtonRightShoulder,-	pattern GameControllerButtonDPadUp,-	pattern GameControllerButtonDPadDown,-	pattern GameControllerButtonDPadLeft,-	pattern GameControllerButtonDPadRight,-	pattern GameControllerButtonMax,--	-- ** OpenGL Attribute-	GLattr,-	pattern GLAttrRedSize,-	pattern GLAttrGreenSize,-	pattern GLAttrBlueSize,-	pattern GLAttrAlphaSize,-	pattern GLAttrBufferSize,-	pattern GLAttrDoubleBuffer,-	pattern GLAttrDepthSize,-	pattern GLAttrStencilSize,-	pattern GLAttrAccumRedSize,-	pattern GLAttrAccumGreenSize,-	pattern GLAttrAccumBlueSize,-	pattern GLAttrAccumAlphaSize,-	pattern GLAttrStereo,-	pattern GLAttrMultiSampleBuffers,-	pattern GLAttrMultiSampleSamples,-	pattern GLAttrAcceleratedVisual,-	pattern GLAttrRetainedBacking,-	pattern GLAttrContextMajorVersion,-	pattern GLAttrContextMinorVersion,-	pattern GLAttrContextEGL,-	pattern GLAttrContextFlags,-	pattern GLAttrContextProfileMask,-	pattern GLAttrShareWithCurrentContext,-	pattern GLAttrFramebufferSRGBCapable,--	-- ** Hint Priority-	HintPriority,-	pattern HintPriorityDefault,-	pattern HintPriorityNormal,-	pattern HintPriorityOverride,--	-- ** Initialization Flag-	InitFlag,-	pattern InitFlagTimer,-	pattern InitFlagAudio,-	pattern InitFlagVideo,-	pattern InitFlagJoystick,-	pattern InitFlagHaptic,-	pattern InitFlagGameController,-	pattern InitFlagEvents,-	pattern InitFlagNoParachute,-	pattern InitFlagEverything,--	-- ** Keycode-	Keycode,-	pattern KeycodeUnknown,-	pattern KeycodeReturn,-	pattern KeycodeEscape,-	pattern KeycodeBackspace,-	pattern KeycodeTab,-	pattern KeycodeSpace,-	pattern KeycodeExclaim,-	pattern KeycodeQuoteDbl,-	pattern KeycodeHash,-	pattern KeycodePercent,-	pattern KeycodeDollar,-	pattern KeycodeAmpersand,-	pattern KeycodeQuote,-	pattern KeycodeLeftParen,-	pattern KeycodeRightParen,-	pattern KeycodeAsterisk,-	pattern KeycodePlus,-	pattern KeycodeComma,-	pattern KeycodeMinus,-	pattern KeycodePeriod,-	pattern KeycodeSlash,-	pattern Keycode0,-	pattern Keycode1,-	pattern Keycode2,-	pattern Keycode3,-	pattern Keycode4,-	pattern Keycode5,-	pattern Keycode6,-	pattern Keycode7,-	pattern Keycode8,-	pattern Keycode9,-	pattern KeycodeColon,-	pattern KeycodeSemicolon,-	pattern KeycodeLess,-	pattern KeycodeEquals,-	pattern KeycodeGreater,-	pattern KeycodeQuestion,-	pattern KeycodeAt,-	pattern KeycodeLeftBracket,-	pattern KeycodeBackslash,-	pattern KeycodeRightBracket,-	pattern KeycodeCaret,-	pattern KeycodeUnderscore,-	pattern KeycodeBackquote,-	pattern KeycodeA,-	pattern KeycodeB,-	pattern KeycodeC,-	pattern KeycodeD,-	pattern KeycodeE,-	pattern KeycodeF,-	pattern KeycodeG,-	pattern KeycodeH,-	pattern KeycodeI,-	pattern KeycodeJ,-	pattern KeycodeK,-	pattern KeycodeL,-	pattern KeycodeM,-	pattern KeycodeN,-	pattern KeycodeO,-	pattern KeycodeP,-	pattern KeycodeQ,-	pattern KeycodeR,-	pattern KeycodeS,-	pattern KeycodeT,-	pattern KeycodeU,-	pattern KeycodeV,-	pattern KeycodeW,-	pattern KeycodeX,-	pattern KeycodeY,-	pattern KeycodeZ,-	pattern KeycodeCapsLock,-	pattern KeycodeF1,-	pattern KeycodeF2,-	pattern KeycodeF3,-	pattern KeycodeF4,-	pattern KeycodeF5,-	pattern KeycodeF6,-	pattern KeycodeF7,-	pattern KeycodeF8,-	pattern KeycodeF9,-	pattern KeycodeF10,-	pattern KeycodeF11,-	pattern KeycodeF12,-	pattern KeycodePrintScreen,-	pattern KeycodeScrollLock,-	pattern KeycodePause,-	pattern KeycodeInsert,-	pattern KeycodeHome,-	pattern KeycodePageUp,-	pattern KeycodeDelete,-	pattern KeycodeEnd,-	pattern KeycodePageDown,-	pattern KeycodeRight,-	pattern KeycodeLeft,-	pattern KeycodeDown,-	pattern KeycodeUp,-	pattern KeycodeNumLockClear,-	pattern KeycodeKPDivide,-	pattern KeycodeKPMultiply,-	pattern KeycodeKPMinus,-	pattern KeycodeKPPlus,-	pattern KeycodeKPEnter,-	pattern KeycodeKP1,-	pattern KeycodeKP2,-	pattern KeycodeKP3,-	pattern KeycodeKP4,-	pattern KeycodeKP5,-	pattern KeycodeKP6,-	pattern KeycodeKP7,-	pattern KeycodeKP8,-	pattern KeycodeKP9,-	pattern KeycodeKP0,-	pattern KeycodeKPPeriod,-	pattern KeycodeApplication,-	pattern KeycodePower,-	pattern KeycodeKPEquals,-	pattern KeycodeF13,-	pattern KeycodeF14,-	pattern KeycodeF15,-	pattern KeycodeF16,-	pattern KeycodeF17,-	pattern KeycodeF18,-	pattern KeycodeF19,-	pattern KeycodeF20,-	pattern KeycodeF21,-	pattern KeycodeF22,-	pattern KeycodeF23,-	pattern KeycodeF24,-	pattern KeycodeExecute,-	pattern KeycodeHelp,-	pattern KeycodeMenu,-	pattern KeycodeSelect,-	pattern KeycodeStop,-	pattern KeycodeAgain,-	pattern KeycodeUndo,-	pattern KeycodeCut,-	pattern KeycodeCopy,-	pattern KeycodePaste,-	pattern KeycodeFind,-	pattern KeycodeMute,-	pattern KeycodeVolumeUp,-	pattern KeycodeVolumeDown,-	pattern KeycodeKPComma,-	pattern KeycodeKPEqualsAS400,-	pattern KeycodeAltErase,-	pattern KeycodeSysReq,-	pattern KeycodeCancel,-	pattern KeycodeClear,-	pattern KeycodePrior,-	pattern KeycodeReturn2,-	pattern KeycodeSeparator,-	pattern KeycodeOut,-	pattern KeycodeOper,-	pattern KeycodeClearAgain,-	pattern KeycodeCrSel,-	pattern KeycodeExSel,-	pattern KeycodeKP00,-	pattern KeycodeKP000,-	pattern KeycodeThousandsSeparator,-	pattern KeycodeDecimalSeparator,-	pattern KeycodeCurrencyUnit,-	pattern KeycodeCurrencySubunit,-	pattern KeycodeKPLeftParen,-	pattern KeycodeKPRightParen,-	pattern KeycodeKPLeftBrace,-	pattern KeycodeKPRightBrace,-	pattern KeycodeKPTab,-	pattern KeycodeKPBackspace,-	pattern KeycodeKPA,-	pattern KeycodeKPB,-	pattern KeycodeKPC,-	pattern KeycodeKPD,-	pattern KeycodeKPE,-	pattern KeycodeKPF,-	pattern KeycodeKPXor,-	pattern KeycodeKPPower,-	pattern KeycodeKPPercent,-	pattern KeycodeKPLess,-	pattern KeycodeKPGreater,-	pattern KeycodeKPAmpersand,-	pattern KeycodeKPDblAmpersand,-	pattern KeycodeKPVecticalBar,-	pattern KeycodeKPDblVerticalBar,-	pattern KeycodeKPColon,-	pattern KeycodeKPHash,-	pattern KeycodeKPSpace,-	pattern KeycodeKPAt,-	pattern KeycodeKPExclam,-	pattern KeycodeKPMemStore,-	pattern KeycodeKPMemRecall,-	pattern KeycodeKPMemClear,-	pattern KeycodeKPMemAdd,-	pattern KeycodeKPMemSubtract,-	pattern KeycodeKPMemMultiply,-	pattern KeycodeKPMemDivide,-	pattern KeycodeKPPlusMinus,-	pattern KeycodeKPClear,-	pattern KeycodeKPClearEntry,-	pattern KeycodeKPBinary,-	pattern KeycodeKPOctal,-	pattern KeycodeKPDecimal,-	pattern KeycodeKPHexadecimal,-	pattern KeycodeLCtrl,-	pattern KeycodeLShift,-	pattern KeycodeLAlt,-	pattern KeycodeLGUI,-	pattern KeycodeRCtrl,-	pattern KeycodeRShift,-	pattern KeycodeRAlt,-	pattern KeycodeRGUI,-	pattern KeycodeMode,-	pattern KeycodeAudioNext,-	pattern KeycodeAudioPrev,-	pattern KeycodeAudioStop,-	pattern KeycodeAudioPlay,-	pattern KeycodeAudioMute,-	pattern KeycodeMediaSelect,-	pattern KeycodeWWW,-	pattern KeycodeMail,-	pattern KeycodeCalculator,-	pattern KeycodeComputer,-	pattern KeycodeACSearch,-	pattern KeycodeACHome,-	pattern KeycodeACBack,-	pattern KeycodeACForward,-	pattern KeycodeACStop,-	pattern KeycodeACRefresh,-	pattern KeycodeACBookmarks,-	pattern KeycodeBrightnessDown,-	pattern KeycodeBrightnessUp,-	pattern KeycodeDisplaySwitch,-	pattern KeycodeKbdIllumToggle,-	pattern KeycodeKbdIllumDown,-	pattern KeycodeKbdIllumUp,-	pattern KeycodeEject,-	pattern KeycodeSleep,--	-- ** Key Modifier-	Keymod,-	pattern KeymodNone,-	pattern KeymodLShift,-	pattern KeymodRShift,-	pattern KeymodShift,-	pattern KeymodLCtrl,-	pattern KeymodRCtrl,-	pattern KeymodCtrl,-	pattern KeymodLAlt,-	pattern KeymodRAlt,-	pattern KeymodAlt,-	pattern KeymodLGUI,-	pattern KeymodRGUI,-	pattern KeymodGUI,-	pattern KeymodNum,-	pattern KeymodCaps,-	pattern KeymodMode,-	pattern KeymodReserved,--	-- ** Log Priority-	LogPriority,-	pattern LogPriorityVerbose,-	pattern LogPriorityDebug,-	pattern LogPriorityInfo,-	pattern LogPriorityWarn,-	pattern LogPriorityError,-	pattern LogPriorityCritical,-	pattern LogPriorityPriorities,--	-- ** Power State-	PowerState,-	pattern PowerStateUnknown,-	pattern PowerStateOnBattery,-	pattern PowerStateNoBattery,-	pattern PowerStateCharging,-	pattern PowerStateCharged,--	-- ** Renderer Flip-	RendererFlip,-	pattern RendererFlipNone,-	pattern RendererFlipHorizontal,-	pattern RendererFlipVertical,--	-- ** Scancode-	Scancode,-	pattern ScancodeUnknown,-	pattern ScancodeA,-	pattern ScancodeB,-	pattern ScancodeC,-	pattern ScancodeD,-	pattern ScancodeE,-	pattern ScancodeF,-	pattern ScancodeG,-	pattern ScancodeH,-	pattern ScancodeI,-	pattern ScancodeJ,-	pattern ScancodeK,-	pattern ScancodeL,-	pattern ScancodeM,-	pattern ScancodeN,-	pattern ScancodeO,-	pattern ScancodeP,-	pattern ScancodeQ,-	pattern ScancodeR,-	pattern ScancodeS,-	pattern ScancodeT,-	pattern ScancodeU,-	pattern ScancodeV,-	pattern ScancodeW,-	pattern ScancodeX,-	pattern ScancodeY,-	pattern ScancodeZ,-	pattern Scancode1,-	pattern Scancode2,-	pattern Scancode3,-	pattern Scancode4,-	pattern Scancode5,-	pattern Scancode6,-	pattern Scancode7,-	pattern Scancode8,-	pattern Scancode9,-	pattern Scancode0,-	pattern ScancodeReturn,-	pattern ScancodeEscape,-	pattern ScancodeBackspace,-	pattern ScancodeTab,-	pattern ScancodeSpace,-	pattern ScancodeMinus,-	pattern ScancodeEquals,-	pattern ScancodeLeftBracket,-	pattern ScancodeRightBracket,-	pattern ScancodeBackslash,-	pattern ScancodeNonUSHash,-	pattern ScancodeSemicolon,-	pattern ScancodeApostrophe,-	pattern ScancodeGrave,-	pattern ScancodeComma,-	pattern ScancodePeriod,-	pattern ScancodeSlash,-	pattern ScancodeCapsLock,-	pattern ScancodeF1,-	pattern ScancodeF2,-	pattern ScancodeF3,-	pattern ScancodeF4,-	pattern ScancodeF5,-	pattern ScancodeF6,-	pattern ScancodeF7,-	pattern ScancodeF8,-	pattern ScancodeF9,-	pattern ScancodeF10,-	pattern ScancodeF11,-	pattern ScancodeF12,-	pattern ScancodePrintScreen,-	pattern ScancodeScrollLock,-	pattern ScancodePause,-	pattern ScancodeInsert,-	pattern ScancodeHome,-	pattern ScancodePageUp,-	pattern ScancodeDelete,-	pattern ScancodeEnd,-	pattern ScancodePageDown,-	pattern ScancodeRight,-	pattern ScancodeLeft,-	pattern ScancodeDown,-	pattern ScancodeUp,-	pattern ScancodeNumLockClear,-	pattern ScancodeKPDivide,-	pattern ScancodeKPMultiply,-	pattern ScancodeKPMinus,-	pattern ScancodeKPPlus,-	pattern ScancodeKPEnter,-	pattern ScancodeKP1,-	pattern ScancodeKP2,-	pattern ScancodeKP3,-	pattern ScancodeKP4,-	pattern ScancodeKP5,-	pattern ScancodeKP6,-	pattern ScancodeKP7,-	pattern ScancodeKP8,-	pattern ScancodeKP9,-	pattern ScancodeKP0,-	pattern ScancodeKPPeriod,-	pattern ScancodeNonUSBackslash,-	pattern ScancodeApplication,-	pattern ScancodePower,-	pattern ScancodeKPEquals,-	pattern ScancodeF13,-	pattern ScancodeF14,-	pattern ScancodeF15,-	pattern ScancodeF16,-	pattern ScancodeF17,-	pattern ScancodeF18,-	pattern ScancodeF19,-	pattern ScancodeF20,-	pattern ScancodeF21,-	pattern ScancodeF22,-	pattern ScancodeF23,-	pattern ScancodeF24,-	pattern ScancodeExecute,-	pattern ScancodeHelp,-	pattern ScancodeMenu,-	pattern ScancodeSelect,-	pattern ScancodeStop,-	pattern ScancodeAgain,-	pattern ScancodeUndo,-	pattern ScancodeCut,-	pattern ScancodeCopy,-	pattern ScancodePaste,-	pattern ScancodeFind,-	pattern ScancodeMute,-	pattern ScancodeVolumeUp,-	pattern ScancodeVolumeDown,-	pattern ScancodeKPComma,-	pattern ScancodeEqualsAs400,-	pattern ScancodeInternational1,-	pattern ScancodeInternational2,-	pattern ScancodeInternational3,-	pattern ScancodeInternational4,-	pattern ScancodeInternational5,-	pattern ScancodeInternational6,-	pattern ScancodeInternational7,-	pattern ScancodeInternational8,-	pattern ScancodeInternational9,-	pattern ScancodeLang1,-	pattern ScancodeLang2,-	pattern ScancodeLang3,-	pattern ScancodeLang4,-	pattern ScancodeLang5,-	pattern ScancodeLang6,-	pattern ScancodeLang7,-	pattern ScancodeLang8,-	pattern ScancodeLang9,-	pattern ScancodeAltErase,-	pattern ScancodeSysReq,-	pattern ScancodeCancel,-	pattern ScancodeClear,-	pattern ScancodePrior,-	pattern ScancodeReturn2,-	pattern ScancodeSeparator,-	pattern ScancodeOut,-	pattern ScancodeOper,-	pattern ScancodeClearAgain,-	pattern ScancodeCrSel,-	pattern ScancodeExSel,-	pattern ScancodeKP00,-	pattern ScancodeKP000,-	pattern ScancodeThousandsSeparator,-	pattern ScancodeDecimalSeparator,-	pattern ScancodeCurrencyUnit,-	pattern ScancodeCurrencySubunit,-	pattern ScancodeLeftParen,-	pattern ScancodeRightParen,-	pattern ScancodeLeftBrace,-	pattern ScancodeRightBrace,-	pattern ScancodeKPTab,-	pattern ScancodeKPBackspace,-	pattern ScancodeKPA,-	pattern ScancodeKPB,-	pattern ScancodeKPC,-	pattern ScancodeKPD,-	pattern ScancodeKPE,-	pattern ScancodeKPF,-	pattern ScancodeKPXOR,-	pattern ScancodeKPPower,-	pattern ScancodeKPPercent,-	pattern ScancodeKPLess,-	pattern ScancodeKPGreater,-	pattern ScancodeKPAmpersand,-	pattern ScancodeKPDBLAmpersand,-	pattern ScancodeKPVerticalBar,-	pattern ScancodeKPDBLVerticalBar,-	pattern ScancodeKPColon,-	pattern ScancodeKPHash,-	pattern ScancodeKPSpace,-	pattern ScancodeKPAt,-	pattern ScancodeKPExclam,-	pattern ScancodeKPMemStore,-	pattern ScancodeKPMemRecall,-	pattern ScancodeKPMemClear,-	pattern ScancodeKPMemAdd,-	pattern ScancodeKPMemSubtract,-	pattern ScancodeKPMemMultiply,-	pattern ScancodeKPMemDivide,-	pattern ScancodeKPPlusMinus,-	pattern ScancodeKPClear,-	pattern ScancodeKPClearEntry,-	pattern ScancodeKPBinary,-	pattern ScancodeKPOctal,-	pattern ScancodeKPDecimal,-	pattern ScancodeKPHexadecimal,-	pattern ScancodeLCtrl,-	pattern ScancodeLShift,-	pattern ScancodeLAlt,-	pattern ScancodeLGUI,-	pattern ScancodeRCtrl,-	pattern ScancodeRShift,-	pattern ScancodeRAlt,-	pattern ScancodeRGUI,-	pattern ScancodeMode,-	pattern ScancodeAudioNext,-	pattern ScancodeAudioPrev,-	pattern ScancodeAudioStop,-	pattern ScancodeAudioPlay,-	pattern ScancodeAudioMute,-	pattern ScancodeMediaSelect,-	pattern ScancodeWWW,-	pattern ScancodeMail,-	pattern ScancodeCalculator,-	pattern ScancodeComputer,-	pattern ScancodeACSearch,-	pattern ScancodeACHome,-	pattern ScancodeACBack,-	pattern ScancodeACForward,-	pattern ScancodeACStop,-	pattern ScancodeACRefresh,-	pattern ScancodeACBookmarks,-	pattern ScancodeBrightnessDown,-	pattern ScancodeBrightnessUp,-	pattern ScancodeDisplaySwitch,-	pattern ScancodeKBDIllumToggle,-	pattern ScancodeKBDIllumDown,-	pattern ScancodeKBDIllumUp,-	pattern ScancodeEject,-	pattern ScancodeSleep,-	pattern ScancodeApp1,-	pattern ScancodeApp2,-	pattern ScancodeNum,--	-- ** System Cursor-	SystemCursor,-	pattern SystemCursorArrow,-	pattern SystemCursorIBeam,-	pattern SystemCursorWait,-	pattern SystemCursorCrosshair,-	pattern SystemCursorWaitArrow,-	pattern SystemCursorSizeNWSE,-	pattern SystemCursorSizeNESW,-	pattern SystemCursorSizeWE,-	pattern SystemCursorSizeNS,-	pattern SystemCursorSizeAll,-	pattern SystemCursorNo,-	pattern SystemCursorHand,-	pattern SystemCursorNum,--	-- ** Thread Priority-	ThreadPriority,-	pattern ThreadPriorityLow,-	pattern ThreadPriorityNormal,-	pattern ThreadPriorityHigh,--	-- * Miscellaneous Enumerations-	-- | These enumerations are not used directly by any SDL function, thus they have a polymorphic type.--	-- ** Audio Allowed Changes-	pattern AudioAllowFrequencyChange,-	pattern AudioAllowFormatChange,-	pattern AudioAllowChannelsChange,-	pattern AudioAllowAnyChange,--	-- ** Button-	pattern ButtonLeft,-	pattern ButtonMiddle,-	pattern ButtonRight,-	pattern ButtonX1,-	pattern ButtonX2,-	pattern ButtonLMask,-	pattern ButtonMMask,-	pattern ButtonRMask,-	pattern ButtonX1Mask,-	pattern ButtonX2Mask,--	-- ** Event Type-	pattern EventTypeFirstEvent,-	pattern EventTypeQuit,-	pattern EventTypeAppTerminating,-	pattern EventTypeAppLowMemory,-	pattern EventTypeAppWillEnterBackground,-	pattern EventTypeAppDidEnterBackground,-	pattern EventTypeAppWillEnterForeground,-	pattern EventTypeAppDidEnterForeground,-	pattern EventTypeWindowEvent,-	pattern EventTypeSysWMEvent,-	pattern EventTypeKeyDown,-	pattern EventTypeKeyUp,-	pattern EventTypeTextEditing,-	pattern EventTypeTextInput,-	pattern EventTypeMouseMotion,-	pattern EventTypeMouseButtonDown,-	pattern EventTypeMouseButtonUp,-	pattern EventTypeMouseWheel,-	pattern EventTypeJoyAxisMotion,-	pattern EventTypeJoyBallMotion,-	pattern EventTypeJoyHatMotion,-	pattern EventTypeJoyButtonDown,-	pattern EventTypeJoyButtonUp,-	pattern EventTypeJoyDeviceAdded,-	pattern EventTypeJoyDeviceRemoved,-	pattern EventTypeControllerAxisMotion,-	pattern EventTypeControllerButtonDown,-	pattern EventTypeControllerButtonUp,-	pattern EventTypeControllerDeviceAdded,-	pattern EventTypeControllerDeviceRemoved,-	pattern EventTypeControllerDeviceRemapped,-	pattern EventTypeFingerDown,-	pattern EventTypeFingerUp,-	pattern EventTypeFingerMotion,-	pattern EventTypeDollarGesture,-	pattern EventTypeDollarRecord,-	pattern EventTypeMultiGesture,-	pattern EventTypeClipboardUpdate,-	pattern EventTypeDropFile,-	pattern EventTypeUserEvent,-	pattern EventTypeLastEvent,--	-- ** Joystick Hat Position-	pattern JoystickHatCentered,-	pattern JoystickHatUp,-	pattern JoystickHatRight,-	pattern JoystickHatDown,-	pattern JoystickHatLeft,-	pattern JoystickHatRightUp,-	pattern JoystickHatRightDown,-	pattern JoystickHatLeftUp,-	pattern JoystickHatLeftDown,--	-- ** Key States-	pattern KeyPressed,-	pattern KeyReleased,--	-- ** Log Category-	pattern LogCategoryApplication,-	pattern LogCategoryError,-	pattern LogCategoryAssert,-	pattern LogCategorySystem,-	pattern LogCategoryAudio,-	pattern LogCategoryVideo,-	pattern LogCategoryRender,-	pattern LogCategoryInput,-	pattern LogCategoryTest,-	pattern LogCategoryCustom,--	-- ** Message Box Flags-	pattern MessageBoxFlagError,-	pattern MessageBoxFlagWarning,-	pattern MessageBoxFlagInformation,--	-- ** Message Box Button Flags-	pattern MessageBoxButtonFlagReturnKeyDefault,-	pattern MessageBoxButtonFlagEscapeKeyDefault,--	-- ** OpenGL Profile-	pattern GLProfileCore,-	pattern GLProfileCompatibility,-	pattern GLProfileES,--	-- ** OpenGL Context Flag-	pattern GLContextFlagDebug,-	pattern GLContextFlagForwardCompatible,-	pattern GLContextFlagRobustAccess,-	pattern GLContextFlagResetIsolation,--	-- ** Pixel Formats-	pattern PixelFormatUnknown,-	pattern PixelFormatIndex1LSB,-	pattern PixelFormatIndex1MSB,-	pattern PixelFormatIndex4LSB,-	pattern PixelFormatIndex4MSB,-	pattern PixelFormatIndex8,-	pattern PixelFormatRGB332,-	pattern PixelFormatRGB444,-	pattern PixelFormatRGB555,-	pattern PixelFormatBGR555,-	pattern PixelFormatARGB4444,-	pattern PixelFormatRGBA4444,-	pattern PixelFormatABGR4444,-	pattern PixelFormatBGRA4444,-	pattern PixelFormatARGB1555,-	pattern PixelFormatRGBA5551,-	pattern PixelFormatABGR1555,-	pattern PixelFormatBGRA5551,-	pattern PixelFormatRGB565,-	pattern PixelFormatBGR565,-	pattern PixelFormatRGB24,-	pattern PixelFormatBGR24,-	pattern PixelFormatRGB888,-	pattern PixelFormatRGBX8888,-	pattern PixelFormatBGR888,-	pattern PixelFormatBGRX8888,-	pattern PixelFormatARGB8888,-	pattern PixelFormatRGBA8888,-	pattern PixelFormatABGR8888,-	pattern PixelFormatBGRA8888,-	pattern PixelFormatARGB2101010,-	pattern PixelFormatYV12,-	pattern PixelFormatIYUV,-	pattern PixelFormatYUY2,-	pattern PixelFormatUYVY,-	pattern PixelFormatYVYU,--	-- ** Renderer Flags-	pattern RendererFlagSoftware,-	pattern RendererFlagAccelerated,-	pattern RendererFlagPresentVSync,-	pattern RendererFlagTargetTexture,--	-- ** Texture Access-	pattern TextureAccessStatic,-	pattern TextureAccessStreaming,-	pattern TextureAccessTarget,--	-- ** Texture Modulate-	pattern TextureModulateNone,-	pattern TextureModulateColor,-	pattern TextureModulateAlpha,--	-- ** Touch-	pattern TouchMouseID,--	-- ** Window Event-	pattern WindowEventNone,-	pattern WindowEventShown,-	pattern WindowEventHidden,-	pattern WindowEventExposed,-	pattern WindowEventMoved,-	pattern WindowEventResized,-	pattern WindowEventSizeChanged,-	pattern WindowEventMinimized,-	pattern WindowEventMaximized,-	pattern WindowEventRestored,-	pattern WindowEventEnter,-	pattern WindowEventLeave,-	pattern WindowEventFocusGained,-	pattern WindowEventFocusLost,-	pattern WindowEventClose,--	-- ** Window Flags-	pattern WindowFlagFullscreen,-	pattern WindowFlagOpenGL,-	pattern WindowFlagShown,-	pattern WindowFlagHidden,-	pattern WindowFlagBorderless,-	pattern WindowFlagResizable,-	pattern WindowFlagMinimized,-	pattern WindowFlagMaximized,-	pattern WindowFlagInputGrabbed,-	pattern WindowFlagInputFocus,-	pattern WindowFlagMouseFocus,-	pattern WindowFlagFullscreenDesktop,-	pattern WindowFlagForeign,-	pattern WindowFlagAllowHighDPI,--	-- ** Window Positioning-	pattern WindowPosUndefined,-	pattern WindowPosCentered-) where--#include "SDL.h"--import Graphics.UI.SDL.Enum.Internal--pattern AudioStatusStopped = (#const SDL_AUDIO_STOPPED) :: AudioStatus-pattern AudioStatusPlaying = (#const SDL_AUDIO_PLAYING) :: AudioStatus-pattern AudioStatusPaused = (#const SDL_AUDIO_PAUSED) :: AudioStatus--pattern BlendModeNone = (#const SDL_BLENDMODE_NONE) :: BlendMode-pattern BlendModeBlend = (#const SDL_BLENDMODE_BLEND) :: BlendMode-pattern BlendModeAdd = (#const SDL_BLENDMODE_ADD) :: BlendMode-pattern BlendModeMod = (#const SDL_BLENDMODE_MOD) :: BlendMode--pattern EventActionAddEvent = (#const SDL_ADDEVENT) :: EventAction-pattern EventActionPeekEvent = (#const SDL_PEEKEVENT) :: EventAction-pattern EventActionGetEvent = (#const SDL_GETEVENT) :: EventAction--pattern GameControllerAxisInvalid = (#const SDL_CONTROLLER_AXIS_INVALID) :: GameControllerAxis-pattern GameControllerAxisLeftX = (#const SDL_CONTROLLER_AXIS_LEFTX) :: GameControllerAxis-pattern GameControllerAxisLeftY = (#const SDL_CONTROLLER_AXIS_LEFTY) :: GameControllerAxis-pattern GameControllerAxisRightX = (#const SDL_CONTROLLER_AXIS_RIGHTX) :: GameControllerAxis-pattern GameControllerAxisRightY = (#const SDL_CONTROLLER_AXIS_RIGHTY) :: GameControllerAxis-pattern GameControllerAxisTriggerLeft = (#const SDL_CONTROLLER_AXIS_TRIGGERLEFT) :: GameControllerAxis-pattern GameControllerAxisTriggerRight = (#const SDL_CONTROLLER_AXIS_TRIGGERRIGHT) :: GameControllerAxis-pattern GameControllerAxisMax = (#const SDL_CONTROLLER_AXIS_MAX) :: GameControllerAxis--pattern GameControllerButtonInvalid = (#const SDL_CONTROLLER_BUTTON_INVALID) :: GameControllerButton-pattern GameControllerButtonA = (#const SDL_CONTROLLER_BUTTON_A) :: GameControllerButton-pattern GameControllerButtonB = (#const SDL_CONTROLLER_BUTTON_B) :: GameControllerButton-pattern GameControllerButtonX = (#const SDL_CONTROLLER_BUTTON_X) :: GameControllerButton-pattern GameControllerButtonY = (#const SDL_CONTROLLER_BUTTON_Y) :: GameControllerButton-pattern GameControllerButtonBack = (#const SDL_CONTROLLER_BUTTON_BACK) :: GameControllerButton-pattern GameControllerButtonGuide = (#const SDL_CONTROLLER_BUTTON_GUIDE) :: GameControllerButton-pattern GameControllerButtonStart = (#const SDL_CONTROLLER_BUTTON_START) :: GameControllerButton-pattern GameControllerButtonLeftStick = (#const SDL_CONTROLLER_BUTTON_LEFTSTICK) :: GameControllerButton-pattern GameControllerButtonRightStick = (#const SDL_CONTROLLER_BUTTON_RIGHTSTICK) :: GameControllerButton-pattern GameControllerButtonLeftShoulder = (#const SDL_CONTROLLER_BUTTON_LEFTSHOULDER) :: GameControllerButton-pattern GameControllerButtonRightShoulder = (#const SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) :: GameControllerButton-pattern GameControllerButtonDPadUp = (#const SDL_CONTROLLER_BUTTON_DPAD_UP) :: GameControllerButton-pattern GameControllerButtonDPadDown = (#const SDL_CONTROLLER_BUTTON_DPAD_DOWN) :: GameControllerButton-pattern GameControllerButtonDPadLeft = (#const SDL_CONTROLLER_BUTTON_DPAD_LEFT) :: GameControllerButton-pattern GameControllerButtonDPadRight = (#const SDL_CONTROLLER_BUTTON_DPAD_RIGHT) :: GameControllerButton-pattern GameControllerButtonMax = (#const SDL_CONTROLLER_BUTTON_MAX) :: GameControllerButton--pattern GLAttrRedSize = (#const SDL_GL_RED_SIZE) :: GLattr-pattern GLAttrGreenSize = (#const SDL_GL_GREEN_SIZE) :: GLattr-pattern GLAttrBlueSize = (#const SDL_GL_BLUE_SIZE) :: GLattr-pattern GLAttrAlphaSize = (#const SDL_GL_ALPHA_SIZE) :: GLattr-pattern GLAttrBufferSize = (#const SDL_GL_BUFFER_SIZE) :: GLattr-pattern GLAttrDoubleBuffer = (#const SDL_GL_DOUBLEBUFFER) :: GLattr-pattern GLAttrDepthSize = (#const SDL_GL_DEPTH_SIZE) :: GLattr-pattern GLAttrStencilSize = (#const SDL_GL_STENCIL_SIZE) :: GLattr-pattern GLAttrAccumRedSize = (#const SDL_GL_ACCUM_RED_SIZE) :: GLattr-pattern GLAttrAccumGreenSize = (#const SDL_GL_ACCUM_GREEN_SIZE) :: GLattr-pattern GLAttrAccumBlueSize = (#const SDL_GL_ACCUM_BLUE_SIZE) :: GLattr-pattern GLAttrAccumAlphaSize = (#const SDL_GL_ACCUM_ALPHA_SIZE) :: GLattr-pattern GLAttrStereo = (#const SDL_GL_STEREO) :: GLattr-pattern GLAttrMultiSampleBuffers = (#const SDL_GL_MULTISAMPLEBUFFERS) :: GLattr-pattern GLAttrMultiSampleSamples = (#const SDL_GL_MULTISAMPLESAMPLES) :: GLattr-pattern GLAttrAcceleratedVisual = (#const SDL_GL_ACCELERATED_VISUAL) :: GLattr-pattern GLAttrRetainedBacking = (#const SDL_GL_RETAINED_BACKING) :: GLattr-pattern GLAttrContextMajorVersion = (#const SDL_GL_CONTEXT_MAJOR_VERSION) :: GLattr-pattern GLAttrContextMinorVersion = (#const SDL_GL_CONTEXT_MINOR_VERSION) :: GLattr-pattern GLAttrContextEGL = (#const SDL_GL_CONTEXT_EGL) :: GLattr-pattern GLAttrContextFlags = (#const SDL_GL_CONTEXT_FLAGS) :: GLattr-pattern GLAttrContextProfileMask = (#const SDL_GL_CONTEXT_PROFILE_MASK) :: GLattr-pattern GLAttrShareWithCurrentContext = (#const SDL_GL_SHARE_WITH_CURRENT_CONTEXT) :: GLattr-pattern GLAttrFramebufferSRGBCapable = (#const SDL_GL_FRAMEBUFFER_SRGB_CAPABLE) :: GLattr--pattern HintPriorityDefault = (#const SDL_HINT_DEFAULT) :: HintPriority-pattern HintPriorityNormal = (#const SDL_HINT_NORMAL) :: HintPriority-pattern HintPriorityOverride = (#const SDL_HINT_OVERRIDE) :: HintPriority--pattern InitFlagTimer = (#const SDL_INIT_TIMER) :: InitFlag-pattern InitFlagAudio = (#const SDL_INIT_AUDIO) :: InitFlag-pattern InitFlagVideo = (#const SDL_INIT_VIDEO) :: InitFlag-pattern InitFlagJoystick = (#const SDL_INIT_JOYSTICK) :: InitFlag-pattern InitFlagHaptic = (#const SDL_INIT_HAPTIC) :: InitFlag-pattern InitFlagGameController = (#const SDL_INIT_GAMECONTROLLER) :: InitFlag-pattern InitFlagEvents = (#const SDL_INIT_EVENTS) :: InitFlag-pattern InitFlagNoParachute = (#const SDL_INIT_NOPARACHUTE) :: InitFlag-pattern InitFlagEverything = (#const SDL_INIT_EVERYTHING) :: InitFlag--pattern KeycodeUnknown = (#const SDLK_UNKNOWN) :: Keycode-pattern KeycodeReturn = (#const SDLK_RETURN) :: Keycode-pattern KeycodeEscape = (#const SDLK_ESCAPE) :: Keycode-pattern KeycodeBackspace = (#const SDLK_BACKSPACE) :: Keycode-pattern KeycodeTab = (#const SDLK_TAB) :: Keycode-pattern KeycodeSpace = (#const SDLK_SPACE) :: Keycode-pattern KeycodeExclaim = (#const SDLK_EXCLAIM) :: Keycode-pattern KeycodeQuoteDbl = (#const SDLK_QUOTEDBL) :: Keycode-pattern KeycodeHash = (#const SDLK_HASH) :: Keycode-pattern KeycodePercent = (#const SDLK_PERCENT) :: Keycode-pattern KeycodeDollar = (#const SDLK_DOLLAR) :: Keycode-pattern KeycodeAmpersand = (#const SDLK_AMPERSAND) :: Keycode-pattern KeycodeQuote = (#const SDLK_QUOTE) :: Keycode-pattern KeycodeLeftParen = (#const SDLK_LEFTPAREN) :: Keycode-pattern KeycodeRightParen = (#const SDLK_RIGHTPAREN) :: Keycode-pattern KeycodeAsterisk = (#const SDLK_ASTERISK) :: Keycode-pattern KeycodePlus = (#const SDLK_PLUS) :: Keycode-pattern KeycodeComma = (#const SDLK_COMMA) :: Keycode-pattern KeycodeMinus = (#const SDLK_MINUS) :: Keycode-pattern KeycodePeriod = (#const SDLK_PERIOD) :: Keycode-pattern KeycodeSlash = (#const SDLK_SLASH) :: Keycode-pattern Keycode0 = (#const SDLK_0) :: Keycode-pattern Keycode1 = (#const SDLK_1) :: Keycode-pattern Keycode2 = (#const SDLK_2) :: Keycode-pattern Keycode3 = (#const SDLK_3) :: Keycode-pattern Keycode4 = (#const SDLK_4) :: Keycode-pattern Keycode5 = (#const SDLK_5) :: Keycode-pattern Keycode6 = (#const SDLK_6) :: Keycode-pattern Keycode7 = (#const SDLK_7) :: Keycode-pattern Keycode8 = (#const SDLK_8) :: Keycode-pattern Keycode9 = (#const SDLK_9) :: Keycode-pattern KeycodeColon = (#const SDLK_COLON) :: Keycode-pattern KeycodeSemicolon = (#const SDLK_SEMICOLON) :: Keycode-pattern KeycodeLess = (#const SDLK_LESS) :: Keycode-pattern KeycodeEquals = (#const SDLK_EQUALS) :: Keycode-pattern KeycodeGreater = (#const SDLK_GREATER) :: Keycode-pattern KeycodeQuestion = (#const SDLK_QUESTION) :: Keycode-pattern KeycodeAt = (#const SDLK_AT) :: Keycode-pattern KeycodeLeftBracket = (#const SDLK_LEFTBRACKET) :: Keycode-pattern KeycodeBackslash = (#const SDLK_BACKSLASH) :: Keycode-pattern KeycodeRightBracket = (#const SDLK_RIGHTBRACKET) :: Keycode-pattern KeycodeCaret = (#const SDLK_CARET) :: Keycode-pattern KeycodeUnderscore = (#const SDLK_UNDERSCORE) :: Keycode-pattern KeycodeBackquote = (#const SDLK_BACKQUOTE) :: Keycode-pattern KeycodeA = (#const SDLK_a) :: Keycode-pattern KeycodeB = (#const SDLK_b) :: Keycode-pattern KeycodeC = (#const SDLK_c) :: Keycode-pattern KeycodeD = (#const SDLK_d) :: Keycode-pattern KeycodeE = (#const SDLK_e) :: Keycode-pattern KeycodeF = (#const SDLK_f) :: Keycode-pattern KeycodeG = (#const SDLK_g) :: Keycode-pattern KeycodeH = (#const SDLK_h) :: Keycode-pattern KeycodeI = (#const SDLK_i) :: Keycode-pattern KeycodeJ = (#const SDLK_j) :: Keycode-pattern KeycodeK = (#const SDLK_k) :: Keycode-pattern KeycodeL = (#const SDLK_l) :: Keycode-pattern KeycodeM = (#const SDLK_m) :: Keycode-pattern KeycodeN = (#const SDLK_n) :: Keycode-pattern KeycodeO = (#const SDLK_o) :: Keycode-pattern KeycodeP = (#const SDLK_p) :: Keycode-pattern KeycodeQ = (#const SDLK_q) :: Keycode-pattern KeycodeR = (#const SDLK_r) :: Keycode-pattern KeycodeS = (#const SDLK_s) :: Keycode-pattern KeycodeT = (#const SDLK_t) :: Keycode-pattern KeycodeU = (#const SDLK_u) :: Keycode-pattern KeycodeV = (#const SDLK_v) :: Keycode-pattern KeycodeW = (#const SDLK_w) :: Keycode-pattern KeycodeX = (#const SDLK_x) :: Keycode-pattern KeycodeY = (#const SDLK_y) :: Keycode-pattern KeycodeZ = (#const SDLK_z) :: Keycode-pattern KeycodeCapsLock = (#const SDLK_CAPSLOCK) :: Keycode-pattern KeycodeF1 = (#const SDLK_F1) :: Keycode-pattern KeycodeF2 = (#const SDLK_F2) :: Keycode-pattern KeycodeF3 = (#const SDLK_F3) :: Keycode-pattern KeycodeF4 = (#const SDLK_F4) :: Keycode-pattern KeycodeF5 = (#const SDLK_F5) :: Keycode-pattern KeycodeF6 = (#const SDLK_F6) :: Keycode-pattern KeycodeF7 = (#const SDLK_F7) :: Keycode-pattern KeycodeF8 = (#const SDLK_F8) :: Keycode-pattern KeycodeF9 = (#const SDLK_F9) :: Keycode-pattern KeycodeF10 = (#const SDLK_F10) :: Keycode-pattern KeycodeF11 = (#const SDLK_F11) :: Keycode-pattern KeycodeF12 = (#const SDLK_F12) :: Keycode-pattern KeycodePrintScreen = (#const SDLK_PRINTSCREEN) :: Keycode-pattern KeycodeScrollLock = (#const SDLK_SCROLLLOCK) :: Keycode-pattern KeycodePause = (#const SDLK_PAUSE) :: Keycode-pattern KeycodeInsert = (#const SDLK_INSERT) :: Keycode-pattern KeycodeHome = (#const SDLK_HOME) :: Keycode-pattern KeycodePageUp = (#const SDLK_PAGEUP) :: Keycode-pattern KeycodeDelete = (#const SDLK_DELETE) :: Keycode-pattern KeycodeEnd = (#const SDLK_END) :: Keycode-pattern KeycodePageDown = (#const SDLK_PAGEDOWN) :: Keycode-pattern KeycodeRight = (#const SDLK_RIGHT) :: Keycode-pattern KeycodeLeft = (#const SDLK_LEFT) :: Keycode-pattern KeycodeDown = (#const SDLK_DOWN) :: Keycode-pattern KeycodeUp = (#const SDLK_UP) :: Keycode-pattern KeycodeNumLockClear = (#const SDLK_NUMLOCKCLEAR) :: Keycode-pattern KeycodeKPDivide = (#const SDLK_KP_DIVIDE) :: Keycode-pattern KeycodeKPMultiply = (#const SDLK_KP_MULTIPLY) :: Keycode-pattern KeycodeKPMinus = (#const SDLK_KP_MINUS) :: Keycode-pattern KeycodeKPPlus = (#const SDLK_KP_PLUS) :: Keycode-pattern KeycodeKPEnter = (#const SDLK_KP_ENTER) :: Keycode-pattern KeycodeKP1 = (#const SDLK_KP_1) :: Keycode-pattern KeycodeKP2 = (#const SDLK_KP_2) :: Keycode-pattern KeycodeKP3 = (#const SDLK_KP_3) :: Keycode-pattern KeycodeKP4 = (#const SDLK_KP_4) :: Keycode-pattern KeycodeKP5 = (#const SDLK_KP_5) :: Keycode-pattern KeycodeKP6 = (#const SDLK_KP_6) :: Keycode-pattern KeycodeKP7 = (#const SDLK_KP_7) :: Keycode-pattern KeycodeKP8 = (#const SDLK_KP_8) :: Keycode-pattern KeycodeKP9 = (#const SDLK_KP_9) :: Keycode-pattern KeycodeKP0 = (#const SDLK_KP_0) :: Keycode-pattern KeycodeKPPeriod = (#const SDLK_KP_PERIOD) :: Keycode-pattern KeycodeApplication = (#const SDLK_APPLICATION) :: Keycode-pattern KeycodePower = (#const SDLK_POWER) :: Keycode-pattern KeycodeKPEquals = (#const SDLK_KP_EQUALS) :: Keycode-pattern KeycodeF13 = (#const SDLK_F13) :: Keycode-pattern KeycodeF14 = (#const SDLK_F14) :: Keycode-pattern KeycodeF15 = (#const SDLK_F15) :: Keycode-pattern KeycodeF16 = (#const SDLK_F16) :: Keycode-pattern KeycodeF17 = (#const SDLK_F17) :: Keycode-pattern KeycodeF18 = (#const SDLK_F18) :: Keycode-pattern KeycodeF19 = (#const SDLK_F19) :: Keycode-pattern KeycodeF20 = (#const SDLK_F20) :: Keycode-pattern KeycodeF21 = (#const SDLK_F21) :: Keycode-pattern KeycodeF22 = (#const SDLK_F22) :: Keycode-pattern KeycodeF23 = (#const SDLK_F23) :: Keycode-pattern KeycodeF24 = (#const SDLK_F24) :: Keycode-pattern KeycodeExecute = (#const SDLK_EXECUTE) :: Keycode-pattern KeycodeHelp = (#const SDLK_HELP) :: Keycode-pattern KeycodeMenu = (#const SDLK_MENU) :: Keycode-pattern KeycodeSelect = (#const SDLK_SELECT) :: Keycode-pattern KeycodeStop = (#const SDLK_STOP) :: Keycode-pattern KeycodeAgain = (#const SDLK_AGAIN) :: Keycode-pattern KeycodeUndo = (#const SDLK_UNDO) :: Keycode-pattern KeycodeCut = (#const SDLK_CUT) :: Keycode-pattern KeycodeCopy = (#const SDLK_COPY) :: Keycode-pattern KeycodePaste = (#const SDLK_PASTE) :: Keycode-pattern KeycodeFind = (#const SDLK_FIND) :: Keycode-pattern KeycodeMute = (#const SDLK_MUTE) :: Keycode-pattern KeycodeVolumeUp = (#const SDLK_VOLUMEUP) :: Keycode-pattern KeycodeVolumeDown = (#const SDLK_VOLUMEDOWN) :: Keycode-pattern KeycodeKPComma = (#const SDLK_KP_COMMA) :: Keycode-pattern KeycodeKPEqualsAS400 = (#const SDLK_KP_EQUALSAS400) :: Keycode-pattern KeycodeAltErase = (#const SDLK_ALTERASE) :: Keycode-pattern KeycodeSysReq = (#const SDLK_SYSREQ) :: Keycode-pattern KeycodeCancel = (#const SDLK_CANCEL) :: Keycode-pattern KeycodeClear = (#const SDLK_CLEAR) :: Keycode-pattern KeycodePrior = (#const SDLK_PRIOR) :: Keycode-pattern KeycodeReturn2 = (#const SDLK_RETURN2) :: Keycode-pattern KeycodeSeparator = (#const SDLK_SEPARATOR) :: Keycode-pattern KeycodeOut = (#const SDLK_OUT) :: Keycode-pattern KeycodeOper = (#const SDLK_OPER) :: Keycode-pattern KeycodeClearAgain = (#const SDLK_CLEARAGAIN) :: Keycode-pattern KeycodeCrSel = (#const SDLK_CRSEL) :: Keycode-pattern KeycodeExSel = (#const SDLK_EXSEL) :: Keycode-pattern KeycodeKP00 = (#const SDLK_KP_00) :: Keycode-pattern KeycodeKP000 = (#const SDLK_KP_000) :: Keycode-pattern KeycodeThousandsSeparator = (#const SDLK_THOUSANDSSEPARATOR) :: Keycode-pattern KeycodeDecimalSeparator = (#const SDLK_DECIMALSEPARATOR) :: Keycode-pattern KeycodeCurrencyUnit = (#const SDLK_CURRENCYUNIT) :: Keycode-pattern KeycodeCurrencySubunit = (#const SDLK_CURRENCYSUBUNIT) :: Keycode-pattern KeycodeKPLeftParen = (#const SDLK_KP_LEFTPAREN) :: Keycode-pattern KeycodeKPRightParen = (#const SDLK_KP_RIGHTPAREN) :: Keycode-pattern KeycodeKPLeftBrace = (#const SDLK_KP_LEFTBRACE) :: Keycode-pattern KeycodeKPRightBrace = (#const SDLK_KP_RIGHTBRACE) :: Keycode-pattern KeycodeKPTab = (#const SDLK_KP_TAB) :: Keycode-pattern KeycodeKPBackspace = (#const SDLK_KP_BACKSPACE) :: Keycode-pattern KeycodeKPA = (#const SDLK_KP_A) :: Keycode-pattern KeycodeKPB = (#const SDLK_KP_B) :: Keycode-pattern KeycodeKPC = (#const SDLK_KP_C) :: Keycode-pattern KeycodeKPD = (#const SDLK_KP_D) :: Keycode-pattern KeycodeKPE = (#const SDLK_KP_E) :: Keycode-pattern KeycodeKPF = (#const SDLK_KP_F) :: Keycode-pattern KeycodeKPXor = (#const SDLK_KP_XOR) :: Keycode-pattern KeycodeKPPower = (#const SDLK_KP_POWER) :: Keycode-pattern KeycodeKPPercent = (#const SDLK_KP_PERCENT) :: Keycode-pattern KeycodeKPLess = (#const SDLK_KP_LESS) :: Keycode-pattern KeycodeKPGreater = (#const SDLK_KP_GREATER) :: Keycode-pattern KeycodeKPAmpersand = (#const SDLK_KP_AMPERSAND) :: Keycode-pattern KeycodeKPDblAmpersand = (#const SDLK_KP_DBLAMPERSAND) :: Keycode-pattern KeycodeKPVecticalBar = (#const SDLK_KP_VERTICALBAR) :: Keycode-pattern KeycodeKPDblVerticalBar = (#const SDLK_KP_DBLVERTICALBAR) :: Keycode-pattern KeycodeKPColon = (#const SDLK_KP_COLON) :: Keycode-pattern KeycodeKPHash = (#const SDLK_KP_HASH) :: Keycode-pattern KeycodeKPSpace = (#const SDLK_KP_SPACE) :: Keycode-pattern KeycodeKPAt = (#const SDLK_KP_AT) :: Keycode-pattern KeycodeKPExclam = (#const SDLK_KP_EXCLAM) :: Keycode-pattern KeycodeKPMemStore = (#const SDLK_KP_MEMSTORE) :: Keycode-pattern KeycodeKPMemRecall = (#const SDLK_KP_MEMRECALL) :: Keycode-pattern KeycodeKPMemClear = (#const SDLK_KP_MEMCLEAR) :: Keycode-pattern KeycodeKPMemAdd = (#const SDLK_KP_MEMADD) :: Keycode-pattern KeycodeKPMemSubtract = (#const SDLK_KP_MEMSUBTRACT) :: Keycode-pattern KeycodeKPMemMultiply = (#const SDLK_KP_MEMMULTIPLY) :: Keycode-pattern KeycodeKPMemDivide = (#const SDLK_KP_MEMDIVIDE) :: Keycode-pattern KeycodeKPPlusMinus = (#const SDLK_KP_PLUSMINUS) :: Keycode-pattern KeycodeKPClear = (#const SDLK_KP_CLEAR) :: Keycode-pattern KeycodeKPClearEntry = (#const SDLK_KP_CLEARENTRY) :: Keycode-pattern KeycodeKPBinary = (#const SDLK_KP_BINARY) :: Keycode-pattern KeycodeKPOctal = (#const SDLK_KP_OCTAL) :: Keycode-pattern KeycodeKPDecimal = (#const SDLK_KP_DECIMAL) :: Keycode-pattern KeycodeKPHexadecimal = (#const SDLK_KP_HEXADECIMAL) :: Keycode-pattern KeycodeLCtrl = (#const SDLK_LCTRL) :: Keycode-pattern KeycodeLShift = (#const SDLK_LSHIFT) :: Keycode-pattern KeycodeLAlt = (#const SDLK_LALT) :: Keycode-pattern KeycodeLGUI = (#const SDLK_LGUI) :: Keycode-pattern KeycodeRCtrl = (#const SDLK_RCTRL) :: Keycode-pattern KeycodeRShift = (#const SDLK_RSHIFT) :: Keycode-pattern KeycodeRAlt = (#const SDLK_RALT) :: Keycode-pattern KeycodeRGUI = (#const SDLK_RGUI) :: Keycode-pattern KeycodeMode = (#const SDLK_MODE) :: Keycode-pattern KeycodeAudioNext = (#const SDLK_AUDIONEXT) :: Keycode-pattern KeycodeAudioPrev = (#const SDLK_AUDIONEXT) :: Keycode-pattern KeycodeAudioStop = (#const SDLK_AUDIOSTOP) :: Keycode-pattern KeycodeAudioPlay = (#const SDLK_AUDIOPLAY) :: Keycode-pattern KeycodeAudioMute = (#const SDLK_AUDIOMUTE) :: Keycode-pattern KeycodeMediaSelect = (#const SDLK_MEDIASELECT) :: Keycode-pattern KeycodeWWW = (#const SDLK_WWW) :: Keycode-pattern KeycodeMail = (#const SDLK_MAIL) :: Keycode-pattern KeycodeCalculator = (#const SDLK_CALCULATOR) :: Keycode-pattern KeycodeComputer = (#const SDLK_COMPUTER) :: Keycode-pattern KeycodeACSearch = (#const SDLK_AC_SEARCH) :: Keycode-pattern KeycodeACHome = (#const SDLK_AC_HOME) :: Keycode-pattern KeycodeACBack = (#const SDLK_AC_BACK) :: Keycode-pattern KeycodeACForward = (#const SDLK_AC_FORWARD) :: Keycode-pattern KeycodeACStop = (#const SDLK_AC_STOP) :: Keycode-pattern KeycodeACRefresh = (#const SDLK_AC_REFRESH) :: Keycode-pattern KeycodeACBookmarks = (#const SDLK_AC_BOOKMARKS) :: Keycode-pattern KeycodeBrightnessDown = (#const SDLK_BRIGHTNESSDOWN) :: Keycode-pattern KeycodeBrightnessUp = (#const SDLK_BRIGHTNESSUP) :: Keycode-pattern KeycodeDisplaySwitch = (#const SDLK_DISPLAYSWITCH) :: Keycode-pattern KeycodeKbdIllumToggle = (#const SDLK_KBDILLUMTOGGLE) :: Keycode-pattern KeycodeKbdIllumDown = (#const SDLK_KBDILLUMDOWN) :: Keycode-pattern KeycodeKbdIllumUp = (#const SDLK_KBDILLUMUP) :: Keycode-pattern KeycodeEject = (#const SDLK_EJECT) :: Keycode-pattern KeycodeSleep = (#const SDLK_SLEEP) :: Keycode--pattern KeymodNone = (#const KMOD_NONE)-pattern KeymodLShift = (#const KMOD_LSHIFT)-pattern KeymodRShift = (#const KMOD_RSHIFT)-pattern KeymodShift = (#const KMOD_SHIFT)-pattern KeymodLCtrl = (#const KMOD_LCTRL)-pattern KeymodRCtrl = (#const KMOD_RCTRL)-pattern KeymodCtrl = (#const KMOD_CTRL)-pattern KeymodLAlt = (#const KMOD_LALT)-pattern KeymodRAlt = (#const KMOD_RALT)-pattern KeymodAlt = (#const KMOD_ALT)-pattern KeymodLGUI = (#const KMOD_LGUI)-pattern KeymodRGUI = (#const KMOD_RGUI)-pattern KeymodGUI = (#const KMOD_GUI)-pattern KeymodNum = (#const KMOD_NUM)-pattern KeymodCaps = (#const KMOD_CAPS)-pattern KeymodMode = (#const KMOD_MODE)-pattern KeymodReserved = (#const KMOD_RESERVED)--pattern LogPriorityVerbose = (#const SDL_LOG_PRIORITY_VERBOSE) :: LogPriority-pattern LogPriorityDebug = (#const SDL_LOG_PRIORITY_DEBUG) :: LogPriority-pattern LogPriorityInfo = (#const SDL_LOG_PRIORITY_INFO) :: LogPriority-pattern LogPriorityWarn = (#const SDL_LOG_PRIORITY_WARN) :: LogPriority-pattern LogPriorityError = (#const SDL_LOG_PRIORITY_ERROR) :: LogPriority-pattern LogPriorityCritical = (#const SDL_LOG_PRIORITY_CRITICAL) :: LogPriority-pattern LogPriorityPriorities = (#const SDL_NUM_LOG_PRIORITIES) :: LogPriority--pattern PowerStateUnknown = (#const SDL_POWERSTATE_UNKNOWN) :: PowerState-pattern PowerStateOnBattery = (#const SDL_POWERSTATE_ON_BATTERY) :: PowerState-pattern PowerStateNoBattery = (#const SDL_POWERSTATE_NO_BATTERY) :: PowerState-pattern PowerStateCharging = (#const SDL_POWERSTATE_CHARGING) :: PowerState-pattern PowerStateCharged = (#const SDL_POWERSTATE_CHARGED) :: PowerState--pattern RendererFlipNone = (#const SDL_FLIP_NONE) :: RendererFlip-pattern RendererFlipHorizontal = (#const SDL_FLIP_HORIZONTAL) :: RendererFlip-pattern RendererFlipVertical = (#const SDL_FLIP_VERTICAL) :: RendererFlip--pattern ScancodeUnknown = (#const SDL_SCANCODE_UNKNOWN) :: Scancode-pattern ScancodeA = (#const SDL_SCANCODE_A) :: Scancode-pattern ScancodeB = (#const SDL_SCANCODE_B) :: Scancode-pattern ScancodeC = (#const SDL_SCANCODE_C) :: Scancode-pattern ScancodeD = (#const SDL_SCANCODE_D) :: Scancode-pattern ScancodeE = (#const SDL_SCANCODE_E) :: Scancode-pattern ScancodeF = (#const SDL_SCANCODE_F) :: Scancode-pattern ScancodeG = (#const SDL_SCANCODE_G) :: Scancode-pattern ScancodeH = (#const SDL_SCANCODE_H) :: Scancode-pattern ScancodeI = (#const SDL_SCANCODE_I) :: Scancode-pattern ScancodeJ = (#const SDL_SCANCODE_J) :: Scancode-pattern ScancodeK = (#const SDL_SCANCODE_K) :: Scancode-pattern ScancodeL = (#const SDL_SCANCODE_L) :: Scancode-pattern ScancodeM = (#const SDL_SCANCODE_M) :: Scancode-pattern ScancodeN = (#const SDL_SCANCODE_N) :: Scancode-pattern ScancodeO = (#const SDL_SCANCODE_O) :: Scancode-pattern ScancodeP = (#const SDL_SCANCODE_P) :: Scancode-pattern ScancodeQ = (#const SDL_SCANCODE_Q) :: Scancode-pattern ScancodeR = (#const SDL_SCANCODE_R) :: Scancode-pattern ScancodeS = (#const SDL_SCANCODE_S) :: Scancode-pattern ScancodeT = (#const SDL_SCANCODE_T) :: Scancode-pattern ScancodeU = (#const SDL_SCANCODE_U) :: Scancode-pattern ScancodeV = (#const SDL_SCANCODE_V) :: Scancode-pattern ScancodeW = (#const SDL_SCANCODE_W) :: Scancode-pattern ScancodeX = (#const SDL_SCANCODE_X) :: Scancode-pattern ScancodeY = (#const SDL_SCANCODE_Y) :: Scancode-pattern ScancodeZ = (#const SDL_SCANCODE_Z) :: Scancode-pattern Scancode1 = (#const SDL_SCANCODE_1) :: Scancode-pattern Scancode2 = (#const SDL_SCANCODE_2) :: Scancode-pattern Scancode3 = (#const SDL_SCANCODE_3) :: Scancode-pattern Scancode4 = (#const SDL_SCANCODE_4) :: Scancode-pattern Scancode5 = (#const SDL_SCANCODE_5) :: Scancode-pattern Scancode6 = (#const SDL_SCANCODE_6) :: Scancode-pattern Scancode7 = (#const SDL_SCANCODE_7) :: Scancode-pattern Scancode8 = (#const SDL_SCANCODE_8) :: Scancode-pattern Scancode9 = (#const SDL_SCANCODE_9) :: Scancode-pattern Scancode0 = (#const SDL_SCANCODE_0) :: Scancode-pattern ScancodeReturn = (#const SDL_SCANCODE_RETURN) :: Scancode-pattern ScancodeEscape = (#const SDL_SCANCODE_ESCAPE) :: Scancode-pattern ScancodeBackspace = (#const SDL_SCANCODE_BACKSPACE) :: Scancode-pattern ScancodeTab = (#const SDL_SCANCODE_TAB) :: Scancode-pattern ScancodeSpace = (#const SDL_SCANCODE_SPACE) :: Scancode-pattern ScancodeMinus = (#const SDL_SCANCODE_MINUS) :: Scancode-pattern ScancodeEquals = (#const SDL_SCANCODE_EQUALS) :: Scancode-pattern ScancodeLeftBracket = (#const SDL_SCANCODE_LEFTBRACKET) :: Scancode-pattern ScancodeRightBracket = (#const SDL_SCANCODE_RIGHTBRACKET) :: Scancode-pattern ScancodeBackslash = (#const SDL_SCANCODE_BACKSLASH) :: Scancode-pattern ScancodeNonUSHash = (#const SDL_SCANCODE_NONUSHASH) :: Scancode-pattern ScancodeSemicolon = (#const SDL_SCANCODE_SEMICOLON) :: Scancode-pattern ScancodeApostrophe = (#const SDL_SCANCODE_APOSTROPHE) :: Scancode-pattern ScancodeGrave = (#const SDL_SCANCODE_GRAVE) :: Scancode-pattern ScancodeComma = (#const SDL_SCANCODE_COMMA) :: Scancode-pattern ScancodePeriod = (#const SDL_SCANCODE_PERIOD) :: Scancode-pattern ScancodeSlash = (#const SDL_SCANCODE_SLASH) :: Scancode-pattern ScancodeCapsLock = (#const SDL_SCANCODE_CAPSLOCK) :: Scancode-pattern ScancodeF1 = (#const SDL_SCANCODE_F1) :: Scancode-pattern ScancodeF2 = (#const SDL_SCANCODE_F2) :: Scancode-pattern ScancodeF3 = (#const SDL_SCANCODE_F3) :: Scancode-pattern ScancodeF4 = (#const SDL_SCANCODE_F4) :: Scancode-pattern ScancodeF5 = (#const SDL_SCANCODE_F5) :: Scancode-pattern ScancodeF6 = (#const SDL_SCANCODE_F6) :: Scancode-pattern ScancodeF7 = (#const SDL_SCANCODE_F7) :: Scancode-pattern ScancodeF8 = (#const SDL_SCANCODE_F8) :: Scancode-pattern ScancodeF9 = (#const SDL_SCANCODE_F9) :: Scancode-pattern ScancodeF10 = (#const SDL_SCANCODE_F10) :: Scancode-pattern ScancodeF11 = (#const SDL_SCANCODE_F11) :: Scancode-pattern ScancodeF12 = (#const SDL_SCANCODE_F12) :: Scancode-pattern ScancodePrintScreen = (#const SDL_SCANCODE_PRINTSCREEN) :: Scancode-pattern ScancodeScrollLock = (#const SDL_SCANCODE_SCROLLLOCK) :: Scancode-pattern ScancodePause = (#const SDL_SCANCODE_PAUSE) :: Scancode-pattern ScancodeInsert = (#const SDL_SCANCODE_INSERT) :: Scancode-pattern ScancodeHome = (#const SDL_SCANCODE_HOME) :: Scancode-pattern ScancodePageUp = (#const SDL_SCANCODE_PAGEUP) :: Scancode-pattern ScancodeDelete = (#const SDL_SCANCODE_DELETE) :: Scancode-pattern ScancodeEnd = (#const SDL_SCANCODE_END) :: Scancode-pattern ScancodePageDown = (#const SDL_SCANCODE_PAGEDOWN) :: Scancode-pattern ScancodeRight = (#const SDL_SCANCODE_RIGHT) :: Scancode-pattern ScancodeLeft = (#const SDL_SCANCODE_LEFT) :: Scancode-pattern ScancodeDown = (#const SDL_SCANCODE_DOWN) :: Scancode-pattern ScancodeUp = (#const SDL_SCANCODE_UP) :: Scancode-pattern ScancodeNumLockClear = (#const SDL_SCANCODE_NUMLOCKCLEAR) :: Scancode-pattern ScancodeKPDivide = (#const SDL_SCANCODE_KP_DIVIDE) :: Scancode-pattern ScancodeKPMultiply = (#const SDL_SCANCODE_KP_MULTIPLY) :: Scancode-pattern ScancodeKPMinus = (#const SDL_SCANCODE_KP_MINUS) :: Scancode-pattern ScancodeKPPlus = (#const SDL_SCANCODE_KP_PLUS) :: Scancode-pattern ScancodeKPEnter = (#const SDL_SCANCODE_KP_ENTER) :: Scancode-pattern ScancodeKP1 = (#const SDL_SCANCODE_KP_1) :: Scancode-pattern ScancodeKP2 = (#const SDL_SCANCODE_KP_2) :: Scancode-pattern ScancodeKP3 = (#const SDL_SCANCODE_KP_3) :: Scancode-pattern ScancodeKP4 = (#const SDL_SCANCODE_KP_4) :: Scancode-pattern ScancodeKP5 = (#const SDL_SCANCODE_KP_5) :: Scancode-pattern ScancodeKP6 = (#const SDL_SCANCODE_KP_6) :: Scancode-pattern ScancodeKP7 = (#const SDL_SCANCODE_KP_7) :: Scancode-pattern ScancodeKP8 = (#const SDL_SCANCODE_KP_8) :: Scancode-pattern ScancodeKP9 = (#const SDL_SCANCODE_KP_9) :: Scancode-pattern ScancodeKP0 = (#const SDL_SCANCODE_KP_0) :: Scancode-pattern ScancodeKPPeriod = (#const SDL_SCANCODE_KP_PERIOD) :: Scancode-pattern ScancodeNonUSBackslash = (#const SDL_SCANCODE_NONUSBACKSLASH) :: Scancode-pattern ScancodeApplication = (#const SDL_SCANCODE_APPLICATION) :: Scancode-pattern ScancodePower = (#const SDL_SCANCODE_POWER) :: Scancode-pattern ScancodeKPEquals = (#const SDL_SCANCODE_KP_EQUALS) :: Scancode-pattern ScancodeF13 = (#const SDL_SCANCODE_F13) :: Scancode-pattern ScancodeF14 = (#const SDL_SCANCODE_F14) :: Scancode-pattern ScancodeF15 = (#const SDL_SCANCODE_F15) :: Scancode-pattern ScancodeF16 = (#const SDL_SCANCODE_F16) :: Scancode-pattern ScancodeF17 = (#const SDL_SCANCODE_F17) :: Scancode-pattern ScancodeF18 = (#const SDL_SCANCODE_F18) :: Scancode-pattern ScancodeF19 = (#const SDL_SCANCODE_F19) :: Scancode-pattern ScancodeF20 = (#const SDL_SCANCODE_F20) :: Scancode-pattern ScancodeF21 = (#const SDL_SCANCODE_F21) :: Scancode-pattern ScancodeF22 = (#const SDL_SCANCODE_F22) :: Scancode-pattern ScancodeF23 = (#const SDL_SCANCODE_F23) :: Scancode-pattern ScancodeF24 = (#const SDL_SCANCODE_F24) :: Scancode-pattern ScancodeExecute = (#const SDL_SCANCODE_EXECUTE) :: Scancode-pattern ScancodeHelp = (#const SDL_SCANCODE_HELP) :: Scancode-pattern ScancodeMenu = (#const SDL_SCANCODE_MENU) :: Scancode-pattern ScancodeSelect = (#const SDL_SCANCODE_SELECT) :: Scancode-pattern ScancodeStop = (#const SDL_SCANCODE_STOP) :: Scancode-pattern ScancodeAgain = (#const SDL_SCANCODE_AGAIN) :: Scancode-pattern ScancodeUndo = (#const SDL_SCANCODE_UNDO) :: Scancode-pattern ScancodeCut = (#const SDL_SCANCODE_CUT) :: Scancode-pattern ScancodeCopy = (#const SDL_SCANCODE_COPY) :: Scancode-pattern ScancodePaste = (#const SDL_SCANCODE_PASTE) :: Scancode-pattern ScancodeFind = (#const SDL_SCANCODE_FIND) :: Scancode-pattern ScancodeMute = (#const SDL_SCANCODE_MUTE) :: Scancode-pattern ScancodeVolumeUp = (#const SDL_SCANCODE_VOLUMEUP) :: Scancode-pattern ScancodeVolumeDown = (#const SDL_SCANCODE_VOLUMEDOWN) :: Scancode-pattern ScancodeKPComma = (#const SDL_SCANCODE_KP_COMMA) :: Scancode-pattern ScancodeEqualsAs400 = (#const SDL_SCANCODE_KP_EQUALSAS400) :: Scancode-pattern ScancodeInternational1 = (#const SDL_SCANCODE_INTERNATIONAL1) :: Scancode-pattern ScancodeInternational2 = (#const SDL_SCANCODE_INTERNATIONAL2) :: Scancode-pattern ScancodeInternational3 = (#const SDL_SCANCODE_INTERNATIONAL3) :: Scancode-pattern ScancodeInternational4 = (#const SDL_SCANCODE_INTERNATIONAL4) :: Scancode-pattern ScancodeInternational5 = (#const SDL_SCANCODE_INTERNATIONAL5) :: Scancode-pattern ScancodeInternational6 = (#const SDL_SCANCODE_INTERNATIONAL6) :: Scancode-pattern ScancodeInternational7 = (#const SDL_SCANCODE_INTERNATIONAL7) :: Scancode-pattern ScancodeInternational8 = (#const SDL_SCANCODE_INTERNATIONAL8) :: Scancode-pattern ScancodeInternational9 = (#const SDL_SCANCODE_INTERNATIONAL9) :: Scancode-pattern ScancodeLang1 = (#const SDL_SCANCODE_LANG1) :: Scancode-pattern ScancodeLang2 = (#const SDL_SCANCODE_LANG2) :: Scancode-pattern ScancodeLang3 = (#const SDL_SCANCODE_LANG3) :: Scancode-pattern ScancodeLang4 = (#const SDL_SCANCODE_LANG4) :: Scancode-pattern ScancodeLang5 = (#const SDL_SCANCODE_LANG5) :: Scancode-pattern ScancodeLang6 = (#const SDL_SCANCODE_LANG6) :: Scancode-pattern ScancodeLang7 = (#const SDL_SCANCODE_LANG7) :: Scancode-pattern ScancodeLang8 = (#const SDL_SCANCODE_LANG8) :: Scancode-pattern ScancodeLang9 = (#const SDL_SCANCODE_LANG9) :: Scancode-pattern ScancodeAltErase = (#const SDL_SCANCODE_ALTERASE) :: Scancode-pattern ScancodeSysReq = (#const SDL_SCANCODE_SYSREQ) :: Scancode-pattern ScancodeCancel = (#const SDL_SCANCODE_CANCEL) :: Scancode-pattern ScancodeClear = (#const SDL_SCANCODE_CLEAR) :: Scancode-pattern ScancodePrior = (#const SDL_SCANCODE_PRIOR) :: Scancode-pattern ScancodeReturn2 = (#const SDL_SCANCODE_RETURN2) :: Scancode-pattern ScancodeSeparator = (#const SDL_SCANCODE_SEPARATOR) :: Scancode-pattern ScancodeOut = (#const SDL_SCANCODE_OUT) :: Scancode-pattern ScancodeOper = (#const SDL_SCANCODE_OPER) :: Scancode-pattern ScancodeClearAgain = (#const SDL_SCANCODE_CLEARAGAIN) :: Scancode-pattern ScancodeCrSel = (#const SDL_SCANCODE_CRSEL) :: Scancode-pattern ScancodeExSel = (#const SDL_SCANCODE_EXSEL) :: Scancode-pattern ScancodeKP00 = (#const SDL_SCANCODE_KP_00) :: Scancode-pattern ScancodeKP000 = (#const SDL_SCANCODE_KP_000) :: Scancode-pattern ScancodeThousandsSeparator = (#const SDL_SCANCODE_THOUSANDSSEPARATOR) :: Scancode-pattern ScancodeDecimalSeparator = (#const SDL_SCANCODE_DECIMALSEPARATOR) :: Scancode-pattern ScancodeCurrencyUnit = (#const SDL_SCANCODE_CURRENCYUNIT) :: Scancode-pattern ScancodeCurrencySubunit = (#const SDL_SCANCODE_CURRENCYSUBUNIT) :: Scancode-pattern ScancodeLeftParen = (#const SDL_SCANCODE_KP_LEFTPAREN) :: Scancode-pattern ScancodeRightParen = (#const SDL_SCANCODE_KP_RIGHTPAREN) :: Scancode-pattern ScancodeLeftBrace = (#const SDL_SCANCODE_KP_LEFTBRACE) :: Scancode-pattern ScancodeRightBrace = (#const SDL_SCANCODE_KP_RIGHTBRACE) :: Scancode-pattern ScancodeKPTab = (#const SDL_SCANCODE_KP_TAB) :: Scancode-pattern ScancodeKPBackspace = (#const SDL_SCANCODE_KP_BACKSPACE) :: Scancode-pattern ScancodeKPA = (#const SDL_SCANCODE_KP_A) :: Scancode-pattern ScancodeKPB = (#const SDL_SCANCODE_KP_B) :: Scancode-pattern ScancodeKPC = (#const SDL_SCANCODE_KP_C) :: Scancode-pattern ScancodeKPD = (#const SDL_SCANCODE_KP_D) :: Scancode-pattern ScancodeKPE = (#const SDL_SCANCODE_KP_E) :: Scancode-pattern ScancodeKPF = (#const SDL_SCANCODE_KP_F) :: Scancode-pattern ScancodeKPXOR = (#const SDL_SCANCODE_KP_XOR) :: Scancode-pattern ScancodeKPPower = (#const SDL_SCANCODE_KP_POWER) :: Scancode-pattern ScancodeKPPercent = (#const SDL_SCANCODE_KP_PERCENT) :: Scancode-pattern ScancodeKPLess = (#const SDL_SCANCODE_KP_LESS) :: Scancode-pattern ScancodeKPGreater = (#const SDL_SCANCODE_KP_GREATER) :: Scancode-pattern ScancodeKPAmpersand = (#const SDL_SCANCODE_KP_AMPERSAND) :: Scancode-pattern ScancodeKPDBLAmpersand = (#const SDL_SCANCODE_KP_DBLAMPERSAND) :: Scancode-pattern ScancodeKPVerticalBar = (#const SDL_SCANCODE_KP_VERTICALBAR) :: Scancode-pattern ScancodeKPDBLVerticalBar = (#const SDL_SCANCODE_KP_DBLVERTICALBAR) :: Scancode-pattern ScancodeKPColon = (#const SDL_SCANCODE_KP_COLON) :: Scancode-pattern ScancodeKPHash = (#const SDL_SCANCODE_KP_HASH) :: Scancode-pattern ScancodeKPSpace = (#const SDL_SCANCODE_KP_SPACE) :: Scancode-pattern ScancodeKPAt = (#const SDL_SCANCODE_KP_AT) :: Scancode-pattern ScancodeKPExclam = (#const SDL_SCANCODE_KP_EXCLAM) :: Scancode-pattern ScancodeKPMemStore = (#const SDL_SCANCODE_KP_MEMSTORE) :: Scancode-pattern ScancodeKPMemRecall = (#const SDL_SCANCODE_KP_MEMRECALL) :: Scancode-pattern ScancodeKPMemClear = (#const SDL_SCANCODE_KP_MEMCLEAR) :: Scancode-pattern ScancodeKPMemAdd = (#const SDL_SCANCODE_KP_MEMADD) :: Scancode-pattern ScancodeKPMemSubtract = (#const SDL_SCANCODE_KP_MEMSUBTRACT) :: Scancode-pattern ScancodeKPMemMultiply = (#const SDL_SCANCODE_KP_MEMMULTIPLY) :: Scancode-pattern ScancodeKPMemDivide = (#const SDL_SCANCODE_KP_MEMDIVIDE) :: Scancode-pattern ScancodeKPPlusMinus = (#const SDL_SCANCODE_KP_PLUSMINUS) :: Scancode-pattern ScancodeKPClear = (#const SDL_SCANCODE_KP_CLEAR) :: Scancode-pattern ScancodeKPClearEntry = (#const SDL_SCANCODE_KP_CLEARENTRY) :: Scancode-pattern ScancodeKPBinary = (#const SDL_SCANCODE_KP_BINARY) :: Scancode-pattern ScancodeKPOctal = (#const SDL_SCANCODE_KP_OCTAL) :: Scancode-pattern ScancodeKPDecimal = (#const SDL_SCANCODE_KP_DECIMAL) :: Scancode-pattern ScancodeKPHexadecimal = (#const SDL_SCANCODE_KP_HEXADECIMAL) :: Scancode-pattern ScancodeLCtrl = (#const SDL_SCANCODE_LCTRL) :: Scancode-pattern ScancodeLShift = (#const SDL_SCANCODE_LSHIFT) :: Scancode-pattern ScancodeLAlt = (#const SDL_SCANCODE_LALT) :: Scancode-pattern ScancodeLGUI = (#const SDL_SCANCODE_LGUI) :: Scancode-pattern ScancodeRCtrl = (#const SDL_SCANCODE_RCTRL) :: Scancode-pattern ScancodeRShift = (#const SDL_SCANCODE_RSHIFT) :: Scancode-pattern ScancodeRAlt = (#const SDL_SCANCODE_RALT) :: Scancode-pattern ScancodeRGUI = (#const SDL_SCANCODE_RGUI) :: Scancode-pattern ScancodeMode = (#const SDL_SCANCODE_MODE) :: Scancode-pattern ScancodeAudioNext = (#const SDL_SCANCODE_AUDIONEXT) :: Scancode-pattern ScancodeAudioPrev = (#const SDL_SCANCODE_AUDIOPREV) :: Scancode-pattern ScancodeAudioStop = (#const SDL_SCANCODE_AUDIOSTOP) :: Scancode-pattern ScancodeAudioPlay = (#const SDL_SCANCODE_AUDIOPLAY) :: Scancode-pattern ScancodeAudioMute = (#const SDL_SCANCODE_AUDIOMUTE) :: Scancode-pattern ScancodeMediaSelect = (#const SDL_SCANCODE_MEDIASELECT) :: Scancode-pattern ScancodeWWW = (#const SDL_SCANCODE_WWW) :: Scancode-pattern ScancodeMail = (#const SDL_SCANCODE_MAIL) :: Scancode-pattern ScancodeCalculator = (#const SDL_SCANCODE_CALCULATOR) :: Scancode-pattern ScancodeComputer = (#const SDL_SCANCODE_COMPUTER) :: Scancode-pattern ScancodeACSearch = (#const SDL_SCANCODE_AC_SEARCH) :: Scancode-pattern ScancodeACHome = (#const SDL_SCANCODE_AC_HOME) :: Scancode-pattern ScancodeACBack = (#const SDL_SCANCODE_AC_BACK) :: Scancode-pattern ScancodeACForward = (#const SDL_SCANCODE_AC_FORWARD) :: Scancode-pattern ScancodeACStop = (#const SDL_SCANCODE_AC_STOP) :: Scancode-pattern ScancodeACRefresh = (#const SDL_SCANCODE_AC_REFRESH) :: Scancode-pattern ScancodeACBookmarks = (#const SDL_SCANCODE_AC_BOOKMARKS) :: Scancode-pattern ScancodeBrightnessDown = (#const SDL_SCANCODE_BRIGHTNESSDOWN) :: Scancode-pattern ScancodeBrightnessUp = (#const SDL_SCANCODE_BRIGHTNESSUP) :: Scancode-pattern ScancodeDisplaySwitch = (#const SDL_SCANCODE_DISPLAYSWITCH) :: Scancode-pattern ScancodeKBDIllumToggle = (#const SDL_SCANCODE_KBDILLUMTOGGLE) :: Scancode-pattern ScancodeKBDIllumDown = (#const SDL_SCANCODE_KBDILLUMDOWN) :: Scancode-pattern ScancodeKBDIllumUp = (#const SDL_SCANCODE_KBDILLUMUP) :: Scancode-pattern ScancodeEject = (#const SDL_SCANCODE_EJECT) :: Scancode-pattern ScancodeSleep = (#const SDL_SCANCODE_SLEEP) :: Scancode-pattern ScancodeApp1 = (#const SDL_SCANCODE_APP1) :: Scancode-pattern ScancodeApp2 = (#const SDL_SCANCODE_APP2) :: Scancode-pattern ScancodeNum = (#const SDL_NUM_SCANCODES) :: Scancode--pattern SystemCursorArrow = (#const SDL_SYSTEM_CURSOR_ARROW) :: SystemCursor-pattern SystemCursorIBeam = (#const SDL_SYSTEM_CURSOR_IBEAM) :: SystemCursor-pattern SystemCursorWait = (#const SDL_SYSTEM_CURSOR_WAIT) :: SystemCursor-pattern SystemCursorCrosshair = (#const SDL_SYSTEM_CURSOR_CROSSHAIR) :: SystemCursor-pattern SystemCursorWaitArrow = (#const SDL_SYSTEM_CURSOR_WAITARROW) :: SystemCursor-pattern SystemCursorSizeNWSE = (#const SDL_SYSTEM_CURSOR_SIZENWSE) :: SystemCursor-pattern SystemCursorSizeNESW = (#const SDL_SYSTEM_CURSOR_SIZENESW) :: SystemCursor-pattern SystemCursorSizeWE = (#const SDL_SYSTEM_CURSOR_SIZEWE) :: SystemCursor-pattern SystemCursorSizeNS = (#const SDL_SYSTEM_CURSOR_SIZENS) :: SystemCursor-pattern SystemCursorSizeAll = (#const SDL_SYSTEM_CURSOR_SIZEALL) :: SystemCursor-pattern SystemCursorNo = (#const SDL_SYSTEM_CURSOR_NO) :: SystemCursor-pattern SystemCursorHand = (#const SDL_SYSTEM_CURSOR_HAND) :: SystemCursor-pattern SystemCursorNum = (#const SDL_NUM_SYSTEM_CURSORS) :: SystemCursor--pattern ThreadPriorityLow = (#const SDL_THREAD_PRIORITY_LOW) :: ThreadPriority-pattern ThreadPriorityNormal = (#const SDL_THREAD_PRIORITY_NORMAL) :: ThreadPriority-pattern ThreadPriorityHigh = (#const SDL_THREAD_PRIORITY_HIGH) :: ThreadPriority--pattern AudioAllowFrequencyChange = (#const SDL_AUDIO_ALLOW_FREQUENCY_CHANGE)-pattern AudioAllowFormatChange = (#const SDL_AUDIO_ALLOW_FORMAT_CHANGE)-pattern AudioAllowChannelsChange = (#const SDL_AUDIO_ALLOW_CHANNELS_CHANGE)-pattern AudioAllowAnyChange = (#const SDL_AUDIO_ALLOW_ANY_CHANGE)--pattern ButtonLeft = (#const SDL_BUTTON_LEFT)-pattern ButtonMiddle = (#const SDL_BUTTON_MIDDLE)-pattern ButtonRight = (#const SDL_BUTTON_RIGHT)-pattern ButtonX1 = (#const SDL_BUTTON_X1)-pattern ButtonX2 = (#const SDL_BUTTON_X2)-pattern ButtonLMask = (#const SDL_BUTTON_LMASK)-pattern ButtonMMask = (#const SDL_BUTTON_MMASK)-pattern ButtonRMask = (#const SDL_BUTTON_RMASK)-pattern ButtonX1Mask = (#const SDL_BUTTON_X1MASK)-pattern ButtonX2Mask = (#const SDL_BUTTON_X2MASK)--pattern EventTypeFirstEvent = (#const SDL_FIRSTEVENT)-pattern EventTypeQuit = (#const SDL_QUIT)-pattern EventTypeAppTerminating = (#const SDL_APP_TERMINATING)-pattern EventTypeAppLowMemory = (#const SDL_APP_LOWMEMORY)-pattern EventTypeAppWillEnterBackground = (#const SDL_APP_WILLENTERBACKGROUND)-pattern EventTypeAppDidEnterBackground = (#const SDL_APP_DIDENTERBACKGROUND)-pattern EventTypeAppWillEnterForeground = (#const SDL_APP_WILLENTERFOREGROUND)-pattern EventTypeAppDidEnterForeground = (#const SDL_APP_DIDENTERFOREGROUND)-pattern EventTypeWindowEvent = (#const SDL_WINDOWEVENT)-pattern EventTypeSysWMEvent = (#const SDL_SYSWMEVENT)-pattern EventTypeKeyDown = (#const SDL_KEYDOWN)-pattern EventTypeKeyUp = (#const SDL_KEYUP)-pattern EventTypeTextEditing = (#const SDL_TEXTEDITING)-pattern EventTypeTextInput = (#const SDL_TEXTINPUT)-pattern EventTypeMouseMotion = (#const SDL_MOUSEMOTION)-pattern EventTypeMouseButtonDown = (#const SDL_MOUSEBUTTONDOWN)-pattern EventTypeMouseButtonUp = (#const SDL_MOUSEBUTTONUP)-pattern EventTypeMouseWheel = (#const SDL_MOUSEWHEEL)-pattern EventTypeJoyAxisMotion = (#const SDL_JOYAXISMOTION)-pattern EventTypeJoyBallMotion = (#const SDL_JOYBALLMOTION)-pattern EventTypeJoyHatMotion = (#const SDL_JOYHATMOTION)-pattern EventTypeJoyButtonDown = (#const SDL_JOYBUTTONDOWN)-pattern EventTypeJoyButtonUp = (#const SDL_JOYBUTTONUP)-pattern EventTypeJoyDeviceAdded = (#const SDL_JOYDEVICEADDED)-pattern EventTypeJoyDeviceRemoved = (#const SDL_JOYDEVICEREMOVED)-pattern EventTypeControllerAxisMotion = (#const SDL_CONTROLLERAXISMOTION)-pattern EventTypeControllerButtonDown = (#const SDL_CONTROLLERBUTTONDOWN)-pattern EventTypeControllerButtonUp = (#const SDL_CONTROLLERBUTTONUP)-pattern EventTypeControllerDeviceAdded = (#const SDL_CONTROLLERDEVICEADDED)-pattern EventTypeControllerDeviceRemoved = (#const SDL_CONTROLLERDEVICEREMOVED)-pattern EventTypeControllerDeviceRemapped = (#const SDL_CONTROLLERDEVICEREMAPPED)-pattern EventTypeFingerDown = (#const SDL_FINGERDOWN)-pattern EventTypeFingerUp = (#const SDL_FINGERUP)-pattern EventTypeFingerMotion = (#const SDL_FINGERMOTION)-pattern EventTypeDollarGesture = (#const SDL_DOLLARGESTURE)-pattern EventTypeDollarRecord = (#const SDL_DOLLARRECORD)-pattern EventTypeMultiGesture = (#const SDL_MULTIGESTURE)-pattern EventTypeClipboardUpdate = (#const SDL_CLIPBOARDUPDATE)-pattern EventTypeDropFile = (#const SDL_DROPFILE)-pattern EventTypeUserEvent = (#const SDL_USEREVENT)-pattern EventTypeLastEvent = (#const SDL_LASTEVENT)--pattern JoystickHatCentered = (#const SDL_HAT_CENTERED)-pattern JoystickHatUp = (#const SDL_HAT_UP)-pattern JoystickHatRight = (#const SDL_HAT_RIGHT)-pattern JoystickHatDown = (#const SDL_HAT_DOWN)-pattern JoystickHatLeft = (#const SDL_HAT_LEFT)-pattern JoystickHatRightUp = (#const SDL_HAT_RIGHTUP)-pattern JoystickHatRightDown = (#const SDL_HAT_RIGHTDOWN)-pattern JoystickHatLeftUp = (#const SDL_HAT_LEFTUP)-pattern JoystickHatLeftDown = (#const SDL_HAT_LEFTDOWN)--pattern KeyPressed = (#const SDL_PRESSED)-pattern KeyReleased = (#const SDL_RELEASED)--pattern LogCategoryApplication = (#const SDL_LOG_CATEGORY_APPLICATION)-pattern LogCategoryError = (#const SDL_LOG_CATEGORY_ERROR)-pattern LogCategoryAssert = (#const SDL_LOG_CATEGORY_ASSERT)-pattern LogCategorySystem = (#const SDL_LOG_CATEGORY_SYSTEM)-pattern LogCategoryAudio = (#const SDL_LOG_CATEGORY_AUDIO)-pattern LogCategoryVideo = (#const SDL_LOG_CATEGORY_VIDEO)-pattern LogCategoryRender = (#const SDL_LOG_CATEGORY_RENDER)-pattern LogCategoryInput = (#const SDL_LOG_CATEGORY_INPUT)-pattern LogCategoryTest = (#const SDL_LOG_CATEGORY_TEST)-pattern LogCategoryCustom = (#const SDL_LOG_CATEGORY_CUSTOM)--pattern MessageBoxFlagError = (#const SDL_MESSAGEBOX_ERROR)-pattern MessageBoxFlagWarning = (#const SDL_MESSAGEBOX_WARNING)-pattern MessageBoxFlagInformation = (#const SDL_MESSAGEBOX_INFORMATION)--pattern MessageBoxButtonFlagReturnKeyDefault = (#const SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT)-pattern MessageBoxButtonFlagEscapeKeyDefault = (#const SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT)--pattern GLProfileCore = (#const SDL_GL_CONTEXT_PROFILE_CORE)-pattern GLProfileCompatibility = (#const SDL_GL_CONTEXT_PROFILE_COMPATIBILITY)-pattern GLProfileES = (#const SDL_GL_CONTEXT_PROFILE_ES)--pattern GLContextFlagDebug = (#const SDL_GL_CONTEXT_DEBUG_FLAG)-pattern GLContextFlagForwardCompatible = (#const SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG)-pattern GLContextFlagRobustAccess = (#const SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG)-pattern GLContextFlagResetIsolation = (#const SDL_GL_CONTEXT_RESET_ISOLATION_FLAG)--pattern PixelFormatUnknown = (#const SDL_PIXELFORMAT_UNKNOWN)-pattern PixelFormatIndex1LSB = (#const SDL_PIXELFORMAT_INDEX1LSB)-pattern PixelFormatIndex1MSB = (#const SDL_PIXELFORMAT_INDEX1MSB)-pattern PixelFormatIndex4LSB = (#const SDL_PIXELFORMAT_INDEX4LSB)-pattern PixelFormatIndex4MSB = (#const SDL_PIXELFORMAT_INDEX4MSB)-pattern PixelFormatIndex8 = (#const SDL_PIXELFORMAT_INDEX8)-pattern PixelFormatRGB332 = (#const SDL_PIXELFORMAT_RGB332)-pattern PixelFormatRGB444 = (#const SDL_PIXELFORMAT_RGB444)-pattern PixelFormatRGB555 = (#const SDL_PIXELFORMAT_RGB555)-pattern PixelFormatBGR555 = (#const SDL_PIXELFORMAT_BGR555)-pattern PixelFormatARGB4444 = (#const SDL_PIXELFORMAT_ARGB4444)-pattern PixelFormatRGBA4444 = (#const SDL_PIXELFORMAT_RGBA4444)-pattern PixelFormatABGR4444 = (#const SDL_PIXELFORMAT_ABGR4444)-pattern PixelFormatBGRA4444 = (#const SDL_PIXELFORMAT_BGRA4444)-pattern PixelFormatARGB1555 = (#const SDL_PIXELFORMAT_ARGB1555)-pattern PixelFormatRGBA5551 = (#const SDL_PIXELFORMAT_RGBA5551)-pattern PixelFormatABGR1555 = (#const SDL_PIXELFORMAT_ABGR1555)-pattern PixelFormatBGRA5551 = (#const SDL_PIXELFORMAT_BGRA5551)-pattern PixelFormatRGB565 = (#const SDL_PIXELFORMAT_RGB565)-pattern PixelFormatBGR565 = (#const SDL_PIXELFORMAT_BGR565)-pattern PixelFormatRGB24 = (#const SDL_PIXELFORMAT_RGB24)-pattern PixelFormatBGR24 = (#const SDL_PIXELFORMAT_BGR24)-pattern PixelFormatRGB888 = (#const SDL_PIXELFORMAT_RGB888)-pattern PixelFormatRGBX8888 = (#const SDL_PIXELFORMAT_RGBX8888)-pattern PixelFormatBGR888 = (#const SDL_PIXELFORMAT_BGR888)-pattern PixelFormatBGRX8888 = (#const SDL_PIXELFORMAT_BGRX8888)-pattern PixelFormatARGB8888 = (#const SDL_PIXELFORMAT_ARGB8888)-pattern PixelFormatRGBA8888 = (#const SDL_PIXELFORMAT_RGBA8888)-pattern PixelFormatABGR8888 = (#const SDL_PIXELFORMAT_ABGR8888)-pattern PixelFormatBGRA8888 = (#const SDL_PIXELFORMAT_BGRA8888)-pattern PixelFormatARGB2101010 = (#const SDL_PIXELFORMAT_ARGB2101010)-pattern PixelFormatYV12 = (#const SDL_PIXELFORMAT_YV12)-pattern PixelFormatIYUV = (#const SDL_PIXELFORMAT_IYUV)-pattern PixelFormatYUY2 = (#const SDL_PIXELFORMAT_YUY2)-pattern PixelFormatUYVY = (#const SDL_PIXELFORMAT_UYVY)-pattern PixelFormatYVYU = (#const SDL_PIXELFORMAT_YVYU)--pattern RendererFlagSoftware = (#const SDL_RENDERER_SOFTWARE)-pattern RendererFlagAccelerated = (#const SDL_RENDERER_ACCELERATED)-pattern RendererFlagPresentVSync = (#const SDL_RENDERER_PRESENTVSYNC)-pattern RendererFlagTargetTexture = (#const SDL_RENDERER_TARGETTEXTURE)--pattern TextureAccessStatic = (#const SDL_TEXTUREACCESS_STATIC)-pattern TextureAccessStreaming = (#const SDL_TEXTUREACCESS_STREAMING)-pattern TextureAccessTarget = (#const SDL_TEXTUREACCESS_TARGET)--pattern TextureModulateNone = (#const SDL_TEXTUREMODULATE_NONE)-pattern TextureModulateColor = (#const SDL_TEXTUREMODULATE_COLOR)-pattern TextureModulateAlpha = (#const SDL_TEXTUREMODULATE_ALPHA)--pattern TouchMouseID = (#const SDL_TOUCH_MOUSEID)--pattern WindowEventNone = (#const SDL_WINDOWEVENT_NONE)-pattern WindowEventShown = (#const SDL_WINDOWEVENT_SHOWN)-pattern WindowEventHidden = (#const SDL_WINDOWEVENT_HIDDEN)-pattern WindowEventExposed = (#const SDL_WINDOWEVENT_EXPOSED)-pattern WindowEventMoved = (#const SDL_WINDOWEVENT_MOVED)-pattern WindowEventResized = (#const SDL_WINDOWEVENT_RESIZED)-pattern WindowEventSizeChanged = (#const SDL_WINDOWEVENT_SIZE_CHANGED)-pattern WindowEventMinimized = (#const SDL_WINDOWEVENT_MINIMIZED)-pattern WindowEventMaximized = (#const SDL_WINDOWEVENT_MAXIMIZED)-pattern WindowEventRestored = (#const SDL_WINDOWEVENT_RESTORED)-pattern WindowEventEnter = (#const SDL_WINDOWEVENT_ENTER)-pattern WindowEventLeave = (#const SDL_WINDOWEVENT_LEAVE)-pattern WindowEventFocusGained = (#const SDL_WINDOWEVENT_FOCUS_GAINED)-pattern WindowEventFocusLost = (#const SDL_WINDOWEVENT_FOCUS_LOST)-pattern WindowEventClose = (#const SDL_WINDOWEVENT_CLOSE)--pattern WindowFlagFullscreen = (#const SDL_WINDOW_FULLSCREEN)-pattern WindowFlagOpenGL = (#const SDL_WINDOW_OPENGL)-pattern WindowFlagShown = (#const SDL_WINDOW_SHOWN)-pattern WindowFlagHidden = (#const SDL_WINDOW_HIDDEN)-pattern WindowFlagBorderless = (#const SDL_WINDOW_BORDERLESS)-pattern WindowFlagResizable = (#const SDL_WINDOW_RESIZABLE)-pattern WindowFlagMinimized = (#const SDL_WINDOW_MINIMIZED)-pattern WindowFlagMaximized = (#const SDL_WINDOW_MAXIMIZED)-pattern WindowFlagInputGrabbed = (#const SDL_WINDOW_INPUT_GRABBED)-pattern WindowFlagInputFocus = (#const SDL_WINDOW_INPUT_FOCUS)-pattern WindowFlagMouseFocus = (#const SDL_WINDOW_MOUSE_FOCUS)-pattern WindowFlagFullscreenDesktop = (#const SDL_WINDOW_FULLSCREEN_DESKTOP)-pattern WindowFlagForeign = (#const SDL_WINDOW_FOREIGN)-pattern WindowFlagAllowHighDPI = (#const SDL_WINDOW_ALLOW_HIGHDPI)--pattern WindowPosUndefined = (#const SDL_WINDOWPOS_UNDEFINED)-pattern WindowPosCentered = (#const SDL_WINDOWPOS_CENTERED)
Graphics/UI/SDL/Event.hs view
@@ -1,114 +1,115 @@ module Graphics.UI.SDL.Event (-	-- * Event Handling-	addEventWatch,-	delEventWatch,-	eventState,-	filterEvents,-	flushEvent,-	flushEvents,-	getEventFilter,-	getNumTouchDevices,-	getNumTouchFingers,-	getTouchDevice,-	getTouchFinger,-	hasEvent,-	hasEvents,-	loadDollarTemplates,-	peepEvents,-	pollEvent,-	pumpEvents,-	pushEvent,-	quitRequested,-	recordGesture,-	registerEvents,-	saveAllDollarTemplates,-	saveDollarTemplate,-	setEventFilter,-	waitEvent,-	waitEventTimeout,+  -- * Event Handling+  addEventWatch,+  delEventWatch,+  eventState,+  filterEvents,+  flushEvent,+  flushEvents,+  getEventFilter,+  getNumTouchDevices,+  getNumTouchFingers,+  getTouchDevice,+  getTouchFinger,+  hasEvent,+  hasEvents,+  loadDollarTemplates,+  peepEvents,+  pollEvent,+  pumpEvents,+  pushEvent,+  quitRequested,+  recordGesture,+  registerEvents,+  saveAllDollarTemplates,+  saveDollarTemplate,+  setEventFilter,+  waitEvent,+  waitEventTimeout, -	-- * Keyboard Support-	getKeyFromName,-	getKeyFromScancode,-	getKeyName,-	getKeyboardFocus,-	getKeyboardState,-	getModState,-	getScancodeFromKey,-	getScancodeFromName,-	getScancodeName,-	hasScreenKeyboardSupport,-	isScreenKeyboardShown,-	isTextInputActive,-	setModState,-	setTextInputRect,-	startTextInput,-	stopTextInput,+  -- * Keyboard Support+  getKeyFromName,+  getKeyFromScancode,+  getKeyName,+  getKeyboardFocus,+  getKeyboardState,+  getModState,+  getScancodeFromKey,+  getScancodeFromName,+  getScancodeName,+  hasScreenKeyboardSupport,+  isScreenKeyboardShown,+  isTextInputActive,+  setModState,+  setTextInputRect,+  startTextInput,+  stopTextInput, -	-- * Mouse Support-	createColorCursor,-	createCursor,-	createSystemCursor,-	freeCursor,-	getCursor,-	getDefaultCursor,-	getMouseFocus,-	getMouseState,-	getRelativeMouseMode,-	getRelativeMouseState,-	setCursor,-	setRelativeMouseMode,-	showCursor,-	warpMouseInWindow,+  -- * Mouse Support+  createColorCursor,+  createCursor,+  createSystemCursor,+  freeCursor,+  getCursor,+  getDefaultCursor,+  getMouseFocus,+  getMouseState,+  getRelativeMouseMode,+  getRelativeMouseState,+  setCursor,+  setRelativeMouseMode,+  showCursor,+  warpMouseInWindow, -	-- * Joystick Support-	joystickClose,-	joystickEventState,-	joystickGetAttached,-	joystickGetAxis,-	joystickGetBall,-	joystickGetButton,-	joystickGetDeviceGUID,-	joystickGetGUID,-	joystickGetGUIDFromString,-	joystickGetGUIDString,-	joystickGetHat,-	joystickInstanceID,-	joystickName,-	joystickNameForIndex,-	joystickNumAxes,-	joystickNumBalls,-	joystickNumButtons,-	joystickNumHats,-	joystickOpen,-	joystickUpdate,-	numJoysticks,+  -- * Joystick Support+  joystickClose,+  joystickEventState,+  joystickGetAttached,+  joystickGetAxis,+  joystickGetBall,+  joystickGetButton,+  joystickGetDeviceGUID,+  joystickGetGUID,+  joystickGetGUIDFromString,+  joystickGetGUIDString,+  joystickGetHat,+  joystickInstanceID,+  joystickName,+  joystickNameForIndex,+  joystickNumAxes,+  joystickNumBalls,+  joystickNumButtons,+  joystickNumHats,+  joystickOpen,+  joystickUpdate,+  numJoysticks, -	-- * Game Controller Support-	gameControllerAddMapping,-	gameControllerAddMappingsFromFile,-	gameControllerAddMappingsFromRW,-	gameControllerClose,-	gameControllerEventState,-	gameControllerGetAttached,-	gameControllerGetAxis,-	gameControllerGetAxisFromString,-	gameControllerGetBindForAxis,-	gameControllerGetBindForButton,-	gameControllerGetButton,-	gameControllerGetButtonFromString,-	gameControllerGetJoystick,-	gameControllerGetStringForAxis,-	gameControllerGetStringForButton,-	gameControllerMapping,-	gameControllerMappingForGUID,-	gameControllerName,-	gameControllerNameForIndex,-	gameControllerOpen,-	gameControllerUpdate,-	isGameController+  -- * Game Controller Support+  gameControllerAddMapping,+  gameControllerAddMappingsFromFile,+  gameControllerAddMappingsFromRW,+  gameControllerClose,+  gameControllerEventState,+  gameControllerGetAttached,+  gameControllerGetAxis,+  gameControllerGetAxisFromString,+  gameControllerGetBindForAxis,+  gameControllerGetBindForButton,+  gameControllerGetButton,+  gameControllerGetButtonFromString,+  gameControllerGetJoystick,+  gameControllerGetStringForAxis,+  gameControllerGetStringForButton,+  gameControllerMapping,+  gameControllerMappingForGUID,+  gameControllerName,+  gameControllerNameForIndex,+  gameControllerOpen,+  gameControllerUpdate,+  isGameController ) where +import Control.Monad.IO.Class import Data.Int import Data.Word import Foreign.C.String@@ -120,150 +121,519 @@ import Graphics.UI.SDL.Filesystem import Graphics.UI.SDL.Types -foreign import ccall "SDL.h SDL_AddEventWatch" addEventWatch :: EventFilter -> Ptr () -> IO ()-foreign import ccall "SDL.h SDL_DelEventWatch" delEventWatch :: EventFilter -> Ptr () -> IO ()-foreign import ccall "SDL.h SDL_EventState" eventState :: Word32 -> CInt -> IO Word8-foreign import ccall "SDL.h SDL_FilterEvents" filterEvents :: EventFilter -> Ptr () -> IO ()-foreign import ccall "SDL.h SDL_FlushEvent" flushEvent :: Word32 -> IO ()-foreign import ccall "SDL.h SDL_FlushEvents" flushEvents :: Word32 -> Word32 -> IO ()-foreign import ccall "SDL.h SDL_GetEventFilter" getEventFilter :: Ptr EventFilter -> Ptr (Ptr ()) -> IO Bool-foreign import ccall "SDL.h SDL_GetNumTouchDevices" getNumTouchDevices :: IO CInt-foreign import ccall "SDL.h SDL_GetNumTouchFingers" getNumTouchFingers :: TouchID -> IO CInt-foreign import ccall "SDL.h SDL_GetTouchDevice" getTouchDevice :: CInt -> IO TouchID-foreign import ccall "SDL.h SDL_GetTouchFinger" getTouchFinger :: TouchID -> CInt -> IO (Ptr Finger)-foreign import ccall "SDL.h SDL_HasEvent" hasEvent :: Word32 -> IO Bool-foreign import ccall "SDL.h SDL_HasEvents" hasEvents :: Word32 -> Word32 -> IO Bool-foreign import ccall "SDL.h SDL_LoadDollarTemplates" loadDollarTemplates :: TouchID -> Ptr RWops -> IO CInt-foreign import ccall "SDL.h SDL_PeepEvents" peepEvents :: Ptr Event -> CInt -> EventAction -> Word32 -> Word32 -> IO CInt-foreign import ccall "SDL.h SDL_PollEvent" pollEvent :: Ptr Event -> IO CInt-foreign import ccall "SDL.h SDL_PumpEvents" pumpEvents :: IO ()-foreign import ccall "SDL.h SDL_PushEvent" pushEvent :: Ptr Event -> IO CInt-foreign import ccall "SDL.h SDL_RecordGesture" recordGesture :: TouchID -> IO CInt-foreign import ccall "SDL.h SDL_RegisterEvents" registerEvents :: CInt -> IO Word32-foreign import ccall "SDL.h SDL_SaveAllDollarTemplates" saveAllDollarTemplates :: Ptr RWops -> IO CInt-foreign import ccall "SDL.h SDL_SaveDollarTemplate" saveDollarTemplate :: GestureID -> Ptr RWops -> IO CInt-foreign import ccall "SDL.h SDL_SetEventFilter" setEventFilter :: EventFilter -> Ptr () -> IO ()-foreign import ccall "SDL.h SDL_WaitEvent" waitEvent :: Ptr Event -> IO CInt-foreign import ccall "SDL.h SDL_WaitEventTimeout" waitEventTimeout :: Ptr Event -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_AddEventWatch" addEventWatch' :: EventFilter -> Ptr () -> IO ()+foreign import ccall "SDL.h SDL_DelEventWatch" delEventWatch' :: EventFilter -> Ptr () -> IO ()+foreign import ccall "SDL.h SDL_EventState" eventState' :: Word32 -> CInt -> IO Word8+foreign import ccall "SDL.h SDL_FilterEvents" filterEvents' :: EventFilter -> Ptr () -> IO ()+foreign import ccall "SDL.h SDL_FlushEvent" flushEvent' :: Word32 -> IO ()+foreign import ccall "SDL.h SDL_FlushEvents" flushEvents' :: Word32 -> Word32 -> IO ()+foreign import ccall "SDL.h SDL_GetEventFilter" getEventFilter' :: Ptr EventFilter -> Ptr (Ptr ()) -> IO Bool+foreign import ccall "SDL.h SDL_GetNumTouchDevices" getNumTouchDevices' :: IO CInt+foreign import ccall "SDL.h SDL_GetNumTouchFingers" getNumTouchFingers' :: TouchID -> IO CInt+foreign import ccall "SDL.h SDL_GetTouchDevice" getTouchDevice' :: CInt -> IO TouchID+foreign import ccall "SDL.h SDL_GetTouchFinger" getTouchFinger' :: TouchID -> CInt -> IO (Ptr Finger)+foreign import ccall "SDL.h SDL_HasEvent" hasEvent' :: Word32 -> IO Bool+foreign import ccall "SDL.h SDL_HasEvents" hasEvents' :: Word32 -> Word32 -> IO Bool+foreign import ccall "SDL.h SDL_LoadDollarTemplates" loadDollarTemplates' :: TouchID -> Ptr RWops -> IO CInt+foreign import ccall "SDL.h SDL_PeepEvents" peepEvents' :: Ptr Event -> CInt -> EventAction -> Word32 -> Word32 -> IO CInt+foreign import ccall "SDL.h SDL_PollEvent" pollEvent' :: Ptr Event -> IO CInt+foreign import ccall "SDL.h SDL_PumpEvents" pumpEvents' :: IO ()+foreign import ccall "SDL.h SDL_PushEvent" pushEvent' :: Ptr Event -> IO CInt+foreign import ccall "SDL.h SDL_RecordGesture" recordGesture' :: TouchID -> IO CInt+foreign import ccall "SDL.h SDL_RegisterEvents" registerEvents' :: CInt -> IO Word32+foreign import ccall "SDL.h SDL_SaveAllDollarTemplates" saveAllDollarTemplates' :: Ptr RWops -> IO CInt+foreign import ccall "SDL.h SDL_SaveDollarTemplate" saveDollarTemplate' :: GestureID -> Ptr RWops -> IO CInt+foreign import ccall "SDL.h SDL_SetEventFilter" setEventFilter' :: EventFilter -> Ptr () -> IO ()+foreign import ccall "SDL.h SDL_WaitEvent" waitEvent' :: Ptr Event -> IO CInt+foreign import ccall "SDL.h SDL_WaitEventTimeout" waitEventTimeout' :: Ptr Event -> CInt -> IO CInt -foreign import ccall "SDL.h SDL_GetKeyFromName" getKeyFromName :: CString -> IO Keycode-foreign import ccall "SDL.h SDL_GetKeyFromScancode" getKeyFromScancode :: Scancode -> IO Keycode-foreign import ccall "SDL.h SDL_GetKeyName" getKeyName :: Keycode -> IO CString-foreign import ccall "SDL.h SDL_GetKeyboardFocus" getKeyboardFocus :: IO Window-foreign import ccall "SDL.h SDL_GetKeyboardState" getKeyboardState :: Ptr CInt -> IO (Ptr Word8)-foreign import ccall "SDL.h SDL_GetModState" getModState :: IO Keymod-foreign import ccall "SDL.h SDL_GetScancodeFromKey" getScancodeFromKey :: Keycode -> IO Scancode-foreign import ccall "SDL.h SDL_GetScancodeFromName" getScancodeFromName :: CString -> IO Scancode-foreign import ccall "SDL.h SDL_GetScancodeName" getScancodeName :: Scancode -> IO CString-foreign import ccall "SDL.h SDL_HasScreenKeyboardSupport" hasScreenKeyboardSupport :: IO Bool-foreign import ccall "SDL.h SDL_IsScreenKeyboardShown" isScreenKeyboardShown :: Window -> IO Bool-foreign import ccall "SDL.h SDL_IsTextInputActive" isTextInputActive :: IO Bool-foreign import ccall "SDL.h SDL_SetModState" setModState :: Keymod -> IO ()-foreign import ccall "SDL.h SDL_SetTextInputRect" setTextInputRect :: Ptr Rect -> IO ()-foreign import ccall "SDL.h SDL_StartTextInput" startTextInput :: IO ()-foreign import ccall "SDL.h SDL_StopTextInput" stopTextInput :: IO ()+foreign import ccall "SDL.h SDL_GetKeyFromName" getKeyFromName' :: CString -> IO Keycode+foreign import ccall "SDL.h SDL_GetKeyFromScancode" getKeyFromScancode' :: Scancode -> IO Keycode+foreign import ccall "SDL.h SDL_GetKeyName" getKeyName' :: Keycode -> IO CString+foreign import ccall "SDL.h SDL_GetKeyboardFocus" getKeyboardFocus' :: IO Window+foreign import ccall "SDL.h SDL_GetKeyboardState" getKeyboardState' :: Ptr CInt -> IO (Ptr Word8)+foreign import ccall "SDL.h SDL_GetModState" getModState' :: IO Keymod+foreign import ccall "SDL.h SDL_GetScancodeFromKey" getScancodeFromKey' :: Keycode -> IO Scancode+foreign import ccall "SDL.h SDL_GetScancodeFromName" getScancodeFromName' :: CString -> IO Scancode+foreign import ccall "SDL.h SDL_GetScancodeName" getScancodeName' :: Scancode -> IO CString+foreign import ccall "SDL.h SDL_HasScreenKeyboardSupport" hasScreenKeyboardSupport' :: IO Bool+foreign import ccall "SDL.h SDL_IsScreenKeyboardShown" isScreenKeyboardShown' :: Window -> IO Bool+foreign import ccall "SDL.h SDL_IsTextInputActive" isTextInputActive' :: IO Bool+foreign import ccall "SDL.h SDL_SetModState" setModState' :: Keymod -> IO ()+foreign import ccall "SDL.h SDL_SetTextInputRect" setTextInputRect' :: Ptr Rect -> IO ()+foreign import ccall "SDL.h SDL_StartTextInput" startTextInput' :: IO ()+foreign import ccall "SDL.h SDL_StopTextInput" stopTextInput' :: IO () -foreign import ccall "SDL.h SDL_CreateColorCursor" createColorCursor :: Ptr Surface -> CInt -> CInt -> IO Cursor-foreign import ccall "SDL.h SDL_CreateCursor" createCursor :: Ptr Word8 -> Ptr Word8 -> CInt -> CInt -> CInt -> CInt -> IO Cursor-foreign import ccall "SDL.h SDL_CreateSystemCursor" createSystemCursor :: SystemCursor -> IO Cursor-foreign import ccall "SDL.h SDL_FreeCursor" freeCursor :: Cursor -> IO ()-foreign import ccall "SDL.h SDL_GetCursor" getCursor :: IO Cursor-foreign import ccall "SDL.h SDL_GetDefaultCursor" getDefaultCursor :: IO Cursor-foreign import ccall "SDL.h SDL_GetMouseFocus" getMouseFocus :: IO Window-foreign import ccall "SDL.h SDL_GetMouseState" getMouseState :: Ptr CInt -> Ptr CInt -> IO Word32-foreign import ccall "SDL.h SDL_GetRelativeMouseMode" getRelativeMouseMode :: IO Bool-foreign import ccall "SDL.h SDL_GetRelativeMouseState" getRelativeMouseState :: Ptr CInt -> Ptr CInt -> IO Word32-foreign import ccall "SDL.h SDL_SetCursor" setCursor :: Cursor -> IO ()-foreign import ccall "SDL.h SDL_SetRelativeMouseMode" setRelativeMouseMode :: Bool -> IO CInt-foreign import ccall "SDL.h SDL_ShowCursor" showCursor :: CInt -> IO CInt-foreign import ccall "SDL.h SDL_WarpMouseInWindow" warpMouseInWindow :: Window -> CInt -> CInt -> IO ()+foreign import ccall "SDL.h SDL_CreateColorCursor" createColorCursor' :: Ptr Surface -> CInt -> CInt -> IO Cursor+foreign import ccall "SDL.h SDL_CreateCursor" createCursor' :: Ptr Word8 -> Ptr Word8 -> CInt -> CInt -> CInt -> CInt -> IO Cursor+foreign import ccall "SDL.h SDL_CreateSystemCursor" createSystemCursor' :: SystemCursor -> IO Cursor+foreign import ccall "SDL.h SDL_FreeCursor" freeCursor' :: Cursor -> IO ()+foreign import ccall "SDL.h SDL_GetCursor" getCursor' :: IO Cursor+foreign import ccall "SDL.h SDL_GetDefaultCursor" getDefaultCursor' :: IO Cursor+foreign import ccall "SDL.h SDL_GetMouseFocus" getMouseFocus' :: IO Window+foreign import ccall "SDL.h SDL_GetMouseState" getMouseState' :: Ptr CInt -> Ptr CInt -> IO Word32+foreign import ccall "SDL.h SDL_GetRelativeMouseMode" getRelativeMouseMode' :: IO Bool+foreign import ccall "SDL.h SDL_GetRelativeMouseState" getRelativeMouseState' :: Ptr CInt -> Ptr CInt -> IO Word32+foreign import ccall "SDL.h SDL_SetCursor" setCursor' :: Cursor -> IO ()+foreign import ccall "SDL.h SDL_SetRelativeMouseMode" setRelativeMouseMode' :: Bool -> IO CInt+foreign import ccall "SDL.h SDL_ShowCursor" showCursor' :: CInt -> IO CInt+foreign import ccall "SDL.h SDL_WarpMouseInWindow" warpMouseInWindow' :: Window -> CInt -> CInt -> IO () -foreign import ccall "SDL.h SDL_JoystickClose" joystickClose :: Joystick -> IO ()-foreign import ccall "SDL.h SDL_JoystickEventState" joystickEventState :: CInt -> IO CInt-foreign import ccall "SDL.h SDL_JoystickGetAttached" joystickGetAttached :: Joystick -> IO Bool-foreign import ccall "SDL.h SDL_JoystickGetAxis" joystickGetAxis :: Joystick -> CInt -> IO Int16-foreign import ccall "SDL.h SDL_JoystickGetBall" joystickGetBall :: Joystick -> CInt -> Ptr CInt -> Ptr CInt -> IO CInt-foreign import ccall "SDL.h SDL_JoystickGetButton" joystickGetButton :: Joystick -> CInt -> IO Word8+foreign import ccall "SDL.h SDL_JoystickClose" joystickClose' :: Joystick -> IO ()+foreign import ccall "SDL.h SDL_JoystickEventState" joystickEventState' :: CInt -> IO CInt+foreign import ccall "SDL.h SDL_JoystickGetAttached" joystickGetAttached' :: Joystick -> IO Bool+foreign import ccall "SDL.h SDL_JoystickGetAxis" joystickGetAxis' :: Joystick -> CInt -> IO Int16+foreign import ccall "SDL.h SDL_JoystickGetBall" joystickGetBall' :: Joystick -> CInt -> Ptr CInt -> Ptr CInt -> IO CInt+foreign import ccall "SDL.h SDL_JoystickGetButton" joystickGetButton' :: Joystick -> CInt -> IO Word8 foreign import ccall "sdlhelper.h SDLHelper_JoystickGetDeviceGUID" joystickGetDeviceGUID' :: CInt -> Ptr JoystickGUID -> IO () foreign import ccall "sdlhelper.h SDLHelper_JoystickGetGUID" joystickGetGUID' :: Joystick -> Ptr JoystickGUID -> IO () foreign import ccall "sdlhelper.h SDLHelper_JoystickGetGUIDFromString" joystickGetGUIDFromString' :: CString -> Ptr JoystickGUID -> IO () foreign import ccall "sdlhelper.h SDLHelper_JoystickGetGUIDString" joystickGetGUIDString' :: Ptr JoystickGUID -> CString -> CInt -> IO ()-foreign import ccall "SDL.h SDL_JoystickGetHat" joystickGetHat :: Joystick -> CInt -> IO Word8-foreign import ccall "SDL.h SDL_JoystickInstanceID" joystickInstanceID :: Joystick -> IO JoystickID-foreign import ccall "SDL.h SDL_JoystickName" joystickName :: Joystick -> IO CString-foreign import ccall "SDL.h SDL_JoystickNameForIndex" joystickNameForIndex :: CInt -> IO CString-foreign import ccall "SDL.h SDL_JoystickNumAxes" joystickNumAxes :: Joystick -> IO CInt-foreign import ccall "SDL.h SDL_JoystickNumBalls" joystickNumBalls :: Joystick -> IO CInt-foreign import ccall "SDL.h SDL_JoystickNumButtons" joystickNumButtons :: Joystick -> IO CInt-foreign import ccall "SDL.h SDL_JoystickNumHats" joystickNumHats :: Joystick -> IO CInt-foreign import ccall "SDL.h SDL_JoystickOpen" joystickOpen :: CInt -> IO Joystick-foreign import ccall "SDL.h SDL_JoystickUpdate" joystickUpdate :: IO ()-foreign import ccall "SDL.h SDL_NumJoysticks" numJoysticks :: IO CInt+foreign import ccall "SDL.h SDL_JoystickGetHat" joystickGetHat' :: Joystick -> CInt -> IO Word8+foreign import ccall "SDL.h SDL_JoystickInstanceID" joystickInstanceID' :: Joystick -> IO JoystickID+foreign import ccall "SDL.h SDL_JoystickName" joystickName' :: Joystick -> IO CString+foreign import ccall "SDL.h SDL_JoystickNameForIndex" joystickNameForIndex' :: CInt -> IO CString+foreign import ccall "SDL.h SDL_JoystickNumAxes" joystickNumAxes' :: Joystick -> IO CInt+foreign import ccall "SDL.h SDL_JoystickNumBalls" joystickNumBalls' :: Joystick -> IO CInt+foreign import ccall "SDL.h SDL_JoystickNumButtons" joystickNumButtons' :: Joystick -> IO CInt+foreign import ccall "SDL.h SDL_JoystickNumHats" joystickNumHats' :: Joystick -> IO CInt+foreign import ccall "SDL.h SDL_JoystickOpen" joystickOpen' :: CInt -> IO Joystick+foreign import ccall "SDL.h SDL_JoystickUpdate" joystickUpdate' :: IO ()+foreign import ccall "SDL.h SDL_NumJoysticks" numJoysticks' :: IO CInt -foreign import ccall "SDL.h SDL_GameControllerAddMapping" gameControllerAddMapping :: CString -> IO CInt-foreign import ccall "SDL.h SDL_GameControllerAddMappingsFromRW" gameControllerAddMappingsFromRW :: Ptr RWops -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_GameControllerClose" gameControllerClose :: GameController -> IO ()-foreign import ccall "SDL.h SDL_GameControllerEventState" gameControllerEventState :: CInt -> IO CInt-foreign import ccall "SDL.h SDL_GameControllerGetAttached" gameControllerGetAttached :: GameController -> IO Bool-foreign import ccall "SDL.h SDL_GameControllerGetAxis" gameControllerGetAxis :: GameController -> GameControllerAxis -> IO Int16-foreign import ccall "SDL.h SDL_GameControllerGetAxisFromString" gameControllerGetAxisFromString :: CString -> IO GameControllerAxis+foreign import ccall "SDL.h SDL_GameControllerAddMapping" gameControllerAddMapping' :: CString -> IO CInt+foreign import ccall "SDL.h SDL_GameControllerAddMappingsFromRW" gameControllerAddMappingsFromRW' :: Ptr RWops -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_GameControllerClose" gameControllerClose' :: GameController -> IO ()+foreign import ccall "SDL.h SDL_GameControllerEventState" gameControllerEventState' :: CInt -> IO CInt+foreign import ccall "SDL.h SDL_GameControllerGetAttached" gameControllerGetAttached' :: GameController -> IO Bool+foreign import ccall "SDL.h SDL_GameControllerGetAxis" gameControllerGetAxis' :: GameController -> GameControllerAxis -> IO Int16+foreign import ccall "SDL.h SDL_GameControllerGetAxisFromString" gameControllerGetAxisFromString' :: CString -> IO GameControllerAxis foreign import ccall "sdlhelper.h SDLHelper_GameControllerGetBindForAxis" gameControllerGetBindForAxis' :: GameController -> GameControllerAxis -> Ptr GameControllerButtonBind -> IO () foreign import ccall "sdlhelper.h SDLHelper_GameControllerGetBindForButton" gameControllerGetBindForButton' :: GameController -> GameControllerButton -> Ptr GameControllerButtonBind -> IO ()-foreign import ccall "SDL.h SDL_GameControllerGetButton" gameControllerGetButton :: GameController -> GameControllerButton -> IO Word8-foreign import ccall "SDL.h SDL_GameControllerGetButtonFromString" gameControllerGetButtonFromString :: CString -> IO GameControllerButton-foreign import ccall "SDL.h SDL_GameControllerGetJoystick" gameControllerGetJoystick :: GameController -> IO Joystick-foreign import ccall "SDL.h SDL_GameControllerGetStringForAxis" gameControllerGetStringForAxis :: GameControllerAxis -> IO CString-foreign import ccall "SDL.h SDL_GameControllerGetStringForButton" gameControllerGetStringForButton :: GameControllerButton -> IO CString-foreign import ccall "SDL.h SDL_GameControllerMapping" gameControllerMapping :: GameController -> IO CString+foreign import ccall "SDL.h SDL_GameControllerGetButton" gameControllerGetButton' :: GameController -> GameControllerButton -> IO Word8+foreign import ccall "SDL.h SDL_GameControllerGetButtonFromString" gameControllerGetButtonFromString' :: CString -> IO GameControllerButton+foreign import ccall "SDL.h SDL_GameControllerGetJoystick" gameControllerGetJoystick' :: GameController -> IO Joystick+foreign import ccall "SDL.h SDL_GameControllerGetStringForAxis" gameControllerGetStringForAxis' :: GameControllerAxis -> IO CString+foreign import ccall "SDL.h SDL_GameControllerGetStringForButton" gameControllerGetStringForButton' :: GameControllerButton -> IO CString+foreign import ccall "SDL.h SDL_GameControllerMapping" gameControllerMapping' :: GameController -> IO CString foreign import ccall "sdlhelper.h SDLHelper_GameControllerMappingForGUID" gameControllerMappingForGUID' :: Ptr JoystickGUID -> IO CString-foreign import ccall "SDL.h SDL_GameControllerName" gameControllerName :: GameController -> IO CString-foreign import ccall "SDL.h SDL_GameControllerNameForIndex" gameControllerNameForIndex :: CInt -> IO CString-foreign import ccall "SDL.h SDL_GameControllerOpen" gameControllerOpen :: CInt -> IO GameController-foreign import ccall "SDL.h SDL_GameControllerUpdate" gameControllerUpdate :: IO ()-foreign import ccall "SDL.h SDL_IsGameController" isGameController :: CInt -> IO Bool+foreign import ccall "SDL.h SDL_GameControllerName" gameControllerName' :: GameController -> IO CString+foreign import ccall "SDL.h SDL_GameControllerNameForIndex" gameControllerNameForIndex' :: CInt -> IO CString+foreign import ccall "SDL.h SDL_GameControllerOpen" gameControllerOpen' :: CInt -> IO GameController+foreign import ccall "SDL.h SDL_GameControllerUpdate" gameControllerUpdate' :: IO ()+foreign import ccall "SDL.h SDL_IsGameController" isGameController' :: CInt -> IO Bool -quitRequested :: IO Bool-quitRequested = do-	pumpEvents-	ev <- peepEvents nullPtr 0 eventActionPeekEvent eventTypeQuit eventTypeQuit-	return $ ev > 0+addEventWatch :: MonadIO m => EventFilter -> Ptr () -> m ()+addEventWatch v1 v2 = liftIO $ addEventWatch' v1 v2+{-# INLINE addEventWatch #-} -joystickGetDeviceGUID :: CInt -> IO JoystickGUID-joystickGetDeviceGUID device_index = alloca $ \ptr -> do-	joystickGetDeviceGUID' device_index ptr-	peek ptr+delEventWatch :: MonadIO m => EventFilter -> Ptr () -> m ()+delEventWatch v1 v2 = liftIO $ delEventWatch' v1 v2+{-# INLINE delEventWatch #-} -joystickGetGUID :: Joystick -> IO JoystickGUID-joystickGetGUID joystick = alloca $ \ptr -> do-	joystickGetGUID' joystick ptr-	peek ptr+eventState :: MonadIO m => Word32 -> CInt -> m Word8+eventState v1 v2 = liftIO $ eventState' v1 v2+{-# INLINE eventState #-} -joystickGetGUIDFromString :: CString -> IO JoystickGUID-joystickGetGUIDFromString pchGUID = alloca $ \ptr -> do-	joystickGetGUIDFromString' pchGUID ptr-	peek ptr+filterEvents :: MonadIO m => EventFilter -> Ptr () -> m ()+filterEvents v1 v2 = liftIO $ filterEvents' v1 v2+{-# INLINE filterEvents #-} -joystickGetGUIDString :: JoystickGUID -> CString -> CInt -> IO ()-joystickGetGUIDString guid pszGUID cbGUID = alloca $ \ptr -> do-	poke ptr guid-	joystickGetGUIDString' ptr pszGUID cbGUID+flushEvent :: MonadIO m => Word32 -> m ()+flushEvent v1 = liftIO $ flushEvent' v1+{-# INLINE flushEvent #-} -gameControllerAddMappingsFromFile :: CString -> IO CInt-gameControllerAddMappingsFromFile file = do-	rw <- withCString "rb" $ rwFromFile file-	gameControllerAddMappingsFromRW rw 1+flushEvents :: MonadIO m => Word32 -> Word32 -> m ()+flushEvents v1 v2 = liftIO $ flushEvents' v1 v2+{-# INLINE flushEvents #-} -gameControllerGetBindForAxis :: GameController -> GameControllerAxis -> IO GameControllerButtonBind-gameControllerGetBindForAxis gamecontroller axis = alloca $ \ptr -> do-	gameControllerGetBindForAxis' gamecontroller axis ptr-	peek ptr+getEventFilter :: MonadIO m => Ptr EventFilter -> Ptr (Ptr ()) -> m Bool+getEventFilter v1 v2 = liftIO $ getEventFilter' v1 v2+{-# INLINE getEventFilter #-} -gameControllerGetBindForButton :: GameController -> GameControllerButton -> IO GameControllerButtonBind-gameControllerGetBindForButton gamecontroller button = alloca $ \ptr -> do-	gameControllerGetBindForButton' gamecontroller button ptr-	peek ptr+getNumTouchDevices :: MonadIO m => m CInt+getNumTouchDevices = liftIO getNumTouchDevices'+{-# INLINE getNumTouchDevices #-} -gameControllerMappingForGUID :: JoystickGUID -> IO CString-gameControllerMappingForGUID guid = alloca $ \ptr -> do-	poke ptr guid-	gameControllerMappingForGUID' ptr+getNumTouchFingers :: MonadIO m => TouchID -> m CInt+getNumTouchFingers v1 = liftIO $ getNumTouchFingers' v1+{-# INLINE getNumTouchFingers #-}++getTouchDevice :: MonadIO m => CInt -> m TouchID+getTouchDevice v1 = liftIO $ getTouchDevice' v1+{-# INLINE getTouchDevice #-}++getTouchFinger :: MonadIO m => TouchID -> CInt -> m (Ptr Finger)+getTouchFinger v1 v2 = liftIO $ getTouchFinger' v1 v2+{-# INLINE getTouchFinger #-}++hasEvent :: MonadIO m => Word32 -> m Bool+hasEvent v1 = liftIO $ hasEvent' v1+{-# INLINE hasEvent #-}++hasEvents :: MonadIO m => Word32 -> Word32 -> m Bool+hasEvents v1 v2 = liftIO $ hasEvents' v1 v2+{-# INLINE hasEvents #-}++loadDollarTemplates :: MonadIO m => TouchID -> Ptr RWops -> m CInt+loadDollarTemplates v1 v2 = liftIO $ loadDollarTemplates' v1 v2+{-# INLINE loadDollarTemplates #-}++peepEvents :: MonadIO m => Ptr Event -> CInt -> EventAction -> Word32 -> Word32 -> m CInt+peepEvents v1 v2 v3 v4 v5 = liftIO $ peepEvents' v1 v2 v3 v4 v5+{-# INLINE peepEvents #-}++pollEvent :: MonadIO m => Ptr Event -> m CInt+pollEvent v1 = liftIO $ pollEvent' v1+{-# INLINE pollEvent #-}++pumpEvents :: MonadIO m => m ()+pumpEvents = liftIO pumpEvents'+{-# INLINE pumpEvents #-}++pushEvent :: MonadIO m => Ptr Event -> m CInt+pushEvent v1 = liftIO $ pushEvent' v1+{-# INLINE pushEvent #-}++quitRequested :: MonadIO m => m Bool+quitRequested = liftIO $ do+  pumpEvents+  ev <- peepEvents nullPtr 0 SDL_PEEKEVENT SDL_QUIT SDL_QUIT+  return $ ev > 0+{-# INLINE quitRequested #-}++recordGesture :: MonadIO m => TouchID -> m CInt+recordGesture v1 = liftIO $ recordGesture' v1+{-# INLINE recordGesture #-}++registerEvents :: MonadIO m => CInt -> m Word32+registerEvents v1 = liftIO $ registerEvents' v1+{-# INLINE registerEvents #-}++saveAllDollarTemplates :: MonadIO m => Ptr RWops -> m CInt+saveAllDollarTemplates v1 = liftIO $ saveAllDollarTemplates' v1+{-# INLINE saveAllDollarTemplates #-}++saveDollarTemplate :: MonadIO m => GestureID -> Ptr RWops -> m CInt+saveDollarTemplate v1 v2 = liftIO $ saveDollarTemplate' v1 v2+{-# INLINE saveDollarTemplate #-}++setEventFilter :: MonadIO m => EventFilter -> Ptr () -> m ()+setEventFilter v1 v2 = liftIO $ setEventFilter' v1 v2+{-# INLINE setEventFilter #-}++waitEvent :: MonadIO m => Ptr Event -> m CInt+waitEvent v1 = liftIO $ waitEvent' v1+{-# INLINE waitEvent #-}++waitEventTimeout :: MonadIO m => Ptr Event -> CInt -> m CInt+waitEventTimeout v1 v2 = liftIO $ waitEventTimeout' v1 v2+{-# INLINE waitEventTimeout #-}++getKeyFromName :: MonadIO m => CString -> m Keycode+getKeyFromName v1 = liftIO $ getKeyFromName' v1+{-# INLINE getKeyFromName #-}++getKeyFromScancode :: MonadIO m => Scancode -> m Keycode+getKeyFromScancode v1 = liftIO $ getKeyFromScancode' v1+{-# INLINE getKeyFromScancode #-}++getKeyName :: MonadIO m => Keycode -> m CString+getKeyName v1 = liftIO $ getKeyName' v1+{-# INLINE getKeyName #-}++getKeyboardFocus :: MonadIO m => m Window+getKeyboardFocus = liftIO getKeyboardFocus'+{-# INLINE getKeyboardFocus #-}++getKeyboardState :: MonadIO m => Ptr CInt -> m (Ptr Word8)+getKeyboardState v1 = liftIO $ getKeyboardState' v1+{-# INLINE getKeyboardState #-}++getModState :: MonadIO m => m Keymod+getModState = liftIO getModState'+{-# INLINE getModState #-}++getScancodeFromKey :: MonadIO m => Keycode -> m Scancode+getScancodeFromKey v1 = liftIO $ getScancodeFromKey' v1+{-# INLINE getScancodeFromKey #-}++getScancodeFromName :: MonadIO m => CString -> m Scancode+getScancodeFromName v1 = liftIO $ getScancodeFromName' v1+{-# INLINE getScancodeFromName #-}++getScancodeName :: MonadIO m => Scancode -> m CString+getScancodeName v1 = liftIO $ getScancodeName' v1+{-# INLINE getScancodeName #-}++hasScreenKeyboardSupport :: MonadIO m => m Bool+hasScreenKeyboardSupport = liftIO hasScreenKeyboardSupport'+{-# INLINE hasScreenKeyboardSupport #-}++isScreenKeyboardShown :: MonadIO m => Window -> m Bool+isScreenKeyboardShown v1 = liftIO $ isScreenKeyboardShown' v1+{-# INLINE isScreenKeyboardShown #-}++isTextInputActive :: MonadIO m => m Bool+isTextInputActive = liftIO isTextInputActive'+{-# INLINE isTextInputActive #-}++setModState :: MonadIO m => Keymod -> m ()+setModState v1 = liftIO $ setModState' v1+{-# INLINE setModState #-}++setTextInputRect :: MonadIO m => Ptr Rect -> m ()+setTextInputRect v1 = liftIO $ setTextInputRect' v1+{-# INLINE setTextInputRect #-}++startTextInput :: MonadIO m => m ()+startTextInput = liftIO startTextInput'+{-# INLINE startTextInput #-}++stopTextInput :: MonadIO m => m ()+stopTextInput = liftIO stopTextInput'+{-# INLINE stopTextInput #-}++createColorCursor :: MonadIO m => Ptr Surface -> CInt -> CInt -> m Cursor+createColorCursor v1 v2 v3 = liftIO $ createColorCursor' v1 v2 v3+{-# INLINE createColorCursor #-}++createCursor :: MonadIO m => Ptr Word8 -> Ptr Word8 -> CInt -> CInt -> CInt -> CInt -> m Cursor+createCursor v1 v2 v3 v4 v5 v6 = liftIO $ createCursor' v1 v2 v3 v4 v5 v6+{-# INLINE createCursor #-}++createSystemCursor :: MonadIO m => SystemCursor -> m Cursor+createSystemCursor v1 = liftIO $ createSystemCursor' v1+{-# INLINE createSystemCursor #-}++freeCursor :: MonadIO m => Cursor -> m ()+freeCursor v1 = liftIO $ freeCursor' v1+{-# INLINE freeCursor #-}++getCursor :: MonadIO m => m Cursor+getCursor = liftIO getCursor'+{-# INLINE getCursor #-}++getDefaultCursor :: MonadIO m => m Cursor+getDefaultCursor = liftIO getDefaultCursor'+{-# INLINE getDefaultCursor #-}++getMouseFocus :: MonadIO m => m Window+getMouseFocus = liftIO getMouseFocus'+{-# INLINE getMouseFocus #-}++getMouseState :: MonadIO m => Ptr CInt -> Ptr CInt -> m Word32+getMouseState v1 v2 = liftIO $ getMouseState' v1 v2+{-# INLINE getMouseState #-}++getRelativeMouseMode :: MonadIO m => m Bool+getRelativeMouseMode = liftIO getRelativeMouseMode'+{-# INLINE getRelativeMouseMode #-}++getRelativeMouseState :: MonadIO m => Ptr CInt -> Ptr CInt -> m Word32+getRelativeMouseState v1 v2 = liftIO $ getRelativeMouseState' v1 v2+{-# INLINE getRelativeMouseState #-}++setCursor :: MonadIO m => Cursor -> m ()+setCursor v1 = liftIO $ setCursor' v1+{-# INLINE setCursor #-}++setRelativeMouseMode :: MonadIO m => Bool -> m CInt+setRelativeMouseMode v1 = liftIO $ setRelativeMouseMode' v1+{-# INLINE setRelativeMouseMode #-}++showCursor :: MonadIO m => CInt -> m CInt+showCursor v1 = liftIO $ showCursor' v1+{-# INLINE showCursor #-}++warpMouseInWindow :: MonadIO m => Window -> CInt -> CInt -> m ()+warpMouseInWindow v1 v2 v3 = liftIO $ warpMouseInWindow' v1 v2 v3+{-# INLINE warpMouseInWindow #-}++joystickClose :: MonadIO m => Joystick -> m ()+joystickClose v1 = liftIO $ joystickClose' v1+{-# INLINE joystickClose #-}++joystickEventState :: MonadIO m => CInt -> m CInt+joystickEventState v1 = liftIO $ joystickEventState' v1+{-# INLINE joystickEventState #-}++joystickGetAttached :: MonadIO m => Joystick -> m Bool+joystickGetAttached v1 = liftIO $ joystickGetAttached' v1+{-# INLINE joystickGetAttached #-}++joystickGetAxis :: MonadIO m => Joystick -> CInt -> m Int16+joystickGetAxis v1 v2 = liftIO $ joystickGetAxis' v1 v2+{-# INLINE joystickGetAxis #-}++joystickGetBall :: MonadIO m => Joystick -> CInt -> Ptr CInt -> Ptr CInt -> m CInt+joystickGetBall v1 v2 v3 v4 = liftIO $ joystickGetBall' v1 v2 v3 v4+{-# INLINE joystickGetBall #-}++joystickGetButton :: MonadIO m => Joystick -> CInt -> m Word8+joystickGetButton v1 v2 = liftIO $ joystickGetButton' v1 v2+{-# INLINE joystickGetButton #-}++joystickGetDeviceGUID :: MonadIO m => CInt -> m JoystickGUID+joystickGetDeviceGUID device_index = liftIO . alloca $ \ptr -> do+  joystickGetDeviceGUID' device_index ptr+  peek ptr+{-# INLINE joystickGetDeviceGUID #-}++joystickGetGUID :: MonadIO m => Joystick -> m JoystickGUID+joystickGetGUID joystick = liftIO . alloca $ \ptr -> do+  joystickGetGUID' joystick ptr+  peek ptr+{-# INLINE joystickGetGUID #-}++joystickGetGUIDFromString :: MonadIO m => CString -> m JoystickGUID+joystickGetGUIDFromString pchGUID = liftIO . alloca $ \ptr -> do+  joystickGetGUIDFromString' pchGUID ptr+  peek ptr+{-# INLINE joystickGetGUIDFromString #-}++joystickGetGUIDString :: MonadIO m => JoystickGUID -> CString -> CInt -> m ()+joystickGetGUIDString guid pszGUID cbGUID = liftIO . alloca $ \ptr -> do+  poke ptr guid+  joystickGetGUIDString' ptr pszGUID cbGUID+{-# INLINE joystickGetGUIDString #-}++joystickGetHat :: MonadIO m => Joystick -> CInt -> m Word8+joystickGetHat v1 v2 = liftIO $ joystickGetHat' v1 v2+{-# INLINE joystickGetHat #-}++joystickInstanceID :: MonadIO m => Joystick -> m JoystickID+joystickInstanceID v1 = liftIO $ joystickInstanceID' v1+{-# INLINE joystickInstanceID #-}++joystickName :: MonadIO m => Joystick -> m CString+joystickName v1 = liftIO $ joystickName' v1+{-# INLINE joystickName #-}++joystickNameForIndex :: MonadIO m => CInt -> m CString+joystickNameForIndex v1 = liftIO $ joystickNameForIndex' v1+{-# INLINE joystickNameForIndex #-}++joystickNumAxes :: MonadIO m => Joystick -> m CInt+joystickNumAxes v1 = liftIO $ joystickNumAxes' v1+{-# INLINE joystickNumAxes #-}++joystickNumBalls :: MonadIO m => Joystick -> m CInt+joystickNumBalls v1 = liftIO $ joystickNumBalls' v1+{-# INLINE joystickNumBalls #-}++joystickNumButtons :: MonadIO m => Joystick -> m CInt+joystickNumButtons v1 = liftIO $ joystickNumButtons' v1+{-# INLINE joystickNumButtons #-}++joystickNumHats :: MonadIO m => Joystick -> m CInt+joystickNumHats v1 = liftIO $ joystickNumHats' v1+{-# INLINE joystickNumHats #-}++joystickOpen :: MonadIO m => CInt -> m Joystick+joystickOpen v1 = liftIO $ joystickOpen' v1+{-# INLINE joystickOpen #-}++joystickUpdate :: MonadIO m => m ()+joystickUpdate = liftIO joystickUpdate'+{-# INLINE joystickUpdate #-}++numJoysticks :: MonadIO m => m CInt+numJoysticks = liftIO numJoysticks'+{-# INLINE numJoysticks #-}++gameControllerAddMapping :: MonadIO m => CString -> m CInt+gameControllerAddMapping v1 = liftIO $ gameControllerAddMapping' v1+{-# INLINE gameControllerAddMapping #-}++gameControllerAddMappingsFromFile :: MonadIO m => CString -> m CInt+gameControllerAddMappingsFromFile file = liftIO $ do+  rw <- withCString "rb" $ rwFromFile file+  gameControllerAddMappingsFromRW rw 1+{-# INLINE gameControllerAddMappingsFromFile #-}++gameControllerAddMappingsFromRW :: MonadIO m => Ptr RWops -> CInt -> m CInt+gameControllerAddMappingsFromRW v1 v2 = liftIO $ gameControllerAddMappingsFromRW' v1 v2+{-# INLINE gameControllerAddMappingsFromRW #-}++gameControllerClose :: MonadIO m => GameController -> m ()+gameControllerClose v1 = liftIO $ gameControllerClose' v1+{-# INLINE gameControllerClose #-}++gameControllerEventState :: MonadIO m => CInt -> m CInt+gameControllerEventState v1 = liftIO $ gameControllerEventState' v1+{-# INLINE gameControllerEventState #-}++gameControllerGetAttached :: MonadIO m => GameController -> m Bool+gameControllerGetAttached v1 = liftIO $ gameControllerGetAttached' v1+{-# INLINE gameControllerGetAttached #-}++gameControllerGetAxis :: MonadIO m => GameController -> GameControllerAxis -> m Int16+gameControllerGetAxis v1 v2 = liftIO $ gameControllerGetAxis' v1 v2+{-# INLINE gameControllerGetAxis #-}++gameControllerGetAxisFromString :: MonadIO m => CString -> m GameControllerAxis+gameControllerGetAxisFromString v1 = liftIO $ gameControllerGetAxisFromString' v1+{-# INLINE gameControllerGetAxisFromString #-}++gameControllerGetBindForAxis :: MonadIO m => GameController -> GameControllerAxis -> m GameControllerButtonBind+gameControllerGetBindForAxis gamecontroller axis = liftIO . alloca $ \ptr -> do+  gameControllerGetBindForAxis' gamecontroller axis ptr+  peek ptr+{-# INLINE gameControllerGetBindForAxis #-}++gameControllerGetBindForButton :: MonadIO m => GameController -> GameControllerButton -> m GameControllerButtonBind+gameControllerGetBindForButton gamecontroller button = liftIO . alloca $ \ptr -> do+  gameControllerGetBindForButton' gamecontroller button ptr+  peek ptr+{-# INLINE gameControllerGetBindForButton #-}++gameControllerGetButton :: MonadIO m => GameController -> GameControllerButton -> m Word8+gameControllerGetButton v1 v2 = liftIO $ gameControllerGetButton' v1 v2+{-# INLINE gameControllerGetButton #-}++gameControllerGetButtonFromString :: MonadIO m => CString -> m GameControllerButton+gameControllerGetButtonFromString v1 = liftIO $ gameControllerGetButtonFromString' v1+{-# INLINE gameControllerGetButtonFromString #-}++gameControllerGetJoystick :: MonadIO m => GameController -> m Joystick+gameControllerGetJoystick v1 = liftIO $ gameControllerGetJoystick' v1+{-# INLINE gameControllerGetJoystick #-}++gameControllerGetStringForAxis :: MonadIO m => GameControllerAxis -> m CString+gameControllerGetStringForAxis v1 = liftIO $ gameControllerGetStringForAxis' v1+{-# INLINE gameControllerGetStringForAxis #-}++gameControllerGetStringForButton :: MonadIO m => GameControllerButton -> m CString+gameControllerGetStringForButton v1 = liftIO $ gameControllerGetStringForButton' v1+{-# INLINE gameControllerGetStringForButton #-}++gameControllerMapping :: MonadIO m => GameController -> m CString+gameControllerMapping v1 = liftIO $ gameControllerMapping' v1+{-# INLINE gameControllerMapping #-}++gameControllerMappingForGUID :: MonadIO m => JoystickGUID -> m CString+gameControllerMappingForGUID guid = liftIO . alloca $ \ptr -> do+  poke ptr guid+  gameControllerMappingForGUID' ptr+{-# INLINE gameControllerMappingForGUID #-}++gameControllerName :: MonadIO m => GameController -> m CString+gameControllerName v1 = liftIO $ gameControllerName' v1+{-# INLINE gameControllerName #-}++gameControllerNameForIndex :: MonadIO m => CInt -> m CString+gameControllerNameForIndex v1 = liftIO $ gameControllerNameForIndex' v1+{-# INLINE gameControllerNameForIndex #-}++gameControllerOpen :: MonadIO m => CInt -> m GameController+gameControllerOpen v1 = liftIO $ gameControllerOpen' v1+{-# INLINE gameControllerOpen #-}++gameControllerUpdate :: MonadIO m => m ()+gameControllerUpdate = liftIO gameControllerUpdate'+{-# INLINE gameControllerUpdate #-}++isGameController :: MonadIO m => CInt -> m Bool+isGameController v1 = liftIO $ isGameController' v1+{-# INLINE isGameController #-}
Graphics/UI/SDL/Filesystem.hs view
@@ -1,34 +1,35 @@ module Graphics.UI.SDL.Filesystem (-	-- * Filesystem Paths-	getBasePath,-	getPrefPath,+  -- * Filesystem Paths+  getBasePath,+  getPrefPath, -	-- * File I/O Abstraction-	allocRW,-	freeRW,-	rwFromConstMem,-	rwFromFP,-	rwFromFile,-	rwFromMem,-	rwClose,-	rwRead,-	rwSeek,-	rwTell,-	rwWrite,-	readBE16,-	readBE32,-	readBE64,-	readLE16,-	readLE32,-	readLE64,-	writeBE16,-	writeBE32,-	writeBE64,-	writeLE16,-	writeLE32,-	writeLE64+  -- * File I/O Abstraction+  allocRW,+  freeRW,+  rwFromConstMem,+  rwFromFP,+  rwFromFile,+  rwFromMem,+  rwClose,+  rwRead,+  rwSeek,+  rwTell,+  rwWrite,+  readBE16,+  readBE32,+  readBE64,+  readLE16,+  readLE32,+  readLE64,+  writeBE16,+  writeBE32,+  writeBE64,+  writeLE16,+  writeLE32,+  writeLE64 ) where +import Control.Monad.IO.Class import Data.Int import Data.Word import Foreign.C.String@@ -36,29 +37,129 @@ import Foreign.Ptr import Graphics.UI.SDL.Types -foreign import ccall "SDL.h SDL_GetBasePath" getBasePath :: IO CString-foreign import ccall "SDL.h SDL_GetPrefPath" getPrefPath :: CString -> CString -> IO CString+foreign import ccall "SDL.h SDL_GetBasePath" getBasePath' :: IO CString+foreign import ccall "SDL.h SDL_GetPrefPath" getPrefPath' :: CString -> CString -> IO CString -foreign import ccall "SDL.h SDL_AllocRW" allocRW :: IO (Ptr RWops)-foreign import ccall "SDL.h SDL_FreeRW" freeRW :: Ptr RWops -> IO ()-foreign import ccall "SDL.h SDL_RWFromConstMem" rwFromConstMem :: Ptr () -> CInt -> IO (Ptr RWops)-foreign import ccall "SDL.h SDL_RWFromFP" rwFromFP :: Ptr () -> Bool -> IO (Ptr RWops)-foreign import ccall "SDL.h SDL_RWFromFile" rwFromFile :: CString -> CString -> IO (Ptr RWops)-foreign import ccall "SDL.h SDL_RWFromMem" rwFromMem :: Ptr () -> CInt -> IO (Ptr RWops)-foreign import ccall "sdlhelper.h SDLHelper_RWclose" rwClose :: Ptr RWops -> IO CInt-foreign import ccall "sdlhelper.h SDLHelper_RWread" rwRead :: Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize-foreign import ccall "sdlhelper.h SDLHelper_RWseek" rwSeek :: Ptr RWops -> Int64 -> CInt -> IO Int64-foreign import ccall "sdlhelper.h SDLHelper_RWtell" rwTell :: Ptr RWops -> IO Int64-foreign import ccall "sdlhelper.h SDLHelper_RWwrite" rwWrite :: Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize-foreign import ccall "SDL.h SDL_ReadBE16" readBE16 :: Ptr RWops -> IO Word16-foreign import ccall "SDL.h SDL_ReadBE32" readBE32 :: Ptr RWops -> IO Word32-foreign import ccall "SDL.h SDL_ReadBE64" readBE64 :: Ptr RWops -> IO Word64-foreign import ccall "SDL.h SDL_ReadLE16" readLE16 :: Ptr RWops -> IO Word16-foreign import ccall "SDL.h SDL_ReadLE32" readLE32 :: Ptr RWops -> IO Word32-foreign import ccall "SDL.h SDL_ReadLE64" readLE64 :: Ptr RWops -> IO Word64-foreign import ccall "SDL.h SDL_WriteBE16" writeBE16 :: Ptr RWops -> Word16 -> IO CSize-foreign import ccall "SDL.h SDL_WriteBE32" writeBE32 :: Ptr RWops -> Word32 -> IO CSize-foreign import ccall "SDL.h SDL_WriteBE64" writeBE64 :: Ptr RWops -> Word64 -> IO CSize-foreign import ccall "SDL.h SDL_WriteLE16" writeLE16 :: Ptr RWops -> Word16 -> IO CSize-foreign import ccall "SDL.h SDL_WriteLE32" writeLE32 :: Ptr RWops -> Word32 -> IO CSize-foreign import ccall "SDL.h SDL_WriteLE64" writeLE64 :: Ptr RWops -> Word64 -> IO CSize+foreign import ccall "SDL.h SDL_AllocRW" allocRW' :: IO (Ptr RWops)+foreign import ccall "SDL.h SDL_FreeRW" freeRW' :: Ptr RWops -> IO ()+foreign import ccall "SDL.h SDL_RWFromConstMem" rwFromConstMem' :: Ptr () -> CInt -> IO (Ptr RWops)+foreign import ccall "SDL.h SDL_RWFromFP" rwFromFP' :: Ptr () -> Bool -> IO (Ptr RWops)+foreign import ccall "SDL.h SDL_RWFromFile" rwFromFile' :: CString -> CString -> IO (Ptr RWops)+foreign import ccall "SDL.h SDL_RWFromMem" rwFromMem' :: Ptr () -> CInt -> IO (Ptr RWops)+foreign import ccall "sdlhelper.h SDLHelper_RWclose" rwClose' :: Ptr RWops -> IO CInt+foreign import ccall "sdlhelper.h SDLHelper_RWread" rwRead' :: Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize+foreign import ccall "sdlhelper.h SDLHelper_RWseek" rwSeek' :: Ptr RWops -> Int64 -> CInt -> IO Int64+foreign import ccall "sdlhelper.h SDLHelper_RWtell" rwTell' :: Ptr RWops -> IO Int64+foreign import ccall "sdlhelper.h SDLHelper_RWwrite" rwWrite' :: Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize+foreign import ccall "SDL.h SDL_ReadBE16" readBE16' :: Ptr RWops -> IO Word16+foreign import ccall "SDL.h SDL_ReadBE32" readBE32' :: Ptr RWops -> IO Word32+foreign import ccall "SDL.h SDL_ReadBE64" readBE64' :: Ptr RWops -> IO Word64+foreign import ccall "SDL.h SDL_ReadLE16" readLE16' :: Ptr RWops -> IO Word16+foreign import ccall "SDL.h SDL_ReadLE32" readLE32' :: Ptr RWops -> IO Word32+foreign import ccall "SDL.h SDL_ReadLE64" readLE64' :: Ptr RWops -> IO Word64+foreign import ccall "SDL.h SDL_WriteBE16" writeBE16' :: Ptr RWops -> Word16 -> IO CSize+foreign import ccall "SDL.h SDL_WriteBE32" writeBE32' :: Ptr RWops -> Word32 -> IO CSize+foreign import ccall "SDL.h SDL_WriteBE64" writeBE64' :: Ptr RWops -> Word64 -> IO CSize+foreign import ccall "SDL.h SDL_WriteLE16" writeLE16' :: Ptr RWops -> Word16 -> IO CSize+foreign import ccall "SDL.h SDL_WriteLE32" writeLE32' :: Ptr RWops -> Word32 -> IO CSize+foreign import ccall "SDL.h SDL_WriteLE64" writeLE64' :: Ptr RWops -> Word64 -> IO CSize++getBasePath :: MonadIO m => m CString+getBasePath = liftIO getBasePath'+{-# INLINE getBasePath #-}++getPrefPath :: MonadIO m => CString -> CString -> m CString+getPrefPath v1 v2 = liftIO $ getPrefPath' v1 v2+{-# INLINE getPrefPath #-}++allocRW :: MonadIO m => m (Ptr RWops)+allocRW = liftIO allocRW'+{-# INLINE allocRW #-}++freeRW :: MonadIO m => Ptr RWops -> m ()+freeRW v1 = liftIO $ freeRW' v1+{-# INLINE freeRW #-}++rwFromConstMem :: MonadIO m => Ptr () -> CInt -> m (Ptr RWops)+rwFromConstMem v1 v2 = liftIO $ rwFromConstMem' v1 v2+{-# INLINE rwFromConstMem #-}++rwFromFP :: MonadIO m => Ptr () -> Bool -> m (Ptr RWops)+rwFromFP v1 v2 = liftIO $ rwFromFP' v1 v2+{-# INLINE rwFromFP #-}++rwFromFile :: MonadIO m => CString -> CString -> m (Ptr RWops)+rwFromFile v1 v2 = liftIO $ rwFromFile' v1 v2+{-# INLINE rwFromFile #-}++rwFromMem :: MonadIO m => Ptr () -> CInt -> m (Ptr RWops)+rwFromMem v1 v2 = liftIO $ rwFromMem' v1 v2+{-# INLINE rwFromMem #-}++rwClose :: MonadIO m => Ptr RWops -> m CInt+rwClose v1 = liftIO $ rwClose' v1+{-# INLINE rwClose #-}++rwRead :: MonadIO m => Ptr RWops -> Ptr () -> CSize -> CSize -> m CSize+rwRead v1 v2 v3 v4 = liftIO $ rwRead' v1 v2 v3 v4+{-# INLINE rwRead #-}++rwSeek :: MonadIO m => Ptr RWops -> Int64 -> CInt -> m Int64+rwSeek v1 v2 v3 = liftIO $ rwSeek' v1 v2 v3+{-# INLINE rwSeek #-}++rwTell :: MonadIO m => Ptr RWops -> m Int64+rwTell v1 = liftIO $ rwTell' v1+{-# INLINE rwTell #-}++rwWrite :: MonadIO m => Ptr RWops -> Ptr () -> CSize -> CSize -> m CSize+rwWrite v1 v2 v3 v4 = liftIO $ rwWrite' v1 v2 v3 v4+{-# INLINE rwWrite #-}++readBE16 :: MonadIO m => Ptr RWops -> m Word16+readBE16 v1 = liftIO $ readBE16' v1+{-# INLINE readBE16 #-}++readBE32 :: MonadIO m => Ptr RWops -> m Word32+readBE32 v1 = liftIO $ readBE32' v1+{-# INLINE readBE32 #-}++readBE64 :: MonadIO m => Ptr RWops -> m Word64+readBE64 v1 = liftIO $ readBE64' v1+{-# INLINE readBE64 #-}++readLE16 :: MonadIO m => Ptr RWops -> m Word16+readLE16 v1 = liftIO $ readLE16' v1+{-# INLINE readLE16 #-}++readLE32 :: MonadIO m => Ptr RWops -> m Word32+readLE32 v1 = liftIO $ readLE32' v1+{-# INLINE readLE32 #-}++readLE64 :: MonadIO m => Ptr RWops -> m Word64+readLE64 v1 = liftIO $ readLE64' v1+{-# INLINE readLE64 #-}++writeBE16 :: MonadIO m => Ptr RWops -> Word16 -> m CSize+writeBE16 v1 v2 = liftIO $ writeBE16' v1 v2+{-# INLINE writeBE16 #-}++writeBE32 :: MonadIO m => Ptr RWops -> Word32 -> m CSize+writeBE32 v1 v2 = liftIO $ writeBE32' v1 v2+{-# INLINE writeBE32 #-}++writeBE64 :: MonadIO m => Ptr RWops -> Word64 -> m CSize+writeBE64 v1 v2 = liftIO $ writeBE64' v1 v2+{-# INLINE writeBE64 #-}++writeLE16 :: MonadIO m => Ptr RWops -> Word16 -> m CSize+writeLE16 v1 v2 = liftIO $ writeLE16' v1 v2+{-# INLINE writeLE16 #-}++writeLE32 :: MonadIO m => Ptr RWops -> Word32 -> m CSize+writeLE32 v1 v2 = liftIO $ writeLE32' v1 v2+{-# INLINE writeLE32 #-}++writeLE64 :: MonadIO m => Ptr RWops -> Word64 -> m CSize+writeLE64 v1 v2 = liftIO $ writeLE64' v1 v2+{-# INLINE writeLE64 #-}
Graphics/UI/SDL/Haptic.hs view
@@ -1,70 +1,191 @@ module Graphics.UI.SDL.Haptic (-	-- * Force Feedback Support-	hapticClose,-	hapticDestroyEffect,-	hapticEffectSupported,-	hapticGetEffectStatus,-	hapticIndex,-	hapticName,-	hapticNewEffect,-	hapticNumAxes,-	hapticNumEffects,-	hapticNumEffectsPlaying,-	hapticOpen,-	hapticOpenFromJoystick,-	hapticOpenFromMouse,-	hapticOpened,-	hapticPause,-	hapticQuery,-	hapticRumbleInit,-	hapticRumblePlay,-	hapticRumbleStop,-	hapticRumbleSupported,-	hapticRunEffect,-	hapticSetAutocenter,-	hapticSetGain,-	hapticStopAll,-	hapticStopEffect,-	hapticUnpause,-	hapticUpdateEffect,-	joystickIsHaptic,-	mouseIsHaptic,-	numHaptics+  -- * Force Feedback Support+  hapticClose,+  hapticDestroyEffect,+  hapticEffectSupported,+  hapticGetEffectStatus,+  hapticIndex,+  hapticName,+  hapticNewEffect,+  hapticNumAxes,+  hapticNumEffects,+  hapticNumEffectsPlaying,+  hapticOpen,+  hapticOpenFromJoystick,+  hapticOpenFromMouse,+  hapticOpened,+  hapticPause,+  hapticQuery,+  hapticRumbleInit,+  hapticRumblePlay,+  hapticRumbleStop,+  hapticRumbleSupported,+  hapticRunEffect,+  hapticSetAutocenter,+  hapticSetGain,+  hapticStopAll,+  hapticStopEffect,+  hapticUnpause,+  hapticUpdateEffect,+  joystickIsHaptic,+  mouseIsHaptic,+  numHaptics ) where +import Control.Monad.IO.Class import Data.Word import Foreign.C.String import Foreign.C.Types import Foreign.Ptr import Graphics.UI.SDL.Types -foreign import ccall "SDL.h SDL_HapticClose" hapticClose :: Haptic -> IO ()-foreign import ccall "SDL.h SDL_HapticDestroyEffect" hapticDestroyEffect :: Haptic -> CInt -> IO ()-foreign import ccall "SDL.h SDL_HapticEffectSupported" hapticEffectSupported :: Haptic -> Ptr HapticEffect -> IO CInt-foreign import ccall "SDL.h SDL_HapticGetEffectStatus" hapticGetEffectStatus :: Haptic -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_HapticIndex" hapticIndex :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticName" hapticName :: CInt -> IO CString-foreign import ccall "SDL.h SDL_HapticNewEffect" hapticNewEffect :: Haptic -> Ptr HapticEffect -> IO CInt-foreign import ccall "SDL.h SDL_HapticNumAxes" hapticNumAxes :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticNumEffects" hapticNumEffects :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticNumEffectsPlaying" hapticNumEffectsPlaying :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticOpen" hapticOpen :: CInt -> IO Haptic-foreign import ccall "SDL.h SDL_HapticOpenFromJoystick" hapticOpenFromJoystick :: Joystick -> IO Haptic-foreign import ccall "SDL.h SDL_HapticOpenFromMouse" hapticOpenFromMouse :: IO Haptic-foreign import ccall "SDL.h SDL_HapticOpened" hapticOpened :: CInt -> IO CInt-foreign import ccall "SDL.h SDL_HapticPause" hapticPause :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticQuery" hapticQuery :: Haptic -> IO CUInt-foreign import ccall "SDL.h SDL_HapticRumbleInit" hapticRumbleInit :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticRumblePlay" hapticRumblePlay :: Haptic -> CFloat -> Word32 -> IO CInt-foreign import ccall "SDL.h SDL_HapticRumbleStop" hapticRumbleStop :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticRumbleSupported" hapticRumbleSupported :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticRunEffect" hapticRunEffect :: Haptic -> CInt -> Word32 -> IO CInt-foreign import ccall "SDL.h SDL_HapticSetAutocenter" hapticSetAutocenter :: Haptic -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_HapticSetGain" hapticSetGain :: Haptic -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_HapticStopAll" hapticStopAll :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticStopEffect" hapticStopEffect :: Haptic -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_HapticUnpause" hapticUnpause :: Haptic -> IO CInt-foreign import ccall "SDL.h SDL_HapticUpdateEffect" hapticUpdateEffect :: Haptic -> CInt -> Ptr HapticEffect -> IO CInt-foreign import ccall "SDL.h SDL_JoystickIsHaptic" joystickIsHaptic :: Joystick -> IO CInt-foreign import ccall "SDL.h SDL_MouseIsHaptic" mouseIsHaptic :: IO CInt-foreign import ccall "SDL.h SDL_NumHaptics" numHaptics :: IO CInt+foreign import ccall "SDL.h SDL_HapticClose" hapticClose' :: Haptic -> IO ()+foreign import ccall "SDL.h SDL_HapticDestroyEffect" hapticDestroyEffect' :: Haptic -> CInt -> IO ()+foreign import ccall "SDL.h SDL_HapticEffectSupported" hapticEffectSupported' :: Haptic -> Ptr HapticEffect -> IO CInt+foreign import ccall "SDL.h SDL_HapticGetEffectStatus" hapticGetEffectStatus' :: Haptic -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_HapticIndex" hapticIndex' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticName" hapticName' :: CInt -> IO CString+foreign import ccall "SDL.h SDL_HapticNewEffect" hapticNewEffect' :: Haptic -> Ptr HapticEffect -> IO CInt+foreign import ccall "SDL.h SDL_HapticNumAxes" hapticNumAxes' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticNumEffects" hapticNumEffects' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticNumEffectsPlaying" hapticNumEffectsPlaying' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticOpen" hapticOpen' :: CInt -> IO Haptic+foreign import ccall "SDL.h SDL_HapticOpenFromJoystick" hapticOpenFromJoystick' :: Joystick -> IO Haptic+foreign import ccall "SDL.h SDL_HapticOpenFromMouse" hapticOpenFromMouse' :: IO Haptic+foreign import ccall "SDL.h SDL_HapticOpened" hapticOpened' :: CInt -> IO CInt+foreign import ccall "SDL.h SDL_HapticPause" hapticPause' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticQuery" hapticQuery' :: Haptic -> IO CUInt+foreign import ccall "SDL.h SDL_HapticRumbleInit" hapticRumbleInit' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticRumblePlay" hapticRumblePlay' :: Haptic -> CFloat -> Word32 -> IO CInt+foreign import ccall "SDL.h SDL_HapticRumbleStop" hapticRumbleStop' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticRumbleSupported" hapticRumbleSupported' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticRunEffect" hapticRunEffect' :: Haptic -> CInt -> Word32 -> IO CInt+foreign import ccall "SDL.h SDL_HapticSetAutocenter" hapticSetAutocenter' :: Haptic -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_HapticSetGain" hapticSetGain' :: Haptic -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_HapticStopAll" hapticStopAll' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticStopEffect" hapticStopEffect' :: Haptic -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_HapticUnpause" hapticUnpause' :: Haptic -> IO CInt+foreign import ccall "SDL.h SDL_HapticUpdateEffect" hapticUpdateEffect' :: Haptic -> CInt -> Ptr HapticEffect -> IO CInt+foreign import ccall "SDL.h SDL_JoystickIsHaptic" joystickIsHaptic' :: Joystick -> IO CInt+foreign import ccall "SDL.h SDL_MouseIsHaptic" mouseIsHaptic' :: IO CInt+foreign import ccall "SDL.h SDL_NumHaptics" numHaptics' :: IO CInt++hapticClose :: MonadIO m => Haptic -> m ()+hapticClose v1 = liftIO $ hapticClose' v1+{-# INLINE hapticClose #-}++hapticDestroyEffect :: MonadIO m => Haptic -> CInt -> m ()+hapticDestroyEffect v1 v2 = liftIO $ hapticDestroyEffect' v1 v2+{-# INLINE hapticDestroyEffect #-}++hapticEffectSupported :: MonadIO m => Haptic -> Ptr HapticEffect -> m CInt+hapticEffectSupported v1 v2 = liftIO $ hapticEffectSupported' v1 v2+{-# INLINE hapticEffectSupported #-}++hapticGetEffectStatus :: MonadIO m => Haptic -> CInt -> m CInt+hapticGetEffectStatus v1 v2 = liftIO $ hapticGetEffectStatus' v1 v2+{-# INLINE hapticGetEffectStatus #-}++hapticIndex :: MonadIO m => Haptic -> m CInt+hapticIndex v1 = liftIO $ hapticIndex' v1+{-# INLINE hapticIndex #-}++hapticName :: MonadIO m => CInt -> m CString+hapticName v1 = liftIO $ hapticName' v1+{-# INLINE hapticName #-}++hapticNewEffect :: MonadIO m => Haptic -> Ptr HapticEffect -> m CInt+hapticNewEffect v1 v2 = liftIO $ hapticNewEffect' v1 v2+{-# INLINE hapticNewEffect #-}++hapticNumAxes :: MonadIO m => Haptic -> m CInt+hapticNumAxes v1 = liftIO $ hapticNumAxes' v1+{-# INLINE hapticNumAxes #-}++hapticNumEffects :: MonadIO m => Haptic -> m CInt+hapticNumEffects v1 = liftIO $ hapticNumEffects' v1+{-# INLINE hapticNumEffects #-}++hapticNumEffectsPlaying :: MonadIO m => Haptic -> m CInt+hapticNumEffectsPlaying v1 = liftIO $ hapticNumEffectsPlaying' v1+{-# INLINE hapticNumEffectsPlaying #-}++hapticOpen :: MonadIO m => CInt -> m Haptic+hapticOpen v1 = liftIO $ hapticOpen' v1+{-# INLINE hapticOpen #-}++hapticOpenFromJoystick :: MonadIO m => Joystick -> m Haptic+hapticOpenFromJoystick v1 = liftIO $ hapticOpenFromJoystick' v1+{-# INLINE hapticOpenFromJoystick #-}++hapticOpenFromMouse :: MonadIO m => m Haptic+hapticOpenFromMouse = liftIO hapticOpenFromMouse'+{-# INLINE hapticOpenFromMouse #-}++hapticOpened :: MonadIO m => CInt -> m CInt+hapticOpened v1 = liftIO $ hapticOpened' v1+{-# INLINE hapticOpened #-}++hapticPause :: MonadIO m => Haptic -> m CInt+hapticPause v1 = liftIO $ hapticPause' v1+{-# INLINE hapticPause #-}++hapticQuery :: MonadIO m => Haptic -> m CUInt+hapticQuery v1 = liftIO $ hapticQuery' v1+{-# INLINE hapticQuery #-}++hapticRumbleInit :: MonadIO m => Haptic -> m CInt+hapticRumbleInit v1 = liftIO $ hapticRumbleInit' v1+{-# INLINE hapticRumbleInit #-}++hapticRumblePlay :: MonadIO m => Haptic -> CFloat -> Word32 -> m CInt+hapticRumblePlay v1 v2 v3 = liftIO $ hapticRumblePlay' v1 v2 v3+{-# INLINE hapticRumblePlay #-}++hapticRumbleStop :: MonadIO m => Haptic -> m CInt+hapticRumbleStop v1 = liftIO $ hapticRumbleStop' v1+{-# INLINE hapticRumbleStop #-}++hapticRumbleSupported :: MonadIO m => Haptic -> m CInt+hapticRumbleSupported v1 = liftIO $ hapticRumbleSupported' v1+{-# INLINE hapticRumbleSupported #-}++hapticRunEffect :: MonadIO m => Haptic -> CInt -> Word32 -> m CInt+hapticRunEffect v1 v2 v3 = liftIO $ hapticRunEffect' v1 v2 v3+{-# INLINE hapticRunEffect #-}++hapticSetAutocenter :: MonadIO m => Haptic -> CInt -> m CInt+hapticSetAutocenter v1 v2 = liftIO $ hapticSetAutocenter' v1 v2+{-# INLINE hapticSetAutocenter #-}++hapticSetGain :: MonadIO m => Haptic -> CInt -> m CInt+hapticSetGain v1 v2 = liftIO $ hapticSetGain' v1 v2+{-# INLINE hapticSetGain #-}++hapticStopAll :: MonadIO m => Haptic -> m CInt+hapticStopAll v1 = liftIO $ hapticStopAll' v1+{-# INLINE hapticStopAll #-}++hapticStopEffect :: MonadIO m => Haptic -> CInt -> m CInt+hapticStopEffect v1 v2 = liftIO $ hapticStopEffect' v1 v2+{-# INLINE hapticStopEffect #-}++hapticUnpause :: MonadIO m => Haptic -> m CInt+hapticUnpause v1 = liftIO $ hapticUnpause' v1+{-# INLINE hapticUnpause #-}++hapticUpdateEffect :: MonadIO m => Haptic -> CInt -> Ptr HapticEffect -> m CInt+hapticUpdateEffect v1 v2 v3 = liftIO $ hapticUpdateEffect' v1 v2 v3+{-# INLINE hapticUpdateEffect #-}++joystickIsHaptic :: MonadIO m => Joystick -> m CInt+joystickIsHaptic v1 = liftIO $ joystickIsHaptic' v1+{-# INLINE joystickIsHaptic #-}++mouseIsHaptic :: MonadIO m => m CInt+mouseIsHaptic = liftIO mouseIsHaptic'+{-# INLINE mouseIsHaptic #-}++numHaptics :: MonadIO m => m CInt+numHaptics = liftIO numHaptics'+{-# INLINE numHaptics #-}
Graphics/UI/SDL/Platform.hs view
@@ -1,8 +1,13 @@ module Graphics.UI.SDL.Platform (-	-- * Platform Detection-	getPlatform+  -- * Platform Detection+  getPlatform ) where +import Control.Monad.IO.Class import Foreign.C.String -foreign import ccall "SDL.h SDL_GetPlatform" getPlatform :: IO CString+foreign import ccall "SDL.h SDL_GetPlatform" getPlatform' :: IO CString++getPlatform :: MonadIO m => m CString+getPlatform = liftIO getPlatform'+{-# INLINE getPlatform #-}
Graphics/UI/SDL/Power.hs view
@@ -1,10 +1,15 @@ module Graphics.UI.SDL.Power (-	-- * Power Management Status-	getPowerInfo+  -- * Power Management Status+  getPowerInfo ) where +import Control.Monad.IO.Class import Foreign.C.Types import Foreign.Ptr import Graphics.UI.SDL.Enum -foreign import ccall "SDL.h SDL_GetPowerInfo" getPowerInfo :: Ptr CInt -> Ptr CInt -> IO PowerState+foreign import ccall "SDL.h SDL_GetPowerInfo" getPowerInfo' :: Ptr CInt -> Ptr CInt -> IO PowerState++getPowerInfo :: MonadIO m => Ptr CInt -> Ptr CInt -> m PowerState+getPowerInfo v1 v2 = liftIO $ getPowerInfo' v1 v2+{-# INLINE getPowerInfo #-}
Graphics/UI/SDL/Thread.hs view
@@ -1,51 +1,52 @@ module Graphics.UI.SDL.Thread (-	-- * Thread Management-	createThread,-	detachThread,-	getThreadID,-	getThreadName,-	setThreadPriority,-	tlsCreate,-	tlsGet,-	tlsSet,-	threadID,-	waitThread,+  -- * Thread Management+  createThread,+  detachThread,+  getThreadID,+  getThreadName,+  setThreadPriority,+  tlsCreate,+  tlsGet,+  tlsSet,+  threadID,+  waitThread, -	-- * Thread Synchronization Primitives-	condBroadcast,-	condSignal,-	condWait,-	condWaitTimeout,-	createCond,-	createMutex,-	createSemaphore,-	destroyCond,-	destroyMutex,-	destroySemaphore,-	lockMutex,-	semPost,-	semTryWait,-	semValue,-	semWait,-	semWaitTimeout,-	tryLockMutex,-	unlockMutex,+  -- * Thread Synchronization Primitives+  condBroadcast,+  condSignal,+  condWait,+  condWaitTimeout,+  createCond,+  createMutex,+  createSemaphore,+  destroyCond,+  destroyMutex,+  destroySemaphore,+  lockMutex,+  semPost,+  semTryWait,+  semValue,+  semWait,+  semWaitTimeout,+  tryLockMutex,+  unlockMutex, -	-- * Atomic Operations-	atomicAdd,-	atomicCAS,-	atomicCASPtr,-	atomicDecRef,-	atomicGet,-	atomicGetPtr,-	atomicIncRef,-	atomicLock,-	atomicSet,-	atomicSetPtr,-	atomicTryLock,-	atomicUnlock+  -- * Atomic Operations+  atomicAdd,+  atomicCAS,+  atomicCASPtr,+  atomicDecRef,+  atomicGet,+  atomicGetPtr,+  atomicIncRef,+  atomicLock,+  atomicSet,+  atomicSetPtr,+  atomicTryLock,+  atomicUnlock ) where +import Control.Monad.IO.Class import Data.Word import Foreign.C.String import Foreign.C.Types@@ -53,51 +54,205 @@ import Graphics.UI.SDL.Enum import Graphics.UI.SDL.Types -foreign import ccall "SDL.h SDL_CreateThread" createThread :: ThreadFunction -> CString -> IO (Ptr ())-foreign import ccall "SDL.h SDL_DetachThread" detachThread :: Ptr Thread -> IO ()-foreign import ccall "SDL.h SDL_GetThreadID" getThreadID :: Ptr Thread -> IO ThreadID-foreign import ccall "SDL.h SDL_GetThreadName" getThreadName :: Ptr Thread -> IO CString-foreign import ccall "SDL.h SDL_SetThreadPriority" setThreadPriority :: ThreadPriority -> IO CInt-foreign import ccall "SDL.h SDL_TLSCreate" tlsCreate :: IO TLSID-foreign import ccall "SDL.h SDL_TLSGet" tlsGet :: TLSID -> IO (Ptr ())-foreign import ccall "SDL.h SDL_TLSSet" tlsSet :: TLSID -> Ptr () -> FunPtr (Ptr () -> IO ()) -> IO CInt-foreign import ccall "SDL.h SDL_ThreadID" threadID :: IO ThreadID-foreign import ccall "SDL.h SDL_WaitThread" waitThread :: Ptr Thread -> Ptr CInt -> IO ()+foreign import ccall "SDL.h SDL_CreateThread" createThread' :: ThreadFunction -> CString -> IO (Ptr ())+foreign import ccall "SDL.h SDL_DetachThread" detachThread' :: Ptr Thread -> IO ()+foreign import ccall "SDL.h SDL_GetThreadID" getThreadID' :: Ptr Thread -> IO ThreadID+foreign import ccall "SDL.h SDL_GetThreadName" getThreadName' :: Ptr Thread -> IO CString+foreign import ccall "SDL.h SDL_SetThreadPriority" setThreadPriority' :: ThreadPriority -> IO CInt+foreign import ccall "SDL.h SDL_TLSCreate" tlsCreate' :: IO TLSID+foreign import ccall "SDL.h SDL_TLSGet" tlsGet' :: TLSID -> IO (Ptr ())+foreign import ccall "SDL.h SDL_TLSSet" tlsSet' :: TLSID -> Ptr () -> FunPtr (Ptr () -> IO ()) -> IO CInt+foreign import ccall "SDL.h SDL_ThreadID" threadID' :: IO ThreadID+foreign import ccall "SDL.h SDL_WaitThread" waitThread' :: Ptr Thread -> Ptr CInt -> IO () -foreign import ccall "SDL.h SDL_CondBroadcast" condBroadcast :: Ptr Cond -> IO CInt-foreign import ccall "SDL.h SDL_CondSignal" condSignal :: Ptr Cond -> IO CInt-foreign import ccall "SDL.h SDL_CondWait" condWait :: Ptr Cond -> Ptr Mutex -> IO CInt-foreign import ccall "SDL.h SDL_CondWaitTimeout" condWaitTimeout :: Ptr Cond -> Ptr Mutex -> Word32 -> IO CInt-foreign import ccall "SDL.h SDL_CreateCond" createCond :: IO (Ptr Cond)-foreign import ccall "SDL.h SDL_CreateMutex" createMutex :: IO (Ptr Mutex)-foreign import ccall "SDL.h SDL_CreateSemaphore" createSemaphore :: Word32 -> IO (Ptr Sem)-foreign import ccall "SDL.h SDL_DestroyCond" destroyCond :: Ptr Cond -> IO ()-foreign import ccall "SDL.h SDL_DestroyMutex" destroyMutex :: Ptr Mutex -> IO ()-foreign import ccall "SDL.h SDL_DestroySemaphore" destroySemaphore :: Ptr Sem -> IO ()-foreign import ccall "SDL.h SDL_LockMutex" lockMutex :: Ptr Mutex -> IO CInt-foreign import ccall "SDL.h SDL_SemPost" semPost :: Ptr Sem -> IO CInt-foreign import ccall "SDL.h SDL_SemTryWait" semTryWait :: Ptr Sem -> IO CInt-foreign import ccall "SDL.h SDL_SemValue" semValue :: Ptr Sem -> IO Word32-foreign import ccall "SDL.h SDL_SemWait" semWait :: Ptr Sem -> IO CInt-foreign import ccall "SDL.h SDL_SemWaitTimeout" semWaitTimeout :: Ptr Sem -> Word32 -> IO CInt-foreign import ccall "SDL.h SDL_TryLockMutex" tryLockMutex :: Ptr Mutex -> IO CInt-foreign import ccall "SDL.h SDL_UnlockMutex" unlockMutex :: Ptr Mutex -> IO CInt+foreign import ccall "SDL.h SDL_CondBroadcast" condBroadcast' :: Ptr Cond -> IO CInt+foreign import ccall "SDL.h SDL_CondSignal" condSignal' :: Ptr Cond -> IO CInt+foreign import ccall "SDL.h SDL_CondWait" condWait' :: Ptr Cond -> Ptr Mutex -> IO CInt+foreign import ccall "SDL.h SDL_CondWaitTimeout" condWaitTimeout' :: Ptr Cond -> Ptr Mutex -> Word32 -> IO CInt+foreign import ccall "SDL.h SDL_CreateCond" createCond' :: IO (Ptr Cond)+foreign import ccall "SDL.h SDL_CreateMutex" createMutex' :: IO (Ptr Mutex)+foreign import ccall "SDL.h SDL_CreateSemaphore" createSemaphore' :: Word32 -> IO (Ptr Sem)+foreign import ccall "SDL.h SDL_DestroyCond" destroyCond' :: Ptr Cond -> IO ()+foreign import ccall "SDL.h SDL_DestroyMutex" destroyMutex' :: Ptr Mutex -> IO ()+foreign import ccall "SDL.h SDL_DestroySemaphore" destroySemaphore' :: Ptr Sem -> IO ()+foreign import ccall "SDL.h SDL_LockMutex" lockMutex' :: Ptr Mutex -> IO CInt+foreign import ccall "SDL.h SDL_SemPost" semPost' :: Ptr Sem -> IO CInt+foreign import ccall "SDL.h SDL_SemTryWait" semTryWait' :: Ptr Sem -> IO CInt+foreign import ccall "SDL.h SDL_SemValue" semValue' :: Ptr Sem -> IO Word32+foreign import ccall "SDL.h SDL_SemWait" semWait' :: Ptr Sem -> IO CInt+foreign import ccall "SDL.h SDL_SemWaitTimeout" semWaitTimeout' :: Ptr Sem -> Word32 -> IO CInt+foreign import ccall "SDL.h SDL_TryLockMutex" tryLockMutex' :: Ptr Mutex -> IO CInt+foreign import ccall "SDL.h SDL_UnlockMutex" unlockMutex' :: Ptr Mutex -> IO CInt -foreign import ccall "SDL.h SDL_AtomicAdd" atomicAdd :: Ptr Atomic -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_AtomicCAS" atomicCAS :: Ptr Atomic -> CInt -> CInt -> IO Bool-foreign import ccall "SDL.h SDL_AtomicCASPtr" atomicCASPtr :: Ptr (Ptr ()) -> Ptr () -> Ptr () -> IO Bool-foreign import ccall "SDL.h SDL_AtomicGet" atomicGet :: Ptr Atomic -> IO CInt-foreign import ccall "SDL.h SDL_AtomicGetPtr" atomicGetPtr :: Ptr (Ptr ()) -> IO (Ptr ())-foreign import ccall "SDL.h SDL_AtomicLock" atomicLock :: Ptr SpinLock -> IO ()-foreign import ccall "SDL.h SDL_AtomicSet" atomicSet :: Ptr Atomic -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_AtomicSetPtr" atomicSetPtr :: Ptr (Ptr ()) -> Ptr () -> IO (Ptr ())-foreign import ccall "SDL.h SDL_AtomicTryLock" atomicTryLock :: Ptr SpinLock -> IO Bool-foreign import ccall "SDL.h SDL_AtomicUnlock" atomicUnlock :: Ptr SpinLock -> IO ()+foreign import ccall "SDL.h SDL_AtomicAdd" atomicAdd' :: Ptr Atomic -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_AtomicCAS" atomicCAS' :: Ptr Atomic -> CInt -> CInt -> IO Bool+foreign import ccall "SDL.h SDL_AtomicCASPtr" atomicCASPtr' :: Ptr (Ptr ()) -> Ptr () -> Ptr () -> IO Bool+foreign import ccall "SDL.h SDL_AtomicGet" atomicGet' :: Ptr Atomic -> IO CInt+foreign import ccall "SDL.h SDL_AtomicGetPtr" atomicGetPtr' :: Ptr (Ptr ()) -> IO (Ptr ())+foreign import ccall "SDL.h SDL_AtomicLock" atomicLock' :: Ptr SpinLock -> IO ()+foreign import ccall "SDL.h SDL_AtomicSet" atomicSet' :: Ptr Atomic -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_AtomicSetPtr" atomicSetPtr' :: Ptr (Ptr ()) -> Ptr () -> IO (Ptr ())+foreign import ccall "SDL.h SDL_AtomicTryLock" atomicTryLock' :: Ptr SpinLock -> IO Bool+foreign import ccall "SDL.h SDL_AtomicUnlock" atomicUnlock' :: Ptr SpinLock -> IO () +createThread :: MonadIO m => ThreadFunction -> CString -> m (Ptr ())+createThread v1 v2 = liftIO $ createThread' v1 v2+{-# INLINE createThread #-}++detachThread :: MonadIO m => Ptr Thread -> m ()+detachThread v1 = liftIO $ detachThread' v1+{-# INLINE detachThread #-}++getThreadID :: MonadIO m => Ptr Thread -> m ThreadID+getThreadID v1 = liftIO $ getThreadID' v1+{-# INLINE getThreadID #-}++getThreadName :: MonadIO m => Ptr Thread -> m CString+getThreadName v1 = liftIO $ getThreadName' v1+{-# INLINE getThreadName #-}++setThreadPriority :: MonadIO m => ThreadPriority -> m CInt+setThreadPriority v1 = liftIO $ setThreadPriority' v1+{-# INLINE setThreadPriority #-}++tlsCreate :: MonadIO m => m TLSID+tlsCreate = liftIO tlsCreate'+{-# INLINE tlsCreate #-}++tlsGet :: MonadIO m => TLSID -> m (Ptr ())+tlsGet v1 = liftIO $ tlsGet' v1+{-# INLINE tlsGet #-}++tlsSet :: MonadIO m => TLSID -> Ptr () -> FunPtr (Ptr () -> IO ()) -> m CInt+tlsSet v1 v2 v3 = liftIO $ tlsSet' v1 v2 v3+{-# INLINE tlsSet #-}++threadID :: MonadIO m => m ThreadID+threadID = liftIO threadID'+{-# INLINE threadID #-}++waitThread :: MonadIO m => Ptr Thread -> Ptr CInt -> m ()+waitThread v1 v2 = liftIO $ waitThread' v1 v2+{-# INLINE waitThread #-}++condBroadcast :: MonadIO m => Ptr Cond -> m CInt+condBroadcast v1 = liftIO $ condBroadcast' v1+{-# INLINE condBroadcast #-}++condSignal :: MonadIO m => Ptr Cond -> m CInt+condSignal v1 = liftIO $ condSignal' v1+{-# INLINE condSignal #-}++condWait :: MonadIO m => Ptr Cond -> Ptr Mutex -> m CInt+condWait v1 v2 = liftIO $ condWait' v1 v2+{-# INLINE condWait #-}++condWaitTimeout :: MonadIO m => Ptr Cond -> Ptr Mutex -> Word32 -> m CInt+condWaitTimeout v1 v2 v3 = liftIO $ condWaitTimeout' v1 v2 v3+{-# INLINE condWaitTimeout #-}++createCond :: MonadIO m => m (Ptr Cond)+createCond = liftIO createCond'+{-# INLINE createCond #-}++createMutex :: MonadIO m => m (Ptr Mutex)+createMutex = liftIO createMutex'+{-# INLINE createMutex #-}++createSemaphore :: MonadIO m => Word32 -> m (Ptr Sem)+createSemaphore v1 = liftIO $ createSemaphore' v1+{-# INLINE createSemaphore #-}++destroyCond :: MonadIO m => Ptr Cond -> m ()+destroyCond v1 = liftIO $ destroyCond' v1+{-# INLINE destroyCond #-}++destroyMutex :: MonadIO m => Ptr Mutex -> m ()+destroyMutex v1 = liftIO $ destroyMutex' v1+{-# INLINE destroyMutex #-}++destroySemaphore :: MonadIO m => Ptr Sem -> m ()+destroySemaphore v1 = liftIO $ destroySemaphore' v1+{-# INLINE destroySemaphore #-}++lockMutex :: MonadIO m => Ptr Mutex -> m CInt+lockMutex v1 = liftIO $ lockMutex' v1+{-# INLINE lockMutex #-}++semPost :: MonadIO m => Ptr Sem -> m CInt+semPost v1 = liftIO $ semPost' v1+{-# INLINE semPost #-}++semTryWait :: MonadIO m => Ptr Sem -> m CInt+semTryWait v1 = liftIO $ semTryWait' v1+{-# INLINE semTryWait #-}++semValue :: MonadIO m => Ptr Sem -> m Word32+semValue v1 = liftIO $ semValue' v1+{-# INLINE semValue #-}++semWait :: MonadIO m => Ptr Sem -> m CInt+semWait v1 = liftIO $ semWait' v1+{-# INLINE semWait #-}++semWaitTimeout :: MonadIO m => Ptr Sem -> Word32 -> m CInt+semWaitTimeout v1 v2 = liftIO $ semWaitTimeout' v1 v2+{-# INLINE semWaitTimeout #-}++tryLockMutex :: MonadIO m => Ptr Mutex -> m CInt+tryLockMutex v1 = liftIO $ tryLockMutex' v1+{-# INLINE tryLockMutex #-}++unlockMutex :: MonadIO m => Ptr Mutex -> m CInt+unlockMutex v1 = liftIO $ unlockMutex' v1+{-# INLINE unlockMutex #-}++atomicAdd :: MonadIO m => Ptr Atomic -> CInt -> m CInt+atomicAdd v1 v2 = liftIO $ atomicAdd' v1 v2+{-# INLINE atomicAdd #-}++atomicCAS :: MonadIO m => Ptr Atomic -> CInt -> CInt -> m Bool+atomicCAS v1 v2 v3 = liftIO $ atomicCAS' v1 v2 v3+{-# INLINE atomicCAS #-}++atomicCASPtr :: MonadIO m => Ptr (Ptr ()) -> Ptr () -> Ptr () -> m Bool+atomicCASPtr v1 v2 v3 = liftIO $ atomicCASPtr' v1 v2 v3+{-# INLINE atomicCASPtr #-}+ atomicDecRef :: Ptr Atomic -> IO Bool atomicDecRef a = do-	old <- atomicAdd a (-1)-	return $ old == 1+  old <- atomicAdd a (-1)+  return $ old == 1+{-# INLINE atomicDecRef #-} +atomicGet :: MonadIO m => Ptr Atomic -> m CInt+atomicGet v1 = liftIO $ atomicGet' v1+{-# INLINE atomicGet #-}++atomicGetPtr :: MonadIO m => Ptr (Ptr ()) -> m (Ptr ())+atomicGetPtr v1 = liftIO $ atomicGetPtr' v1+{-# INLINE atomicGetPtr #-}+ atomicIncRef :: Ptr Atomic -> IO CInt atomicIncRef a = atomicAdd a 1+{-# INLINE atomicIncRef #-}++atomicLock :: MonadIO m => Ptr SpinLock -> m ()+atomicLock v1 = liftIO $ atomicLock' v1+{-# INLINE atomicLock #-}++atomicSet :: MonadIO m => Ptr Atomic -> CInt -> m CInt+atomicSet v1 v2 = liftIO $ atomicSet' v1 v2+{-# INLINE atomicSet #-}++atomicSetPtr :: MonadIO m => Ptr (Ptr ()) -> Ptr () -> m (Ptr ())+atomicSetPtr v1 v2 = liftIO $ atomicSetPtr' v1 v2+{-# INLINE atomicSetPtr #-}++atomicTryLock :: MonadIO m => Ptr SpinLock -> m Bool+atomicTryLock v1 = liftIO $ atomicTryLock' v1+{-# INLINE atomicTryLock #-}++atomicUnlock :: MonadIO m => Ptr SpinLock -> m ()+atomicUnlock v1 = liftIO $ atomicUnlock' v1+{-# INLINE atomicUnlock #-}
Graphics/UI/SDL/Timer.hs view
@@ -1,21 +1,46 @@ module Graphics.UI.SDL.Timer (-	-- * Timer Support-	addTimer,-	delay,-	getPerformanceCounter,-	getPerformanceFrequency,-	getTicks,-	removeTimer+  -- * Timer Support+  addTimer,+  delay,+  getPerformanceCounter,+  getPerformanceFrequency,+  getTicks,+  removeTimer ) where +import Control.Monad.IO.Class import Data.Word import Foreign.C.Types import Foreign.Ptr import Graphics.UI.SDL.Types -foreign import ccall "SDL.h SDL_AddTimer" addTimer :: Word32 -> TimerCallback -> Ptr () -> IO TimerID-foreign import ccall "SDL.h SDL_Delay" delay :: Word32 -> IO ()-foreign import ccall "SDL.h SDL_GetPerformanceCounter" getPerformanceCounter :: IO Word64-foreign import ccall "SDL.h SDL_GetPerformanceFrequency" getPerformanceFrequency :: IO Word64-foreign import ccall "SDL.h SDL_GetTicks" getTicks :: IO Word32-foreign import ccall "SDL.h SDL_RemoveTimer" removeTimer :: TimerID -> IO Bool+foreign import ccall "SDL.h SDL_AddTimer" addTimer' :: Word32 -> TimerCallback -> Ptr () -> IO TimerID+foreign import ccall "SDL.h SDL_Delay" delay' :: Word32 -> IO ()+foreign import ccall "SDL.h SDL_GetPerformanceCounter" getPerformanceCounter' :: IO Word64+foreign import ccall "SDL.h SDL_GetPerformanceFrequency" getPerformanceFrequency' :: IO Word64+foreign import ccall "SDL.h SDL_GetTicks" getTicks' :: IO Word32+foreign import ccall "SDL.h SDL_RemoveTimer" removeTimer' :: TimerID -> IO Bool++addTimer :: MonadIO m => Word32 -> TimerCallback -> Ptr () -> m TimerID+addTimer v1 v2 v3 = liftIO $ addTimer' v1 v2 v3+{-# INLINE addTimer #-}++delay :: MonadIO m => Word32 -> m ()+delay v1 = liftIO $ delay' v1+{-# INLINE delay #-}++getPerformanceCounter :: MonadIO m => m Word64+getPerformanceCounter = liftIO getPerformanceCounter'+{-# INLINE getPerformanceCounter #-}++getPerformanceFrequency :: MonadIO m => m Word64+getPerformanceFrequency = liftIO getPerformanceFrequency'+{-# INLINE getPerformanceFrequency #-}++getTicks :: MonadIO m => m Word32+getTicks = liftIO getTicks'+{-# INLINE getTicks #-}++removeTimer :: MonadIO m => TimerID -> m Bool+removeTimer v1 = liftIO $ removeTimer' v1+{-# INLINE removeTimer #-}
Graphics/UI/SDL/Types.hsc view
@@ -1,1374 +1,1422 @@-module Graphics.UI.SDL.Types (-	-- * Type Aliases-	AudioCallback,-	AudioDeviceID,-	AudioFormat,-	Cond,-	Cursor,-	EventFilter,-	FingerID,-	GameController,-	GestureID,-	GLContext,-	Haptic,-	HintCallback,-	Joystick,-	JoystickID,-	LogOutputFunction,-	Mutex,-	Renderer,-	Sem,-	SpinLock,-	SysWMinfo,-	SysWMmsg,-	Texture,-	Thread,-	ThreadFunction,-	ThreadID,-	TimerCallback,-	TimerID,-	TLSID,-	TouchID,-	Window,--	-- * Data Structures-	Atomic(..),-	AudioCVT(..),-	AudioSpec(..),-	Color(..),-	DisplayMode(..),-	Event(..),-	Finger(..),-	GameControllerButtonBind(..),-	HapticDirection(..),-	HapticEffect(..),-	JoystickGUID(..),-	Keysym(..),-	MessageBoxButtonData(..),-	MessageBoxColor(..),-	MessageBoxColorScheme(..),-	MessageBoxData(..),-	Palette(..),-	PixelFormat(..),-	Point(..),-	Rect(..),-	RendererInfo(..),-	RWops(..),-	Surface(..),-	Version(..)-) where--#include "SDL.h"--import Data.Int-import Data.Word-import Foreign.C.String-import Foreign.C.Types-import Foreign.Marshal.Array-import Foreign.Ptr-import Foreign.Storable-import Graphics.UI.SDL.Enum--type AudioCallback = FunPtr (Ptr () -> Ptr Word8 -> CInt -> IO ())-type AudioDeviceID = Word32-type AudioFormat = Word16-type Cond = Ptr ()-type Cursor = Ptr ()-type EventFilter = FunPtr (Ptr () -> Ptr Event -> IO CInt)-type FingerID = Int64-type GameController = Ptr ()-type GestureID = Int64-type GLContext = Ptr ()-type Haptic = Ptr ()-type HintCallback = FunPtr (Ptr () -> CString -> CString -> CString -> IO ())-type Joystick = Ptr ()-type JoystickID = Int32-type LogOutputFunction = FunPtr (Ptr () -> CInt -> LogPriority -> CString -> IO ())-type Mutex = Ptr ()-type Renderer = Ptr ()-type Sem = Ptr ()-type SpinLock = CInt-type SysWMinfo = Ptr ()-type SysWMmsg = Ptr ()-type Texture = Ptr ()-type Thread = Ptr ()-type ThreadFunction = FunPtr (Ptr () -> IO CInt)-type ThreadID = CULong-type TimerCallback = FunPtr (Word32 -> Ptr () -> IO Word32)-type TimerID = CInt-type TLSID = CUInt-type TouchID = Int64-type Window = Ptr ()--data Atomic = Atomic {-              atomicValue :: CInt-            } deriving (Eq, Show)--instance Storable Atomic where-	sizeOf _ = (#size SDL_atomic_t)-	alignment = sizeOf-	peek ptr = do-		value <- (#peek SDL_atomic_t, value) ptr-		return $! Atomic value-	poke ptr (Atomic value) = do-		(#poke SDL_atomic_t, value) ptr value--data AudioCVT = AudioCVT {-                audioCVTNeeded :: CInt-              , audioCVTSrcFormat :: AudioFormat-              , audioCVTDstFormat :: AudioFormat-              , audioCVTRateIncr :: CDouble-              , audioCVTBuf :: Ptr Word8-              , audioCVTLen :: CInt-              , audioCVTLenCvt :: CInt-              , audioCVTLenMult :: CInt-              , audioCVTLenRatio :: CDouble-              } deriving (Eq, Show)--instance Storable AudioCVT where-	sizeOf _ = (#size SDL_AudioCVT)-	alignment = sizeOf-	peek ptr = do-		needed <- (#peek SDL_AudioCVT, needed) ptr-		src_format <- (#peek SDL_AudioCVT, src_format) ptr-		dst_format <- (#peek SDL_AudioCVT, dst_format) ptr-		rate_incr <- (#peek SDL_AudioCVT, rate_incr) ptr-		buf <- (#peek SDL_AudioCVT, buf) ptr-		len <- (#peek SDL_AudioCVT, len) ptr-		len_cvt <- (#peek SDL_AudioCVT, len_cvt) ptr-		len_mult <- (#peek SDL_AudioCVT, len_mult) ptr-		len_ratio <- (#peek SDL_AudioCVT, len_ratio) ptr-		return $! AudioCVT needed src_format dst_format rate_incr buf len len_cvt len_mult len_ratio-	poke ptr (AudioCVT needed src_format dst_format rate_incr buf len len_cvt len_mult len_ratio) = do-		(#poke SDL_AudioCVT, needed) ptr needed-		(#poke SDL_AudioCVT, src_format) ptr src_format-		(#poke SDL_AudioCVT, dst_format) ptr dst_format-		(#poke SDL_AudioCVT, rate_incr) ptr rate_incr-		(#poke SDL_AudioCVT, buf) ptr buf-		(#poke SDL_AudioCVT, len) ptr len-		(#poke SDL_AudioCVT, len_cvt) ptr len_cvt-		(#poke SDL_AudioCVT, len_mult) ptr len_mult-		(#poke SDL_AudioCVT, len_ratio) ptr len_ratio--data AudioSpec = AudioSpec {-                 audioSpecFreq :: CInt-               , audioSpecFormat :: AudioFormat-               , audioSpecChannels :: Word8-               , audioSpecSilence :: Word8-               , audioSpecSamples :: Word16-               , audioSpecSize :: Word32-               , audioSpecCallback :: AudioCallback-               , audioSpecUserdata :: Ptr ()-               } deriving (Eq, Show)--instance Storable AudioSpec where-	sizeOf _ = (#size SDL_AudioSpec)-	alignment = sizeOf-	peek ptr = do-		freq <- (#peek SDL_AudioSpec, freq) ptr-		format <- (#peek SDL_AudioSpec, format) ptr-		channels <- (#peek SDL_AudioSpec, channels) ptr-		silence <- (#peek SDL_AudioSpec, silence) ptr-		samples <- (#peek SDL_AudioSpec, samples) ptr-		size <- (#peek SDL_AudioSpec, size) ptr-		callback <- (#peek SDL_AudioSpec, callback) ptr-		userdata <- (#peek SDL_AudioSpec, userdata) ptr-		return $! AudioSpec freq format channels silence samples size callback userdata-	poke ptr (AudioSpec freq format channels silence samples size callback userdata) = do-		(#poke SDL_AudioSpec, freq) ptr freq-		(#poke SDL_AudioSpec, format) ptr format-		(#poke SDL_AudioSpec, channels) ptr channels-		(#poke SDL_AudioSpec, silence) ptr silence-		(#poke SDL_AudioSpec, samples) ptr samples-		(#poke SDL_AudioSpec, size) ptr size-		(#poke SDL_AudioSpec, callback) ptr callback-		(#poke SDL_AudioSpec, userdata) ptr userdata--data Color = Color {-             colorR :: Word8-           , colorG :: Word8-           , colorB :: Word8-           , colorA :: Word8-           } deriving (Eq, Show)--instance Storable Color where-	sizeOf _ = (#size SDL_Color)-	alignment = sizeOf-	peek ptr = do-		r <- (#peek SDL_Color, r) ptr-		g <- (#peek SDL_Color, g) ptr-		b <- (#peek SDL_Color, b) ptr-		a <- (#peek SDL_Color, a) ptr-		return $! Color r g b a-	poke ptr (Color r g b a) = do-		(#poke SDL_Color, r) ptr r-		(#poke SDL_Color, g) ptr g-		(#poke SDL_Color, b) ptr b-		(#poke SDL_Color, a) ptr a--data DisplayMode = DisplayMode {-                   displayModeFormat :: Word32-                 , displayModeW :: CInt-                 , displayModeH :: CInt-                 , displayModeRefreshRate :: CInt-                 , displayModeDriverData :: Ptr ()-                 } deriving (Eq, Show)--instance Storable DisplayMode where-	sizeOf _ = (#size SDL_DisplayMode)-	alignment = sizeOf-	peek ptr = do-		format <- (#peek SDL_DisplayMode, format) ptr-		w <- (#peek SDL_DisplayMode, w) ptr-		h <- (#peek SDL_DisplayMode, h) ptr-		refresh_rate <- (#peek SDL_DisplayMode, refresh_rate) ptr-		driverdata <- (#peek SDL_DisplayMode, driverdata) ptr-		return $! DisplayMode format w h refresh_rate driverdata-	poke ptr (DisplayMode format w h refresh_rate driverdata) = do-		(#poke SDL_DisplayMode, format) ptr format-		(#poke SDL_DisplayMode, w) ptr w-		(#poke SDL_DisplayMode, h) ptr h-		(#poke SDL_DisplayMode, refresh_rate) ptr refresh_rate-		(#poke SDL_DisplayMode, driverdata) ptr driverdata--data Event = WindowEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , windowEventWindowID :: Word32-           , windowEventEvent :: Word8-           , windowEventData1 :: Int32-           , windowEventData2 :: Int32-           }-           | KeyboardEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , keyboardEventWindowID :: Word32-           , keyboardEventState :: Word8-           , keyboardEventRepeat :: Word8-           , keyboardEventKeysym :: Keysym-           }-           | TextEditingEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , textEditingEventWindowID :: Word32-           , textEditingEventText :: [CChar]-           , textEditingEventStart :: Int32-           , textEditingEventLength :: Int32-           }-           | TextInputEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , textInputEventWindowID :: Word32-           , textInputEventText :: [CChar]-           }-           | MouseMotionEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , mouseMotionEventWindowID :: Word32-           , mouseMotionEventWhich :: Word32-           , mouseMotionEventState :: Word32-           , mouseMotionEventX :: Int32-           , mouseMotionEventY :: Int32-           , mouseMotionEventXRel :: Int32-           , mouseMotionEventYRel :: Int32-           }-           | MouseButtonEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , mouseButtonEventWindowID :: Word32-           , mouseButtonEventWhich :: Word32-           , mouseButtonEventButton :: Word8-           , mouseButtonEventState :: Word8-           , mouseButtonEventClicks :: Word8-           , mouseButtonEventX :: Int32-           , mouseButtonEventY :: Int32-           }-           | MouseWheelEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , mouseWheelEventWindowID :: Word32-           , mouseWheelEventWhich :: Word32-           , mouseWheelEventX :: Int32-           , mouseWheelEventY :: Int32-           }-           | JoyAxisEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , joyAxisEventWhich :: JoystickID-           , joyAxisEventAxis :: Word8-           , joyAxisEventValue :: Int16-           }-           | JoyBallEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , joyBallEventWhich :: JoystickID-           , joyBallEventBall :: Word8-           , joyBallEventXRel :: Int16-           , joyBallEventYRel :: Int16-           }-           | JoyHatEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , joyHatEventWhich :: JoystickID-           , joyHatEventHat :: Word8-           , joyHatEventValue :: Word8-           }-           | JoyButtonEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , joyButtonEventWhich :: JoystickID-           , joyButtonEventButton :: Word8-           , joyButtonEventState :: Word8-           }-           | JoyDeviceEvent{-             eventType :: Word32-           , eventTimestamp :: Word32-           , joyDeviceEventWhich :: Int32-           }-           | ControllerAxisEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , controllerAxisEventWhich :: JoystickID-           , controllerAxisEventAxis :: Word8-           , controllerAxisEventValue :: Int16-           }-           | ControllerButtonEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , controllerButtonEventWhich :: JoystickID-           , controllerButtonEventButton :: Word8-           , controllerButtonEventState :: Word8-           }-           | ControllerDeviceEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , controllerDeviceEventWhich :: Int32-           }-           | QuitEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           }-           | UserEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , userEventWindowID :: Word32-           , userEventCode :: Int32-           , userEventData1 :: Ptr ()-           , userEventData2 :: Ptr ()-           }-           | SysWMEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , sysWMEventMsg :: SysWMmsg-           }-           | TouchFingerEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , touchFingerEventTouchID :: TouchID-           , touchFingerEventFingerID :: FingerID-           , touchFingerEventX :: CFloat-           , touchFingerEventY :: CFloat-           , touchFingerEventDX :: CFloat-           , touchFingerEventDY :: CFloat-           , touchFingerEventPressure :: CFloat-           }-           | MultiGestureEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , multiGestureEventTouchID :: TouchID-           , multiGestureEventDTheta :: CFloat-           , multiGestureEventDDist :: CFloat-           , multiGestureEventX :: CFloat-           , multiGestureEventY :: CFloat-           , multiGestureEventNumFingers :: Word16-           }-           | DollarGestureEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , dollarGestureEventTouchID :: TouchID-           , dollarGestureEventGestureID :: GestureID-           , dollarGestureEventNumFingers :: Word32-           , dollarGestureEventError :: CFloat-           , dollarGestureEventX :: CFloat-           , dollarGestureEventY :: CFloat-           }-           | DropEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           , dropEventFile :: CString-           }-           | ClipboardUpdateEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           }-           | UnknownEvent {-             eventType :: Word32-           , eventTimestamp :: Word32-           }-           deriving (Eq, Show)--instance Storable Event where-	sizeOf _ = (#size SDL_Event)-	alignment = sizeOf-	peek ptr = do-		typ <- (#peek SDL_Event, common.type) ptr-		timestamp <- (#peek SDL_Event, common.timestamp) ptr-		case typ of-			(#const SDL_QUIT) ->-				return $! QuitEvent typ timestamp-			(#const SDL_WINDOWEVENT) -> do-				wid <- (#peek SDL_Event, window.windowID) ptr-				event <- (#peek SDL_Event, window.event) ptr-				data1 <- (#peek SDL_Event, window.data1) ptr-				data2 <- (#peek SDL_Event, window.data2) ptr-				return $! WindowEvent typ timestamp wid event data1 data2-			(#const SDL_SYSWMEVENT) -> do-				msg <- (#peek SDL_Event, syswm.msg) ptr-				return $! SysWMEvent typ timestamp msg-			(#const SDL_KEYDOWN) -> key $ KeyboardEvent typ timestamp-			(#const SDL_KEYUP) -> key $ KeyboardEvent typ timestamp-			(#const SDL_TEXTEDITING) -> do-				wid <- (#peek SDL_Event, edit.windowID) ptr-				text <- peekArray (#const SDL_TEXTEDITINGEVENT_TEXT_SIZE) $ (#ptr SDL_Event, edit.text) ptr-				start <- (#peek SDL_Event, edit.start) ptr-				len <- (#peek SDL_Event, edit.length) ptr-				return $! TextEditingEvent typ timestamp wid text start len-			(#const SDL_TEXTINPUT) -> do-				wid <- (#peek SDL_Event, text.windowID) ptr-				text <- peekArray (#const SDL_TEXTINPUTEVENT_TEXT_SIZE) $ (#ptr SDL_Event, text.text) ptr-				return $! TextInputEvent typ timestamp wid text-			(#const SDL_MOUSEMOTION) -> do-				wid <- (#peek SDL_Event, motion.windowID) ptr-				which <- (#peek SDL_Event, motion.which) ptr-				state <- (#peek SDL_Event, motion.state) ptr-				x <- (#peek SDL_Event, motion.x) ptr-				y <- (#peek SDL_Event, motion.y) ptr-				xrel <- (#peek SDL_Event, motion.xrel) ptr-				yrel <- (#peek SDL_Event, motion.yrel) ptr-				return $! MouseMotionEvent typ timestamp wid which state x y xrel yrel-			(#const SDL_MOUSEBUTTONDOWN) -> mouse $ MouseButtonEvent typ timestamp-			(#const SDL_MOUSEBUTTONUP) -> mouse $ MouseButtonEvent typ timestamp-			(#const SDL_MOUSEWHEEL) -> do-				wid <- (#peek SDL_Event, wheel.windowID) ptr-				which <- (#peek SDL_Event, wheel.which) ptr-				x <- (#peek SDL_Event, wheel.x) ptr-				y <- (#peek SDL_Event, wheel.y) ptr-				return $! MouseWheelEvent typ timestamp wid which x y-			(#const SDL_JOYAXISMOTION) -> do-				which <- (#peek SDL_Event, jaxis.which) ptr-				axis <- (#peek SDL_Event, jaxis.axis) ptr-				value <- (#peek SDL_Event, jaxis.value) ptr-				return $! JoyAxisEvent typ timestamp which axis value-			(#const SDL_JOYBALLMOTION) -> do-				which <- (#peek SDL_Event, jball.which) ptr-				ball <- (#peek SDL_Event, jball.ball) ptr-				xrel <- (#peek SDL_Event, jball.xrel) ptr-				yrel <- (#peek SDL_Event, jball.yrel) ptr-				return $! JoyBallEvent typ timestamp which ball xrel yrel-			(#const SDL_JOYHATMOTION) -> do-				which <- (#peek SDL_Event, jhat.which) ptr-				hat <- (#peek SDL_Event, jhat.hat) ptr-				value <- (#peek SDL_Event, jhat.value) ptr-				return $! JoyHatEvent typ timestamp which hat value-			(#const SDL_JOYBUTTONDOWN) -> joybutton $ JoyButtonEvent typ timestamp-			(#const SDL_JOYBUTTONUP) -> joybutton $ JoyButtonEvent typ timestamp-			(#const SDL_JOYDEVICEADDED) -> joydevice $ JoyDeviceEvent typ timestamp-			(#const SDL_JOYDEVICEREMOVED) -> joydevice $ JoyDeviceEvent typ timestamp-			(#const SDL_CONTROLLERAXISMOTION) -> do-				which <- (#peek SDL_Event, caxis.which) ptr-				axis <- (#peek SDL_Event, caxis.axis) ptr-				value <- (#peek SDL_Event, caxis.value) ptr-				return $! ControllerButtonEvent typ timestamp which axis value-			(#const SDL_CONTROLLERBUTTONDOWN) -> controllerbutton $ ControllerButtonEvent typ timestamp-			(#const SDL_CONTROLLERBUTTONUP) -> controllerbutton $ ControllerButtonEvent typ timestamp-			(#const SDL_CONTROLLERDEVICEADDED) -> controllerdevice $ ControllerDeviceEvent typ timestamp-			(#const SDL_CONTROLLERDEVICEREMOVED) -> controllerdevice $ ControllerDeviceEvent typ timestamp-			(#const SDL_CONTROLLERDEVICEREMAPPED) -> controllerdevice $ ControllerDeviceEvent typ timestamp-			(#const SDL_FINGERDOWN) -> finger $ TouchFingerEvent typ timestamp-			(#const SDL_FINGERUP) -> finger $ TouchFingerEvent typ timestamp-			(#const SDL_FINGERMOTION) -> finger $ TouchFingerEvent typ timestamp-			(#const SDL_DOLLARGESTURE) -> dollargesture $ DollarGestureEvent typ timestamp-			(#const SDL_DOLLARRECORD) -> dollargesture $ DollarGestureEvent typ timestamp-			(#const SDL_MULTIGESTURE) -> do-				touchId <- (#peek SDL_Event, mgesture.touchId) ptr-				dTheta <- (#peek SDL_Event, mgesture.dTheta) ptr-				dDist <- (#peek SDL_Event, mgesture.dDist) ptr-				x <- (#peek SDL_Event, mgesture.x) ptr-				y <- (#peek SDL_Event, mgesture.y) ptr-				numFingers <- (#peek SDL_Event, mgesture.numFingers) ptr-				return $! MultiGestureEvent typ timestamp touchId dTheta dDist x y numFingers-			(#const SDL_CLIPBOARDUPDATE) ->-				return $! ClipboardUpdateEvent typ timestamp-			(#const SDL_DROPFILE) -> do-				file <- (#peek SDL_Event, drop.file) ptr-				return $! DropEvent typ timestamp file-			x | x >= (#const SDL_USEREVENT) -> do-				wid <- (#peek SDL_Event, user.windowID) ptr-				code <- (#peek SDL_Event, user.code) ptr-				data1 <- (#peek SDL_Event, user.data1) ptr-				data2 <- (#peek SDL_Event, user.data2) ptr-				return $! UserEvent typ timestamp wid code data1 data2-			_ -> return $! UnknownEvent typ timestamp-		where-		key f = do-			wid <- (#peek SDL_Event, key.windowID) ptr-			state <- (#peek SDL_Event, key.state) ptr-			repeat' <- (#peek SDL_Event, key.repeat) ptr-			keysym <- (#peek SDL_Event, key.keysym) ptr-			return $! f wid state repeat' keysym--		mouse f = do-			wid <- (#peek SDL_Event, button.windowID) ptr-			which <- (#peek SDL_Event, button.which) ptr-			button <- (#peek SDL_Event, button.button) ptr-			state <- (#peek SDL_Event, button.state) ptr-			clicks <- (#peek SDL_Event, button.clicks) ptr-			x <- (#peek SDL_Event, button.x) ptr-			y <- (#peek SDL_Event, button.y) ptr-			return $! f wid which button state clicks x y--		joybutton f = do-			which <- (#peek SDL_Event, jbutton.which) ptr-			button <- (#peek SDL_Event, jbutton.button) ptr-			state <- (#peek SDL_Event, jbutton.state) ptr-			return $! f which button state--		joydevice f = do-			which <- (#peek SDL_Event, jdevice.which) ptr-			return $! f which--		controllerbutton f = do-			which <- (#peek SDL_Event, cbutton.which) ptr-			button <- (#peek SDL_Event, cbutton.button) ptr-			state <- (#peek SDL_Event, cbutton.state) ptr-			return $! f which button state--		controllerdevice f = do-			which <- (#peek SDL_Event, cdevice.which) ptr-			return $! f which--		finger f = do-			touchId <- (#peek SDL_Event, tfinger.touchId) ptr-			fingerId <- (#peek SDL_Event, tfinger.fingerId) ptr-			x <- (#peek SDL_Event, tfinger.x) ptr-			y <- (#peek SDL_Event, tfinger.y) ptr-			dx <- (#peek SDL_Event, tfinger.dx) ptr-			dy <- (#peek SDL_Event, tfinger.dy) ptr-			pressure <- (#peek SDL_Event, tfinger.pressure) ptr-			return $! f touchId fingerId x y dx dy pressure--		dollargesture f = do-			touchId <- (#peek SDL_Event, dgesture.touchId) ptr-			gestureId <- (#peek SDL_Event, dgesture.gestureId) ptr-			numFingers <- (#peek SDL_Event, dgesture.numFingers) ptr-			err <- (#peek SDL_Event, dgesture.error) ptr-			x <- (#peek SDL_Event, dgesture.x) ptr-			y <- (#peek SDL_Event, dgesture.y) ptr-			return $! f touchId gestureId numFingers err x y-	poke ptr ev = case ev of-		WindowEvent typ timestamp wid event data1 data2 -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, window.windowID) ptr wid-			(#poke SDL_Event, window.event) ptr event-			(#poke SDL_Event, window.data1) ptr data1-			(#poke SDL_Event, window.data2) ptr data2-		KeyboardEvent typ timestamp wid state repeat' keysym -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, key.windowID) ptr wid-			(#poke SDL_Event, key.state) ptr state-			(#poke SDL_Event, key.repeat) ptr repeat'-			(#poke SDL_Event, key.keysym) ptr keysym-		TextEditingEvent typ timestamp wid text start len -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, edit.windowID) ptr wid-			pokeArray ((#ptr SDL_Event, edit.text) ptr) text-			(#poke SDL_Event, edit.start) ptr start-			(#poke SDL_Event, edit.length) ptr len-		TextInputEvent typ timestamp wid text -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, text.windowID) ptr wid-			pokeArray ((#ptr SDL_Event, text.text) ptr) text-		MouseMotionEvent typ timestamp wid which state x y xrel yrel -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, motion.windowID) ptr wid-			(#poke SDL_Event, motion.which) ptr which-			(#poke SDL_Event, motion.state) ptr state-			(#poke SDL_Event, motion.x) ptr x-			(#poke SDL_Event, motion.y) ptr y-			(#poke SDL_Event, motion.xrel) ptr xrel-			(#poke SDL_Event, motion.yrel) ptr yrel-		MouseButtonEvent typ timestamp wid which button state clicks x y -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, button.windowID) ptr wid-			(#poke SDL_Event, button.which) ptr which-			(#poke SDL_Event, button.button) ptr button-			(#poke SDL_Event, button.state) ptr state-			(#poke SDL_Event, button.clicks) ptr clicks-			(#poke SDL_Event, button.x) ptr x-			(#poke SDL_Event, button.y) ptr y-		MouseWheelEvent typ timestamp wid which x y -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, wheel.windowID) ptr wid-			(#poke SDL_Event, wheel.which) ptr which-			(#poke SDL_Event, wheel.x) ptr x-			(#poke SDL_Event, wheel.y) ptr y-		JoyAxisEvent typ timestamp which axis value -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, jaxis.which) ptr which-			(#poke SDL_Event, jaxis.axis) ptr axis-			(#poke SDL_Event, jaxis.value) ptr value-		JoyBallEvent typ timestamp which ball xrel yrel -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, jball.which) ptr which-			(#poke SDL_Event, jball.ball) ptr ball-			(#poke SDL_Event, jball.xrel) ptr xrel-			(#poke SDL_Event, jball.yrel) ptr yrel-		JoyHatEvent typ timestamp which hat value -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, jhat.which) ptr which-			(#poke SDL_Event, jhat.hat) ptr hat-			(#poke SDL_Event, jhat.value) ptr value-		JoyButtonEvent typ timestamp which button state -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, jbutton.which) ptr which-			(#poke SDL_Event, jbutton.button) ptr button-			(#poke SDL_Event, jbutton.state) ptr state-		JoyDeviceEvent typ timestamp which -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, jdevice.which) ptr which-		ControllerAxisEvent typ timestamp which axis value -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, caxis.which) ptr which-			(#poke SDL_Event, caxis.axis) ptr axis-			(#poke SDL_Event, caxis.value) ptr value-		ControllerButtonEvent typ timestamp which button state -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, cbutton.which) ptr which-			(#poke SDL_Event, cbutton.button) ptr button-			(#poke SDL_Event, cbutton.state) ptr state-		ControllerDeviceEvent typ timestamp which -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, cdevice.which) ptr which-		QuitEvent typ timestamp -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-		UserEvent typ timestamp wid code data1 data2 -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, user.windowID) ptr wid-			(#poke SDL_Event, user.code) ptr code-			(#poke SDL_Event, user.data1) ptr data1-			(#poke SDL_Event, user.data2) ptr data2-		SysWMEvent typ timestamp msg -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, syswm.msg) ptr msg-		TouchFingerEvent typ timestamp touchid fingerid x y dx dy pressure -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, tfinger.touchId) ptr touchid-			(#poke SDL_Event, tfinger.fingerId) ptr fingerid-			(#poke SDL_Event, tfinger.x) ptr x-			(#poke SDL_Event, tfinger.y) ptr y-			(#poke SDL_Event, tfinger.dx) ptr dx-			(#poke SDL_Event, tfinger.dy) ptr dy-			(#poke SDL_Event, tfinger.pressure) ptr pressure-		MultiGestureEvent typ timestamp touchid dtheta ddist x y numfingers -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, mgesture.touchId) ptr touchid-			(#poke SDL_Event, mgesture.dTheta) ptr dtheta-			(#poke SDL_Event, mgesture.dDist) ptr ddist-			(#poke SDL_Event, mgesture.x) ptr x-			(#poke SDL_Event, mgesture.y) ptr y-			(#poke SDL_Event, mgesture.numFingers) ptr numfingers-		DollarGestureEvent typ timestamp touchid gestureid numfingers err x y -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, dgesture.touchId) ptr touchid-			(#poke SDL_Event, dgesture.gestureId) ptr gestureid-			(#poke SDL_Event, dgesture.numFingers) ptr numfingers-			(#poke SDL_Event, dgesture.error) ptr err-			(#poke SDL_Event, dgesture.x) ptr x-			(#poke SDL_Event, dgesture.y) ptr y-		ClipboardUpdateEvent typ timestamp -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-		DropEvent typ timestamp file -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp-			(#poke SDL_Event, drop.file) ptr file-		UnknownEvent typ timestamp -> do-			(#poke SDL_Event, common.type) ptr typ-			(#poke SDL_Event, common.timestamp) ptr timestamp--data Finger = Finger {-              fingerID :: FingerID-            , fingerX :: CFloat-            , fingerY :: CFloat-            , fingerPressure :: CFloat-            } deriving (Eq, Show)--instance Storable Finger where-	sizeOf _ = (#size SDL_Finger)-	alignment = sizeOf-	peek ptr = do-		fingerId <- (#peek SDL_Finger, id) ptr-		x <- (#peek SDL_Finger, x) ptr-		y <- (#peek SDL_Finger, y) ptr-		pressure <- (#peek SDL_Finger, pressure) ptr-		return $! Finger fingerId x y pressure-	poke ptr (Finger fingerId x y pressure) = do-		(#poke SDL_Finger, id) ptr fingerId-		(#poke SDL_Finger, x) ptr x-		(#poke SDL_Finger, y) ptr y-		(#poke SDL_Finger, pressure) ptr pressure--data GameControllerButtonBind = GameControllerButtonBindNone-                              | GameControllerButtonBindButton {-                                gameControllerButtonBindButton :: CInt-                              }-                              | GameControllerButtonBindAxis {-                                gameControllerButtonBindAxis :: CInt-                              }-                              | GameControllerButtonBindHat {-                                gameControllerButtonBindHat :: CInt-                              , gameControllerButtonBindHatMask :: CInt-                              } deriving (Eq, Show)--instance Storable GameControllerButtonBind where-	sizeOf _ = (#size SDL_GameControllerButtonBind)-	alignment = sizeOf-	peek ptr = do-		bind_type <- (#peek SDL_GameControllerButtonBind, bindType) ptr-		case bind_type :: (#type SDL_GameControllerBindType) of-			(#const SDL_CONTROLLER_BINDTYPE_NONE) -> do-				return $! GameControllerButtonBindNone-			(#const SDL_CONTROLLER_BINDTYPE_BUTTON) -> do-				button <- (#peek SDL_GameControllerButtonBind, value.button) ptr-				return $! GameControllerButtonBindButton button-			(#const SDL_CONTROLLER_BINDTYPE_AXIS) -> do-				axis <- (#peek SDL_GameControllerButtonBind, value.axis) ptr-				return $! GameControllerButtonBindAxis axis-			(#const SDL_CONTROLLER_BINDTYPE_HAT) -> do-				hat <- (#peek SDL_GameControllerButtonBind, value.hat.hat) ptr-				hat_mask <- (#peek SDL_GameControllerButtonBind, value.hat.hat_mask) ptr-				return $! GameControllerButtonBindHat hat hat_mask-			_ -> error $ "Unknown type " ++ show bind_type ++ " for SDL_GameControllerButtonBind"-	poke ptr bind = case bind of-		GameControllerButtonBindNone -> do-			(#poke SDL_GameControllerButtonBind, bindType) ptr ((#const SDL_CONTROLLER_BINDTYPE_NONE) :: (#type SDL_GameControllerBindType))-		GameControllerButtonBindButton button -> do-			(#poke SDL_GameControllerButtonBind, bindType) ptr ((#const SDL_CONTROLLER_BINDTYPE_BUTTON) :: (#type SDL_GameControllerBindType))-			(#poke SDL_GameControllerButtonBind, value.button) ptr button-		GameControllerButtonBindAxis axis -> do-			(#poke SDL_GameControllerButtonBind, bindType) ptr ((#const SDL_CONTROLLER_BINDTYPE_AXIS) :: (#type SDL_GameControllerBindType))-			(#poke SDL_GameControllerButtonBind, value.axis) ptr axis-		GameControllerButtonBindHat hat hat_mask -> do-			(#poke SDL_GameControllerButtonBind, bindType) ptr ((#const SDL_CONTROLLER_BINDTYPE_HAT) :: (#type SDL_GameControllerBindType))-			(#poke SDL_GameControllerButtonBind, value.hat.hat) ptr hat-			(#poke SDL_GameControllerButtonBind, value.hat.hat_mask) ptr hat_mask--data HapticDirection = HapticDirection {-                       hapticDirectionType :: Word8-                     , hapticDirectionX :: Int32-                     , hapticDirectionY :: Int32-                     , hapticDirectionZ :: Int32-                     } deriving (Eq, Show)--instance Storable HapticDirection where-	sizeOf _ = (#size SDL_HapticDirection)-	alignment = sizeOf-	peek ptr = do-		typ <- (#peek SDL_HapticDirection, type) ptr-		x <- (#peek SDL_HapticDirection, dir[0]) ptr-		y <- (#peek SDL_HapticDirection, dir[1]) ptr-		z <- (#peek SDL_HapticDirection, dir[2]) ptr-		return $! HapticDirection typ x y z-	poke ptr (HapticDirection typ x y z) = do-		(#poke SDL_HapticDirection, type) ptr typ-		(#poke SDL_HapticDirection, dir[0]) ptr x-		(#poke SDL_HapticDirection, dir[1]) ptr y-		(#poke SDL_HapticDirection, dir[2]) ptr z--data HapticEffect = HapticConstant {-                    hapticEffectType :: Word16-                  , hapticConstantDirection :: HapticDirection-                  , hapticConstantLength :: Word32-                  , hapticConstantDelay :: Word16-                  , hapticConstantButton :: Word16-                  , hapticConstantInterval :: Word16-                  , hapticConstantLevel :: Int16-                  , hapticConstantAttackLength :: Word16-                  , hapticConstantAttackLevel :: Word16-                  , hapticConstantFadeLength :: Word16-                  , hapticConstantFadeLevel :: Word16-                  }-                  | HapticPeriodic {-                    hapticEffectType :: Word16-                  , hapticPeriodicDirection :: HapticDirection-                  , hapticPeriodicLength :: Word32-                  , hapticPeriodicDelay :: Word16-                  , hapticPeriodicButton :: Word16-                  , hapticPeriodicInterval :: Word16-                  , hapticPeriodicPeriod :: Word16-                  , hapticPeriodicMagnitude :: Int16-                  , hapticPeriodicOffset :: Int16-                  , hapticPeriodicPhase :: Word16-                  , hapticPeriodicAttackLength :: Word16-                  , hapticPeriodicAttackLevel :: Word16-                  , hapticPeriodicFadeLength :: Word16-                  , hapticPeriodicFadeLevel :: Word16-                  }-                  | HapticCondition {-                    hapticEffectType :: Word16-                  , hapticConditionLength :: Word32-                  , hapticConditionDelay :: Word16-                  , hapticConditionButton :: Word16-                  , hapticConditionInterval :: Word16-                  , hapticConditionRightSat :: [Word16]-                  , hapticConditionLeftSat :: [Word16]-                  , hapticConditionRightCoeff :: [Int16]-                  , hapticConditionLeftCoeff :: [Int16]-                  , hapticConditionDeadband :: [Word16]-                  , hapticConditionCenter :: [Int16]-                  }-                  | HapticRamp {-                    hapticEffectType :: Word16-                  , hapticRampDirection :: HapticDirection-                  , hapticRampLength :: Word32-                  , hapticRampDelay :: Word16-                  , hapticRampButton :: Word16-                  , hapticRampInterval :: Word16-                  , hapticRampStart :: Int16-                  , hapticRampEnd :: Int16-                  , hapticRampAttackLength :: Word16-                  , hapticRampAttackLevel :: Word16-                  , hapticRampFadeLength :: Word16-                  , hapticRampFadeLevel :: Word16-                  }-                  | HapticLeftRight {-                    hapticEffectType :: Word16-                  , hapticLeftRightLength :: Word32-                  , hapticLeftRightLargeMagnitude :: Word16-                  , hapticLeftRightSmallMagnitude :: Word16-                  }-                  | HapticCustom {-                    hapticEffectType :: Word16-                  , hapticCustomDirection :: HapticDirection-                  , hapticCustomLength :: Word32-                  , hapticCustomDelay :: Word16-                  , hapticCustomButton :: Word16-                  , hapticCustomInterval :: Word16-                  , hapticCustomChannels :: Word8-                  , hapticCustomPeriod :: Word16-                  , hapticCustomSamples :: Word16-                  , hapticCustomData :: Ptr Word16-                  , hapticCustomAttackLength :: Word16-                  , hapticCustomAttackLevel :: Word16-                  , hapticCustomFadeLength :: Word16-                  , hapticCustomFadeLevel :: Word16-                  } deriving (Eq, Show)--instance Storable HapticEffect where-	sizeOf _ = (#size SDL_HapticEffect)-	alignment = sizeOf-	peek ptr = do-		typ <- (#peek SDL_HapticEffect, type) ptr-		case typ of-			(#const SDL_HAPTIC_CONSTANT) -> do-				direction <- (#peek SDL_HapticEffect, constant.direction) ptr-				len <- (#peek SDL_HapticEffect, constant.length) ptr-				delay <- (#peek SDL_HapticEffect, constant.delay) ptr-				button <- (#peek SDL_HapticEffect, constant.button) ptr-				interval <- (#peek SDL_HapticEffect, constant.interval) ptr-				level <- (#peek SDL_HapticEffect, constant.level) ptr-				attack_length <- (#peek SDL_HapticEffect, constant.attack_length) ptr-				attack_level <- (#peek SDL_HapticEffect, constant.attack_level) ptr-				fade_length <- (#peek SDL_HapticEffect, constant.fade_length) ptr-				fade_level <- (#peek SDL_HapticEffect, constant.fade_level) ptr-				return $! HapticConstant typ direction len delay button interval level attack_length attack_level fade_length fade_level--			(#const SDL_HAPTIC_SINE) -> hapticperiodic $ HapticPeriodic typ-			(#const SDL_HAPTIC_TRIANGLE) -> hapticperiodic $ HapticPeriodic typ-			(#const SDL_HAPTIC_SAWTOOTHUP) -> hapticperiodic $ HapticPeriodic typ-			(#const SDL_HAPTIC_SAWTOOTHDOWN) -> hapticperiodic $ HapticPeriodic typ--			(#const SDL_HAPTIC_RAMP) -> do-				direction <- (#peek SDL_HapticEffect, ramp.direction) ptr-				len <- (#peek SDL_HapticEffect, ramp.length) ptr-				delay <- (#peek SDL_HapticEffect, ramp.delay) ptr-				button <- (#peek SDL_HapticEffect, ramp.button) ptr-				interval <- (#peek SDL_HapticEffect, ramp.interval) ptr-				start <- (#peek SDL_HapticEffect, ramp.start) ptr-				end <- (#peek SDL_HapticEffect, ramp.end) ptr-				attack_length <- (#peek SDL_HapticEffect, ramp.attack_length) ptr-				attack_level <- (#peek SDL_HapticEffect, ramp.attack_level) ptr-				fade_length <- (#peek SDL_HapticEffect, ramp.fade_length) ptr-				fade_level <- (#peek SDL_HapticEffect, ramp.fade_level) ptr-				return $! HapticRamp typ direction len delay button interval start end attack_length attack_level fade_length fade_level--			(#const SDL_HAPTIC_SPRING) -> hapticcondition $ HapticCondition typ-			(#const SDL_HAPTIC_DAMPER) -> hapticcondition $ HapticCondition typ-			(#const SDL_HAPTIC_INERTIA) -> hapticcondition $ HapticCondition typ-			(#const SDL_HAPTIC_FRICTION) -> hapticcondition $ HapticCondition typ--			(#const SDL_HAPTIC_LEFTRIGHT) -> do-				len <- (#peek SDL_HapticEffect, leftright.length) ptr-				large_magnitude <- (#peek SDL_HapticEffect, leftright.large_magnitude) ptr-				small_magnitude <- (#peek SDL_HapticEffect, leftright.small_magnitude) ptr-				return $! HapticLeftRight typ len large_magnitude small_magnitude--			(#const SDL_HAPTIC_CUSTOM) -> do-				direction <- (#peek SDL_HapticEffect, custom.direction) ptr-				len <- (#peek SDL_HapticEffect, custom.length) ptr-				delay <- (#peek SDL_HapticEffect, custom.delay) ptr-				button <- (#peek SDL_HapticEffect, custom.button) ptr-				interval <- (#peek SDL_HapticEffect, custom.interval) ptr-				channels <- (#peek SDL_HapticEffect, custom.channels) ptr-				period <- (#peek SDL_HapticEffect, custom.period) ptr-				samples <- (#peek SDL_HapticEffect, custom.samples) ptr-				datum <- (#peek SDL_HapticEffect, custom.data) ptr-				attack_length <- (#peek SDL_HapticEffect, custom.attack_length) ptr-				attack_level <- (#peek SDL_HapticEffect, custom.attack_level) ptr-				fade_length <- (#peek SDL_HapticEffect, custom.fade_length) ptr-				fade_level <- (#peek SDL_HapticEffect, custom.fade_level) ptr-				return $! HapticCustom typ direction len delay button interval channels period samples datum attack_length attack_level fade_length fade_level-			_ -> error $ "Unknown type " ++ show typ ++ " for SDL_HapticEffect"-		where-		hapticperiodic f = do-			direction <- (#peek SDL_HapticEffect, periodic.direction) ptr-			len <- (#peek SDL_HapticEffect, periodic.length) ptr-			delay <- (#peek SDL_HapticEffect, periodic.delay) ptr-			button <- (#peek SDL_HapticEffect, periodic.button) ptr-			interval <- (#peek SDL_HapticEffect, periodic.interval) ptr-			period <- (#peek SDL_HapticEffect, periodic.period) ptr-			magnitude <- (#peek SDL_HapticEffect, periodic.magnitude) ptr-			offset <- (#peek SDL_HapticEffect, periodic.offset) ptr-			phase <- (#peek SDL_HapticEffect, periodic.phase) ptr-			attack_length <- (#peek SDL_HapticEffect, periodic.attack_length) ptr-			attack_level <- (#peek SDL_HapticEffect, periodic.attack_level) ptr-			fade_length <- (#peek SDL_HapticEffect, periodic.fade_length) ptr-			fade_level <- (#peek SDL_HapticEffect, periodic.fade_level) ptr-			return $! f direction len delay button interval period magnitude offset phase attack_length attack_level fade_length fade_level--		hapticcondition f = do-			len <- (#peek SDL_HapticEffect, condition.length) ptr-			delay <- (#peek SDL_HapticEffect, condition.delay) ptr-			button <- (#peek SDL_HapticEffect, condition.button) ptr-			interval <- (#peek SDL_HapticEffect, condition.interval) ptr-			right_sat <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.right_sat) ptr-			left_sat <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.left_sat) ptr-			right_coeff <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.right_coeff) ptr-			left_coeff <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.left_coeff) ptr-			deadband <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.deadband) ptr-			center <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.center) ptr-			return $! f len delay button interval right_sat left_sat right_coeff left_coeff deadband center-	poke ptr event = case event of-		HapticConstant typ direction len delay button interval level attack_length attack_level fade_length fade_level -> do-			(#poke SDL_HapticEffect, type) ptr typ-			(#poke SDL_HapticEffect, constant.direction) ptr direction-			(#poke SDL_HapticEffect, constant.length) ptr len-			(#poke SDL_HapticEffect, constant.delay) ptr delay-			(#poke SDL_HapticEffect, constant.button) ptr button-			(#poke SDL_HapticEffect, constant.interval) ptr interval-			(#poke SDL_HapticEffect, constant.level) ptr level-			(#poke SDL_HapticEffect, constant.attack_length) ptr attack_length-			(#poke SDL_HapticEffect, constant.attack_level) ptr attack_level-			(#poke SDL_HapticEffect, constant.fade_length) ptr fade_length-			(#poke SDL_HapticEffect, constant.fade_level) ptr fade_level-		HapticPeriodic typ direction len delay button interval period magnitude offset phase attack_length attack_level fade_length fade_level -> do-			(#poke SDL_HapticEffect, type) ptr typ-			(#poke SDL_HapticEffect, periodic.direction) ptr direction-			(#poke SDL_HapticEffect, periodic.length) ptr len-			(#poke SDL_HapticEffect, periodic.delay) ptr delay-			(#poke SDL_HapticEffect, periodic.button) ptr button-			(#poke SDL_HapticEffect, periodic.interval) ptr interval-			(#poke SDL_HapticEffect, periodic.period) ptr period-			(#poke SDL_HapticEffect, periodic.magnitude) ptr magnitude-			(#poke SDL_HapticEffect, periodic.offset) ptr offset-			(#poke SDL_HapticEffect, periodic.phase) ptr phase-			(#poke SDL_HapticEffect, periodic.attack_length) ptr attack_length-			(#poke SDL_HapticEffect, periodic.attack_level) ptr attack_level-			(#poke SDL_HapticEffect, periodic.fade_length) ptr fade_length-			(#poke SDL_HapticEffect, periodic.fade_level) ptr fade_level-		HapticCondition typ len delay button interval right_sat left_sat right_coeff left_coeff deadband center -> do-			(#poke SDL_HapticEffect, type) ptr typ-			(#poke SDL_HapticEffect, condition.length) ptr len-			(#poke SDL_HapticEffect, condition.delay) ptr delay-			(#poke SDL_HapticEffect, condition.button) ptr button-			(#poke SDL_HapticEffect, condition.interval) ptr interval-			pokeArray ((#ptr SDL_HapticEffect, condition.right_sat) ptr) right_sat-			pokeArray ((#ptr SDL_HapticEffect, condition.left_sat) ptr) left_sat-			pokeArray ((#ptr SDL_HapticEffect, condition.right_coeff) ptr) right_coeff-			pokeArray ((#ptr SDL_HapticEffect, condition.left_coeff) ptr) left_coeff-			pokeArray ((#ptr SDL_HapticEffect, condition.deadband) ptr) deadband-			pokeArray ((#ptr SDL_HapticEffect, condition.center) ptr) center-		HapticRamp typ direction len delay button interval start end attack_length attack_level fade_length fade_level -> do-			(#poke SDL_HapticEffect, type) ptr typ-			(#poke SDL_HapticEffect, ramp.direction) ptr direction-			(#poke SDL_HapticEffect, ramp.length) ptr len-			(#poke SDL_HapticEffect, ramp.delay) ptr delay-			(#poke SDL_HapticEffect, ramp.button) ptr button-			(#poke SDL_HapticEffect, ramp.interval) ptr interval-			(#poke SDL_HapticEffect, ramp.start) ptr start-			(#poke SDL_HapticEffect, ramp.end) ptr end-			(#poke SDL_HapticEffect, ramp.attack_length) ptr attack_length-			(#poke SDL_HapticEffect, ramp.attack_level) ptr attack_level-			(#poke SDL_HapticEffect, ramp.fade_length) ptr fade_length-			(#poke SDL_HapticEffect, ramp.fade_level) ptr fade_level-		HapticLeftRight typ len large_magnitude small_magnitude -> do-			(#poke SDL_HapticEffect, type) ptr typ-			(#poke SDL_HapticEffect, leftright.length) ptr len-			(#poke SDL_HapticEffect, leftright.large_magnitude) ptr large_magnitude-			(#poke SDL_HapticEffect, leftright.small_magnitude) ptr small_magnitude-		HapticCustom typ direction len delay button interval channels period samples datum attack_length attack_level fade_length fade_level -> do-			(#poke SDL_HapticEffect, type) ptr typ-			(#poke SDL_HapticEffect, custom.direction) ptr direction-			(#poke SDL_HapticEffect, custom.length) ptr len-			(#poke SDL_HapticEffect, custom.delay) ptr delay-			(#poke SDL_HapticEffect, custom.button) ptr button-			(#poke SDL_HapticEffect, custom.interval) ptr interval-			(#poke SDL_HapticEffect, custom.channels) ptr channels-			(#poke SDL_HapticEffect, custom.period) ptr period-			(#poke SDL_HapticEffect, custom.samples) ptr samples-			(#poke SDL_HapticEffect, custom.data) ptr datum-			(#poke SDL_HapticEffect, custom.attack_length) ptr attack_length-			(#poke SDL_HapticEffect, custom.attack_level) ptr attack_level-			(#poke SDL_HapticEffect, custom.fade_length) ptr fade_length-			(#poke SDL_HapticEffect, custom.fade_level) ptr fade_level--data JoystickGUID = JoystickGUID {-                    joystickGUID :: [Word8]-                  } deriving (Eq, Show)--instance Storable JoystickGUID where-	sizeOf _ = (#size SDL_JoystickGUID)-	alignment = sizeOf-	peek ptr = do-		guid <- peekArray 16 $ (#ptr SDL_JoystickGUID, data) ptr-		return $! JoystickGUID guid-	poke ptr (JoystickGUID guid) =-		pokeArray ((#ptr SDL_JoystickGUID, data) ptr) guid--data Keysym = Keysym {-              keysymScancode :: Scancode-            , keysymKeycode :: Keycode-            , keysymMod :: Word16-            } deriving (Eq, Show)--instance Storable Keysym where-	sizeOf _ = (#size SDL_Keysym)-	alignment = sizeOf-	peek ptr = do-		scancode <- (#peek SDL_Keysym, scancode) ptr-		sym <- (#peek SDL_Keysym, sym) ptr-		mod' <- (#peek SDL_Keysym, mod) ptr-		return $! Keysym scancode sym mod'-	poke ptr (Keysym scancode sym mod') = do-		(#poke SDL_Keysym, scancode) ptr scancode-		(#poke SDL_Keysym, sym) ptr sym-		(#poke SDL_Keysym, mod) ptr mod'--data MessageBoxButtonData = MessageBoxButtonData {-                            messageBoxButtonDataFlags :: Word32-                          , messageBoxButtonButtonID :: CInt-                          , messageBoxButtonText :: CString-                          } deriving (Eq, Show)--instance Storable MessageBoxButtonData where-	sizeOf _ = (#size SDL_MessageBoxButtonData)-	alignment = sizeOf-	peek ptr = do-		flags <- (#peek SDL_MessageBoxButtonData, flags) ptr-		buttonid <- (#peek SDL_MessageBoxButtonData, buttonid) ptr-		text <- (#peek SDL_MessageBoxButtonData, text) ptr-		return $! MessageBoxButtonData flags buttonid text-	poke ptr (MessageBoxButtonData flags buttonid text) = do-		(#poke SDL_MessageBoxButtonData, flags) ptr flags-		(#poke SDL_MessageBoxButtonData, buttonid) ptr buttonid-		(#poke SDL_MessageBoxButtonData, text) ptr text--data MessageBoxColor = MessageBoxColor {-                       messageBoxColorR :: Word8-                     , messageBoxColorG :: Word8-                     , messageBoxColorB :: Word8-                     } deriving (Eq, Show)--instance Storable MessageBoxColor where-	sizeOf _ = (#size SDL_MessageBoxColor)-	alignment = sizeOf-	peek ptr = do-		r <- (#peek SDL_MessageBoxColor, r) ptr-		g <- (#peek SDL_MessageBoxColor, g) ptr-		b <- (#peek SDL_MessageBoxColor, b) ptr-		return $! MessageBoxColor r g b-	poke ptr (MessageBoxColor r g b) = do-		(#poke SDL_MessageBoxColor, r) ptr r-		(#poke SDL_MessageBoxColor, g) ptr g-		(#poke SDL_MessageBoxColor, b) ptr b--data MessageBoxColorScheme = MessageBoxColorScheme {-                             messageBoxColorSchemeColorBackground :: MessageBoxColor-                           , messageBoxColorSchemeColorText :: MessageBoxColor-                           , messageBoxColorSchemeColorButtonBorder :: MessageBoxColor-                           , messageBoxColorSchemeColorButtonBackground :: MessageBoxColor-                           , messageBoxColorSchemeColorButtonSelected :: MessageBoxColor-                           } deriving (Eq, Show)--instance Storable MessageBoxColorScheme where-	sizeOf _ = (#size SDL_MessageBoxColorScheme)-	alignment = sizeOf-	peek ptr = do-		background <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BACKGROUND]) ptr-		text <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_TEXT]) ptr-		button_border <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER]) ptr-		button_background <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND]) ptr-		button_selected <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED]) ptr-		return $! MessageBoxColorScheme background text button_border button_background button_selected-	poke ptr (MessageBoxColorScheme background text button_border button_background button_selected) = do-		(#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BACKGROUND]) ptr background-		(#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_TEXT]) ptr text-		(#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER]) ptr button_border-		(#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND]) ptr button_background-		(#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED]) ptr button_selected--data MessageBoxData = MessageBoxData {-                      messageBoxDataFlags :: Word32-                    , messageBoxDataWindow :: Window-                    , messageBoxDataTitle :: CString-                    , messageBoxDataMessage :: CString-                    , messageBoxDataNumButtons :: CInt-                    , messageBoxDataButtons :: Ptr MessageBoxButtonData-                    , messageBoxDataColorScheme :: Ptr MessageBoxColorScheme-                    } deriving (Eq, Show)--instance Storable MessageBoxData where-	sizeOf _ = (#size SDL_MessageBoxData)-	alignment = sizeOf-	peek ptr = do-		flags <- (#peek SDL_MessageBoxData, flags) ptr-		window <- (#peek SDL_MessageBoxData, window) ptr-		title <- (#peek SDL_MessageBoxData, title) ptr-		message <- (#peek SDL_MessageBoxData, message) ptr-		numbuttons <- (#peek SDL_MessageBoxData, numbuttons) ptr-		buttons <- (#peek SDL_MessageBoxData, buttons) ptr-		color_scheme <- (#peek SDL_MessageBoxData, colorScheme) ptr-		return $! MessageBoxData flags window title message numbuttons buttons color_scheme-	poke ptr (MessageBoxData flags window title message numbuttons buttons color_scheme) = do-		(#poke SDL_MessageBoxData, flags) ptr flags-		(#poke SDL_MessageBoxData, window) ptr window-		(#poke SDL_MessageBoxData, title) ptr title-		(#poke SDL_MessageBoxData, message) ptr message-		(#poke SDL_MessageBoxData, numbuttons) ptr numbuttons-		(#poke SDL_MessageBoxData, buttons) ptr buttons-		(#poke SDL_MessageBoxData, colorScheme) ptr color_scheme--data Palette = Palette {-               paletteNColors :: CInt-             , paletteColors :: Ptr Color-             } deriving (Eq, Show)--instance Storable Palette where-	sizeOf _ = (#size SDL_Palette)-	alignment = sizeOf-	peek ptr = do-		ncolors <- (#peek SDL_Palette, ncolors) ptr-		colors <- (#peek SDL_Palette, colors) ptr-		return $! Palette ncolors colors-	poke ptr (Palette ncolors colors) = do-		(#poke SDL_Palette, ncolors) ptr ncolors-		(#poke SDL_Palette, colors) ptr colors--data PixelFormat = PixelFormat {-                   pixelFormatFormat :: Word32-                 , pixelFormatPalette :: Ptr Palette-                 , pixelFormatBitsPerPixel :: Word8-                 , pixelFormatBytesPerPixel :: Word8-                 , pixelFormatRMask :: Word32-                 , pixelFormatGMask :: Word32-                 , pixelFormatBMask :: Word32-                 , pixelFormatAMask :: Word32-                 } deriving (Eq, Show)--instance Storable PixelFormat where-	sizeOf _ = (#size SDL_PixelFormat)-	alignment = sizeOf-	peek ptr = do-		format <- (#peek SDL_PixelFormat, format) ptr-		palette <- (#peek SDL_PixelFormat, palette) ptr-		bits_per_pixel <- (#peek SDL_PixelFormat, BitsPerPixel) ptr-		bytes_per_pixel <- (#peek SDL_PixelFormat, BytesPerPixel) ptr-		rmask <- (#peek SDL_PixelFormat, Rmask) ptr-		gmask <- (#peek SDL_PixelFormat, Gmask) ptr-		bmask <- (#peek SDL_PixelFormat, Bmask) ptr-		amask <- (#peek SDL_PixelFormat, Amask) ptr-		return $! PixelFormat format palette bits_per_pixel bytes_per_pixel rmask gmask bmask amask-	poke ptr (PixelFormat format palette bits_per_pixel bytes_per_pixel rmask gmask bmask amask) = do-		(#poke SDL_PixelFormat, format) ptr format-		(#poke SDL_PixelFormat, palette) ptr palette-		(#poke SDL_PixelFormat, BitsPerPixel) ptr bits_per_pixel-		(#poke SDL_PixelFormat, BytesPerPixel) ptr bytes_per_pixel-		(#poke SDL_PixelFormat, Rmask) ptr rmask-		(#poke SDL_PixelFormat, Gmask) ptr gmask-		(#poke SDL_PixelFormat, Bmask) ptr bmask-		(#poke SDL_PixelFormat, Amask) ptr amask--data Point = Point {-             pointX :: CInt-           , pointY :: CInt-           } deriving (Eq, Show)--instance Storable Point where-	sizeOf _ = (#size SDL_Point)-	alignment = sizeOf-	peek ptr = do-		x <- (#peek SDL_Point, x) ptr-		y <- (#peek SDL_Point, y) ptr-		return $! Point x y-	poke ptr (Point x y) = do-		(#poke SDL_Point, x) ptr x-		(#poke SDL_Point, y) ptr y--data Rect = Rect {-            rectX :: CInt-          , rectY :: CInt-          , rectW :: CInt-          , rectH :: CInt-          } deriving (Eq, Show)--instance Storable Rect where-	sizeOf _ = (#size SDL_Rect)-	alignment = sizeOf-	peek ptr = do-		x <- (#peek SDL_Rect, x) ptr-		y <- (#peek SDL_Rect, y) ptr-		w <- (#peek SDL_Rect, w) ptr-		h <- (#peek SDL_Rect, h) ptr-		return $! Rect x y w h-	poke ptr (Rect x y w h) = do-		(#poke SDL_Rect, x) ptr x-		(#poke SDL_Rect, y) ptr y-		(#poke SDL_Rect, w) ptr w-		(#poke SDL_Rect, h) ptr h--data RendererInfo = RendererInfo {-                    rendererInfoName :: CString-                  , rendererInfoFlags :: Word32-                  , rendererInfoNumTextureFormats :: Word32-                  , rendererInfoTextureFormats :: [Word32]-                  , rendererInfoMaxTextureWidth :: CInt-                  , rendererInfoMaxTextureHeight :: CInt-                  } deriving (Eq, Show)--instance Storable RendererInfo where-	sizeOf _ = (#size SDL_RendererInfo)-	alignment = sizeOf-	peek ptr = do-		name <- (#peek SDL_RendererInfo, name) ptr-		flags <- (#peek SDL_RendererInfo, flags) ptr-		num_texture_formats <- (#peek SDL_RendererInfo, num_texture_formats) ptr-		texture_formats <- peekArray 16 $ (#ptr SDL_RendererInfo, texture_formats) ptr-		max_texture_width <- (#peek SDL_RendererInfo, max_texture_width) ptr-		max_texture_height <- (#peek SDL_RendererInfo, max_texture_height) ptr-		return $! RendererInfo name flags num_texture_formats texture_formats max_texture_width max_texture_height-	poke ptr (RendererInfo name flags num_texture_formats texture_formats max_texture_width max_texture_height) = do-		(#poke SDL_RendererInfo, name) ptr name-		(#poke SDL_RendererInfo, flags) ptr flags-		(#poke SDL_RendererInfo, num_texture_formats) ptr num_texture_formats-		pokeArray ((#ptr SDL_RendererInfo, texture_formats) ptr) texture_formats-		(#poke SDL_RendererInfo, max_texture_width) ptr max_texture_width-		(#poke SDL_RendererInfo, max_texture_height) ptr max_texture_height--data RWops = RWops {-             rwopsSize :: FunPtr (Ptr RWops -> IO Int64)-           , rwopsSeek :: FunPtr (Ptr RWops -> Int64 -> CInt -> IO Int64)-           , rwopsRead :: FunPtr (Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize)-           , rwopsWrite :: FunPtr (Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize)-           , rwopsClose :: FunPtr (Ptr RWops -> IO CInt)-           , rwopsType :: Word32-           } deriving (Eq, Show)--instance Storable RWops where-	sizeOf _ = (#size SDL_RWops)-	alignment = sizeOf-	peek ptr = do-		size <- (#peek SDL_RWops, size) ptr-		seek <- (#peek SDL_RWops, seek) ptr-		read' <- (#peek SDL_RWops, read) ptr-		write <- (#peek SDL_RWops, write) ptr-		close <- (#peek SDL_RWops, close) ptr-		typ <- (#peek SDL_RWops, type) ptr-		return $! RWops size seek read' write close typ-	poke ptr (RWops size seek read' write close typ) = do-		(#poke SDL_RWops, size) ptr size-		(#poke SDL_RWops, seek) ptr seek-		(#poke SDL_RWops, read) ptr read'-		(#poke SDL_RWops, write) ptr write-		(#poke SDL_RWops, close) ptr close-		(#poke SDL_RWops, type) ptr typ--data Surface = Surface {-               surfaceFormat :: Ptr PixelFormat-             , surfaceW :: CInt-             , surfaceH :: CInt-             , surfacePixels :: Ptr ()-             , surfaceUserdata :: Ptr ()-             , surfaceClipRect :: Rect-             , surfaceRefcount :: CInt-             } deriving (Eq, Show)--instance Storable Surface where-	sizeOf _ = (#size SDL_Surface)-	alignment = sizeOf-	peek ptr = do-		format <- (#peek SDL_Surface, format) ptr-		w <- (#peek SDL_Surface, w) ptr-		h <- (#peek SDL_Surface, h) ptr-		pixels <- (#peek SDL_Surface, pixels) ptr-		userdata <- (#peek SDL_Surface, userdata) ptr-		cliprect <- (#peek SDL_Surface, clip_rect) ptr-		refcount <- (#peek SDL_Surface, refcount) ptr-		return $! Surface format w h pixels userdata cliprect refcount-	poke ptr (Surface format w h pixels userdata cliprect refcount) = do-		(#poke SDL_Surface, format) ptr format-		(#poke SDL_Surface, w) ptr w-		(#poke SDL_Surface, h) ptr h-		(#poke SDL_Surface, pixels) ptr pixels-		(#poke SDL_Surface, userdata) ptr userdata-		(#poke SDL_Surface, clip_rect) ptr cliprect-		(#poke SDL_Surface, refcount) ptr refcount--data Version = Version {-               versionMajor :: Word8-             , versionMinor :: Word8-             , versionPatch :: Word8-             } deriving (Eq, Show)--instance Storable Version where-	sizeOf _ = (#size SDL_version)-	alignment = sizeOf-	peek ptr = do-		major <- (#peek SDL_version, major) ptr-		minor <- (#peek SDL_version, minor) ptr-		patch <- (#peek SDL_version, patch) ptr-		return $! Version major minor patch-	poke ptr (Version major minor patch) = do-		(#poke SDL_version, major) ptr major-		(#poke SDL_version, minor) ptr minor-		(#poke SDL_version, patch) ptr patch+{-# LANGUAGE DeriveDataTypeable #-}+module Graphics.UI.SDL.Types (+  -- * Type Aliases+  -- ** Function Types+  AudioCallback,+  EventFilter,+  HintCallback,+  LogOutputFunction,+  ThreadFunction,+  TimerCallback,++  mkAudioCallback,+  mkEventFilter,+  mkHintCallback,+  mkLogOutputFunction,+  mkThreadFunction,+  mkTimerCallback,++  -- ** Common Types+  AudioDeviceID,+  AudioFormat,+  Cond,+  Cursor,+  FingerID,+  GameController,+  GestureID,+  GLContext,+  Haptic,+  Joystick,+  JoystickID,+  Mutex,+  Renderer,+  Sem,+  SpinLock,+  SysWMinfo,+  SysWMmsg,+  Texture,+  Thread,+  ThreadID,+  TimerID,+  TLSID,+  TouchID,+  Window,++  -- * Data Structures+  Atomic(..),+  AudioCVT(..),+  AudioSpec(..),+  Color(..),+  DisplayMode(..),+  Event(..),+  Finger(..),+  GameControllerButtonBind(..),+  HapticDirection(..),+  HapticEffect(..),+  JoystickGUID(..),+  Keysym(..),+  MessageBoxButtonData(..),+  MessageBoxColor(..),+  MessageBoxColorScheme(..),+  MessageBoxData(..),+  Palette(..),+  PixelFormat(..),+  Point(..),+  Rect(..),+  RendererInfo(..),+  RWops(..),+  Surface(..),+  Version(..)+) where++#include "SDL.h"++import Data.Int+import Data.Typeable+import Data.Word+import Foreign.C.String+import Foreign.C.Types+import Foreign.Marshal.Array+import Foreign.Ptr+import Foreign.Storable+import Graphics.UI.SDL.Enum++type AudioCallback = FunPtr (Ptr () -> Ptr Word8 -> CInt -> IO ())+type EventFilter = FunPtr (Ptr () -> Ptr Event -> IO CInt)+type HintCallback = FunPtr (Ptr () -> CString -> CString -> CString -> IO ())+type LogOutputFunction = FunPtr (Ptr () -> CInt -> LogPriority -> CString -> IO ())+type ThreadFunction = FunPtr (Ptr () -> IO CInt)+type TimerCallback = FunPtr (Word32 -> Ptr () -> IO Word32)++-- | The storage associated with the resulting 'FunPtr' has to be released with+-- 'freeHaskellFunPtr' when it is no longer required.+foreign import ccall "wrapper"+  mkAudioCallback :: (Ptr () -> Ptr Word8 -> CInt -> IO ()) -> IO AudioCallback++-- | The storage associated with the resulting 'FunPtr' has to be released with+-- 'freeHaskellFunPtr' when it is no longer required.+foreign import ccall "wrapper"+  mkEventFilter :: (Ptr () -> Ptr Event -> IO CInt) -> IO EventFilter++-- | The storage associated with the resulting 'FunPtr' has to be released with+-- 'freeHaskellFunPtr' when it is no longer required.+foreign import ccall "wrapper"+  mkHintCallback :: (Ptr () -> CString -> CString -> CString -> IO ()) -> IO HintCallback++-- | The storage associated with the resulting 'FunPtr' has to be released with+-- 'freeHaskellFunPtr' when it is no longer required.+foreign import ccall "wrapper"+  mkLogOutputFunction :: (Ptr () -> CInt -> LogPriority -> CString -> IO ()) -> IO LogOutputFunction++-- | The storage associated with the resulting 'FunPtr' has to be released with+-- 'freeHaskellFunPtr' when it is no longer required.+foreign import ccall "wrapper"+  mkThreadFunction :: (Ptr () -> IO CInt) -> IO ThreadFunction++-- | The storage associated with the resulting 'FunPtr' has to be released with+-- 'freeHaskellFunPtr' when it is no longer required.+foreign import ccall "wrapper"+  mkTimerCallback :: (Word32 -> Ptr () -> IO Word32) -> IO TimerCallback++type AudioDeviceID = Word32+type AudioFormat = Word16+type Cond = Ptr ()+type Cursor = Ptr ()+type FingerID = Int64+type GameController = Ptr ()+type GestureID = Int64+type GLContext = Ptr ()+type Haptic = Ptr ()+type Joystick = Ptr ()+type JoystickID = Int32+type Mutex = Ptr ()+type Renderer = Ptr ()+type Sem = Ptr ()+type SpinLock = CInt+type SysWMinfo = Ptr ()+type SysWMmsg = Ptr ()+type Texture = Ptr ()+type Thread = Ptr ()+type ThreadID = CULong+type TimerID = CInt+type TLSID = CUInt+type TouchID = Int64+type Window = Ptr ()++data Atomic = Atomic+  { atomicValue :: !CInt+  } deriving (Eq, Show, Typeable)++instance Storable Atomic where+  sizeOf _ = (#size SDL_atomic_t)+  alignment = sizeOf+  peek ptr = do+    value <- (#peek SDL_atomic_t, value) ptr+    return $! Atomic value+  poke ptr (Atomic value) = do+    (#poke SDL_atomic_t, value) ptr value++data AudioCVT = AudioCVT+  { audioCVTNeeded :: !CInt+  , audioCVTSrcFormat :: !AudioFormat+  , audioCVTDstFormat :: !AudioFormat+  , audioCVTRateIncr :: !CDouble+  , audioCVTBuf :: !(Ptr Word8)+  , audioCVTLen :: !CInt+  , audioCVTLenCvt :: !CInt+  , audioCVTLenMult :: !CInt+  , audioCVTLenRatio :: !CDouble+  } deriving (Eq, Show, Typeable)++instance Storable AudioCVT where+  sizeOf _ = (#size SDL_AudioCVT)+  alignment = sizeOf+  peek ptr = do+    needed <- (#peek SDL_AudioCVT, needed) ptr+    src_format <- (#peek SDL_AudioCVT, src_format) ptr+    dst_format <- (#peek SDL_AudioCVT, dst_format) ptr+    rate_incr <- (#peek SDL_AudioCVT, rate_incr) ptr+    buf <- (#peek SDL_AudioCVT, buf) ptr+    len <- (#peek SDL_AudioCVT, len) ptr+    len_cvt <- (#peek SDL_AudioCVT, len_cvt) ptr+    len_mult <- (#peek SDL_AudioCVT, len_mult) ptr+    len_ratio <- (#peek SDL_AudioCVT, len_ratio) ptr+    return $! AudioCVT needed src_format dst_format rate_incr buf len len_cvt len_mult len_ratio+  poke ptr (AudioCVT needed src_format dst_format rate_incr buf len len_cvt len_mult len_ratio) = do+    (#poke SDL_AudioCVT, needed) ptr needed+    (#poke SDL_AudioCVT, src_format) ptr src_format+    (#poke SDL_AudioCVT, dst_format) ptr dst_format+    (#poke SDL_AudioCVT, rate_incr) ptr rate_incr+    (#poke SDL_AudioCVT, buf) ptr buf+    (#poke SDL_AudioCVT, len) ptr len+    (#poke SDL_AudioCVT, len_cvt) ptr len_cvt+    (#poke SDL_AudioCVT, len_mult) ptr len_mult+    (#poke SDL_AudioCVT, len_ratio) ptr len_ratio++data AudioSpec = AudioSpec+  { audioSpecFreq :: !CInt+  , audioSpecFormat :: !AudioFormat+  , audioSpecChannels :: !Word8+  , audioSpecSilence :: !Word8+  , audioSpecSamples :: !Word16+  , audioSpecSize :: !Word32+  , audioSpecCallback :: !AudioCallback+  , audioSpecUserdata :: !(Ptr ())+  } deriving (Eq, Show, Typeable)++instance Storable AudioSpec where+  sizeOf _ = (#size SDL_AudioSpec)+  alignment = sizeOf+  peek ptr = do+    freq <- (#peek SDL_AudioSpec, freq) ptr+    format <- (#peek SDL_AudioSpec, format) ptr+    channels <- (#peek SDL_AudioSpec, channels) ptr+    silence <- (#peek SDL_AudioSpec, silence) ptr+    samples <- (#peek SDL_AudioSpec, samples) ptr+    size <- (#peek SDL_AudioSpec, size) ptr+    callback <- (#peek SDL_AudioSpec, callback) ptr+    userdata <- (#peek SDL_AudioSpec, userdata) ptr+    return $! AudioSpec freq format channels silence samples size callback userdata+  poke ptr (AudioSpec freq format channels silence samples size callback userdata) = do+    (#poke SDL_AudioSpec, freq) ptr freq+    (#poke SDL_AudioSpec, format) ptr format+    (#poke SDL_AudioSpec, channels) ptr channels+    (#poke SDL_AudioSpec, silence) ptr silence+    (#poke SDL_AudioSpec, samples) ptr samples+    (#poke SDL_AudioSpec, size) ptr size+    (#poke SDL_AudioSpec, callback) ptr callback+    (#poke SDL_AudioSpec, userdata) ptr userdata++data Color = Color+  { colorR :: !Word8+  , colorG :: !Word8+  , colorB :: !Word8+  , colorA :: !Word8+  } deriving (Eq, Show, Typeable)++instance Storable Color where+  sizeOf _ = (#size SDL_Color)+  alignment = sizeOf+  peek ptr = do+    r <- (#peek SDL_Color, r) ptr+    g <- (#peek SDL_Color, g) ptr+    b <- (#peek SDL_Color, b) ptr+    a <- (#peek SDL_Color, a) ptr+    return $! Color r g b a+  poke ptr (Color r g b a) = do+    (#poke SDL_Color, r) ptr r+    (#poke SDL_Color, g) ptr g+    (#poke SDL_Color, b) ptr b+    (#poke SDL_Color, a) ptr a++data DisplayMode = DisplayMode+  { displayModeFormat :: !Word32+  , displayModeW :: !CInt+  , displayModeH :: !CInt+  , displayModeRefreshRate :: !CInt+  , displayModeDriverData :: !(Ptr ())+  } deriving (Eq, Show, Typeable)++instance Storable DisplayMode where+  sizeOf _ = (#size SDL_DisplayMode)+  alignment = sizeOf+  peek ptr = do+    format <- (#peek SDL_DisplayMode, format) ptr+    w <- (#peek SDL_DisplayMode, w) ptr+    h <- (#peek SDL_DisplayMode, h) ptr+    refresh_rate <- (#peek SDL_DisplayMode, refresh_rate) ptr+    driverdata <- (#peek SDL_DisplayMode, driverdata) ptr+    return $! DisplayMode format w h refresh_rate driverdata+  poke ptr (DisplayMode format w h refresh_rate driverdata) = do+    (#poke SDL_DisplayMode, format) ptr format+    (#poke SDL_DisplayMode, w) ptr w+    (#poke SDL_DisplayMode, h) ptr h+    (#poke SDL_DisplayMode, refresh_rate) ptr refresh_rate+    (#poke SDL_DisplayMode, driverdata) ptr driverdata++data Event+  = WindowEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , windowEventWindowID :: !Word32+    , windowEventEvent :: !Word8+    , windowEventData1 :: !Int32+    , windowEventData2 :: !Int32+    }+  | KeyboardEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , keyboardEventWindowID :: !Word32+    , keyboardEventState :: !Word8+    , keyboardEventRepeat :: !Word8+    , keyboardEventKeysym :: !Keysym+    }+  | TextEditingEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , textEditingEventWindowID :: !Word32+    , textEditingEventText :: ![CChar]+    , textEditingEventStart :: !Int32+    , textEditingEventLength :: !Int32+    }+  | TextInputEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , textInputEventWindowID :: !Word32+    , textInputEventText :: ![CChar]+    }+  | MouseMotionEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , mouseMotionEventWindowID :: !Word32+    , mouseMotionEventWhich :: !Word32+    , mouseMotionEventState :: !Word32+    , mouseMotionEventX :: !Int32+    , mouseMotionEventY :: !Int32+    , mouseMotionEventXRel :: !Int32+    , mouseMotionEventYRel :: !Int32+    }+  | MouseButtonEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , mouseButtonEventWindowID :: !Word32+    , mouseButtonEventWhich :: !Word32+    , mouseButtonEventButton :: !Word8+    , mouseButtonEventState :: !Word8+    , mouseButtonEventClicks :: !Word8+    , mouseButtonEventX :: !Int32+    , mouseButtonEventY :: !Int32+    }+  | MouseWheelEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , mouseWheelEventWindowID :: !Word32+    , mouseWheelEventWhich :: !Word32+    , mouseWheelEventX :: !Int32+    , mouseWheelEventY :: !Int32+    }+  | JoyAxisEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , joyAxisEventWhich :: !JoystickID+    , joyAxisEventAxis :: !Word8+    , joyAxisEventValue :: !Int16+    }+  | JoyBallEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , joyBallEventWhich :: !JoystickID+    , joyBallEventBall :: !Word8+    , joyBallEventXRel :: !Int16+    , joyBallEventYRel :: !Int16+    }+  | JoyHatEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , joyHatEventWhich :: !JoystickID+    , joyHatEventHat :: !Word8+    , joyHatEventValue :: !Word8+    }+  | JoyButtonEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , joyButtonEventWhich :: !JoystickID+    , joyButtonEventButton :: !Word8+    , joyButtonEventState :: !Word8+    }+  | JoyDeviceEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , joyDeviceEventWhich :: !Int32+    }+  | ControllerAxisEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , controllerAxisEventWhich :: !JoystickID+    , controllerAxisEventAxis :: !Word8+    , controllerAxisEventValue :: !Int16+    }+  | ControllerButtonEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , controllerButtonEventWhich :: !JoystickID+    , controllerButtonEventButton :: !Word8+    , controllerButtonEventState :: !Word8+    }+  | ControllerDeviceEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , controllerDeviceEventWhich :: !Int32+    }+  | QuitEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    }+  | UserEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , userEventWindowID :: !Word32+    , userEventCode :: !Int32+    , userEventData1 :: !(Ptr ())+    , userEventData2 :: !(Ptr ())+    }+  | SysWMEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , sysWMEventMsg :: !SysWMmsg+    }+  | TouchFingerEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , touchFingerEventTouchID :: !TouchID+    , touchFingerEventFingerID :: !FingerID+    , touchFingerEventX :: !CFloat+    , touchFingerEventY :: !CFloat+    , touchFingerEventDX :: !CFloat+    , touchFingerEventDY :: !CFloat+    , touchFingerEventPressure :: !CFloat+    }+  | MultiGestureEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , multiGestureEventTouchID :: !TouchID+    , multiGestureEventDTheta :: !CFloat+    , multiGestureEventDDist :: !CFloat+    , multiGestureEventX :: !CFloat+    , multiGestureEventY :: !CFloat+    , multiGestureEventNumFingers :: !Word16+    }+  | DollarGestureEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , dollarGestureEventTouchID :: !TouchID+    , dollarGestureEventGestureID :: !GestureID+    , dollarGestureEventNumFingers :: !Word32+    , dollarGestureEventError :: !CFloat+    , dollarGestureEventX :: !CFloat+    , dollarGestureEventY :: !CFloat+    }+  | DropEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    , dropEventFile :: !CString+    }+  | ClipboardUpdateEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    }+  | UnknownEvent+    { eventType :: !Word32+    , eventTimestamp :: !Word32+    }+  deriving (Eq, Show, Typeable)++instance Storable Event where+  sizeOf _ = (#size SDL_Event)+  alignment = sizeOf+  peek ptr = do+    typ <- (#peek SDL_Event, common.type) ptr+    timestamp <- (#peek SDL_Event, common.timestamp) ptr+    case typ of+      (#const SDL_QUIT) ->+        return $! QuitEvent typ timestamp+      (#const SDL_WINDOWEVENT) -> do+        wid <- (#peek SDL_Event, window.windowID) ptr+        event <- (#peek SDL_Event, window.event) ptr+        data1 <- (#peek SDL_Event, window.data1) ptr+        data2 <- (#peek SDL_Event, window.data2) ptr+        return $! WindowEvent typ timestamp wid event data1 data2+      (#const SDL_SYSWMEVENT) -> do+        msg <- (#peek SDL_Event, syswm.msg) ptr+        return $! SysWMEvent typ timestamp msg+      (#const SDL_KEYDOWN) -> key $ KeyboardEvent typ timestamp+      (#const SDL_KEYUP) -> key $ KeyboardEvent typ timestamp+      (#const SDL_TEXTEDITING) -> do+        wid <- (#peek SDL_Event, edit.windowID) ptr+        text <- peekArray (#const SDL_TEXTEDITINGEVENT_TEXT_SIZE) $ (#ptr SDL_Event, edit.text) ptr+        start <- (#peek SDL_Event, edit.start) ptr+        len <- (#peek SDL_Event, edit.length) ptr+        return $! TextEditingEvent typ timestamp wid text start len+      (#const SDL_TEXTINPUT) -> do+        wid <- (#peek SDL_Event, text.windowID) ptr+        text <- peekArray (#const SDL_TEXTINPUTEVENT_TEXT_SIZE) $ (#ptr SDL_Event, text.text) ptr+        return $! TextInputEvent typ timestamp wid text+      (#const SDL_MOUSEMOTION) -> do+        wid <- (#peek SDL_Event, motion.windowID) ptr+        which <- (#peek SDL_Event, motion.which) ptr+        state <- (#peek SDL_Event, motion.state) ptr+        x <- (#peek SDL_Event, motion.x) ptr+        y <- (#peek SDL_Event, motion.y) ptr+        xrel <- (#peek SDL_Event, motion.xrel) ptr+        yrel <- (#peek SDL_Event, motion.yrel) ptr+        return $! MouseMotionEvent typ timestamp wid which state x y xrel yrel+      (#const SDL_MOUSEBUTTONDOWN) -> mouse $ MouseButtonEvent typ timestamp+      (#const SDL_MOUSEBUTTONUP) -> mouse $ MouseButtonEvent typ timestamp+      (#const SDL_MOUSEWHEEL) -> do+        wid <- (#peek SDL_Event, wheel.windowID) ptr+        which <- (#peek SDL_Event, wheel.which) ptr+        x <- (#peek SDL_Event, wheel.x) ptr+        y <- (#peek SDL_Event, wheel.y) ptr+        return $! MouseWheelEvent typ timestamp wid which x y+      (#const SDL_JOYAXISMOTION) -> do+        which <- (#peek SDL_Event, jaxis.which) ptr+        axis <- (#peek SDL_Event, jaxis.axis) ptr+        value <- (#peek SDL_Event, jaxis.value) ptr+        return $! JoyAxisEvent typ timestamp which axis value+      (#const SDL_JOYBALLMOTION) -> do+        which <- (#peek SDL_Event, jball.which) ptr+        ball <- (#peek SDL_Event, jball.ball) ptr+        xrel <- (#peek SDL_Event, jball.xrel) ptr+        yrel <- (#peek SDL_Event, jball.yrel) ptr+        return $! JoyBallEvent typ timestamp which ball xrel yrel+      (#const SDL_JOYHATMOTION) -> do+        which <- (#peek SDL_Event, jhat.which) ptr+        hat <- (#peek SDL_Event, jhat.hat) ptr+        value <- (#peek SDL_Event, jhat.value) ptr+        return $! JoyHatEvent typ timestamp which hat value+      (#const SDL_JOYBUTTONDOWN) -> joybutton $ JoyButtonEvent typ timestamp+      (#const SDL_JOYBUTTONUP) -> joybutton $ JoyButtonEvent typ timestamp+      (#const SDL_JOYDEVICEADDED) -> joydevice $ JoyDeviceEvent typ timestamp+      (#const SDL_JOYDEVICEREMOVED) -> joydevice $ JoyDeviceEvent typ timestamp+      (#const SDL_CONTROLLERAXISMOTION) -> do+        which <- (#peek SDL_Event, caxis.which) ptr+        axis <- (#peek SDL_Event, caxis.axis) ptr+        value <- (#peek SDL_Event, caxis.value) ptr+        return $! ControllerButtonEvent typ timestamp which axis value+      (#const SDL_CONTROLLERBUTTONDOWN) -> controllerbutton $ ControllerButtonEvent typ timestamp+      (#const SDL_CONTROLLERBUTTONUP) -> controllerbutton $ ControllerButtonEvent typ timestamp+      (#const SDL_CONTROLLERDEVICEADDED) -> controllerdevice $ ControllerDeviceEvent typ timestamp+      (#const SDL_CONTROLLERDEVICEREMOVED) -> controllerdevice $ ControllerDeviceEvent typ timestamp+      (#const SDL_CONTROLLERDEVICEREMAPPED) -> controllerdevice $ ControllerDeviceEvent typ timestamp+      (#const SDL_FINGERDOWN) -> finger $ TouchFingerEvent typ timestamp+      (#const SDL_FINGERUP) -> finger $ TouchFingerEvent typ timestamp+      (#const SDL_FINGERMOTION) -> finger $ TouchFingerEvent typ timestamp+      (#const SDL_DOLLARGESTURE) -> dollargesture $ DollarGestureEvent typ timestamp+      (#const SDL_DOLLARRECORD) -> dollargesture $ DollarGestureEvent typ timestamp+      (#const SDL_MULTIGESTURE) -> do+        touchId <- (#peek SDL_Event, mgesture.touchId) ptr+        dTheta <- (#peek SDL_Event, mgesture.dTheta) ptr+        dDist <- (#peek SDL_Event, mgesture.dDist) ptr+        x <- (#peek SDL_Event, mgesture.x) ptr+        y <- (#peek SDL_Event, mgesture.y) ptr+        numFingers <- (#peek SDL_Event, mgesture.numFingers) ptr+        return $! MultiGestureEvent typ timestamp touchId dTheta dDist x y numFingers+      (#const SDL_CLIPBOARDUPDATE) ->+        return $! ClipboardUpdateEvent typ timestamp+      (#const SDL_DROPFILE) -> do+        file <- (#peek SDL_Event, drop.file) ptr+        return $! DropEvent typ timestamp file+      x | x >= (#const SDL_USEREVENT) -> do+        wid <- (#peek SDL_Event, user.windowID) ptr+        code <- (#peek SDL_Event, user.code) ptr+        data1 <- (#peek SDL_Event, user.data1) ptr+        data2 <- (#peek SDL_Event, user.data2) ptr+        return $! UserEvent typ timestamp wid code data1 data2+      _ -> return $! UnknownEvent typ timestamp+    where+    key f = do+      wid <- (#peek SDL_Event, key.windowID) ptr+      state <- (#peek SDL_Event, key.state) ptr+      repeat' <- (#peek SDL_Event, key.repeat) ptr+      keysym <- (#peek SDL_Event, key.keysym) ptr+      return $! f wid state repeat' keysym++    mouse f = do+      wid <- (#peek SDL_Event, button.windowID) ptr+      which <- (#peek SDL_Event, button.which) ptr+      button <- (#peek SDL_Event, button.button) ptr+      state <- (#peek SDL_Event, button.state) ptr+      clicks <- (#peek SDL_Event, button.clicks) ptr+      x <- (#peek SDL_Event, button.x) ptr+      y <- (#peek SDL_Event, button.y) ptr+      return $! f wid which button state clicks x y++    joybutton f = do+      which <- (#peek SDL_Event, jbutton.which) ptr+      button <- (#peek SDL_Event, jbutton.button) ptr+      state <- (#peek SDL_Event, jbutton.state) ptr+      return $! f which button state++    joydevice f = do+      which <- (#peek SDL_Event, jdevice.which) ptr+      return $! f which++    controllerbutton f = do+      which <- (#peek SDL_Event, cbutton.which) ptr+      button <- (#peek SDL_Event, cbutton.button) ptr+      state <- (#peek SDL_Event, cbutton.state) ptr+      return $! f which button state++    controllerdevice f = do+      which <- (#peek SDL_Event, cdevice.which) ptr+      return $! f which++    finger f = do+      touchId <- (#peek SDL_Event, tfinger.touchId) ptr+      fingerId <- (#peek SDL_Event, tfinger.fingerId) ptr+      x <- (#peek SDL_Event, tfinger.x) ptr+      y <- (#peek SDL_Event, tfinger.y) ptr+      dx <- (#peek SDL_Event, tfinger.dx) ptr+      dy <- (#peek SDL_Event, tfinger.dy) ptr+      pressure <- (#peek SDL_Event, tfinger.pressure) ptr+      return $! f touchId fingerId x y dx dy pressure++    dollargesture f = do+      touchId <- (#peek SDL_Event, dgesture.touchId) ptr+      gestureId <- (#peek SDL_Event, dgesture.gestureId) ptr+      numFingers <- (#peek SDL_Event, dgesture.numFingers) ptr+      err <- (#peek SDL_Event, dgesture.error) ptr+      x <- (#peek SDL_Event, dgesture.x) ptr+      y <- (#peek SDL_Event, dgesture.y) ptr+      return $! f touchId gestureId numFingers err x y+  poke ptr ev = case ev of+    WindowEvent typ timestamp wid event data1 data2 -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, window.windowID) ptr wid+      (#poke SDL_Event, window.event) ptr event+      (#poke SDL_Event, window.data1) ptr data1+      (#poke SDL_Event, window.data2) ptr data2+    KeyboardEvent typ timestamp wid state repeat' keysym -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, key.windowID) ptr wid+      (#poke SDL_Event, key.state) ptr state+      (#poke SDL_Event, key.repeat) ptr repeat'+      (#poke SDL_Event, key.keysym) ptr keysym+    TextEditingEvent typ timestamp wid text start len -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, edit.windowID) ptr wid+      pokeArray ((#ptr SDL_Event, edit.text) ptr) text+      (#poke SDL_Event, edit.start) ptr start+      (#poke SDL_Event, edit.length) ptr len+    TextInputEvent typ timestamp wid text -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, text.windowID) ptr wid+      pokeArray ((#ptr SDL_Event, text.text) ptr) text+    MouseMotionEvent typ timestamp wid which state x y xrel yrel -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, motion.windowID) ptr wid+      (#poke SDL_Event, motion.which) ptr which+      (#poke SDL_Event, motion.state) ptr state+      (#poke SDL_Event, motion.x) ptr x+      (#poke SDL_Event, motion.y) ptr y+      (#poke SDL_Event, motion.xrel) ptr xrel+      (#poke SDL_Event, motion.yrel) ptr yrel+    MouseButtonEvent typ timestamp wid which button state clicks x y -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, button.windowID) ptr wid+      (#poke SDL_Event, button.which) ptr which+      (#poke SDL_Event, button.button) ptr button+      (#poke SDL_Event, button.state) ptr state+      (#poke SDL_Event, button.clicks) ptr clicks+      (#poke SDL_Event, button.x) ptr x+      (#poke SDL_Event, button.y) ptr y+    MouseWheelEvent typ timestamp wid which x y -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, wheel.windowID) ptr wid+      (#poke SDL_Event, wheel.which) ptr which+      (#poke SDL_Event, wheel.x) ptr x+      (#poke SDL_Event, wheel.y) ptr y+    JoyAxisEvent typ timestamp which axis value -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, jaxis.which) ptr which+      (#poke SDL_Event, jaxis.axis) ptr axis+      (#poke SDL_Event, jaxis.value) ptr value+    JoyBallEvent typ timestamp which ball xrel yrel -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, jball.which) ptr which+      (#poke SDL_Event, jball.ball) ptr ball+      (#poke SDL_Event, jball.xrel) ptr xrel+      (#poke SDL_Event, jball.yrel) ptr yrel+    JoyHatEvent typ timestamp which hat value -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, jhat.which) ptr which+      (#poke SDL_Event, jhat.hat) ptr hat+      (#poke SDL_Event, jhat.value) ptr value+    JoyButtonEvent typ timestamp which button state -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, jbutton.which) ptr which+      (#poke SDL_Event, jbutton.button) ptr button+      (#poke SDL_Event, jbutton.state) ptr state+    JoyDeviceEvent typ timestamp which -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, jdevice.which) ptr which+    ControllerAxisEvent typ timestamp which axis value -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, caxis.which) ptr which+      (#poke SDL_Event, caxis.axis) ptr axis+      (#poke SDL_Event, caxis.value) ptr value+    ControllerButtonEvent typ timestamp which button state -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, cbutton.which) ptr which+      (#poke SDL_Event, cbutton.button) ptr button+      (#poke SDL_Event, cbutton.state) ptr state+    ControllerDeviceEvent typ timestamp which -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, cdevice.which) ptr which+    QuitEvent typ timestamp -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+    UserEvent typ timestamp wid code data1 data2 -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, user.windowID) ptr wid+      (#poke SDL_Event, user.code) ptr code+      (#poke SDL_Event, user.data1) ptr data1+      (#poke SDL_Event, user.data2) ptr data2+    SysWMEvent typ timestamp msg -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, syswm.msg) ptr msg+    TouchFingerEvent typ timestamp touchid fingerid x y dx dy pressure -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, tfinger.touchId) ptr touchid+      (#poke SDL_Event, tfinger.fingerId) ptr fingerid+      (#poke SDL_Event, tfinger.x) ptr x+      (#poke SDL_Event, tfinger.y) ptr y+      (#poke SDL_Event, tfinger.dx) ptr dx+      (#poke SDL_Event, tfinger.dy) ptr dy+      (#poke SDL_Event, tfinger.pressure) ptr pressure+    MultiGestureEvent typ timestamp touchid dtheta ddist x y numfingers -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, mgesture.touchId) ptr touchid+      (#poke SDL_Event, mgesture.dTheta) ptr dtheta+      (#poke SDL_Event, mgesture.dDist) ptr ddist+      (#poke SDL_Event, mgesture.x) ptr x+      (#poke SDL_Event, mgesture.y) ptr y+      (#poke SDL_Event, mgesture.numFingers) ptr numfingers+    DollarGestureEvent typ timestamp touchid gestureid numfingers err x y -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, dgesture.touchId) ptr touchid+      (#poke SDL_Event, dgesture.gestureId) ptr gestureid+      (#poke SDL_Event, dgesture.numFingers) ptr numfingers+      (#poke SDL_Event, dgesture.error) ptr err+      (#poke SDL_Event, dgesture.x) ptr x+      (#poke SDL_Event, dgesture.y) ptr y+    ClipboardUpdateEvent typ timestamp -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+    DropEvent typ timestamp file -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp+      (#poke SDL_Event, drop.file) ptr file+    UnknownEvent typ timestamp -> do+      (#poke SDL_Event, common.type) ptr typ+      (#poke SDL_Event, common.timestamp) ptr timestamp++data Finger = Finger+  { fingerID :: !FingerID+  , fingerX :: !CFloat+  , fingerY :: !CFloat+  , fingerPressure :: !CFloat+  } deriving (Eq, Show, Typeable)++instance Storable Finger where+  sizeOf _ = (#size SDL_Finger)+  alignment = sizeOf+  peek ptr = do+    fingerId <- (#peek SDL_Finger, id) ptr+    x <- (#peek SDL_Finger, x) ptr+    y <- (#peek SDL_Finger, y) ptr+    pressure <- (#peek SDL_Finger, pressure) ptr+    return $! Finger fingerId x y pressure+  poke ptr (Finger fingerId x y pressure) = do+    (#poke SDL_Finger, id) ptr fingerId+    (#poke SDL_Finger, x) ptr x+    (#poke SDL_Finger, y) ptr y+    (#poke SDL_Finger, pressure) ptr pressure++data GameControllerButtonBind+  = GameControllerButtonBindNone+  | GameControllerButtonBindButton+    { gameControllerButtonBindButton :: !CInt+    }+  | GameControllerButtonBindAxis+    { gameControllerButtonBindAxis :: !CInt+    }+  | GameControllerButtonBindHat+    { gameControllerButtonBindHat :: !CInt+    , gameControllerButtonBindHatMask :: !CInt+    }+  deriving (Eq, Show, Typeable)++instance Storable GameControllerButtonBind where+  sizeOf _ = (#size SDL_GameControllerButtonBind)+  alignment = sizeOf+  peek ptr = do+    bind_type <- (#peek SDL_GameControllerButtonBind, bindType) ptr+    case bind_type :: (#type SDL_GameControllerBindType) of+      (#const SDL_CONTROLLER_BINDTYPE_NONE) -> do+        return $! GameControllerButtonBindNone+      (#const SDL_CONTROLLER_BINDTYPE_BUTTON) -> do+        button <- (#peek SDL_GameControllerButtonBind, value.button) ptr+        return $! GameControllerButtonBindButton button+      (#const SDL_CONTROLLER_BINDTYPE_AXIS) -> do+        axis <- (#peek SDL_GameControllerButtonBind, value.axis) ptr+        return $! GameControllerButtonBindAxis axis+      (#const SDL_CONTROLLER_BINDTYPE_HAT) -> do+        hat <- (#peek SDL_GameControllerButtonBind, value.hat.hat) ptr+        hat_mask <- (#peek SDL_GameControllerButtonBind, value.hat.hat_mask) ptr+        return $! GameControllerButtonBindHat hat hat_mask+      _ -> error $ "Unknown type " ++ show bind_type ++ " for SDL_GameControllerButtonBind"+  poke ptr bind = case bind of+    GameControllerButtonBindNone -> do+      (#poke SDL_GameControllerButtonBind, bindType) ptr ((#const SDL_CONTROLLER_BINDTYPE_NONE) :: (#type SDL_GameControllerBindType))+    GameControllerButtonBindButton button -> do+      (#poke SDL_GameControllerButtonBind, bindType) ptr ((#const SDL_CONTROLLER_BINDTYPE_BUTTON) :: (#type SDL_GameControllerBindType))+      (#poke SDL_GameControllerButtonBind, value.button) ptr button+    GameControllerButtonBindAxis axis -> do+      (#poke SDL_GameControllerButtonBind, bindType) ptr ((#const SDL_CONTROLLER_BINDTYPE_AXIS) :: (#type SDL_GameControllerBindType))+      (#poke SDL_GameControllerButtonBind, value.axis) ptr axis+    GameControllerButtonBindHat hat hat_mask -> do+      (#poke SDL_GameControllerButtonBind, bindType) ptr ((#const SDL_CONTROLLER_BINDTYPE_HAT) :: (#type SDL_GameControllerBindType))+      (#poke SDL_GameControllerButtonBind, value.hat.hat) ptr hat+      (#poke SDL_GameControllerButtonBind, value.hat.hat_mask) ptr hat_mask++data HapticDirection = HapticDirection+  { hapticDirectionType :: !Word8+  , hapticDirectionX :: !Int32+  , hapticDirectionY :: !Int32+  , hapticDirectionZ :: !Int32+  } deriving (Eq, Show, Typeable)++instance Storable HapticDirection where+  sizeOf _ = (#size SDL_HapticDirection)+  alignment = sizeOf+  peek ptr = do+    typ <- (#peek SDL_HapticDirection, type) ptr+    x <- (#peek SDL_HapticDirection, dir[0]) ptr+    y <- (#peek SDL_HapticDirection, dir[1]) ptr+    z <- (#peek SDL_HapticDirection, dir[2]) ptr+    return $! HapticDirection typ x y z+  poke ptr (HapticDirection typ x y z) = do+    (#poke SDL_HapticDirection, type) ptr typ+    (#poke SDL_HapticDirection, dir[0]) ptr x+    (#poke SDL_HapticDirection, dir[1]) ptr y+    (#poke SDL_HapticDirection, dir[2]) ptr z++data HapticEffect+  = HapticConstant+    { hapticEffectType :: !Word16+    , hapticConstantDirection :: !HapticDirection+    , hapticConstantLength :: !Word32+    , hapticConstantDelay :: !Word16+    , hapticConstantButton :: !Word16+    , hapticConstantInterval :: !Word16+    , hapticConstantLevel :: !Int16+    , hapticConstantAttackLength :: !Word16+    , hapticConstantAttackLevel :: !Word16+    , hapticConstantFadeLength :: !Word16+    , hapticConstantFadeLevel :: !Word16+    }+  | HapticPeriodic+    { hapticEffectType :: !Word16+    , hapticPeriodicDirection :: !HapticDirection+    , hapticPeriodicLength :: !Word32+    , hapticPeriodicDelay :: !Word16+    , hapticPeriodicButton :: !Word16+    , hapticPeriodicInterval :: !Word16+    , hapticPeriodicPeriod :: !Word16+    , hapticPeriodicMagnitude :: !Int16+    , hapticPeriodicOffset :: !Int16+    , hapticPeriodicPhase :: !Word16+    , hapticPeriodicAttackLength :: !Word16+    , hapticPeriodicAttackLevel :: !Word16+    , hapticPeriodicFadeLength :: !Word16+    , hapticPeriodicFadeLevel :: !Word16+    }+  | HapticCondition+    { hapticEffectType :: !Word16+    , hapticConditionLength :: !Word32+    , hapticConditionDelay :: !Word16+    , hapticConditionButton :: !Word16+    , hapticConditionInterval :: !Word16+    , hapticConditionRightSat :: ![Word16]+    , hapticConditionLeftSat :: ![Word16]+    , hapticConditionRightCoeff :: ![Int16]+    , hapticConditionLeftCoeff :: ![Int16]+    , hapticConditionDeadband :: ![Word16]+    , hapticConditionCenter :: ![Int16]+    }+  | HapticRamp+    { hapticEffectType :: !Word16+    , hapticRampDirection :: !HapticDirection+    , hapticRampLength :: !Word32+    , hapticRampDelay :: !Word16+    , hapticRampButton :: !Word16+    , hapticRampInterval :: !Word16+    , hapticRampStart :: !Int16+    , hapticRampEnd :: !Int16+    , hapticRampAttackLength :: !Word16+    , hapticRampAttackLevel :: !Word16+    , hapticRampFadeLength :: !Word16+    , hapticRampFadeLevel :: !Word16+    }+  | HapticLeftRight+    { hapticEffectType :: !Word16+    , hapticLeftRightLength :: !Word32+    , hapticLeftRightLargeMagnitude :: !Word16+    , hapticLeftRightSmallMagnitude :: !Word16+    }+  | HapticCustom+    { hapticEffectType :: !Word16+    , hapticCustomDirection :: !HapticDirection+    , hapticCustomLength :: !Word32+    , hapticCustomDelay :: !Word16+    , hapticCustomButton :: !Word16+    , hapticCustomInterval :: !Word16+    , hapticCustomChannels :: !Word8+    , hapticCustomPeriod :: !Word16+    , hapticCustomSamples :: !Word16+    , hapticCustomData :: !(Ptr Word16)+    , hapticCustomAttackLength :: !Word16+    , hapticCustomAttackLevel :: !Word16+    , hapticCustomFadeLength :: !Word16+    , hapticCustomFadeLevel :: !Word16+    }+  deriving (Eq, Show, Typeable)++instance Storable HapticEffect where+  sizeOf _ = (#size SDL_HapticEffect)+  alignment = sizeOf+  peek ptr = do+    typ <- (#peek SDL_HapticEffect, type) ptr+    case typ of+      (#const SDL_HAPTIC_CONSTANT) -> do+        direction <- (#peek SDL_HapticEffect, constant.direction) ptr+        len <- (#peek SDL_HapticEffect, constant.length) ptr+        delay <- (#peek SDL_HapticEffect, constant.delay) ptr+        button <- (#peek SDL_HapticEffect, constant.button) ptr+        interval <- (#peek SDL_HapticEffect, constant.interval) ptr+        level <- (#peek SDL_HapticEffect, constant.level) ptr+        attack_length <- (#peek SDL_HapticEffect, constant.attack_length) ptr+        attack_level <- (#peek SDL_HapticEffect, constant.attack_level) ptr+        fade_length <- (#peek SDL_HapticEffect, constant.fade_length) ptr+        fade_level <- (#peek SDL_HapticEffect, constant.fade_level) ptr+        return $! HapticConstant typ direction len delay button interval level attack_length attack_level fade_length fade_level++      (#const SDL_HAPTIC_SINE) -> hapticperiodic $ HapticPeriodic typ+      (#const SDL_HAPTIC_TRIANGLE) -> hapticperiodic $ HapticPeriodic typ+      (#const SDL_HAPTIC_SAWTOOTHUP) -> hapticperiodic $ HapticPeriodic typ+      (#const SDL_HAPTIC_SAWTOOTHDOWN) -> hapticperiodic $ HapticPeriodic typ++      (#const SDL_HAPTIC_RAMP) -> do+        direction <- (#peek SDL_HapticEffect, ramp.direction) ptr+        len <- (#peek SDL_HapticEffect, ramp.length) ptr+        delay <- (#peek SDL_HapticEffect, ramp.delay) ptr+        button <- (#peek SDL_HapticEffect, ramp.button) ptr+        interval <- (#peek SDL_HapticEffect, ramp.interval) ptr+        start <- (#peek SDL_HapticEffect, ramp.start) ptr+        end <- (#peek SDL_HapticEffect, ramp.end) ptr+        attack_length <- (#peek SDL_HapticEffect, ramp.attack_length) ptr+        attack_level <- (#peek SDL_HapticEffect, ramp.attack_level) ptr+        fade_length <- (#peek SDL_HapticEffect, ramp.fade_length) ptr+        fade_level <- (#peek SDL_HapticEffect, ramp.fade_level) ptr+        return $! HapticRamp typ direction len delay button interval start end attack_length attack_level fade_length fade_level++      (#const SDL_HAPTIC_SPRING) -> hapticcondition $ HapticCondition typ+      (#const SDL_HAPTIC_DAMPER) -> hapticcondition $ HapticCondition typ+      (#const SDL_HAPTIC_INERTIA) -> hapticcondition $ HapticCondition typ+      (#const SDL_HAPTIC_FRICTION) -> hapticcondition $ HapticCondition typ++      (#const SDL_HAPTIC_LEFTRIGHT) -> do+        len <- (#peek SDL_HapticEffect, leftright.length) ptr+        large_magnitude <- (#peek SDL_HapticEffect, leftright.large_magnitude) ptr+        small_magnitude <- (#peek SDL_HapticEffect, leftright.small_magnitude) ptr+        return $! HapticLeftRight typ len large_magnitude small_magnitude++      (#const SDL_HAPTIC_CUSTOM) -> do+        direction <- (#peek SDL_HapticEffect, custom.direction) ptr+        len <- (#peek SDL_HapticEffect, custom.length) ptr+        delay <- (#peek SDL_HapticEffect, custom.delay) ptr+        button <- (#peek SDL_HapticEffect, custom.button) ptr+        interval <- (#peek SDL_HapticEffect, custom.interval) ptr+        channels <- (#peek SDL_HapticEffect, custom.channels) ptr+        period <- (#peek SDL_HapticEffect, custom.period) ptr+        samples <- (#peek SDL_HapticEffect, custom.samples) ptr+        datum <- (#peek SDL_HapticEffect, custom.data) ptr+        attack_length <- (#peek SDL_HapticEffect, custom.attack_length) ptr+        attack_level <- (#peek SDL_HapticEffect, custom.attack_level) ptr+        fade_length <- (#peek SDL_HapticEffect, custom.fade_length) ptr+        fade_level <- (#peek SDL_HapticEffect, custom.fade_level) ptr+        return $! HapticCustom typ direction len delay button interval channels period samples datum attack_length attack_level fade_length fade_level+      _ -> error $ "Unknown type " ++ show typ ++ " for SDL_HapticEffect"+    where+    hapticperiodic f = do+      direction <- (#peek SDL_HapticEffect, periodic.direction) ptr+      len <- (#peek SDL_HapticEffect, periodic.length) ptr+      delay <- (#peek SDL_HapticEffect, periodic.delay) ptr+      button <- (#peek SDL_HapticEffect, periodic.button) ptr+      interval <- (#peek SDL_HapticEffect, periodic.interval) ptr+      period <- (#peek SDL_HapticEffect, periodic.period) ptr+      magnitude <- (#peek SDL_HapticEffect, periodic.magnitude) ptr+      offset <- (#peek SDL_HapticEffect, periodic.offset) ptr+      phase <- (#peek SDL_HapticEffect, periodic.phase) ptr+      attack_length <- (#peek SDL_HapticEffect, periodic.attack_length) ptr+      attack_level <- (#peek SDL_HapticEffect, periodic.attack_level) ptr+      fade_length <- (#peek SDL_HapticEffect, periodic.fade_length) ptr+      fade_level <- (#peek SDL_HapticEffect, periodic.fade_level) ptr+      return $! f direction len delay button interval period magnitude offset phase attack_length attack_level fade_length fade_level++    hapticcondition f = do+      len <- (#peek SDL_HapticEffect, condition.length) ptr+      delay <- (#peek SDL_HapticEffect, condition.delay) ptr+      button <- (#peek SDL_HapticEffect, condition.button) ptr+      interval <- (#peek SDL_HapticEffect, condition.interval) ptr+      right_sat <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.right_sat) ptr+      left_sat <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.left_sat) ptr+      right_coeff <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.right_coeff) ptr+      left_coeff <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.left_coeff) ptr+      deadband <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.deadband) ptr+      center <- peekArray 3 $ (#ptr SDL_HapticEffect, condition.center) ptr+      return $! f len delay button interval right_sat left_sat right_coeff left_coeff deadband center+  poke ptr event = case event of+    HapticConstant typ direction len delay button interval level attack_length attack_level fade_length fade_level -> do+      (#poke SDL_HapticEffect, type) ptr typ+      (#poke SDL_HapticEffect, constant.direction) ptr direction+      (#poke SDL_HapticEffect, constant.length) ptr len+      (#poke SDL_HapticEffect, constant.delay) ptr delay+      (#poke SDL_HapticEffect, constant.button) ptr button+      (#poke SDL_HapticEffect, constant.interval) ptr interval+      (#poke SDL_HapticEffect, constant.level) ptr level+      (#poke SDL_HapticEffect, constant.attack_length) ptr attack_length+      (#poke SDL_HapticEffect, constant.attack_level) ptr attack_level+      (#poke SDL_HapticEffect, constant.fade_length) ptr fade_length+      (#poke SDL_HapticEffect, constant.fade_level) ptr fade_level+    HapticPeriodic typ direction len delay button interval period magnitude offset phase attack_length attack_level fade_length fade_level -> do+      (#poke SDL_HapticEffect, type) ptr typ+      (#poke SDL_HapticEffect, periodic.direction) ptr direction+      (#poke SDL_HapticEffect, periodic.length) ptr len+      (#poke SDL_HapticEffect, periodic.delay) ptr delay+      (#poke SDL_HapticEffect, periodic.button) ptr button+      (#poke SDL_HapticEffect, periodic.interval) ptr interval+      (#poke SDL_HapticEffect, periodic.period) ptr period+      (#poke SDL_HapticEffect, periodic.magnitude) ptr magnitude+      (#poke SDL_HapticEffect, periodic.offset) ptr offset+      (#poke SDL_HapticEffect, periodic.phase) ptr phase+      (#poke SDL_HapticEffect, periodic.attack_length) ptr attack_length+      (#poke SDL_HapticEffect, periodic.attack_level) ptr attack_level+      (#poke SDL_HapticEffect, periodic.fade_length) ptr fade_length+      (#poke SDL_HapticEffect, periodic.fade_level) ptr fade_level+    HapticCondition typ len delay button interval right_sat left_sat right_coeff left_coeff deadband center -> do+      (#poke SDL_HapticEffect, type) ptr typ+      (#poke SDL_HapticEffect, condition.length) ptr len+      (#poke SDL_HapticEffect, condition.delay) ptr delay+      (#poke SDL_HapticEffect, condition.button) ptr button+      (#poke SDL_HapticEffect, condition.interval) ptr interval+      pokeArray ((#ptr SDL_HapticEffect, condition.right_sat) ptr) right_sat+      pokeArray ((#ptr SDL_HapticEffect, condition.left_sat) ptr) left_sat+      pokeArray ((#ptr SDL_HapticEffect, condition.right_coeff) ptr) right_coeff+      pokeArray ((#ptr SDL_HapticEffect, condition.left_coeff) ptr) left_coeff+      pokeArray ((#ptr SDL_HapticEffect, condition.deadband) ptr) deadband+      pokeArray ((#ptr SDL_HapticEffect, condition.center) ptr) center+    HapticRamp typ direction len delay button interval start end attack_length attack_level fade_length fade_level -> do+      (#poke SDL_HapticEffect, type) ptr typ+      (#poke SDL_HapticEffect, ramp.direction) ptr direction+      (#poke SDL_HapticEffect, ramp.length) ptr len+      (#poke SDL_HapticEffect, ramp.delay) ptr delay+      (#poke SDL_HapticEffect, ramp.button) ptr button+      (#poke SDL_HapticEffect, ramp.interval) ptr interval+      (#poke SDL_HapticEffect, ramp.start) ptr start+      (#poke SDL_HapticEffect, ramp.end) ptr end+      (#poke SDL_HapticEffect, ramp.attack_length) ptr attack_length+      (#poke SDL_HapticEffect, ramp.attack_level) ptr attack_level+      (#poke SDL_HapticEffect, ramp.fade_length) ptr fade_length+      (#poke SDL_HapticEffect, ramp.fade_level) ptr fade_level+    HapticLeftRight typ len large_magnitude small_magnitude -> do+      (#poke SDL_HapticEffect, type) ptr typ+      (#poke SDL_HapticEffect, leftright.length) ptr len+      (#poke SDL_HapticEffect, leftright.large_magnitude) ptr large_magnitude+      (#poke SDL_HapticEffect, leftright.small_magnitude) ptr small_magnitude+    HapticCustom typ direction len delay button interval channels period samples datum attack_length attack_level fade_length fade_level -> do+      (#poke SDL_HapticEffect, type) ptr typ+      (#poke SDL_HapticEffect, custom.direction) ptr direction+      (#poke SDL_HapticEffect, custom.length) ptr len+      (#poke SDL_HapticEffect, custom.delay) ptr delay+      (#poke SDL_HapticEffect, custom.button) ptr button+      (#poke SDL_HapticEffect, custom.interval) ptr interval+      (#poke SDL_HapticEffect, custom.channels) ptr channels+      (#poke SDL_HapticEffect, custom.period) ptr period+      (#poke SDL_HapticEffect, custom.samples) ptr samples+      (#poke SDL_HapticEffect, custom.data) ptr datum+      (#poke SDL_HapticEffect, custom.attack_length) ptr attack_length+      (#poke SDL_HapticEffect, custom.attack_level) ptr attack_level+      (#poke SDL_HapticEffect, custom.fade_length) ptr fade_length+      (#poke SDL_HapticEffect, custom.fade_level) ptr fade_level++data JoystickGUID = JoystickGUID+  { joystickGUID :: ![Word8]+  } deriving (Eq, Show, Typeable)++instance Storable JoystickGUID where+  sizeOf _ = (#size SDL_JoystickGUID)+  alignment = sizeOf+  peek ptr = do+    guid <- peekArray 16 $ (#ptr SDL_JoystickGUID, data) ptr+    return $! JoystickGUID guid+  poke ptr (JoystickGUID guid) =+    pokeArray ((#ptr SDL_JoystickGUID, data) ptr) guid++data Keysym = Keysym+  { keysymScancode :: !Scancode+  , keysymKeycode :: !Keycode+  , keysymMod :: !Word16+  } deriving (Eq, Show, Typeable)++instance Storable Keysym where+  sizeOf _ = (#size SDL_Keysym)+  alignment = sizeOf+  peek ptr = do+    scancode <- (#peek SDL_Keysym, scancode) ptr+    sym <- (#peek SDL_Keysym, sym) ptr+    mod' <- (#peek SDL_Keysym, mod) ptr+    return $! Keysym scancode sym mod'+  poke ptr (Keysym scancode sym mod') = do+    (#poke SDL_Keysym, scancode) ptr scancode+    (#poke SDL_Keysym, sym) ptr sym+    (#poke SDL_Keysym, mod) ptr mod'++data MessageBoxButtonData = MessageBoxButtonData+  { messageBoxButtonDataFlags :: !Word32+  , messageBoxButtonButtonID :: !CInt+  , messageBoxButtonText :: !CString+  } deriving (Eq, Show, Typeable)++instance Storable MessageBoxButtonData where+  sizeOf _ = (#size SDL_MessageBoxButtonData)+  alignment = sizeOf+  peek ptr = do+    flags <- (#peek SDL_MessageBoxButtonData, flags) ptr+    buttonid <- (#peek SDL_MessageBoxButtonData, buttonid) ptr+    text <- (#peek SDL_MessageBoxButtonData, text) ptr+    return $! MessageBoxButtonData flags buttonid text+  poke ptr (MessageBoxButtonData flags buttonid text) = do+    (#poke SDL_MessageBoxButtonData, flags) ptr flags+    (#poke SDL_MessageBoxButtonData, buttonid) ptr buttonid+    (#poke SDL_MessageBoxButtonData, text) ptr text++data MessageBoxColor = MessageBoxColor+  { messageBoxColorR :: !Word8+  , messageBoxColorG :: !Word8+  , messageBoxColorB :: !Word8+  } deriving (Eq, Show, Typeable)++instance Storable MessageBoxColor where+  sizeOf _ = (#size SDL_MessageBoxColor)+  alignment = sizeOf+  peek ptr = do+    r <- (#peek SDL_MessageBoxColor, r) ptr+    g <- (#peek SDL_MessageBoxColor, g) ptr+    b <- (#peek SDL_MessageBoxColor, b) ptr+    return $! MessageBoxColor r g b+  poke ptr (MessageBoxColor r g b) = do+    (#poke SDL_MessageBoxColor, r) ptr r+    (#poke SDL_MessageBoxColor, g) ptr g+    (#poke SDL_MessageBoxColor, b) ptr b++data MessageBoxColorScheme = MessageBoxColorScheme+  { messageBoxColorSchemeColorBackground :: !MessageBoxColor+  , messageBoxColorSchemeColorText :: !MessageBoxColor+  , messageBoxColorSchemeColorButtonBorder :: !MessageBoxColor+  , messageBoxColorSchemeColorButtonBackground :: !MessageBoxColor+  , messageBoxColorSchemeColorButtonSelected :: !MessageBoxColor+  } deriving (Eq, Show, Typeable)++instance Storable MessageBoxColorScheme where+  sizeOf _ = (#size SDL_MessageBoxColorScheme)+  alignment = sizeOf+  peek ptr = do+    background <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BACKGROUND]) ptr+    text <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_TEXT]) ptr+    button_border <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER]) ptr+    button_background <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND]) ptr+    button_selected <- (#peek SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED]) ptr+    return $! MessageBoxColorScheme background text button_border button_background button_selected+  poke ptr (MessageBoxColorScheme background text button_border button_background button_selected) = do+    (#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BACKGROUND]) ptr background+    (#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_TEXT]) ptr text+    (#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER]) ptr button_border+    (#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND]) ptr button_background+    (#poke SDL_MessageBoxColorScheme, colors[SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED]) ptr button_selected++data MessageBoxData = MessageBoxData+  { messageBoxDataFlags :: !Word32+  , messageBoxDataWindow :: !Window+  , messageBoxDataTitle :: !CString+  , messageBoxDataMessage :: !CString+  , messageBoxDataNumButtons :: !CInt+  , messageBoxDataButtons :: !(Ptr MessageBoxButtonData)+  , messageBoxDataColorScheme :: !(Ptr MessageBoxColorScheme)+  } deriving (Eq, Show, Typeable)++instance Storable MessageBoxData where+  sizeOf _ = (#size SDL_MessageBoxData)+  alignment = sizeOf+  peek ptr = do+    flags <- (#peek SDL_MessageBoxData, flags) ptr+    window <- (#peek SDL_MessageBoxData, window) ptr+    title <- (#peek SDL_MessageBoxData, title) ptr+    message <- (#peek SDL_MessageBoxData, message) ptr+    numbuttons <- (#peek SDL_MessageBoxData, numbuttons) ptr+    buttons <- (#peek SDL_MessageBoxData, buttons) ptr+    color_scheme <- (#peek SDL_MessageBoxData, colorScheme) ptr+    return $! MessageBoxData flags window title message numbuttons buttons color_scheme+  poke ptr (MessageBoxData flags window title message numbuttons buttons color_scheme) = do+    (#poke SDL_MessageBoxData, flags) ptr flags+    (#poke SDL_MessageBoxData, window) ptr window+    (#poke SDL_MessageBoxData, title) ptr title+    (#poke SDL_MessageBoxData, message) ptr message+    (#poke SDL_MessageBoxData, numbuttons) ptr numbuttons+    (#poke SDL_MessageBoxData, buttons) ptr buttons+    (#poke SDL_MessageBoxData, colorScheme) ptr color_scheme++data Palette = Palette+  { paletteNColors :: !CInt+  , paletteColors :: !(Ptr Color)+  } deriving (Eq, Show, Typeable)++instance Storable Palette where+  sizeOf _ = (#size SDL_Palette)+  alignment = sizeOf+  peek ptr = do+    ncolors <- (#peek SDL_Palette, ncolors) ptr+    colors <- (#peek SDL_Palette, colors) ptr+    return $! Palette ncolors colors+  poke ptr (Palette ncolors colors) = do+    (#poke SDL_Palette, ncolors) ptr ncolors+    (#poke SDL_Palette, colors) ptr colors++data PixelFormat = PixelFormat+  { pixelFormatFormat :: !Word32+  , pixelFormatPalette :: !(Ptr Palette)+  , pixelFormatBitsPerPixel :: !Word8+  , pixelFormatBytesPerPixel :: !Word8+  , pixelFormatRMask :: !Word32+  , pixelFormatGMask :: !Word32+  , pixelFormatBMask :: !Word32+  , pixelFormatAMask :: !Word32+  } deriving (Eq, Show, Typeable)++instance Storable PixelFormat where+  sizeOf _ = (#size SDL_PixelFormat)+  alignment = sizeOf+  peek ptr = do+    format <- (#peek SDL_PixelFormat, format) ptr+    palette <- (#peek SDL_PixelFormat, palette) ptr+    bits_per_pixel <- (#peek SDL_PixelFormat, BitsPerPixel) ptr+    bytes_per_pixel <- (#peek SDL_PixelFormat, BytesPerPixel) ptr+    rmask <- (#peek SDL_PixelFormat, Rmask) ptr+    gmask <- (#peek SDL_PixelFormat, Gmask) ptr+    bmask <- (#peek SDL_PixelFormat, Bmask) ptr+    amask <- (#peek SDL_PixelFormat, Amask) ptr+    return $! PixelFormat format palette bits_per_pixel bytes_per_pixel rmask gmask bmask amask+  poke ptr (PixelFormat format palette bits_per_pixel bytes_per_pixel rmask gmask bmask amask) = do+    (#poke SDL_PixelFormat, format) ptr format+    (#poke SDL_PixelFormat, palette) ptr palette+    (#poke SDL_PixelFormat, BitsPerPixel) ptr bits_per_pixel+    (#poke SDL_PixelFormat, BytesPerPixel) ptr bytes_per_pixel+    (#poke SDL_PixelFormat, Rmask) ptr rmask+    (#poke SDL_PixelFormat, Gmask) ptr gmask+    (#poke SDL_PixelFormat, Bmask) ptr bmask+    (#poke SDL_PixelFormat, Amask) ptr amask++data Point = Point+  { pointX :: !CInt+  , pointY :: !CInt+  } deriving (Eq, Show, Typeable)++instance Storable Point where+  sizeOf _ = (#size SDL_Point)+  alignment = sizeOf+  peek ptr = do+    x <- (#peek SDL_Point, x) ptr+    y <- (#peek SDL_Point, y) ptr+    return $! Point x y+  poke ptr (Point x y) = do+    (#poke SDL_Point, x) ptr x+    (#poke SDL_Point, y) ptr y++data Rect = Rect+  { rectX :: !CInt+  , rectY :: !CInt+  , rectW :: !CInt+  , rectH :: !CInt+  } deriving (Eq, Show, Typeable)++instance Storable Rect where+  sizeOf _ = (#size SDL_Rect)+  alignment = sizeOf+  peek ptr = do+    x <- (#peek SDL_Rect, x) ptr+    y <- (#peek SDL_Rect, y) ptr+    w <- (#peek SDL_Rect, w) ptr+    h <- (#peek SDL_Rect, h) ptr+    return $! Rect x y w h+  poke ptr (Rect x y w h) = do+    (#poke SDL_Rect, x) ptr x+    (#poke SDL_Rect, y) ptr y+    (#poke SDL_Rect, w) ptr w+    (#poke SDL_Rect, h) ptr h++data RendererInfo = RendererInfo+  { rendererInfoName :: !CString+  , rendererInfoFlags :: !Word32+  , rendererInfoNumTextureFormats :: !Word32+  , rendererInfoTextureFormats :: ![Word32]+  , rendererInfoMaxTextureWidth :: !CInt+  , rendererInfoMaxTextureHeight :: !CInt+  } deriving (Eq, Show, Typeable)++instance Storable RendererInfo where+  sizeOf _ = (#size SDL_RendererInfo)+  alignment = sizeOf+  peek ptr = do+    name <- (#peek SDL_RendererInfo, name) ptr+    flags <- (#peek SDL_RendererInfo, flags) ptr+    num_texture_formats <- (#peek SDL_RendererInfo, num_texture_formats) ptr+    texture_formats <- peekArray 16 $ (#ptr SDL_RendererInfo, texture_formats) ptr+    max_texture_width <- (#peek SDL_RendererInfo, max_texture_width) ptr+    max_texture_height <- (#peek SDL_RendererInfo, max_texture_height) ptr+    return $! RendererInfo name flags num_texture_formats texture_formats max_texture_width max_texture_height+  poke ptr (RendererInfo name flags num_texture_formats texture_formats max_texture_width max_texture_height) = do+    (#poke SDL_RendererInfo, name) ptr name+    (#poke SDL_RendererInfo, flags) ptr flags+    (#poke SDL_RendererInfo, num_texture_formats) ptr num_texture_formats+    pokeArray ((#ptr SDL_RendererInfo, texture_formats) ptr) texture_formats+    (#poke SDL_RendererInfo, max_texture_width) ptr max_texture_width+    (#poke SDL_RendererInfo, max_texture_height) ptr max_texture_height++data RWops = RWops+  { rwopsSize :: !(FunPtr (Ptr RWops -> IO Int64))+  , rwopsSeek :: !(FunPtr (Ptr RWops -> Int64 -> CInt -> IO Int64))+  , rwopsRead :: !(FunPtr (Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize))+  , rwopsWrite :: !(FunPtr (Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize))+  , rwopsClose :: !(FunPtr (Ptr RWops -> IO CInt))+  , rwopsType :: !Word32+  } deriving (Eq, Show, Typeable)++instance Storable RWops where+  sizeOf _ = (#size SDL_RWops)+  alignment = sizeOf+  peek ptr = do+    size <- (#peek SDL_RWops, size) ptr+    seek <- (#peek SDL_RWops, seek) ptr+    read' <- (#peek SDL_RWops, read) ptr+    write <- (#peek SDL_RWops, write) ptr+    close <- (#peek SDL_RWops, close) ptr+    typ <- (#peek SDL_RWops, type) ptr+    return $! RWops size seek read' write close typ+  poke ptr (RWops size seek read' write close typ) = do+    (#poke SDL_RWops, size) ptr size+    (#poke SDL_RWops, seek) ptr seek+    (#poke SDL_RWops, read) ptr read'+    (#poke SDL_RWops, write) ptr write+    (#poke SDL_RWops, close) ptr close+    (#poke SDL_RWops, type) ptr typ++data Surface = Surface+  { surfaceFormat :: !(Ptr PixelFormat)+  , surfaceW :: !CInt+  , surfaceH :: !CInt+  , surfacePixels :: !(Ptr ())+  , surfaceUserdata :: !(Ptr ())+  , surfaceClipRect :: !Rect+  , surfaceRefcount :: !CInt+  } deriving (Eq, Show, Typeable)++instance Storable Surface where+  sizeOf _ = (#size SDL_Surface)+  alignment = sizeOf+  peek ptr = do+    format <- (#peek SDL_Surface, format) ptr+    w <- (#peek SDL_Surface, w) ptr+    h <- (#peek SDL_Surface, h) ptr+    pixels <- (#peek SDL_Surface, pixels) ptr+    userdata <- (#peek SDL_Surface, userdata) ptr+    cliprect <- (#peek SDL_Surface, clip_rect) ptr+    refcount <- (#peek SDL_Surface, refcount) ptr+    return $! Surface format w h pixels userdata cliprect refcount+  poke ptr (Surface format w h pixels userdata cliprect refcount) = do+    (#poke SDL_Surface, format) ptr format+    (#poke SDL_Surface, w) ptr w+    (#poke SDL_Surface, h) ptr h+    (#poke SDL_Surface, pixels) ptr pixels+    (#poke SDL_Surface, userdata) ptr userdata+    (#poke SDL_Surface, clip_rect) ptr cliprect+    (#poke SDL_Surface, refcount) ptr refcount++data Version = Version+  { versionMajor :: !Word8+  , versionMinor :: !Word8+  , versionPatch :: !Word8+  } deriving (Eq, Show, Typeable)++instance Storable Version where+  sizeOf _ = (#size SDL_version)+  alignment = sizeOf+  peek ptr = do+    major <- (#peek SDL_version, major) ptr+    minor <- (#peek SDL_version, minor) ptr+    patch <- (#peek SDL_version, patch) ptr+    return $! Version major minor patch+  poke ptr (Version major minor patch) = do+    (#poke SDL_version, major) ptr major+    (#poke SDL_version, minor) ptr minor+    (#poke SDL_version, patch) ptr patch
Graphics/UI/SDL/Video.hs view
@@ -1,398 +1,1113 @@ module Graphics.UI.SDL.Video (-	-- * Display and Window Management-	createWindow,-	createWindowAndRenderer,-	createWindowFrom,-	destroyWindow,-	disableScreenSaver,-	enableScreenSaver,-	glBindTexture,-	glCreateContext,-	glDeleteContext,-	glExtensionSupported,-	glGetAttribute,-	glGetCurrentContext,-	glGetCurrentWindow,-	glGetDrawableSize,-	glGetProcAddress,-	glGetSwapInterval,-	glLoadLibrary,-	glMakeCurrent,-	glResetAttributes,-	glSetAttribute,-	glSetSwapInterval,-	glSwapWindow,-	glUnbindTexture,-	glUnloadLibrary,-	getClosestDisplayMode,-	getCurrentDisplayMode,-	getCurrentVideoDriver,-	getDesktopDisplayMode,-	getDisplayBounds,-	getDisplayMode,-	getDisplayName,-	getNumDisplayModes,-	getNumVideoDisplays,-	getNumVideoDrivers,-	getVideoDriver,-	getWindowBrightness,-	getWindowData,-	getWindowDisplayIndex,-	getWindowDisplayMode,-	getWindowFlags,-	getWindowFromID,-	getWindowGammaRamp,-	getWindowGrab,-	getWindowID,-	getWindowMaximumSize,-	getWindowMinimumSize,-	getWindowPixelFormat,-	getWindowPosition,-	getWindowSize,-	getWindowSurface,-	getWindowTitle,-	hideWindow,-	isScreenSaverEnabled,-	maximizeWindow,-	minimizeWindow,-	raiseWindow,-	restoreWindow,-	setWindowBordered,-	setWindowBrightness,-	setWindowData,-	setWindowDisplayMode,-	setWindowFullscreen,-	setWindowGammaRamp,-	setWindowGrab,-	setWindowIcon,-	setWindowMaximumSize,-	setWindowMinimumSize,-	setWindowPosition,-	setWindowSize,-	setWindowTitle,-	showMessageBox,-	showSimpleMessageBox,-	showWindow,-	updateWindowSurface,-	updateWindowSurfaceRects,-	videoInit,-	videoQuit,--	-- * 2D Accelerated Rendering-	createRenderer,-	createSoftwareRenderer,-	createTexture,-	createTextureFromSurface,-	destroyRenderer,-	destroyTexture,-	getNumRenderDrivers,-	getRenderDrawBlendMode,-	getRenderDrawColor,-	getRenderDriverInfo,-	getRenderTarget,-	getRenderer,-	getRendererInfo,-	getRendererOutputSize,-	getTextureAlphaMod,-	getTextureBlendMode,-	getTextureColorMod,-	lockTexture,-	queryTexture,-	renderClear,-	renderCopy,-	renderCopyEx,-	renderDrawLine,-	renderDrawLines,-	renderDrawPoint,-	renderDrawPoints,-	renderDrawRect,-	renderDrawRects,-	renderFillRect,-	renderFillRects,-	renderGetClipRect,-	renderGetLogicalSize,-	renderGetScale,-	renderGetViewport,-	renderPresent,-	renderReadPixels,-	renderSetClipRect,-	renderSetLogicalSize,-	renderSetScale,-	renderSetViewport,-	renderTargetSupported,-	setRenderDrawBlendMode,-	setRenderDrawColor,-	setRenderTarget,-	setTextureAlphaMod,-	setTextureBlendMode,-	setTextureColorMod,-	unlockTexture,-	updateTexture,-	updateYUVTexture,--	-- * Pixel Formats and Conversion Routines-	allocFormat,-	allocPalette,-	calculateGammaRamp,-	freeFormat,-	freePalette,-	getPixelFormatName,-	getRGB,-	getRGBA,-	mapRGB,-	mapRGBA,-	masksToPixelFormatEnum,-	pixelFormatEnumToMasks,-	setPaletteColors,-	setPixelFormatPalette,--	-- * Rectangle Functions-	enclosePoints,-	hasIntersection,-	intersectRect,-	intersectRectAndLine,-	unionRect,--	-- * Surface Creation and Simple Drawing-	blitScaled,-	blitSurface,-	convertPixels,-	convertSurface,-	convertSurfaceFormat,-	createRGBSurface,-	createRGBSurfaceFrom,-	fillRect,-	fillRects,-	freeSurface,-	getClipRect,-	getColorKey,-	getSurfaceAlphaMod,-	getSurfaceBlendMode,-	getSurfaceColorMod,-	loadBMP,-	loadBMP_RW,-	lockSurface,-	lowerBlit,-	lowerBlitScaled,-	saveBMP,-	saveBMP_RW,-	setClipRect,-	setColorKey,-	setSurfaceAlphaMod,-	setSurfaceBlendMode,-	setSurfaceColorMod,-	setSurfacePalette,-	setSurfaceRLE,-	unlockSurface,--	-- * Platform-specific Window Management-	getWindowWMInfo,--	-- * Clipboard Handling-	getClipboardText,-	hasClipboardText,-	setClipboardText-) where--import Data.Word-import Foreign.C.String-import Foreign.C.Types-import Foreign.Ptr-import Graphics.UI.SDL.Enum-import Graphics.UI.SDL.Filesystem-import Graphics.UI.SDL.Types--foreign import ccall "SDL.h SDL_CreateWindow" createWindow :: CString -> CInt -> CInt -> CInt -> CInt -> Word32 -> IO Window-foreign import ccall "SDL.h SDL_CreateWindowAndRenderer" createWindowAndRenderer :: CInt -> CInt -> Word32 -> Ptr Window -> Ptr Renderer -> IO CInt-foreign import ccall "SDL.h SDL_CreateWindowFrom" createWindowFrom :: Ptr () -> IO Window-foreign import ccall "SDL.h SDL_DestroyWindow" destroyWindow :: Window -> IO ()-foreign import ccall "SDL.h SDL_DisableScreenSaver" disableScreenSaver :: IO ()-foreign import ccall "SDL.h SDL_EnableScreenSaver" enableScreenSaver :: IO ()-foreign import ccall "SDL.h SDL_GL_BindTexture" glBindTexture :: Texture -> Ptr CFloat -> Ptr CFloat -> IO CInt-foreign import ccall "SDL.h SDL_GL_CreateContext" glCreateContext :: Window -> IO GLContext-foreign import ccall "SDL.h SDL_GL_DeleteContext" glDeleteContext :: GLContext -> IO ()-foreign import ccall "SDL.h SDL_GL_ExtensionSupported" glExtensionSupported :: CString -> IO Bool-foreign import ccall "SDL.h SDL_GL_GetAttribute" glGetAttribute :: GLattr -> Ptr CInt -> IO CInt-foreign import ccall "SDL.h SDL_GL_GetCurrentContext" glGetCurrentContext :: IO GLContext-foreign import ccall "SDL.h SDL_GL_GetCurrentWindow" glGetCurrentWindow :: IO Window-foreign import ccall "SDL.h SDL_GL_GetDrawableSize" glGetDrawableSize :: Window -> Ptr CInt -> Ptr CInt -> IO ()-foreign import ccall "SDL.h SDL_GL_GetProcAddress" glGetProcAddress :: CString -> IO (Ptr ())-foreign import ccall "SDL.h SDL_GL_GetSwapInterval" glGetSwapInterval :: IO CInt-foreign import ccall "SDL.h SDL_GL_LoadLibrary" glLoadLibrary :: CString -> IO CInt-foreign import ccall "SDL.h SDL_GL_MakeCurrent" glMakeCurrent :: Window -> GLContext -> IO CInt-foreign import ccall "SDL.h SDL_GL_ResetAttributes" glResetAttributes :: IO ()-foreign import ccall "SDL.h SDL_GL_SetAttribute" glSetAttribute :: GLattr -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_GL_SetSwapInterval" glSetSwapInterval :: CInt -> IO CInt-foreign import ccall "SDL.h SDL_GL_SwapWindow" glSwapWindow :: Window -> IO ()-foreign import ccall "SDL.h SDL_GL_UnbindTexture" glUnbindTexture :: Texture -> IO CInt-foreign import ccall "SDL.h SDL_GL_UnloadLibrary" glUnloadLibrary :: IO ()-foreign import ccall "SDL.h SDL_GetClosestDisplayMode" getClosestDisplayMode :: CInt -> Ptr DisplayMode -> Ptr DisplayMode -> IO (Ptr DisplayMode)-foreign import ccall "SDL.h SDL_GetCurrentDisplayMode" getCurrentDisplayMode :: CInt -> Ptr DisplayMode -> IO CInt-foreign import ccall "SDL.h SDL_GetCurrentVideoDriver" getCurrentVideoDriver :: IO CString-foreign import ccall "SDL.h SDL_GetDesktopDisplayMode" getDesktopDisplayMode :: CInt -> Ptr DisplayMode -> IO CInt-foreign import ccall "SDL.h SDL_GetDisplayBounds" getDisplayBounds :: CInt -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_GetDisplayMode" getDisplayMode :: CInt -> CInt -> Ptr DisplayMode -> IO CInt-foreign import ccall "SDL.h SDL_GetDisplayName" getDisplayName :: CInt -> IO CString-foreign import ccall "SDL.h SDL_GetNumDisplayModes" getNumDisplayModes :: CInt -> IO CInt-foreign import ccall "SDL.h SDL_GetNumVideoDisplays" getNumVideoDisplays :: IO CInt-foreign import ccall "SDL.h SDL_GetNumVideoDrivers" getNumVideoDrivers :: IO CInt-foreign import ccall "SDL.h SDL_GetVideoDriver" getVideoDriver :: CInt -> IO CString-foreign import ccall "SDL.h SDL_GetWindowBrightness" getWindowBrightness :: Window -> IO CFloat-foreign import ccall "SDL.h SDL_GetWindowData" getWindowData :: Window -> CString -> IO (Ptr ())-foreign import ccall "SDL.h SDL_GetWindowDisplayIndex" getWindowDisplayIndex :: Window -> IO CInt-foreign import ccall "SDL.h SDL_GetWindowDisplayMode" getWindowDisplayMode :: Window -> Ptr DisplayMode -> IO CInt-foreign import ccall "SDL.h SDL_GetWindowFlags" getWindowFlags :: Window -> IO Word32-foreign import ccall "SDL.h SDL_GetWindowFromID" getWindowFromID :: Word32 -> IO Window-foreign import ccall "SDL.h SDL_GetWindowGammaRamp" getWindowGammaRamp :: Window -> Ptr Word16 -> Ptr Word16 -> Ptr Word16 -> IO CInt-foreign import ccall "SDL.h SDL_GetWindowGrab" getWindowGrab :: Window -> IO Bool-foreign import ccall "SDL.h SDL_GetWindowID" getWindowID :: Window -> IO Word32-foreign import ccall "SDL.h SDL_GetWindowMaximumSize" getWindowMaximumSize :: Window -> Ptr CInt -> Ptr CInt -> IO ()-foreign import ccall "SDL.h SDL_GetWindowMinimumSize" getWindowMinimumSize :: Window -> Ptr CInt -> Ptr CInt -> IO ()-foreign import ccall "SDL.h SDL_GetWindowPixelFormat" getWindowPixelFormat :: Window -> IO Word32-foreign import ccall "SDL.h SDL_GetWindowPosition" getWindowPosition :: Window -> Ptr CInt -> Ptr CInt -> IO ()-foreign import ccall "SDL.h SDL_GetWindowSize" getWindowSize :: Window -> Ptr CInt -> Ptr CInt -> IO ()-foreign import ccall "SDL.h SDL_GetWindowSurface" getWindowSurface :: Window -> IO (Ptr Surface)-foreign import ccall "SDL.h SDL_GetWindowTitle" getWindowTitle :: Window -> IO CString-foreign import ccall "SDL.h SDL_HideWindow" hideWindow :: Window -> IO ()-foreign import ccall "SDL.h SDL_IsScreenSaverEnabled" isScreenSaverEnabled :: IO Bool-foreign import ccall "SDL.h SDL_MaximizeWindow" maximizeWindow :: Window -> IO ()-foreign import ccall "SDL.h SDL_MinimizeWindow" minimizeWindow :: Window -> IO ()-foreign import ccall "SDL.h SDL_RaiseWindow" raiseWindow :: Window -> IO ()-foreign import ccall "SDL.h SDL_RestoreWindow" restoreWindow :: Window -> IO ()-foreign import ccall "SDL.h SDL_SetWindowBordered" setWindowBordered :: Window -> Bool -> IO ()-foreign import ccall "SDL.h SDL_SetWindowBrightness" setWindowBrightness :: Window -> CFloat -> IO CInt-foreign import ccall "SDL.h SDL_SetWindowData" setWindowData :: Window -> CString -> Ptr () -> IO (Ptr ())-foreign import ccall "SDL.h SDL_SetWindowDisplayMode" setWindowDisplayMode :: Window -> Ptr DisplayMode -> IO CInt-foreign import ccall "SDL.h SDL_SetWindowFullscreen" setWindowFullscreen :: Window -> Word32 -> IO CInt-foreign import ccall "SDL.h SDL_SetWindowGammaRamp" setWindowGammaRamp :: Window -> Ptr Word16 -> Ptr Word16 -> Ptr Word16 -> IO CInt-foreign import ccall "SDL.h SDL_SetWindowGrab" setWindowGrab :: Window -> Bool -> IO ()-foreign import ccall "SDL.h SDL_SetWindowIcon" setWindowIcon :: Window -> Ptr Surface -> IO ()-foreign import ccall "SDL.h SDL_SetWindowMaximumSize" setWindowMaximumSize :: Window -> CInt -> CInt -> IO ()-foreign import ccall "SDL.h SDL_SetWindowMinimumSize" setWindowMinimumSize :: Window -> CInt -> CInt -> IO ()-foreign import ccall "SDL.h SDL_SetWindowPosition" setWindowPosition :: Window -> CInt -> CInt -> IO ()-foreign import ccall "SDL.h SDL_SetWindowSize" setWindowSize :: Window -> CInt -> CInt -> IO ()-foreign import ccall "SDL.h SDL_SetWindowTitle" setWindowTitle :: Window -> CString -> IO ()-foreign import ccall "SDL.h SDL_ShowMessageBox" showMessageBox :: Ptr MessageBoxData -> Ptr CInt -> IO CInt-foreign import ccall "SDL.h SDL_ShowSimpleMessageBox" showSimpleMessageBox :: Word32 -> CString -> CString -> Window -> IO CInt-foreign import ccall "SDL.h SDL_ShowWindow" showWindow :: Window -> IO ()-foreign import ccall "SDL.h SDL_UpdateWindowSurface" updateWindowSurface :: Window -> IO CInt-foreign import ccall "SDL.h SDL_UpdateWindowSurfaceRects" updateWindowSurfaceRects :: Window -> Ptr Rect -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_VideoInit" videoInit :: CString -> IO CInt-foreign import ccall "SDL.h SDL_VideoQuit" videoQuit :: IO ()--foreign import ccall "SDL.h SDL_CreateRenderer" createRenderer :: Window -> CInt -> Word32 -> IO Renderer-foreign import ccall "SDL.h SDL_CreateSoftwareRenderer" createSoftwareRenderer :: Ptr Surface -> IO Renderer-foreign import ccall "SDL.h SDL_CreateTexture" createTexture :: Renderer -> Word32 -> CInt -> CInt -> CInt -> IO Texture -foreign import ccall "SDL.h SDL_CreateTextureFromSurface" createTextureFromSurface :: Renderer -> Ptr Surface -> IO Texture-foreign import ccall "SDL.h SDL_DestroyRenderer" destroyRenderer :: Renderer -> IO ()-foreign import ccall "SDL.h SDL_DestroyTexture" destroyTexture :: Texture -> IO ()-foreign import ccall "SDL.h SDL_GetNumRenderDrivers" getNumRenderDrivers :: IO CInt-foreign import ccall "SDL.h SDL_GetRenderDrawBlendMode" getRenderDrawBlendMode :: Renderer -> Ptr BlendMode -> IO Int-foreign import ccall "SDL.h SDL_GetRenderDrawColor" getRenderDrawColor :: Renderer -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO CInt-foreign import ccall "SDL.h SDL_GetRenderDriverInfo" getRenderDriverInfo :: CInt -> Ptr RendererInfo -> IO CInt-foreign import ccall "SDL.h SDL_GetRenderTarget" getRenderTarget :: Renderer -> IO Texture-foreign import ccall "SDL.h SDL_GetRenderer" getRenderer :: Window -> IO Renderer-foreign import ccall "SDL.h SDL_GetRendererInfo" getRendererInfo :: Renderer -> Ptr RendererInfo -> IO CInt-foreign import ccall "SDL.h SDL_GetRendererOutputSize" getRendererOutputSize :: Renderer -> Ptr CInt -> Ptr CInt -> IO CInt-foreign import ccall "SDL.h SDL_GetTextureAlphaMod" getTextureAlphaMod :: Texture -> Ptr Word8 -> IO CInt-foreign import ccall "SDL.h SDL_GetTextureBlendMode" getTextureBlendMode :: Texture -> Ptr BlendMode -> IO CInt-foreign import ccall "SDL.h SDL_GetTextureColorMod" getTextureColorMod :: Texture -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO CInt-foreign import ccall "SDL.h SDL_LockTexture" lockTexture :: Texture -> Ptr Rect -> Ptr (Ptr ()) -> Ptr CInt -> IO CInt-foreign import ccall "SDL.h SDL_QueryTexture" queryTexture :: Texture -> Ptr Word32 -> Ptr CInt -> Ptr CInt -> Ptr CInt -> IO CInt-foreign import ccall "SDL.h SDL_RenderClear" renderClear :: Renderer -> IO CInt-foreign import ccall "SDL.h SDL_RenderCopy" renderCopy :: Renderer -> Texture -> Ptr Rect -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_RenderCopyEx" renderCopyEx :: Renderer -> Texture -> Ptr Rect -> Ptr Rect -> CDouble -> Ptr Point -> RendererFlip -> IO CInt-foreign import ccall "SDL.h SDL_RenderDrawLine" renderDrawLine :: Renderer -> CInt -> CInt -> CInt -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_RenderDrawLines" renderDrawLines :: Renderer -> Ptr Point -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_RenderDrawPoint" renderDrawPoint :: Renderer -> CInt -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_RenderDrawPoints" renderDrawPoints :: Renderer -> Ptr Point -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_RenderDrawRect" renderDrawRect :: Renderer -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_RenderDrawRects" renderDrawRects :: Renderer -> Ptr Rect -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_RenderFillRect" renderFillRect :: Renderer -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_RenderFillRects" renderFillRects :: Renderer -> Ptr Rect -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_RenderGetClipRect" renderGetClipRect :: Renderer -> Ptr Rect -> IO ()-foreign import ccall "SDL.h SDL_RenderGetLogicalSize" renderGetLogicalSize :: Renderer -> Ptr CInt -> Ptr CInt -> IO ()-foreign import ccall "SDL.h SDL_RenderGetScale" renderGetScale :: Renderer -> Ptr CFloat -> Ptr CFloat -> IO ()-foreign import ccall "SDL.h SDL_RenderGetViewport" renderGetViewport :: Renderer -> Ptr Rect -> IO ()-foreign import ccall "SDL.h SDL_RenderPresent" renderPresent :: Renderer -> IO ()-foreign import ccall "SDL.h SDL_RenderReadPixels" renderReadPixels :: Renderer -> Ptr Rect -> Word32 -> Ptr () -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_RenderSetClipRect" renderSetClipRect :: Renderer -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_RenderSetLogicalSize" renderSetLogicalSize :: Renderer -> CInt -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_RenderSetScale" renderSetScale :: Renderer -> CFloat -> CFloat -> IO CInt-foreign import ccall "SDL.h SDL_RenderSetViewport" renderSetViewport :: Renderer -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_RenderTargetSupported" renderTargetSupported :: Renderer -> IO Bool-foreign import ccall "SDL.h SDL_SetRenderDrawBlendMode" setRenderDrawBlendMode :: Renderer -> BlendMode -> IO CInt-foreign import ccall "SDL.h SDL_SetRenderDrawColor" setRenderDrawColor :: Renderer -> Word8 -> Word8 -> Word8 -> Word8 -> IO CInt-foreign import ccall "SDL.h SDL_SetRenderTarget" setRenderTarget :: Renderer -> Texture -> IO CInt-foreign import ccall "SDL.h SDL_SetTextureAlphaMod" setTextureAlphaMod :: Texture -> Word8 -> IO CInt-foreign import ccall "SDL.h SDL_SetTextureBlendMode" setTextureBlendMode :: Texture -> BlendMode -> IO CInt-foreign import ccall "SDL.h SDL_SetTextureColorMod" setTextureColorMod :: Texture -> Word8 -> Word8 -> Word8 -> IO CInt-foreign import ccall "SDL.h SDL_UnlockTexture" unlockTexture :: Texture -> IO ()-foreign import ccall "SDL.h SDL_UpdateTexture" updateTexture :: Texture -> Ptr Rect -> Ptr () -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_UpdateYUVTexture" updateYUVTexture :: Texture -> Ptr Rect -> Ptr Word8 -> CInt -> Ptr Word8 -> CInt -> Ptr Word8 -> CInt -> IO CInt--foreign import ccall "SDL.h SDL_AllocFormat" allocFormat :: Word32 -> IO (Ptr PixelFormat)-foreign import ccall "SDL.h SDL_AllocPalette" allocPalette :: CInt -> IO (Ptr Palette)-foreign import ccall "SDL.h SDL_CalculateGammaRamp" calculateGammaRamp :: CFloat -> Ptr Word16 -> IO ()-foreign import ccall "SDL.h SDL_FreeFormat" freeFormat :: Ptr PixelFormat -> IO ()-foreign import ccall "SDL.h SDL_FreePalette" freePalette :: Ptr Palette -> IO ()-foreign import ccall "SDL.h SDL_GetPixelFormatName" getPixelFormatName :: Word32 -> IO CString-foreign import ccall "SDL.h SDL_GetRGB" getRGB :: Word32 -> Ptr PixelFormat -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO ()-foreign import ccall "SDL.h SDL_GetRGBA" getRGBA :: Word32 -> Ptr PixelFormat -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO ()-foreign import ccall "SDL.h SDL_MapRGB" mapRGB :: Ptr PixelFormat -> Word8 -> Word8 -> Word8 -> IO Word32-foreign import ccall "SDL.h SDL_MapRGBA" mapRGBA :: Ptr PixelFormat -> Word8 -> Word8 -> Word8 -> Word8 -> IO Word32-foreign import ccall "SDL.h SDL_MasksToPixelFormatEnum" masksToPixelFormatEnum :: CInt -> Word32 -> Word32 -> Word32 -> Word32 -> IO Word32-foreign import ccall "SDL.h SDL_PixelFormatEnumToMasks" pixelFormatEnumToMasks :: Word32 -> Ptr CInt -> Ptr Word32 -> Ptr Word32 -> Ptr Word32 -> Ptr Word32 -> IO Bool-foreign import ccall "SDL.h SDL_SetPaletteColors" setPaletteColors :: Ptr Palette -> Ptr Color -> CInt -> CInt -> IO CInt -foreign import ccall "SDL.h SDL_SetPixelFormatPalette" setPixelFormatPalette :: Ptr PixelFormat -> Ptr Palette -> IO CInt--foreign import ccall "SDL.h SDL_EnclosePoints" enclosePoints :: Ptr Point -> CInt -> Ptr Rect -> Ptr Rect -> IO Bool-foreign import ccall "SDL.h SDL_HasIntersection" hasIntersection :: Ptr Rect -> Ptr Rect -> IO Bool-foreign import ccall "SDL.h SDL_IntersectRect" intersectRect :: Ptr Rect -> Ptr Rect -> Ptr Rect -> IO Bool-foreign import ccall "SDL.h SDL_IntersectRectAndLine" intersectRectAndLine :: Ptr Rect -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> IO Bool-foreign import ccall "SDL.h SDL_UnionRect" unionRect :: Ptr Rect -> Ptr Rect -> Ptr Rect -> IO ()--foreign import ccall "SDL.h SDL_UpperBlitScaled" blitScaled :: Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_UpperBlit" blitSurface :: Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_ConvertPixels" convertPixels :: CInt -> CInt -> Word32 -> Ptr () -> CInt -> Word32 -> Ptr () -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_ConvertSurface" convertSurface :: Ptr Surface -> Ptr PixelFormat -> Word32 -> IO (Ptr Surface)-foreign import ccall "SDL.h SDL_ConvertSurfaceFormat" convertSurfaceFormat :: Ptr Surface -> Word32 -> Word32 -> IO (Ptr Surface)-foreign import ccall "SDL.h SDL_CreateRGBSurface" createRGBSurface :: Word32 -> CInt -> CInt -> CInt -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Ptr Surface)-foreign import ccall "SDL.h SDL_CreateRGBSurfaceFrom" createRGBSurfaceFrom :: Ptr () -> CInt -> CInt -> CInt -> CInt -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Ptr Surface)-foreign import ccall "SDL.h SDL_FillRect" fillRect :: Ptr Surface -> Ptr Rect -> Word32 -> IO CInt-foreign import ccall "SDL.h SDL_FillRects" fillRects :: Ptr Surface -> Ptr Rect -> CInt -> Word32 -> IO CInt-foreign import ccall "SDL.h SDL_FreeSurface" freeSurface :: Ptr Surface -> IO ()-foreign import ccall "SDL.h SDL_GetClipRect" getClipRect :: Ptr Surface -> Ptr Rect -> IO ()-foreign import ccall "SDL.h SDL_GetColorKey" getColorKey :: Ptr Surface -> Ptr Word32 -> IO CInt-foreign import ccall "SDL.h SDL_GetSurfaceAlphaMod" getSurfaceAlphaMod :: Ptr Surface -> Ptr Word8 -> IO CInt-foreign import ccall "SDL.h SDL_GetSurfaceBlendMode" getSurfaceBlendMode :: Ptr Surface -> BlendMode -> IO CInt-foreign import ccall "SDL.h SDL_GetSurfaceColorMod" getSurfaceColorMod :: Ptr Surface -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO CInt-foreign import ccall "SDL.h SDL_LoadBMP_RW" loadBMP_RW :: Ptr RWops -> CInt -> IO (Ptr Surface)-foreign import ccall "SDL.h SDL_LockSurface" lockSurface :: Ptr Surface -> IO CInt-foreign import ccall "SDL.h SDL_LowerBlit" lowerBlit :: Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_LowerBlitScaled" lowerBlitScaled :: Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> IO CInt-foreign import ccall "SDL.h SDL_SaveBMP_RW" saveBMP_RW :: Ptr Surface -> Ptr RWops -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_SetClipRect" setClipRect :: Ptr Surface -> Ptr Rect -> IO Bool-foreign import ccall "SDL.h SDL_SetColorKey" setColorKey :: Ptr Surface -> CInt -> Word32 -> IO CInt-foreign import ccall "SDL.h SDL_SetSurfaceAlphaMod" setSurfaceAlphaMod :: Ptr Surface -> Word8 -> IO CInt-foreign import ccall "SDL.h SDL_SetSurfaceBlendMode" setSurfaceBlendMode :: Ptr Surface -> BlendMode -> IO CInt-foreign import ccall "SDL.h SDL_SetSurfaceColorMod" setSurfaceColorMod :: Ptr Surface -> Word8 -> Word8 -> Word8 -> IO CInt-foreign import ccall "SDL.h SDL_SetSurfacePalette" setSurfacePalette :: Ptr Surface -> Ptr Palette -> IO CInt-foreign import ccall "SDL.h SDL_SetSurfaceRLE" setSurfaceRLE :: Ptr Surface -> CInt -> IO CInt-foreign import ccall "SDL.h SDL_UnlockSurface" unlockSurface :: Ptr Surface -> IO ()--foreign import ccall "SDL.h SDL_GetWindowWMInfo" getWindowWMInfo :: Window -> SysWMinfo -> IO Bool--foreign import ccall "SDL.h SDL_GetClipboardText" getClipboardText :: IO CString-foreign import ccall "SDL.h SDL_HasClipboardText" hasClipboardText :: IO Bool-foreign import ccall "SDL.h SDL_SetClipboardText" setClipboardText :: CString -> IO CInt--loadBMP :: CString -> IO (Ptr Surface)-loadBMP file = do-	rw <- withCString "rb" $ rwFromFile file-	loadBMP_RW rw 1--saveBMP :: Ptr Surface -> CString -> IO CInt-saveBMP surface file = do-	rw <- withCString "wb" $ rwFromFile file-	saveBMP_RW surface rw 1+  -- * Display and Window Management+  createWindow,+  createWindowAndRenderer,+  createWindowFrom,+  destroyWindow,+  disableScreenSaver,+  enableScreenSaver,+  glBindTexture,+  glCreateContext,+  glDeleteContext,+  glExtensionSupported,+  glGetAttribute,+  glGetCurrentContext,+  glGetCurrentWindow,+  glGetDrawableSize,+  glGetProcAddress,+  glGetSwapInterval,+  glLoadLibrary,+  glMakeCurrent,+  glResetAttributes,+  glSetAttribute,+  glSetSwapInterval,+  glSwapWindow,+  glUnbindTexture,+  glUnloadLibrary,+  getClosestDisplayMode,+  getCurrentDisplayMode,+  getCurrentVideoDriver,+  getDesktopDisplayMode,+  getDisplayBounds,+  getDisplayMode,+  getDisplayName,+  getNumDisplayModes,+  getNumVideoDisplays,+  getNumVideoDrivers,+  getVideoDriver,+  getWindowBrightness,+  getWindowData,+  getWindowDisplayIndex,+  getWindowDisplayMode,+  getWindowFlags,+  getWindowFromID,+  getWindowGammaRamp,+  getWindowGrab,+  getWindowID,+  getWindowMaximumSize,+  getWindowMinimumSize,+  getWindowPixelFormat,+  getWindowPosition,+  getWindowSize,+  getWindowSurface,+  getWindowTitle,+  hideWindow,+  isScreenSaverEnabled,+  maximizeWindow,+  minimizeWindow,+  raiseWindow,+  restoreWindow,+  setWindowBordered,+  setWindowBrightness,+  setWindowData,+  setWindowDisplayMode,+  setWindowFullscreen,+  setWindowGammaRamp,+  setWindowGrab,+  setWindowIcon,+  setWindowMaximumSize,+  setWindowMinimumSize,+  setWindowPosition,+  setWindowSize,+  setWindowTitle,+  showMessageBox,+  showSimpleMessageBox,+  showWindow,+  updateWindowSurface,+  updateWindowSurfaceRects,+  videoInit,+  videoQuit,++  -- * 2D Accelerated Rendering+  createRenderer,+  createSoftwareRenderer,+  createTexture,+  createTextureFromSurface,+  destroyRenderer,+  destroyTexture,+  getNumRenderDrivers,+  getRenderDrawBlendMode,+  getRenderDrawColor,+  getRenderDriverInfo,+  getRenderTarget,+  getRenderer,+  getRendererInfo,+  getRendererOutputSize,+  getTextureAlphaMod,+  getTextureBlendMode,+  getTextureColorMod,+  lockTexture,+  queryTexture,+  renderClear,+  renderCopy,+  renderCopyEx,+  renderDrawLine,+  renderDrawLines,+  renderDrawPoint,+  renderDrawPoints,+  renderDrawRect,+  renderDrawRects,+  renderFillRect,+  renderFillRects,+  renderGetClipRect,+  renderGetLogicalSize,+  renderGetScale,+  renderGetViewport,+  renderPresent,+  renderReadPixels,+  renderSetClipRect,+  renderSetLogicalSize,+  renderSetScale,+  renderSetViewport,+  renderTargetSupported,+  setRenderDrawBlendMode,+  setRenderDrawColor,+  setRenderTarget,+  setTextureAlphaMod,+  setTextureBlendMode,+  setTextureColorMod,+  unlockTexture,+  updateTexture,+  updateYUVTexture,++  -- * Pixel Formats and Conversion Routines+  allocFormat,+  allocPalette,+  calculateGammaRamp,+  freeFormat,+  freePalette,+  getPixelFormatName,+  getRGB,+  getRGBA,+  mapRGB,+  mapRGBA,+  masksToPixelFormatEnum,+  pixelFormatEnumToMasks,+  setPaletteColors,+  setPixelFormatPalette,++  -- * Rectangle Functions+  enclosePoints,+  hasIntersection,+  intersectRect,+  intersectRectAndLine,+  unionRect,++  -- * Surface Creation and Simple Drawing+  blitScaled,+  blitSurface,+  convertPixels,+  convertSurface,+  convertSurfaceFormat,+  createRGBSurface,+  createRGBSurfaceFrom,+  fillRect,+  fillRects,+  freeSurface,+  getClipRect,+  getColorKey,+  getSurfaceAlphaMod,+  getSurfaceBlendMode,+  getSurfaceColorMod,+  loadBMP,+  loadBMP_RW,+  lockSurface,+  lowerBlit,+  lowerBlitScaled,+  saveBMP,+  saveBMP_RW,+  setClipRect,+  setColorKey,+  setSurfaceAlphaMod,+  setSurfaceBlendMode,+  setSurfaceColorMod,+  setSurfacePalette,+  setSurfaceRLE,+  unlockSurface,++  -- * Platform-specific Window Management+  getWindowWMInfo,++  -- * Clipboard Handling+  getClipboardText,+  hasClipboardText,+  setClipboardText+) where++import Control.Monad.IO.Class+import Data.Word+import Foreign.C.String+import Foreign.C.Types+import Foreign.Ptr+import Graphics.UI.SDL.Enum+import Graphics.UI.SDL.Filesystem+import Graphics.UI.SDL.Types++foreign import ccall "SDL.h SDL_CreateWindow" createWindow' :: CString -> CInt -> CInt -> CInt -> CInt -> Word32 -> IO Window+foreign import ccall "SDL.h SDL_CreateWindowAndRenderer" createWindowAndRenderer' :: CInt -> CInt -> Word32 -> Ptr Window -> Ptr Renderer -> IO CInt+foreign import ccall "SDL.h SDL_CreateWindowFrom" createWindowFrom' :: Ptr () -> IO Window+foreign import ccall "SDL.h SDL_DestroyWindow" destroyWindow' :: Window -> IO ()+foreign import ccall "SDL.h SDL_DisableScreenSaver" disableScreenSaver' :: IO ()+foreign import ccall "SDL.h SDL_EnableScreenSaver" enableScreenSaver' :: IO ()+foreign import ccall "SDL.h SDL_GL_BindTexture" glBindTexture' :: Texture -> Ptr CFloat -> Ptr CFloat -> IO CInt+foreign import ccall "SDL.h SDL_GL_CreateContext" glCreateContext' :: Window -> IO GLContext+foreign import ccall "SDL.h SDL_GL_DeleteContext" glDeleteContext' :: GLContext -> IO ()+foreign import ccall "SDL.h SDL_GL_ExtensionSupported" glExtensionSupported' :: CString -> IO Bool+foreign import ccall "SDL.h SDL_GL_GetAttribute" glGetAttribute' :: GLattr -> Ptr CInt -> IO CInt+foreign import ccall "SDL.h SDL_GL_GetCurrentContext" glGetCurrentContext' :: IO GLContext+foreign import ccall "SDL.h SDL_GL_GetCurrentWindow" glGetCurrentWindow' :: IO Window+foreign import ccall "SDL.h SDL_GL_GetDrawableSize" glGetDrawableSize' :: Window -> Ptr CInt -> Ptr CInt -> IO ()+foreign import ccall "SDL.h SDL_GL_GetProcAddress" glGetProcAddress' :: CString -> IO (Ptr ())+foreign import ccall "SDL.h SDL_GL_GetSwapInterval" glGetSwapInterval' :: IO CInt+foreign import ccall "SDL.h SDL_GL_LoadLibrary" glLoadLibrary' :: CString -> IO CInt+foreign import ccall "SDL.h SDL_GL_MakeCurrent" glMakeCurrent' :: Window -> GLContext -> IO CInt+foreign import ccall "SDL.h SDL_GL_ResetAttributes" glResetAttributes' :: IO ()+foreign import ccall "SDL.h SDL_GL_SetAttribute" glSetAttribute' :: GLattr -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_GL_SetSwapInterval" glSetSwapInterval' :: CInt -> IO CInt+foreign import ccall "SDL.h SDL_GL_SwapWindow" glSwapWindow' :: Window -> IO ()+foreign import ccall "SDL.h SDL_GL_UnbindTexture" glUnbindTexture' :: Texture -> IO CInt+foreign import ccall "SDL.h SDL_GL_UnloadLibrary" glUnloadLibrary' :: IO ()+foreign import ccall "SDL.h SDL_GetClosestDisplayMode" getClosestDisplayMode' :: CInt -> Ptr DisplayMode -> Ptr DisplayMode -> IO (Ptr DisplayMode)+foreign import ccall "SDL.h SDL_GetCurrentDisplayMode" getCurrentDisplayMode' :: CInt -> Ptr DisplayMode -> IO CInt+foreign import ccall "SDL.h SDL_GetCurrentVideoDriver" getCurrentVideoDriver' :: IO CString+foreign import ccall "SDL.h SDL_GetDesktopDisplayMode" getDesktopDisplayMode' :: CInt -> Ptr DisplayMode -> IO CInt+foreign import ccall "SDL.h SDL_GetDisplayBounds" getDisplayBounds' :: CInt -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_GetDisplayMode" getDisplayMode' :: CInt -> CInt -> Ptr DisplayMode -> IO CInt+foreign import ccall "SDL.h SDL_GetDisplayName" getDisplayName' :: CInt -> IO CString+foreign import ccall "SDL.h SDL_GetNumDisplayModes" getNumDisplayModes' :: CInt -> IO CInt+foreign import ccall "SDL.h SDL_GetNumVideoDisplays" getNumVideoDisplays' :: IO CInt+foreign import ccall "SDL.h SDL_GetNumVideoDrivers" getNumVideoDrivers' :: IO CInt+foreign import ccall "SDL.h SDL_GetVideoDriver" getVideoDriver' :: CInt -> IO CString+foreign import ccall "SDL.h SDL_GetWindowBrightness" getWindowBrightness' :: Window -> IO CFloat+foreign import ccall "SDL.h SDL_GetWindowData" getWindowData' :: Window -> CString -> IO (Ptr ())+foreign import ccall "SDL.h SDL_GetWindowDisplayIndex" getWindowDisplayIndex' :: Window -> IO CInt+foreign import ccall "SDL.h SDL_GetWindowDisplayMode" getWindowDisplayMode' :: Window -> Ptr DisplayMode -> IO CInt+foreign import ccall "SDL.h SDL_GetWindowFlags" getWindowFlags' :: Window -> IO Word32+foreign import ccall "SDL.h SDL_GetWindowFromID" getWindowFromID' :: Word32 -> IO Window+foreign import ccall "SDL.h SDL_GetWindowGammaRamp" getWindowGammaRamp' :: Window -> Ptr Word16 -> Ptr Word16 -> Ptr Word16 -> IO CInt+foreign import ccall "SDL.h SDL_GetWindowGrab" getWindowGrab' :: Window -> IO Bool+foreign import ccall "SDL.h SDL_GetWindowID" getWindowID' :: Window -> IO Word32+foreign import ccall "SDL.h SDL_GetWindowMaximumSize" getWindowMaximumSize' :: Window -> Ptr CInt -> Ptr CInt -> IO ()+foreign import ccall "SDL.h SDL_GetWindowMinimumSize" getWindowMinimumSize' :: Window -> Ptr CInt -> Ptr CInt -> IO ()+foreign import ccall "SDL.h SDL_GetWindowPixelFormat" getWindowPixelFormat' :: Window -> IO Word32+foreign import ccall "SDL.h SDL_GetWindowPosition" getWindowPosition' :: Window -> Ptr CInt -> Ptr CInt -> IO ()+foreign import ccall "SDL.h SDL_GetWindowSize" getWindowSize' :: Window -> Ptr CInt -> Ptr CInt -> IO ()+foreign import ccall "SDL.h SDL_GetWindowSurface" getWindowSurface' :: Window -> IO (Ptr Surface)+foreign import ccall "SDL.h SDL_GetWindowTitle" getWindowTitle' :: Window -> IO CString+foreign import ccall "SDL.h SDL_HideWindow" hideWindow' :: Window -> IO ()+foreign import ccall "SDL.h SDL_IsScreenSaverEnabled" isScreenSaverEnabled' :: IO Bool+foreign import ccall "SDL.h SDL_MaximizeWindow" maximizeWindow' :: Window -> IO ()+foreign import ccall "SDL.h SDL_MinimizeWindow" minimizeWindow' :: Window -> IO ()+foreign import ccall "SDL.h SDL_RaiseWindow" raiseWindow' :: Window -> IO ()+foreign import ccall "SDL.h SDL_RestoreWindow" restoreWindow' :: Window -> IO ()+foreign import ccall "SDL.h SDL_SetWindowBordered" setWindowBordered' :: Window -> Bool -> IO ()+foreign import ccall "SDL.h SDL_SetWindowBrightness" setWindowBrightness' :: Window -> CFloat -> IO CInt+foreign import ccall "SDL.h SDL_SetWindowData" setWindowData' :: Window -> CString -> Ptr () -> IO (Ptr ())+foreign import ccall "SDL.h SDL_SetWindowDisplayMode" setWindowDisplayMode' :: Window -> Ptr DisplayMode -> IO CInt+foreign import ccall "SDL.h SDL_SetWindowFullscreen" setWindowFullscreen' :: Window -> Word32 -> IO CInt+foreign import ccall "SDL.h SDL_SetWindowGammaRamp" setWindowGammaRamp' :: Window -> Ptr Word16 -> Ptr Word16 -> Ptr Word16 -> IO CInt+foreign import ccall "SDL.h SDL_SetWindowGrab" setWindowGrab' :: Window -> Bool -> IO ()+foreign import ccall "SDL.h SDL_SetWindowIcon" setWindowIcon' :: Window -> Ptr Surface -> IO ()+foreign import ccall "SDL.h SDL_SetWindowMaximumSize" setWindowMaximumSize' :: Window -> CInt -> CInt -> IO ()+foreign import ccall "SDL.h SDL_SetWindowMinimumSize" setWindowMinimumSize' :: Window -> CInt -> CInt -> IO ()+foreign import ccall "SDL.h SDL_SetWindowPosition" setWindowPosition' :: Window -> CInt -> CInt -> IO ()+foreign import ccall "SDL.h SDL_SetWindowSize" setWindowSize' :: Window -> CInt -> CInt -> IO ()+foreign import ccall "SDL.h SDL_SetWindowTitle" setWindowTitle' :: Window -> CString -> IO ()+foreign import ccall "SDL.h SDL_ShowMessageBox" showMessageBox' :: Ptr MessageBoxData -> Ptr CInt -> IO CInt+foreign import ccall "SDL.h SDL_ShowSimpleMessageBox" showSimpleMessageBox' :: Word32 -> CString -> CString -> Window -> IO CInt+foreign import ccall "SDL.h SDL_ShowWindow" showWindow' :: Window -> IO ()+foreign import ccall "SDL.h SDL_UpdateWindowSurface" updateWindowSurface' :: Window -> IO CInt+foreign import ccall "SDL.h SDL_UpdateWindowSurfaceRects" updateWindowSurfaceRects' :: Window -> Ptr Rect -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_VideoInit" videoInit' :: CString -> IO CInt+foreign import ccall "SDL.h SDL_VideoQuit" videoQuit' :: IO ()++foreign import ccall "SDL.h SDL_CreateRenderer" createRenderer' :: Window -> CInt -> Word32 -> IO Renderer+foreign import ccall "SDL.h SDL_CreateSoftwareRenderer" createSoftwareRenderer' :: Ptr Surface -> IO Renderer+foreign import ccall "SDL.h SDL_CreateTexture" createTexture' :: Renderer -> Word32 -> CInt -> CInt -> CInt -> IO Texture+foreign import ccall "SDL.h SDL_CreateTextureFromSurface" createTextureFromSurface' :: Renderer -> Ptr Surface -> IO Texture+foreign import ccall "SDL.h SDL_DestroyRenderer" destroyRenderer' :: Renderer -> IO ()+foreign import ccall "SDL.h SDL_DestroyTexture" destroyTexture' :: Texture -> IO ()+foreign import ccall "SDL.h SDL_GetNumRenderDrivers" getNumRenderDrivers' :: IO CInt+foreign import ccall "SDL.h SDL_GetRenderDrawBlendMode" getRenderDrawBlendMode' :: Renderer -> Ptr BlendMode -> IO Int+foreign import ccall "SDL.h SDL_GetRenderDrawColor" getRenderDrawColor' :: Renderer -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO CInt+foreign import ccall "SDL.h SDL_GetRenderDriverInfo" getRenderDriverInfo' :: CInt -> Ptr RendererInfo -> IO CInt+foreign import ccall "SDL.h SDL_GetRenderTarget" getRenderTarget' :: Renderer -> IO Texture+foreign import ccall "SDL.h SDL_GetRenderer" getRenderer' :: Window -> IO Renderer+foreign import ccall "SDL.h SDL_GetRendererInfo" getRendererInfo' :: Renderer -> Ptr RendererInfo -> IO CInt+foreign import ccall "SDL.h SDL_GetRendererOutputSize" getRendererOutputSize' :: Renderer -> Ptr CInt -> Ptr CInt -> IO CInt+foreign import ccall "SDL.h SDL_GetTextureAlphaMod" getTextureAlphaMod' :: Texture -> Ptr Word8 -> IO CInt+foreign import ccall "SDL.h SDL_GetTextureBlendMode" getTextureBlendMode' :: Texture -> Ptr BlendMode -> IO CInt+foreign import ccall "SDL.h SDL_GetTextureColorMod" getTextureColorMod' :: Texture -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO CInt+foreign import ccall "SDL.h SDL_LockTexture" lockTexture' :: Texture -> Ptr Rect -> Ptr (Ptr ()) -> Ptr CInt -> IO CInt+foreign import ccall "SDL.h SDL_QueryTexture" queryTexture' :: Texture -> Ptr Word32 -> Ptr CInt -> Ptr CInt -> Ptr CInt -> IO CInt+foreign import ccall "SDL.h SDL_RenderClear" renderClear' :: Renderer -> IO CInt+foreign import ccall "SDL.h SDL_RenderCopy" renderCopy' :: Renderer -> Texture -> Ptr Rect -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_RenderCopyEx" renderCopyEx' :: Renderer -> Texture -> Ptr Rect -> Ptr Rect -> CDouble -> Ptr Point -> RendererFlip -> IO CInt+foreign import ccall "SDL.h SDL_RenderDrawLine" renderDrawLine' :: Renderer -> CInt -> CInt -> CInt -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_RenderDrawLines" renderDrawLines' :: Renderer -> Ptr Point -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_RenderDrawPoint" renderDrawPoint' :: Renderer -> CInt -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_RenderDrawPoints" renderDrawPoints' :: Renderer -> Ptr Point -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_RenderDrawRect" renderDrawRect' :: Renderer -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_RenderDrawRects" renderDrawRects' :: Renderer -> Ptr Rect -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_RenderFillRect" renderFillRect' :: Renderer -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_RenderFillRects" renderFillRects' :: Renderer -> Ptr Rect -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_RenderGetClipRect" renderGetClipRect' :: Renderer -> Ptr Rect -> IO ()+foreign import ccall "SDL.h SDL_RenderGetLogicalSize" renderGetLogicalSize' :: Renderer -> Ptr CInt -> Ptr CInt -> IO ()+foreign import ccall "SDL.h SDL_RenderGetScale" renderGetScale' :: Renderer -> Ptr CFloat -> Ptr CFloat -> IO ()+foreign import ccall "SDL.h SDL_RenderGetViewport" renderGetViewport' :: Renderer -> Ptr Rect -> IO ()+foreign import ccall "SDL.h SDL_RenderPresent" renderPresent' :: Renderer -> IO ()+foreign import ccall "SDL.h SDL_RenderReadPixels" renderReadPixels' :: Renderer -> Ptr Rect -> Word32 -> Ptr () -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_RenderSetClipRect" renderSetClipRect' :: Renderer -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_RenderSetLogicalSize" renderSetLogicalSize' :: Renderer -> CInt -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_RenderSetScale" renderSetScale' :: Renderer -> CFloat -> CFloat -> IO CInt+foreign import ccall "SDL.h SDL_RenderSetViewport" renderSetViewport' :: Renderer -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_RenderTargetSupported" renderTargetSupported' :: Renderer -> IO Bool+foreign import ccall "SDL.h SDL_SetRenderDrawBlendMode" setRenderDrawBlendMode' :: Renderer -> BlendMode -> IO CInt+foreign import ccall "SDL.h SDL_SetRenderDrawColor" setRenderDrawColor' :: Renderer -> Word8 -> Word8 -> Word8 -> Word8 -> IO CInt+foreign import ccall "SDL.h SDL_SetRenderTarget" setRenderTarget' :: Renderer -> Texture -> IO CInt+foreign import ccall "SDL.h SDL_SetTextureAlphaMod" setTextureAlphaMod' :: Texture -> Word8 -> IO CInt+foreign import ccall "SDL.h SDL_SetTextureBlendMode" setTextureBlendMode' :: Texture -> BlendMode -> IO CInt+foreign import ccall "SDL.h SDL_SetTextureColorMod" setTextureColorMod' :: Texture -> Word8 -> Word8 -> Word8 -> IO CInt+foreign import ccall "SDL.h SDL_UnlockTexture" unlockTexture' :: Texture -> IO ()+foreign import ccall "SDL.h SDL_UpdateTexture" updateTexture' :: Texture -> Ptr Rect -> Ptr () -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_UpdateYUVTexture" updateYUVTexture' :: Texture -> Ptr Rect -> Ptr Word8 -> CInt -> Ptr Word8 -> CInt -> Ptr Word8 -> CInt -> IO CInt++foreign import ccall "SDL.h SDL_AllocFormat" allocFormat' :: Word32 -> IO (Ptr PixelFormat)+foreign import ccall "SDL.h SDL_AllocPalette" allocPalette' :: CInt -> IO (Ptr Palette)+foreign import ccall "SDL.h SDL_CalculateGammaRamp" calculateGammaRamp' :: CFloat -> Ptr Word16 -> IO ()+foreign import ccall "SDL.h SDL_FreeFormat" freeFormat' :: Ptr PixelFormat -> IO ()+foreign import ccall "SDL.h SDL_FreePalette" freePalette' :: Ptr Palette -> IO ()+foreign import ccall "SDL.h SDL_GetPixelFormatName" getPixelFormatName' :: Word32 -> IO CString+foreign import ccall "SDL.h SDL_GetRGB" getRGB' :: Word32 -> Ptr PixelFormat -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO ()+foreign import ccall "SDL.h SDL_GetRGBA" getRGBA' :: Word32 -> Ptr PixelFormat -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO ()+foreign import ccall "SDL.h SDL_MapRGB" mapRGB' :: Ptr PixelFormat -> Word8 -> Word8 -> Word8 -> IO Word32+foreign import ccall "SDL.h SDL_MapRGBA" mapRGBA' :: Ptr PixelFormat -> Word8 -> Word8 -> Word8 -> Word8 -> IO Word32+foreign import ccall "SDL.h SDL_MasksToPixelFormatEnum" masksToPixelFormatEnum' :: CInt -> Word32 -> Word32 -> Word32 -> Word32 -> IO Word32+foreign import ccall "SDL.h SDL_PixelFormatEnumToMasks" pixelFormatEnumToMasks' :: Word32 -> Ptr CInt -> Ptr Word32 -> Ptr Word32 -> Ptr Word32 -> Ptr Word32 -> IO Bool+foreign import ccall "SDL.h SDL_SetPaletteColors" setPaletteColors' :: Ptr Palette -> Ptr Color -> CInt -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_SetPixelFormatPalette" setPixelFormatPalette' :: Ptr PixelFormat -> Ptr Palette -> IO CInt++foreign import ccall "SDL.h SDL_EnclosePoints" enclosePoints' :: Ptr Point -> CInt -> Ptr Rect -> Ptr Rect -> IO Bool+foreign import ccall "SDL.h SDL_HasIntersection" hasIntersection' :: Ptr Rect -> Ptr Rect -> IO Bool+foreign import ccall "SDL.h SDL_IntersectRect" intersectRect' :: Ptr Rect -> Ptr Rect -> Ptr Rect -> IO Bool+foreign import ccall "SDL.h SDL_IntersectRectAndLine" intersectRectAndLine' :: Ptr Rect -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> IO Bool+foreign import ccall "SDL.h SDL_UnionRect" unionRect' :: Ptr Rect -> Ptr Rect -> Ptr Rect -> IO ()++foreign import ccall "SDL.h SDL_UpperBlitScaled" blitScaled' :: Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_UpperBlit" blitSurface' :: Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_ConvertPixels" convertPixels' :: CInt -> CInt -> Word32 -> Ptr () -> CInt -> Word32 -> Ptr () -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_ConvertSurface" convertSurface' :: Ptr Surface -> Ptr PixelFormat -> Word32 -> IO (Ptr Surface)+foreign import ccall "SDL.h SDL_ConvertSurfaceFormat" convertSurfaceFormat' :: Ptr Surface -> Word32 -> Word32 -> IO (Ptr Surface)+foreign import ccall "SDL.h SDL_CreateRGBSurface" createRGBSurface' :: Word32 -> CInt -> CInt -> CInt -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Ptr Surface)+foreign import ccall "SDL.h SDL_CreateRGBSurfaceFrom" createRGBSurfaceFrom' :: Ptr () -> CInt -> CInt -> CInt -> CInt -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Ptr Surface)+foreign import ccall "SDL.h SDL_FillRect" fillRect' :: Ptr Surface -> Ptr Rect -> Word32 -> IO CInt+foreign import ccall "SDL.h SDL_FillRects" fillRects' :: Ptr Surface -> Ptr Rect -> CInt -> Word32 -> IO CInt+foreign import ccall "SDL.h SDL_FreeSurface" freeSurface' :: Ptr Surface -> IO ()+foreign import ccall "SDL.h SDL_GetClipRect" getClipRect' :: Ptr Surface -> Ptr Rect -> IO ()+foreign import ccall "SDL.h SDL_GetColorKey" getColorKey' :: Ptr Surface -> Ptr Word32 -> IO CInt+foreign import ccall "SDL.h SDL_GetSurfaceAlphaMod" getSurfaceAlphaMod' :: Ptr Surface -> Ptr Word8 -> IO CInt+foreign import ccall "SDL.h SDL_GetSurfaceBlendMode" getSurfaceBlendMode' :: Ptr Surface -> BlendMode -> IO CInt+foreign import ccall "SDL.h SDL_GetSurfaceColorMod" getSurfaceColorMod' :: Ptr Surface -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO CInt+foreign import ccall "SDL.h SDL_LoadBMP_RW" loadBMP_RW' :: Ptr RWops -> CInt -> IO (Ptr Surface)+foreign import ccall "SDL.h SDL_LockSurface" lockSurface' :: Ptr Surface -> IO CInt+foreign import ccall "SDL.h SDL_LowerBlit" lowerBlit' :: Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_LowerBlitScaled" lowerBlitScaled' :: Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> IO CInt+foreign import ccall "SDL.h SDL_SaveBMP_RW" saveBMP_RW' :: Ptr Surface -> Ptr RWops -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_SetClipRect" setClipRect' :: Ptr Surface -> Ptr Rect -> IO Bool+foreign import ccall "SDL.h SDL_SetColorKey" setColorKey' :: Ptr Surface -> CInt -> Word32 -> IO CInt+foreign import ccall "SDL.h SDL_SetSurfaceAlphaMod" setSurfaceAlphaMod' :: Ptr Surface -> Word8 -> IO CInt+foreign import ccall "SDL.h SDL_SetSurfaceBlendMode" setSurfaceBlendMode' :: Ptr Surface -> BlendMode -> IO CInt+foreign import ccall "SDL.h SDL_SetSurfaceColorMod" setSurfaceColorMod' :: Ptr Surface -> Word8 -> Word8 -> Word8 -> IO CInt+foreign import ccall "SDL.h SDL_SetSurfacePalette" setSurfacePalette' :: Ptr Surface -> Ptr Palette -> IO CInt+foreign import ccall "SDL.h SDL_SetSurfaceRLE" setSurfaceRLE' :: Ptr Surface -> CInt -> IO CInt+foreign import ccall "SDL.h SDL_UnlockSurface" unlockSurface' :: Ptr Surface -> IO ()++foreign import ccall "SDL.h SDL_GetWindowWMInfo" getWindowWMInfo' :: Window -> SysWMinfo -> IO Bool++foreign import ccall "SDL.h SDL_GetClipboardText" getClipboardText' :: IO CString+foreign import ccall "SDL.h SDL_HasClipboardText" hasClipboardText' :: IO Bool+foreign import ccall "SDL.h SDL_SetClipboardText" setClipboardText' :: CString -> IO CInt++createWindow :: MonadIO m => CString -> CInt -> CInt -> CInt -> CInt -> Word32 -> m Window+createWindow v1 v2 v3 v4 v5 v6 = liftIO $ createWindow' v1 v2 v3 v4 v5 v6+{-# INLINE createWindow #-}++createWindowAndRenderer :: MonadIO m => CInt -> CInt -> Word32 -> Ptr Window -> Ptr Renderer -> m CInt+createWindowAndRenderer v1 v2 v3 v4 v5 = liftIO $ createWindowAndRenderer' v1 v2 v3 v4 v5+{-# INLINE createWindowAndRenderer #-}++createWindowFrom :: MonadIO m => Ptr () -> m Window+createWindowFrom v1 = liftIO $ createWindowFrom' v1+{-# INLINE createWindowFrom #-}++destroyWindow :: MonadIO m => Window -> m ()+destroyWindow v1 = liftIO $ destroyWindow' v1+{-# INLINE destroyWindow #-}++disableScreenSaver :: MonadIO m => m ()+disableScreenSaver = liftIO disableScreenSaver'+{-# INLINE disableScreenSaver #-}++enableScreenSaver :: MonadIO m => m ()+enableScreenSaver = liftIO enableScreenSaver'+{-# INLINE enableScreenSaver #-}++glBindTexture :: MonadIO m => Texture -> Ptr CFloat -> Ptr CFloat -> m CInt+glBindTexture v1 v2 v3 = liftIO $ glBindTexture' v1 v2 v3+{-# INLINE glBindTexture #-}++glCreateContext :: MonadIO m => Window -> m GLContext+glCreateContext v1 = liftIO $ glCreateContext' v1+{-# INLINE glCreateContext #-}++glDeleteContext :: MonadIO m => GLContext -> m ()+glDeleteContext v1 = liftIO $ glDeleteContext' v1+{-# INLINE glDeleteContext #-}++glExtensionSupported :: MonadIO m => CString -> m Bool+glExtensionSupported v1 = liftIO $ glExtensionSupported' v1+{-# INLINE glExtensionSupported #-}++glGetAttribute :: MonadIO m => GLattr -> Ptr CInt -> m CInt+glGetAttribute v1 v2 = liftIO $ glGetAttribute' v1 v2+{-# INLINE glGetAttribute #-}++glGetCurrentContext :: MonadIO m => m GLContext+glGetCurrentContext = liftIO glGetCurrentContext'+{-# INLINE glGetCurrentContext #-}++glGetCurrentWindow :: MonadIO m => m Window+glGetCurrentWindow = liftIO glGetCurrentWindow'+{-# INLINE glGetCurrentWindow #-}++glGetDrawableSize :: MonadIO m => Window -> Ptr CInt -> Ptr CInt -> m ()+glGetDrawableSize v1 v2 v3 = liftIO $ glGetDrawableSize' v1 v2 v3+{-# INLINE glGetDrawableSize #-}++glGetProcAddress :: MonadIO m => CString -> m (Ptr ())+glGetProcAddress v1 = liftIO $ glGetProcAddress' v1+{-# INLINE glGetProcAddress #-}++glGetSwapInterval :: MonadIO m => m CInt+glGetSwapInterval = liftIO glGetSwapInterval'+{-# INLINE glGetSwapInterval #-}++glLoadLibrary :: MonadIO m => CString -> m CInt+glLoadLibrary v1 = liftIO $ glLoadLibrary' v1+{-# INLINE glLoadLibrary #-}++glMakeCurrent :: MonadIO m => Window -> GLContext -> m CInt+glMakeCurrent v1 v2 = liftIO $ glMakeCurrent' v1 v2+{-# INLINE glMakeCurrent #-}++glResetAttributes :: MonadIO m => m ()+glResetAttributes = liftIO glResetAttributes'+{-# INLINE glResetAttributes #-}++glSetAttribute :: MonadIO m => GLattr -> CInt -> m CInt+glSetAttribute v1 v2 = liftIO $ glSetAttribute' v1 v2+{-# INLINE glSetAttribute #-}++glSetSwapInterval :: MonadIO m => CInt -> m CInt+glSetSwapInterval v1 = liftIO $ glSetSwapInterval' v1+{-# INLINE glSetSwapInterval #-}++glSwapWindow :: MonadIO m => Window -> m ()+glSwapWindow v1 = liftIO $ glSwapWindow' v1+{-# INLINE glSwapWindow #-}++glUnbindTexture :: MonadIO m => Texture -> m CInt+glUnbindTexture v1 = liftIO $ glUnbindTexture' v1+{-# INLINE glUnbindTexture #-}++glUnloadLibrary :: MonadIO m => m ()+glUnloadLibrary = liftIO glUnloadLibrary'+{-# INLINE glUnloadLibrary #-}++getClosestDisplayMode :: MonadIO m => CInt -> Ptr DisplayMode -> Ptr DisplayMode -> m (Ptr DisplayMode)+getClosestDisplayMode v1 v2 v3 = liftIO $ getClosestDisplayMode' v1 v2 v3+{-# INLINE getClosestDisplayMode #-}++getCurrentDisplayMode :: MonadIO m => CInt -> Ptr DisplayMode -> m CInt+getCurrentDisplayMode v1 v2 = liftIO $ getCurrentDisplayMode' v1 v2+{-# INLINE getCurrentDisplayMode #-}++getCurrentVideoDriver :: MonadIO m => m CString+getCurrentVideoDriver = liftIO getCurrentVideoDriver'+{-# INLINE getCurrentVideoDriver #-}++getDesktopDisplayMode :: MonadIO m => CInt -> Ptr DisplayMode -> m CInt+getDesktopDisplayMode v1 v2 = liftIO $ getDesktopDisplayMode' v1 v2+{-# INLINE getDesktopDisplayMode #-}++getDisplayBounds :: MonadIO m => CInt -> Ptr Rect -> m CInt+getDisplayBounds v1 v2 = liftIO $ getDisplayBounds' v1 v2+{-# INLINE getDisplayBounds #-}++getDisplayMode :: MonadIO m => CInt -> CInt -> Ptr DisplayMode -> m CInt+getDisplayMode v1 v2 v3 = liftIO $ getDisplayMode' v1 v2 v3+{-# INLINE getDisplayMode #-}++getDisplayName :: MonadIO m => CInt -> m CString+getDisplayName v1 = liftIO $ getDisplayName' v1+{-# INLINE getDisplayName #-}++getNumDisplayModes :: MonadIO m => CInt -> m CInt+getNumDisplayModes v1 = liftIO $ getNumDisplayModes' v1+{-# INLINE getNumDisplayModes #-}++getNumVideoDisplays :: MonadIO m => m CInt+getNumVideoDisplays = liftIO getNumVideoDisplays'+{-# INLINE getNumVideoDisplays #-}++getNumVideoDrivers :: MonadIO m => m CInt+getNumVideoDrivers = liftIO getNumVideoDrivers'+{-# INLINE getNumVideoDrivers #-}++getVideoDriver :: MonadIO m => CInt -> m CString+getVideoDriver v1 = liftIO $ getVideoDriver' v1+{-# INLINE getVideoDriver #-}++getWindowBrightness :: MonadIO m => Window -> m CFloat+getWindowBrightness v1 = liftIO $ getWindowBrightness' v1+{-# INLINE getWindowBrightness #-}++getWindowData :: MonadIO m => Window -> CString -> m (Ptr ())+getWindowData v1 v2 = liftIO $ getWindowData' v1 v2+{-# INLINE getWindowData #-}++getWindowDisplayIndex :: MonadIO m => Window -> m CInt+getWindowDisplayIndex v1 = liftIO $ getWindowDisplayIndex' v1+{-# INLINE getWindowDisplayIndex #-}++getWindowDisplayMode :: MonadIO m => Window -> Ptr DisplayMode -> m CInt+getWindowDisplayMode v1 v2 = liftIO $ getWindowDisplayMode' v1 v2+{-# INLINE getWindowDisplayMode #-}++getWindowFlags :: MonadIO m => Window -> m Word32+getWindowFlags v1 = liftIO $ getWindowFlags' v1+{-# INLINE getWindowFlags #-}++getWindowFromID :: MonadIO m => Word32 -> m Window+getWindowFromID v1 = liftIO $ getWindowFromID' v1+{-# INLINE getWindowFromID #-}++getWindowGammaRamp :: MonadIO m => Window -> Ptr Word16 -> Ptr Word16 -> Ptr Word16 -> m CInt+getWindowGammaRamp v1 v2 v3 v4 = liftIO $ getWindowGammaRamp' v1 v2 v3 v4+{-# INLINE getWindowGammaRamp #-}++getWindowGrab :: MonadIO m => Window -> m Bool+getWindowGrab v1 = liftIO $ getWindowGrab' v1+{-# INLINE getWindowGrab #-}++getWindowID :: MonadIO m => Window -> m Word32+getWindowID v1 = liftIO $ getWindowID' v1+{-# INLINE getWindowID #-}++getWindowMaximumSize :: MonadIO m => Window -> Ptr CInt -> Ptr CInt -> m ()+getWindowMaximumSize v1 v2 v3 = liftIO $ getWindowMaximumSize' v1 v2 v3+{-# INLINE getWindowMaximumSize #-}++getWindowMinimumSize :: MonadIO m => Window -> Ptr CInt -> Ptr CInt -> m ()+getWindowMinimumSize v1 v2 v3 = liftIO $ getWindowMinimumSize' v1 v2 v3+{-# INLINE getWindowMinimumSize #-}++getWindowPixelFormat :: MonadIO m => Window -> m Word32+getWindowPixelFormat v1 = liftIO $ getWindowPixelFormat' v1+{-# INLINE getWindowPixelFormat #-}++getWindowPosition :: MonadIO m => Window -> Ptr CInt -> Ptr CInt -> m ()+getWindowPosition v1 v2 v3 = liftIO $ getWindowPosition' v1 v2 v3+{-# INLINE getWindowPosition #-}++getWindowSize :: MonadIO m => Window -> Ptr CInt -> Ptr CInt -> m ()+getWindowSize v1 v2 v3 = liftIO $ getWindowSize' v1 v2 v3+{-# INLINE getWindowSize #-}++getWindowSurface :: MonadIO m => Window -> m (Ptr Surface)+getWindowSurface v1 = liftIO $ getWindowSurface' v1+{-# INLINE getWindowSurface #-}++getWindowTitle :: MonadIO m => Window -> m CString+getWindowTitle v1 = liftIO $ getWindowTitle' v1+{-# INLINE getWindowTitle #-}++hideWindow :: MonadIO m => Window -> m ()+hideWindow v1 = liftIO $ hideWindow' v1+{-# INLINE hideWindow #-}++isScreenSaverEnabled :: MonadIO m => m Bool+isScreenSaverEnabled = liftIO isScreenSaverEnabled'+{-# INLINE isScreenSaverEnabled #-}++maximizeWindow :: MonadIO m => Window -> m ()+maximizeWindow v1 = liftIO $ maximizeWindow' v1+{-# INLINE maximizeWindow #-}++minimizeWindow :: MonadIO m => Window -> m ()+minimizeWindow v1 = liftIO $ minimizeWindow' v1+{-# INLINE minimizeWindow #-}++raiseWindow :: MonadIO m => Window -> m ()+raiseWindow v1 = liftIO $ raiseWindow' v1+{-# INLINE raiseWindow #-}++restoreWindow :: MonadIO m => Window -> m ()+restoreWindow v1 = liftIO $ restoreWindow' v1+{-# INLINE restoreWindow #-}++setWindowBordered :: MonadIO m => Window -> Bool -> m ()+setWindowBordered v1 v2 = liftIO $ setWindowBordered' v1 v2+{-# INLINE setWindowBordered #-}++setWindowBrightness :: MonadIO m => Window -> CFloat -> m CInt+setWindowBrightness v1 v2 = liftIO $ setWindowBrightness' v1 v2+{-# INLINE setWindowBrightness #-}++setWindowData :: MonadIO m => Window -> CString -> Ptr () -> m (Ptr ())+setWindowData v1 v2 v3 = liftIO $ setWindowData' v1 v2 v3+{-# INLINE setWindowData #-}++setWindowDisplayMode :: MonadIO m => Window -> Ptr DisplayMode -> m CInt+setWindowDisplayMode v1 v2 = liftIO $ setWindowDisplayMode' v1 v2+{-# INLINE setWindowDisplayMode #-}++setWindowFullscreen :: MonadIO m => Window -> Word32 -> m CInt+setWindowFullscreen v1 v2 = liftIO $ setWindowFullscreen' v1 v2+{-# INLINE setWindowFullscreen #-}++setWindowGammaRamp :: MonadIO m => Window -> Ptr Word16 -> Ptr Word16 -> Ptr Word16 -> m CInt+setWindowGammaRamp v1 v2 v3 v4 = liftIO $ setWindowGammaRamp' v1 v2 v3 v4+{-# INLINE setWindowGammaRamp #-}++setWindowGrab :: MonadIO m => Window -> Bool -> m ()+setWindowGrab v1 v2 = liftIO $ setWindowGrab' v1 v2+{-# INLINE setWindowGrab #-}++setWindowIcon :: MonadIO m => Window -> Ptr Surface -> m ()+setWindowIcon v1 v2 = liftIO $ setWindowIcon' v1 v2+{-# INLINE setWindowIcon #-}++setWindowMaximumSize :: MonadIO m => Window -> CInt -> CInt -> m ()+setWindowMaximumSize v1 v2 v3 = liftIO $ setWindowMaximumSize' v1 v2 v3+{-# INLINE setWindowMaximumSize #-}++setWindowMinimumSize :: MonadIO m => Window -> CInt -> CInt -> m ()+setWindowMinimumSize v1 v2 v3 = liftIO $ setWindowMinimumSize' v1 v2 v3+{-# INLINE setWindowMinimumSize #-}++setWindowPosition :: MonadIO m => Window -> CInt -> CInt -> m ()+setWindowPosition v1 v2 v3 = liftIO $ setWindowPosition' v1 v2 v3+{-# INLINE setWindowPosition #-}++setWindowSize :: MonadIO m => Window -> CInt -> CInt -> m ()+setWindowSize v1 v2 v3 = liftIO $ setWindowSize' v1 v2 v3+{-# INLINE setWindowSize #-}++setWindowTitle :: MonadIO m => Window -> CString -> m ()+setWindowTitle v1 v2 = liftIO $ setWindowTitle' v1 v2+{-# INLINE setWindowTitle #-}++showMessageBox :: MonadIO m => Ptr MessageBoxData -> Ptr CInt -> m CInt+showMessageBox v1 v2 = liftIO $ showMessageBox' v1 v2+{-# INLINE showMessageBox #-}++showSimpleMessageBox :: MonadIO m => Word32 -> CString -> CString -> Window -> m CInt+showSimpleMessageBox v1 v2 v3 v4 = liftIO $ showSimpleMessageBox' v1 v2 v3 v4+{-# INLINE showSimpleMessageBox #-}++showWindow :: MonadIO m => Window -> m ()+showWindow v1 = liftIO $ showWindow' v1+{-# INLINE showWindow #-}++updateWindowSurface :: MonadIO m => Window -> m CInt+updateWindowSurface v1 = liftIO $ updateWindowSurface' v1+{-# INLINE updateWindowSurface #-}++updateWindowSurfaceRects :: MonadIO m => Window -> Ptr Rect -> CInt -> m CInt+updateWindowSurfaceRects v1 v2 v3 = liftIO $ updateWindowSurfaceRects' v1 v2 v3+{-# INLINE updateWindowSurfaceRects #-}++videoInit :: MonadIO m => CString -> m CInt+videoInit v1 = liftIO $ videoInit' v1+{-# INLINE videoInit #-}++videoQuit :: MonadIO m => m ()+videoQuit = liftIO videoQuit'+{-# INLINE videoQuit #-}++createRenderer :: MonadIO m => Window -> CInt -> Word32 -> m Renderer+createRenderer v1 v2 v3 = liftIO $ createRenderer' v1 v2 v3+{-# INLINE createRenderer #-}++createSoftwareRenderer :: MonadIO m => Ptr Surface -> m Renderer+createSoftwareRenderer v1 = liftIO $ createSoftwareRenderer' v1+{-# INLINE createSoftwareRenderer #-}++createTexture :: MonadIO m => Renderer -> Word32 -> CInt -> CInt -> CInt -> m Texture+createTexture v1 v2 v3 v4 v5 = liftIO $ createTexture' v1 v2 v3 v4 v5+{-# INLINE createTexture #-}++createTextureFromSurface :: MonadIO m => Renderer -> Ptr Surface -> m Texture+createTextureFromSurface v1 v2 = liftIO $ createTextureFromSurface' v1 v2+{-# INLINE createTextureFromSurface #-}++destroyRenderer :: MonadIO m => Renderer -> m ()+destroyRenderer v1 = liftIO $ destroyRenderer' v1+{-# INLINE destroyRenderer #-}++destroyTexture :: MonadIO m => Texture -> m ()+destroyTexture v1 = liftIO $ destroyTexture' v1+{-# INLINE destroyTexture #-}++getNumRenderDrivers :: MonadIO m => m CInt+getNumRenderDrivers = liftIO getNumRenderDrivers'+{-# INLINE getNumRenderDrivers #-}++getRenderDrawBlendMode :: MonadIO m => Renderer -> Ptr BlendMode -> m Int+getRenderDrawBlendMode v1 v2 = liftIO $ getRenderDrawBlendMode' v1 v2+{-# INLINE getRenderDrawBlendMode #-}++getRenderDrawColor :: MonadIO m => Renderer -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> m CInt+getRenderDrawColor v1 v2 v3 v4 v5 = liftIO $ getRenderDrawColor' v1 v2 v3 v4 v5+{-# INLINE getRenderDrawColor #-}++getRenderDriverInfo :: MonadIO m => CInt -> Ptr RendererInfo -> m CInt+getRenderDriverInfo v1 v2 = liftIO $ getRenderDriverInfo' v1 v2+{-# INLINE getRenderDriverInfo #-}++getRenderTarget :: MonadIO m => Renderer -> m Texture+getRenderTarget v1 = liftIO $ getRenderTarget' v1+{-# INLINE getRenderTarget #-}++getRenderer :: MonadIO m => Window -> m Renderer+getRenderer v1 = liftIO $ getRenderer' v1+{-# INLINE getRenderer #-}++getRendererInfo :: MonadIO m => Renderer -> Ptr RendererInfo -> m CInt+getRendererInfo v1 v2 = liftIO $ getRendererInfo' v1 v2+{-# INLINE getRendererInfo #-}++getRendererOutputSize :: MonadIO m => Renderer -> Ptr CInt -> Ptr CInt -> m CInt+getRendererOutputSize v1 v2 v3 = liftIO $ getRendererOutputSize' v1 v2 v3+{-# INLINE getRendererOutputSize #-}++getTextureAlphaMod :: MonadIO m => Texture -> Ptr Word8 -> m CInt+getTextureAlphaMod v1 v2 = liftIO $ getTextureAlphaMod' v1 v2+{-# INLINE getTextureAlphaMod #-}++getTextureBlendMode :: MonadIO m => Texture -> Ptr BlendMode -> m CInt+getTextureBlendMode v1 v2 = liftIO $ getTextureBlendMode' v1 v2+{-# INLINE getTextureBlendMode #-}++getTextureColorMod :: MonadIO m => Texture -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> m CInt+getTextureColorMod v1 v2 v3 v4 = liftIO $ getTextureColorMod' v1 v2 v3 v4+{-# INLINE getTextureColorMod #-}++lockTexture :: MonadIO m => Texture -> Ptr Rect -> Ptr (Ptr ()) -> Ptr CInt -> m CInt+lockTexture v1 v2 v3 v4 = liftIO $ lockTexture' v1 v2 v3 v4+{-# INLINE lockTexture #-}++queryTexture :: MonadIO m => Texture -> Ptr Word32 -> Ptr CInt -> Ptr CInt -> Ptr CInt -> m CInt+queryTexture v1 v2 v3 v4 v5 = liftIO $ queryTexture' v1 v2 v3 v4 v5+{-# INLINE queryTexture #-}++renderClear :: MonadIO m => Renderer -> m CInt+renderClear v1 = liftIO $ renderClear' v1+{-# INLINE renderClear #-}++renderCopy :: MonadIO m => Renderer -> Texture -> Ptr Rect -> Ptr Rect -> m CInt+renderCopy v1 v2 v3 v4 = liftIO $ renderCopy' v1 v2 v3 v4+{-# INLINE renderCopy #-}++renderCopyEx :: MonadIO m => Renderer -> Texture -> Ptr Rect -> Ptr Rect -> CDouble -> Ptr Point -> RendererFlip -> m CInt+renderCopyEx v1 v2 v3 v4 v5 v6 v7 = liftIO $ renderCopyEx' v1 v2 v3 v4 v5 v6 v7+{-# INLINE renderCopyEx #-}++renderDrawLine :: MonadIO m => Renderer -> CInt -> CInt -> CInt -> CInt -> m CInt+renderDrawLine v1 v2 v3 v4 v5 = liftIO $ renderDrawLine' v1 v2 v3 v4 v5+{-# INLINE renderDrawLine #-}++renderDrawLines :: MonadIO m => Renderer -> Ptr Point -> CInt -> m CInt+renderDrawLines v1 v2 v3 = liftIO $ renderDrawLines' v1 v2 v3+{-# INLINE renderDrawLines #-}++renderDrawPoint :: MonadIO m => Renderer -> CInt -> CInt -> m CInt+renderDrawPoint v1 v2 v3 = liftIO $ renderDrawPoint' v1 v2 v3+{-# INLINE renderDrawPoint #-}++renderDrawPoints :: MonadIO m => Renderer -> Ptr Point -> CInt -> m CInt+renderDrawPoints v1 v2 v3 = liftIO $ renderDrawPoints' v1 v2 v3+{-# INLINE renderDrawPoints #-}++renderDrawRect :: MonadIO m => Renderer -> Ptr Rect -> m CInt+renderDrawRect v1 v2 = liftIO $ renderDrawRect' v1 v2+{-# INLINE renderDrawRect #-}++renderDrawRects :: MonadIO m => Renderer -> Ptr Rect -> CInt -> m CInt+renderDrawRects v1 v2 v3 = liftIO $ renderDrawRects' v1 v2 v3+{-# INLINE renderDrawRects #-}++renderFillRect :: MonadIO m => Renderer -> Ptr Rect -> m CInt+renderFillRect v1 v2 = liftIO $ renderFillRect' v1 v2+{-# INLINE renderFillRect #-}++renderFillRects :: MonadIO m => Renderer -> Ptr Rect -> CInt -> m CInt+renderFillRects v1 v2 v3 = liftIO $ renderFillRects' v1 v2 v3+{-# INLINE renderFillRects #-}++renderGetClipRect :: MonadIO m => Renderer -> Ptr Rect -> m ()+renderGetClipRect v1 v2 = liftIO $ renderGetClipRect' v1 v2+{-# INLINE renderGetClipRect #-}++renderGetLogicalSize :: MonadIO m => Renderer -> Ptr CInt -> Ptr CInt -> m ()+renderGetLogicalSize v1 v2 v3 = liftIO $ renderGetLogicalSize' v1 v2 v3+{-# INLINE renderGetLogicalSize #-}++renderGetScale :: MonadIO m => Renderer -> Ptr CFloat -> Ptr CFloat -> m ()+renderGetScale v1 v2 v3 = liftIO $ renderGetScale' v1 v2 v3+{-# INLINE renderGetScale #-}++renderGetViewport :: MonadIO m => Renderer -> Ptr Rect -> m ()+renderGetViewport v1 v2 = liftIO $ renderGetViewport' v1 v2+{-# INLINE renderGetViewport #-}++renderPresent :: MonadIO m => Renderer -> m ()+renderPresent v1 = liftIO $ renderPresent' v1+{-# INLINE renderPresent #-}++renderReadPixels :: MonadIO m => Renderer -> Ptr Rect -> Word32 -> Ptr () -> CInt -> m CInt+renderReadPixels v1 v2 v3 v4 v5 = liftIO $ renderReadPixels' v1 v2 v3 v4 v5+{-# INLINE renderReadPixels #-}++renderSetClipRect :: MonadIO m => Renderer -> Ptr Rect -> m CInt+renderSetClipRect v1 v2 = liftIO $ renderSetClipRect' v1 v2+{-# INLINE renderSetClipRect #-}++renderSetLogicalSize :: MonadIO m => Renderer -> CInt -> CInt -> m CInt+renderSetLogicalSize v1 v2 v3 = liftIO $ renderSetLogicalSize' v1 v2 v3+{-# INLINE renderSetLogicalSize #-}++renderSetScale :: MonadIO m => Renderer -> CFloat -> CFloat -> m CInt+renderSetScale v1 v2 v3 = liftIO $ renderSetScale' v1 v2 v3+{-# INLINE renderSetScale #-}++renderSetViewport :: MonadIO m => Renderer -> Ptr Rect -> m CInt+renderSetViewport v1 v2 = liftIO $ renderSetViewport' v1 v2+{-# INLINE renderSetViewport #-}++renderTargetSupported :: MonadIO m => Renderer -> m Bool+renderTargetSupported v1 = liftIO $ renderTargetSupported' v1+{-# INLINE renderTargetSupported #-}++setRenderDrawBlendMode :: MonadIO m => Renderer -> BlendMode -> m CInt+setRenderDrawBlendMode v1 v2 = liftIO $ setRenderDrawBlendMode' v1 v2+{-# INLINE setRenderDrawBlendMode #-}++setRenderDrawColor :: MonadIO m => Renderer -> Word8 -> Word8 -> Word8 -> Word8 -> m CInt+setRenderDrawColor v1 v2 v3 v4 v5 = liftIO $ setRenderDrawColor' v1 v2 v3 v4 v5+{-# INLINE setRenderDrawColor #-}++setRenderTarget :: MonadIO m => Renderer -> Texture -> m CInt+setRenderTarget v1 v2 = liftIO $ setRenderTarget' v1 v2+{-# INLINE setRenderTarget #-}++setTextureAlphaMod :: MonadIO m => Texture -> Word8 -> m CInt+setTextureAlphaMod v1 v2 = liftIO $ setTextureAlphaMod' v1 v2+{-# INLINE setTextureAlphaMod #-}++setTextureBlendMode :: MonadIO m => Texture -> BlendMode -> m CInt+setTextureBlendMode v1 v2 = liftIO $ setTextureBlendMode' v1 v2+{-# INLINE setTextureBlendMode #-}++setTextureColorMod :: MonadIO m => Texture -> Word8 -> Word8 -> Word8 -> m CInt+setTextureColorMod v1 v2 v3 v4 = liftIO $ setTextureColorMod' v1 v2 v3 v4+{-# INLINE setTextureColorMod #-}++unlockTexture :: MonadIO m => Texture -> m ()+unlockTexture v1 = liftIO $ unlockTexture' v1+{-# INLINE unlockTexture #-}++updateTexture :: MonadIO m => Texture -> Ptr Rect -> Ptr () -> CInt -> m CInt+updateTexture v1 v2 v3 v4 = liftIO $ updateTexture' v1 v2 v3 v4+{-# INLINE updateTexture #-}++updateYUVTexture :: MonadIO m => Texture -> Ptr Rect -> Ptr Word8 -> CInt -> Ptr Word8 -> CInt -> Ptr Word8 -> CInt -> m CInt+updateYUVTexture v1 v2 v3 v4 v5 v6 v7 v8 = liftIO $ updateYUVTexture' v1 v2 v3 v4 v5 v6 v7 v8+{-# INLINE updateYUVTexture #-}++allocFormat :: MonadIO m => Word32 -> m (Ptr PixelFormat)+allocFormat v1 = liftIO $ allocFormat' v1+{-# INLINE allocFormat #-}++allocPalette :: MonadIO m => CInt -> m (Ptr Palette)+allocPalette v1 = liftIO $ allocPalette' v1+{-# INLINE allocPalette #-}++calculateGammaRamp :: MonadIO m => CFloat -> Ptr Word16 -> m ()+calculateGammaRamp v1 v2 = liftIO $ calculateGammaRamp' v1 v2+{-# INLINE calculateGammaRamp #-}++freeFormat :: MonadIO m => Ptr PixelFormat -> m ()+freeFormat v1 = liftIO $ freeFormat' v1+{-# INLINE freeFormat #-}++freePalette :: MonadIO m => Ptr Palette -> m ()+freePalette v1 = liftIO $ freePalette' v1+{-# INLINE freePalette #-}++getPixelFormatName :: MonadIO m => Word32 -> m CString+getPixelFormatName v1 = liftIO $ getPixelFormatName' v1+{-# INLINE getPixelFormatName #-}++getRGB :: MonadIO m => Word32 -> Ptr PixelFormat -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> m ()+getRGB v1 v2 v3 v4 v5 = liftIO $ getRGB' v1 v2 v3 v4 v5+{-# INLINE getRGB #-}++getRGBA :: MonadIO m => Word32 -> Ptr PixelFormat -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> m ()+getRGBA v1 v2 v3 v4 v5 v6 = liftIO $ getRGBA' v1 v2 v3 v4 v5 v6+{-# INLINE getRGBA #-}++mapRGB :: MonadIO m => Ptr PixelFormat -> Word8 -> Word8 -> Word8 -> m Word32+mapRGB v1 v2 v3 v4 = liftIO $ mapRGB' v1 v2 v3 v4+{-# INLINE mapRGB #-}++mapRGBA :: MonadIO m => Ptr PixelFormat -> Word8 -> Word8 -> Word8 -> Word8 -> m Word32+mapRGBA v1 v2 v3 v4 v5 = liftIO $ mapRGBA' v1 v2 v3 v4 v5+{-# INLINE mapRGBA #-}++masksToPixelFormatEnum :: MonadIO m => CInt -> Word32 -> Word32 -> Word32 -> Word32 -> m Word32+masksToPixelFormatEnum v1 v2 v3 v4 v5 = liftIO $ masksToPixelFormatEnum' v1 v2 v3 v4 v5+{-# INLINE masksToPixelFormatEnum #-}++pixelFormatEnumToMasks :: MonadIO m => Word32 -> Ptr CInt -> Ptr Word32 -> Ptr Word32 -> Ptr Word32 -> Ptr Word32 -> m Bool+pixelFormatEnumToMasks v1 v2 v3 v4 v5 v6 = liftIO $ pixelFormatEnumToMasks' v1 v2 v3 v4 v5 v6+{-# INLINE pixelFormatEnumToMasks #-}++setPaletteColors :: MonadIO m => Ptr Palette -> Ptr Color -> CInt -> CInt -> m CInt+setPaletteColors v1 v2 v3 v4 = liftIO $ setPaletteColors' v1 v2 v3 v4+{-# INLINE setPaletteColors #-}++setPixelFormatPalette :: MonadIO m => Ptr PixelFormat -> Ptr Palette -> m CInt+setPixelFormatPalette v1 v2 = liftIO $ setPixelFormatPalette' v1 v2+{-# INLINE setPixelFormatPalette #-}++enclosePoints :: MonadIO m => Ptr Point -> CInt -> Ptr Rect -> Ptr Rect -> m Bool+enclosePoints v1 v2 v3 v4 = liftIO $ enclosePoints' v1 v2 v3 v4+{-# INLINE enclosePoints #-}++hasIntersection :: MonadIO m => Ptr Rect -> Ptr Rect -> m Bool+hasIntersection v1 v2 = liftIO $ hasIntersection' v1 v2+{-# INLINE hasIntersection #-}++intersectRect :: MonadIO m => Ptr Rect -> Ptr Rect -> Ptr Rect -> m Bool+intersectRect v1 v2 v3 = liftIO $ intersectRect' v1 v2 v3+{-# INLINE intersectRect #-}++intersectRectAndLine :: MonadIO m => Ptr Rect -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> m Bool+intersectRectAndLine v1 v2 v3 v4 v5 = liftIO $ intersectRectAndLine' v1 v2 v3 v4 v5+{-# INLINE intersectRectAndLine #-}++unionRect :: MonadIO m => Ptr Rect -> Ptr Rect -> Ptr Rect -> m ()+unionRect v1 v2 v3 = liftIO $ unionRect' v1 v2 v3+{-# INLINE unionRect #-}++blitScaled :: MonadIO m => Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> m CInt+blitScaled v1 v2 v3 v4 = liftIO $ blitScaled' v1 v2 v3 v4+{-# INLINE blitScaled #-}++blitSurface :: MonadIO m => Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> m CInt+blitSurface v1 v2 v3 v4 = liftIO $ blitSurface' v1 v2 v3 v4+{-# INLINE blitSurface #-}++convertPixels :: MonadIO m => CInt -> CInt -> Word32 -> Ptr () -> CInt -> Word32 -> Ptr () -> CInt -> m CInt+convertPixels v1 v2 v3 v4 v5 v6 v7 v8 = liftIO $ convertPixels' v1 v2 v3 v4 v5 v6 v7 v8+{-# INLINE convertPixels #-}++convertSurface :: MonadIO m => Ptr Surface -> Ptr PixelFormat -> Word32 -> m (Ptr Surface)+convertSurface v1 v2 v3 = liftIO $ convertSurface' v1 v2 v3+{-# INLINE convertSurface #-}++convertSurfaceFormat :: MonadIO m => Ptr Surface -> Word32 -> Word32 -> m (Ptr Surface)+convertSurfaceFormat v1 v2 v3 = liftIO $ convertSurfaceFormat' v1 v2 v3+{-# INLINE convertSurfaceFormat #-}++createRGBSurface :: MonadIO m => Word32 -> CInt -> CInt -> CInt -> Word32 -> Word32 -> Word32 -> Word32 -> m (Ptr Surface)+createRGBSurface v1 v2 v3 v4 v5 v6 v7 v8 = liftIO $ createRGBSurface' v1 v2 v3 v4 v5 v6 v7 v8+{-# INLINE createRGBSurface #-}++createRGBSurfaceFrom :: MonadIO m => Ptr () -> CInt -> CInt -> CInt -> CInt -> Word32 -> Word32 -> Word32 -> Word32 -> m (Ptr Surface)+createRGBSurfaceFrom v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO $ createRGBSurfaceFrom' v1 v2 v3 v4 v5 v6 v7 v8 v9+{-# INLINE createRGBSurfaceFrom #-}++fillRect :: MonadIO m => Ptr Surface -> Ptr Rect -> Word32 -> m CInt+fillRect v1 v2 v3 = liftIO $ fillRect' v1 v2 v3+{-# INLINE fillRect #-}++fillRects :: MonadIO m => Ptr Surface -> Ptr Rect -> CInt -> Word32 -> m CInt+fillRects v1 v2 v3 v4 = liftIO $ fillRects' v1 v2 v3 v4+{-# INLINE fillRects #-}++freeSurface :: MonadIO m => Ptr Surface -> m ()+freeSurface v1 = liftIO $ freeSurface' v1+{-# INLINE freeSurface #-}++getClipRect :: MonadIO m => Ptr Surface -> Ptr Rect -> m ()+getClipRect v1 v2 = liftIO $ getClipRect' v1 v2+{-# INLINE getClipRect #-}++getColorKey :: MonadIO m => Ptr Surface -> Ptr Word32 -> m CInt+getColorKey v1 v2 = liftIO $ getColorKey' v1 v2+{-# INLINE getColorKey #-}++getSurfaceAlphaMod :: MonadIO m => Ptr Surface -> Ptr Word8 -> m CInt+getSurfaceAlphaMod v1 v2 = liftIO $ getSurfaceAlphaMod' v1 v2+{-# INLINE getSurfaceAlphaMod #-}++getSurfaceBlendMode :: MonadIO m => Ptr Surface -> BlendMode -> m CInt+getSurfaceBlendMode v1 v2 = liftIO $ getSurfaceBlendMode' v1 v2+{-# INLINE getSurfaceBlendMode #-}++getSurfaceColorMod :: MonadIO m => Ptr Surface -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> m CInt+getSurfaceColorMod v1 v2 v3 v4 = liftIO $ getSurfaceColorMod' v1 v2 v3 v4+{-# INLINE getSurfaceColorMod #-}++loadBMP :: MonadIO m => CString -> m (Ptr Surface)+loadBMP file = liftIO $ do+  rw <- withCString "rb" $ rwFromFile file+  loadBMP_RW rw 1+{-# INLINE loadBMP #-}++loadBMP_RW :: MonadIO m => Ptr RWops -> CInt -> m (Ptr Surface)+loadBMP_RW v1 v2 = liftIO $ loadBMP_RW' v1 v2+{-# INLINE loadBMP_RW #-}++lockSurface :: MonadIO m => Ptr Surface -> m CInt+lockSurface v1 = liftIO $ lockSurface' v1+{-# INLINE lockSurface #-}++lowerBlit :: MonadIO m => Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> m CInt+lowerBlit v1 v2 v3 v4 = liftIO $ lowerBlit' v1 v2 v3 v4+{-# INLINE lowerBlit #-}++lowerBlitScaled :: MonadIO m => Ptr Surface -> Ptr Rect -> Ptr Surface -> Ptr Rect -> m CInt+lowerBlitScaled v1 v2 v3 v4 = liftIO $ lowerBlitScaled' v1 v2 v3 v4+{-# INLINE lowerBlitScaled #-}++saveBMP :: MonadIO m => Ptr Surface -> CString -> m CInt+saveBMP surface file = liftIO $ do+  rw <- withCString "wb" $ rwFromFile file+  saveBMP_RW surface rw 1+{-# INLINE saveBMP #-}++saveBMP_RW :: MonadIO m => Ptr Surface -> Ptr RWops -> CInt -> m CInt+saveBMP_RW v1 v2 v3 = liftIO $ saveBMP_RW' v1 v2 v3+{-# INLINE saveBMP_RW #-}++setClipRect :: MonadIO m => Ptr Surface -> Ptr Rect -> m Bool+setClipRect v1 v2 = liftIO $ setClipRect' v1 v2+{-# INLINE setClipRect #-}++setColorKey :: MonadIO m => Ptr Surface -> CInt -> Word32 -> m CInt+setColorKey v1 v2 v3 = liftIO $ setColorKey' v1 v2 v3+{-# INLINE setColorKey #-}++setSurfaceAlphaMod :: MonadIO m => Ptr Surface -> Word8 -> m CInt+setSurfaceAlphaMod v1 v2 = liftIO $ setSurfaceAlphaMod' v1 v2+{-# INLINE setSurfaceAlphaMod #-}++setSurfaceBlendMode :: MonadIO m => Ptr Surface -> BlendMode -> m CInt+setSurfaceBlendMode v1 v2 = liftIO $ setSurfaceBlendMode' v1 v2+{-# INLINE setSurfaceBlendMode #-}++setSurfaceColorMod :: MonadIO m => Ptr Surface -> Word8 -> Word8 -> Word8 -> m CInt+setSurfaceColorMod v1 v2 v3 v4 = liftIO $ setSurfaceColorMod' v1 v2 v3 v4+{-# INLINE setSurfaceColorMod #-}++setSurfacePalette :: MonadIO m => Ptr Surface -> Ptr Palette -> m CInt+setSurfacePalette v1 v2 = liftIO $ setSurfacePalette' v1 v2+{-# INLINE setSurfacePalette #-}++setSurfaceRLE :: MonadIO m => Ptr Surface -> CInt -> m CInt+setSurfaceRLE v1 v2 = liftIO $ setSurfaceRLE' v1 v2+{-# INLINE setSurfaceRLE #-}++unlockSurface :: MonadIO m => Ptr Surface -> m ()+unlockSurface v1 = liftIO $ unlockSurface' v1+{-# INLINE unlockSurface #-}++getWindowWMInfo :: MonadIO m => Window -> SysWMinfo -> m Bool+getWindowWMInfo v1 v2 = liftIO $ getWindowWMInfo' v1 v2+{-# INLINE getWindowWMInfo #-}++getClipboardText :: MonadIO m => m CString+getClipboardText = liftIO getClipboardText'+{-# INLINE getClipboardText #-}++hasClipboardText :: MonadIO m => m Bool+hasClipboardText = liftIO hasClipboardText'+{-# INLINE hasClipboardText #-}++setClipboardText :: MonadIO m => CString -> m CInt+setClipboardText v1 = liftIO $ setClipboardText' v1+{-# INLINE setClipboardText #-}
cbits/sdlhelper.c view
@@ -3,75 +3,75 @@  void SDLHelper_JoystickGetDeviceGUID (int device_index, SDL_JoystickGUID *guid) {-	SDL_JoystickGUID t = SDL_JoystickGetDeviceGUID (device_index);-	memcpy (guid, &t, sizeof (*guid));+  SDL_JoystickGUID t = SDL_JoystickGetDeviceGUID (device_index);+  memcpy (guid, &t, sizeof (*guid)); }  void SDLHelper_JoystickGetGUID (SDL_Joystick *joystick, SDL_JoystickGUID *guid) {-	SDL_JoystickGUID t = SDL_JoystickGetGUID (joystick);-	memcpy (guid, &t, sizeof (*guid));+  SDL_JoystickGUID t = SDL_JoystickGetGUID (joystick);+  memcpy (guid, &t, sizeof (*guid)); }  void SDLHelper_JoystickGetGUIDFromString (const char *pchGUID, SDL_JoystickGUID *guid) {-	SDL_JoystickGUID t = SDL_JoystickGetGUIDFromString (pchGUID);-	memcpy (guid, &t, sizeof (*guid));+  SDL_JoystickGUID t = SDL_JoystickGetGUIDFromString (pchGUID);+  memcpy (guid, &t, sizeof (*guid)); }  void SDLHelper_JoystickGetGUIDString (const SDL_JoystickGUID *guid, char *gszGUID, int cbGUID) {-	SDL_JoystickGetGUIDString (*guid, gszGUID, cbGUID);+  SDL_JoystickGetGUIDString (*guid, gszGUID, cbGUID); }  void SDLHelper_GameControllerGetBindForAxis (SDL_GameController *gamecontroller, SDL_GameControllerAxis axis, SDL_GameControllerButtonBind *bind) {-	SDL_GameControllerButtonBind t = SDL_GameControllerGetBindForAxis (gamecontroller, axis);-	memcpy (bind, &t, sizeof (*bind));+  SDL_GameControllerButtonBind t = SDL_GameControllerGetBindForAxis (gamecontroller, axis);+  memcpy (bind, &t, sizeof (*bind)); }  void SDLHelper_GameControllerGetBindForButton (SDL_GameController *gamecontroller, SDL_GameControllerButton button, SDL_GameControllerButtonBind *bind) {-	SDL_GameControllerButtonBind t = SDL_GameControllerGetBindForButton (gamecontroller, button);-	memcpy (bind, &t, sizeof (*bind));+  SDL_GameControllerButtonBind t = SDL_GameControllerGetBindForButton (gamecontroller, button);+  memcpy (bind, &t, sizeof (*bind)); }  char *SDLHelper_GameControllerMappingForGUID (const SDL_JoystickGUID *guid) {-	return SDL_GameControllerMappingForGUID (*guid);+  return SDL_GameControllerMappingForGUID (*guid); }  void SDLHelper_LogMessage (int category, SDL_LogPriority priority, const char *str) {-	SDL_LogMessage (category, priority, "%s", str);+  SDL_LogMessage (category, priority, "%s", str); }  int SDLHelper_RWclose (SDL_RWops *ctx) {-	return SDL_RWclose (ctx);+  return SDL_RWclose (ctx); }  size_t SDLHelper_RWread (SDL_RWops *ctx, void *ptr, size_t size, size_t maxnum) {-	return SDL_RWread (ctx, ptr, size, maxnum);+  return SDL_RWread (ctx, ptr, size, maxnum); }  Sint64 SDLHelper_RWseek (SDL_RWops *ctx, Sint64 offset, int whence) {-	return SDL_RWseek (ctx, offset, whence);+  return SDL_RWseek (ctx, offset, whence); }  Sint64 SDLHelper_RWtell (SDL_RWops *ctx) {-	return SDL_RWtell (ctx);+  return SDL_RWtell (ctx); }  size_t SDLHelper_RWwrite (SDL_RWops *ctx, const void *ptr, size_t size, size_t num) {-	return SDL_RWwrite (ctx, ptr, size, num);+  return SDL_RWwrite (ctx, ptr, size, num); }  int SDLHelper_SetError (const char *str) {-	return SDL_SetError ("%s", str);+  return SDL_SetError ("%s", str); }
sdl2.cabal view
@@ -1,5 +1,5 @@ name:                sdl2-version:             1.2.0+version:             1.3.0 synopsis:            Low-level bindings to SDL2 description:         Low-level bindings to the SDL2 library, version 2.0.3. license:             BSD3@@ -17,12 +17,12 @@  source-repository head   type:     git-  location: git://github.com/haskell-game/sdl2.git+  location: https://github.com/haskell-game/sdl2.git  source-repository this   type:     git-  location: git://github.com/haskell-game/sdl2.git-  tag:      v1.2.0+  location: https://github.com/haskell-game/sdl2.git+  tag:      v1.3.0  library   ghc-options: -Wall@@ -42,12 +42,6 @@     Graphics.UI.SDL.Types     Graphics.UI.SDL.Video -  other-modules:-    Graphics.UI.SDL.Enum.Internal--  if impl(ghc>=7.8)-    exposed-modules: Graphics.UI.SDL.Enum.Pattern-   c-sources:     cbits/sdlhelper.c @@ -65,7 +59,8 @@     sdl2 >= 2.0.3    build-depends:-    base == 4.*+    base >= 4.7 && < 5,+    transformers >= 0.2 && < 0.5    default-language:     Haskell2010