packages feed

SDL 0.5.2 → 0.5.3

raw patch · 13 files changed

+11/−3796 lines, 13 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

− Graphics/UI/SDL/Audio.hs
@@ -1,71 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE "SDL.h" #-}-{-# LINE 1 "Graphics/UI/SDL/Audio.hsc" #-}--{-# LINE 2 "Graphics/UI/SDL/Audio.hsc" #-}--------------------------------------------------------------------------------- |--- Module      :  Graphics.UI.SDL.Audio--- Copyright   :  (c) David Himmelstrup 2005--- License     :  BSD-like------ Maintainer  :  lemmih@gmail.com--- Stability   :  provisional--- Portability :  portable----------------------------------------------------------------------------------module Graphics.UI.SDL.Audio-    ( AudioFormat (..)-    , fromAudioFormat-    , toAudioFormat-    ) where--import Data.Word (Word16)--data AudioFormat-    = AudioU8-    | AudioS8-    | AudioU16LSB-    | AudioS16LSB-    | AudioU16MSB-    | AudioS16MSB-    | AudioU16Sys-    | AudioS16Sys-      deriving (Show,Eq,Ord,Enum)--fromAudioFormat :: AudioFormat -> Word16-fromAudioFormat AudioU8 = 8-{-# LINE 34 "Graphics/UI/SDL/Audio.hsc" #-}-fromAudioFormat AudioS8 = 32776-{-# LINE 35 "Graphics/UI/SDL/Audio.hsc" #-}-fromAudioFormat AudioU16LSB = 16-{-# LINE 36 "Graphics/UI/SDL/Audio.hsc" #-}-fromAudioFormat AudioS16LSB = 32784-{-# LINE 37 "Graphics/UI/SDL/Audio.hsc" #-}-fromAudioFormat AudioU16MSB = 4112-{-# LINE 38 "Graphics/UI/SDL/Audio.hsc" #-}-fromAudioFormat AudioS16MSB = 36880-{-# LINE 39 "Graphics/UI/SDL/Audio.hsc" #-}-fromAudioFormat AudioU16Sys = 16-{-# LINE 40 "Graphics/UI/SDL/Audio.hsc" #-}-fromAudioFormat AudioS16Sys = 32784-{-# LINE 41 "Graphics/UI/SDL/Audio.hsc" #-}--toAudioFormat :: Word16 -> AudioFormat-toAudioFormat 8 = AudioU8-{-# LINE 44 "Graphics/UI/SDL/Audio.hsc" #-}-toAudioFormat 32776 = AudioS8-{-# LINE 45 "Graphics/UI/SDL/Audio.hsc" #-}-toAudioFormat 16 = AudioU16LSB-{-# LINE 46 "Graphics/UI/SDL/Audio.hsc" #-}-toAudioFormat 32784 = AudioS16LSB-{-# LINE 47 "Graphics/UI/SDL/Audio.hsc" #-}-toAudioFormat 4112 = AudioU16MSB-{-# LINE 48 "Graphics/UI/SDL/Audio.hsc" #-}-toAudioFormat 36880 = AudioS16MSB-{-# LINE 49 "Graphics/UI/SDL/Audio.hsc" #-}-toAudioFormat _ = error "Graphics.UI.SDL.Audio.toAudioFormat: bad argument"--
− Graphics/UI/SDL/Events.hs
@@ -1,750 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE "SDL.h" #-}-{-# LINE 1 "Graphics/UI/SDL/Events.hsc" #-}--{-# LINE 2 "Graphics/UI/SDL/Events.hsc" #-}--------------------------------------------------------------------------------- |--- Module      :  Graphics.UI.SDL.Events--- Copyright   :  (c) David Himmelstrup 2005--- License     :  BSD-like------ Maintainer  :  lemmih@gmail.com--- Stability   :  provisional--- Portability :  portable----------------------------------------------------------------------------------module Graphics.UI.SDL.Events-    ( Event (..)-    , SDLEvent (..)-    , UserEventID (..)-    , MouseButton (..)-    , Focus(..)-    , toSafePtr-    , tryFromSafePtr-    , fromSafePtr-    , typeOfSafePtr-    , enableKeyRepeat-    , enableUnicode-    , queryUnicodeState-    , getKeyName-    , getMouseState-    , getRelativeMouseState-    , getModState-    , setModState-    , tryPushEvent-    , pushEvent-    , pollEvent-    , waitEvent-    , waitEventBlocking-    , pumpEvents-    , enableEvent-    , queryEventState-    , getAppState-    ) where--import Foreign (Int16, Word8, Word16, Word32, Ptr,-               Storable(poke, sizeOf, alignment, peekByteOff, pokeByteOff, peek),-               unsafePerformIO, toBool, new, alloca)-import Foreign.C (peekCString, CString)-import Data.Bits (Bits((.&.), shiftL))-import Control.Concurrent (threadDelay)-import Prelude hiding (Enum(..))-import qualified Prelude (Enum(..))--import Foreign.StablePtr (newStablePtr,castStablePtrToPtr,castPtrToStablePtr,deRefStablePtr)-import Data.Typeable (Typeable(typeOf),TypeRep)--import Graphics.UI.SDL.Keysym (SDLKey, Modifier, Keysym)-import Graphics.UI.SDL.Utilities (Enum(..), intToBool, toBitmask, fromBitmask)-import Graphics.UI.SDL.General (unwrapBool, failWithError)-import Graphics.UI.SDL.Video (Toggle(..), fromToggle)---- |Low level event structure keeping a one-to-one relation with the C event structure.-data SDLEvent = SDLNoEvent-              | SDLActiveEvent-              | SDLKeyDown-              | SDLKeyUp-              | SDLMouseMotion-              | SDLMouseButtonDown-              | SDLMouseButtonUp-              | SDLJoyAxisMotion-              | SDLJoyBallMotion-              | SDLJoyHatMotion-              | SDLJoyButtonDown-              | SDLJoyButtonUp-              | SDLQuit-              | SDLSysWMEvent-              | SDLVideoResize-              | SDLVideoExpose-              | SDLUserEvent Word8-              | SDLNumEvents-    deriving (Eq, Ord, Show)-instance Bounded SDLEvent where-    minBound = SDLNoEvent-    maxBound = SDLNumEvents--fromSDLEvent :: SDLEvent -> Word8-fromSDLEvent SDLNoEvent = 0-{-# LINE 85 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLActiveEvent = 1-{-# LINE 86 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLKeyDown = 2-{-# LINE 87 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLKeyUp = 3-{-# LINE 88 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLMouseMotion = 4-{-# LINE 89 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLMouseButtonDown = 5-{-# LINE 90 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLMouseButtonUp = 6-{-# LINE 91 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLJoyAxisMotion = 7-{-# LINE 92 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLJoyBallMotion = 8-{-# LINE 93 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLJoyHatMotion = 9-{-# LINE 94 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLJoyButtonDown = 10-{-# LINE 95 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLJoyButtonUp = 11-{-# LINE 96 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLQuit = 12-{-# LINE 97 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLSysWMEvent = 13-{-# LINE 98 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLVideoResize = 16-{-# LINE 99 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLVideoExpose = 17-{-# LINE 100 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent (SDLUserEvent n) = 24 + n-{-# LINE 101 "Graphics/UI/SDL/Events.hsc" #-}-fromSDLEvent SDLNumEvents = 32-{-# LINE 102 "Graphics/UI/SDL/Events.hsc" #-}--toSDLEvent :: Word8 -> SDLEvent-toSDLEvent 0 = SDLNoEvent-{-# LINE 105 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 1 = SDLActiveEvent-{-# LINE 106 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 2 = SDLKeyDown-{-# LINE 107 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 3 = SDLKeyUp-{-# LINE 108 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 4 = SDLMouseMotion-{-# LINE 109 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 5 = SDLMouseButtonDown-{-# LINE 110 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 6 = SDLMouseButtonUp-{-# LINE 111 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 7 = SDLJoyAxisMotion-{-# LINE 112 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 8 = SDLJoyBallMotion-{-# LINE 113 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 9 = SDLJoyHatMotion-{-# LINE 114 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 10 = SDLJoyButtonDown-{-# LINE 115 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 11 = SDLJoyButtonUp-{-# LINE 116 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 12 = SDLQuit-{-# LINE 117 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 13 = SDLSysWMEvent-{-# LINE 118 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 16 = SDLVideoResize-{-# LINE 119 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent 17 = SDLVideoExpose-{-# LINE 120 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent n -    | n >= 24 &&-{-# LINE 122 "Graphics/UI/SDL/Events.hsc" #-}-      n <  32 = SDLUserEvent (n - 24)-{-# LINE 123 "Graphics/UI/SDL/Events.hsc" #-}-toSDLEvent _ = error "Graphics.UI.SDL.Events.toSDLEvent: bad argument"---- |High level event structure.-data Event-    = NoEvent-    | GotFocus [Focus]-    | LostFocus [Focus]-    | KeyDown !Keysym-    | KeyUp !Keysym-    | MouseMotion !Word16 !Word16 !Int16 !Int16-    | MouseButtonDown !Word16-                      !Word16-                      !MouseButton-    | MouseButtonUp !Word16-                    !Word16-                    !MouseButton-    | JoyAxisMotion !Word8 !Word8 !Int16-      -- ^ device index, axis index, axis value.-    | JoyBallMotion !Word8 !Word8 !Int16 !Int16-      -- ^ device index, trackball index, relative motion.-    | JoyHatMotion !Word8 !Word8 !Word8-      -- ^ device index, hat index, hat position.-    | JoyButtonDown !Word8 !Word8-      -- ^ device index, button index.-    | JoyButtonUp !Word8 !Word8-      -- ^ device index, button index.-    | VideoResize !Int !Int-      -- ^ When @Resizable@ is passed as a flag to 'Graphics.UI.SDL.Video.setVideoMode' the user is-      --   allowed to resize the applications window. When the window is resized-      --   an @VideoResize@ is reported, with the new window width and height values.-      --   When an @VideoResize@ is recieved the window should be resized to the-      --   new dimensions using 'Graphics.UI.SDL.Video.setVideoMode'.-    | VideoExpose-      -- ^ A @VideoExpose@ event is triggered when the screen has been modified-      --   outside of the application, usually by the window manager and needs to be redrawn.-    | Quit-    | User !UserEventID !Int !(Ptr ()) !(Ptr ())-    | Unknown-      deriving (Show,Eq)--data MouseButton-    = ButtonLeft-    | ButtonMiddle-    | ButtonRight-    | ButtonWheelUp-    | ButtonWheelDown-      deriving (Show,Eq,Ord)--instance Enum MouseButton Word8 where-    toEnum 1 = ButtonLeft-{-# LINE 173 "Graphics/UI/SDL/Events.hsc" #-}-    toEnum 2 = ButtonMiddle-{-# LINE 174 "Graphics/UI/SDL/Events.hsc" #-}-    toEnum 3 = ButtonRight-{-# LINE 175 "Graphics/UI/SDL/Events.hsc" #-}-    toEnum 4 = ButtonWheelUp-{-# LINE 176 "Graphics/UI/SDL/Events.hsc" #-}-    toEnum 5 = ButtonWheelDown-{-# LINE 177 "Graphics/UI/SDL/Events.hsc" #-}-    toEnum _ = error "Graphics.UI.SDL.Events.toEnum: bad argument"-    fromEnum ButtonLeft = 1-{-# LINE 179 "Graphics/UI/SDL/Events.hsc" #-}-    fromEnum ButtonMiddle = 2-{-# LINE 180 "Graphics/UI/SDL/Events.hsc" #-}-    fromEnum ButtonRight = 3-{-# LINE 181 "Graphics/UI/SDL/Events.hsc" #-}-    fromEnum ButtonWheelUp = 4-{-# LINE 182 "Graphics/UI/SDL/Events.hsc" #-}-    fromEnum ButtonWheelDown = 5-{-# LINE 183 "Graphics/UI/SDL/Events.hsc" #-}-    succ ButtonLeft = ButtonMiddle-    succ ButtonMiddle = ButtonRight-    succ ButtonRight = ButtonWheelUp-    succ ButtonWheelUp = ButtonWheelDown-    succ _ = error "Graphics.UI.SDL.Events.succ: bad argument"-    pred ButtonMiddle = ButtonLeft-    pred ButtonRight = ButtonMiddle-    pred ButtonWheelUp = ButtonRight-    pred ButtonWheelDown = ButtonWheelUp-    pred _ = error "Graphics.UI.SDL.Events.pred: bad argument"-    enumFromTo x y | x > y = []-                   | x == y = [y]-                   | True = x : enumFromTo (succ x) y---data Focus-    = MouseFocus-    | InputFocus-    | ApplicationFocus-      deriving (Show,Eq,Ord)--instance Bounded Focus where-    minBound = MouseFocus-    maxBound = ApplicationFocus--instance Enum Focus Word8 where-    fromEnum MouseFocus = 1-{-# LINE 210 "Graphics/UI/SDL/Events.hsc" #-}-    fromEnum InputFocus = 2-{-# LINE 211 "Graphics/UI/SDL/Events.hsc" #-}-    fromEnum ApplicationFocus = 4-{-# LINE 212 "Graphics/UI/SDL/Events.hsc" #-}-    toEnum 1 = MouseFocus-{-# LINE 213 "Graphics/UI/SDL/Events.hsc" #-}-    toEnum 2 = InputFocus-{-# LINE 214 "Graphics/UI/SDL/Events.hsc" #-}-    toEnum 4 = ApplicationFocus-{-# LINE 215 "Graphics/UI/SDL/Events.hsc" #-}-    toEnum _ = error "Graphics.UI.SDL.Events.toEnum: bad argument"-    succ MouseFocus = InputFocus-    succ InputFocus = ApplicationFocus-    succ _ = error "Graphics.UI.SDL.Events.succ: bad argument"-    pred InputFocus = MouseFocus-    pred ApplicationFocus = InputFocus-    pred _ = error "Graphics.UI.SDL.Events.pred: bad argument"-    enumFromTo x y | x > y = []-                   | x == y = [y]-                   | True = x : enumFromTo (succ x) y---- |Typed user events ranging from 0 to 7-data UserEventID-    = UID0 | UID1 | UID2 | UID3 | UID4 | UID5 | UID6 | UID7-      deriving (Show,Eq,Prelude.Enum)---- |A safe pointer keeps the type of the object it was created from---  and checks it when it's deconstructed.-type SafePtr = Ptr ()---- |Constructs a safe pointer from an arbitrary value.-toSafePtr :: (Typeable a) => a -> IO SafePtr-toSafePtr val-    = do stablePtr <- newStablePtr (typeOf val,val)-         return (castStablePtrToPtr stablePtr)---- |Return the type of the object the safe pointer was created from.-typeOfSafePtr :: SafePtr -> IO TypeRep-typeOfSafePtr ptr-    = fmap fst (deRefStablePtr (castPtrToStablePtr ptr))---- |Get object from a safe pointer. @Nothing@ on type mismatch.-tryFromSafePtr :: (Typeable a) => SafePtr -> IO (Maybe a)-tryFromSafePtr ptr-    = do (ty,val) <- deRefStablePtr (castPtrToStablePtr ptr)-         if ty == typeOf val-            then return (Just val)-            else return Nothing---- |Get object from a safe pointer. Throws an exception on type mismatch.-fromSafePtr :: (Typeable a) => SafePtr -> IO a-fromSafePtr ptr-    = do ret <- tryFromSafePtr ptr-         case ret of-           Nothing -> error "Graphics.UI.SDL.Events.fromSafePtr: invalid type."-           Just a  -> return a--toEventType :: UserEventID -> Word8-toEventType eid = fromIntegral (Prelude.fromEnum eid)--fromEventType :: Word8 -> UserEventID-fromEventType etype = Prelude.toEnum (fromIntegral etype)--peekActiveEvent :: Ptr Event -> IO Event-peekActiveEvent ptr-    = do gain <- fmap toBool (((\hsc_ptr -> peekByteOff hsc_ptr 1) ptr) :: IO Word8)-{-# LINE 271 "Graphics/UI/SDL/Events.hsc" #-}-         state <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr :: IO Word8-{-# LINE 272 "Graphics/UI/SDL/Events.hsc" #-}-         return $! (if gain then GotFocus else LostFocus) (fromBitmask state)--peekKey :: (Keysym -> Event) -> Ptr Event -> IO Event-peekKey mkEvent ptr-    = do keysym <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr-{-# LINE 277 "Graphics/UI/SDL/Events.hsc" #-}-         return $! mkEvent keysym--peekMouseMotion :: Ptr Event -> IO Event-peekMouseMotion ptr-    = do x <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr-{-# LINE 282 "Graphics/UI/SDL/Events.hsc" #-}-         y <- (\hsc_ptr -> peekByteOff hsc_ptr 6) ptr-{-# LINE 283 "Graphics/UI/SDL/Events.hsc" #-}-         xrel <- (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr-{-# LINE 284 "Graphics/UI/SDL/Events.hsc" #-}-         yrel <- (\hsc_ptr -> peekByteOff hsc_ptr 10) ptr-{-# LINE 285 "Graphics/UI/SDL/Events.hsc" #-}-         return $! MouseMotion x y xrel yrel--peekMouse :: (Word16 -> Word16 -> MouseButton -> Event) -> Ptr Event -> IO Event-peekMouse mkEvent ptr-    = do b <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr-{-# LINE 290 "Graphics/UI/SDL/Events.hsc" #-}-         x <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr-{-# LINE 291 "Graphics/UI/SDL/Events.hsc" #-}-         y <- (\hsc_ptr -> peekByteOff hsc_ptr 6) ptr-{-# LINE 292 "Graphics/UI/SDL/Events.hsc" #-}-         return $! mkEvent x y (toEnum (b::Word8))--peekJoyAxisMotion :: Ptr Event -> IO Event-peekJoyAxisMotion ptr-    = do which <- (\hsc_ptr -> peekByteOff hsc_ptr 1) ptr-{-# LINE 297 "Graphics/UI/SDL/Events.hsc" #-}-         axis <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr-{-# LINE 298 "Graphics/UI/SDL/Events.hsc" #-}-         value <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr-{-# LINE 299 "Graphics/UI/SDL/Events.hsc" #-}-         return $! JoyAxisMotion which axis value--peekJoyBallMotion :: Ptr Event -> IO Event-peekJoyBallMotion ptr-    = do which <- (\hsc_ptr -> peekByteOff hsc_ptr 1) ptr-{-# LINE 304 "Graphics/UI/SDL/Events.hsc" #-}-         ball <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr-{-# LINE 305 "Graphics/UI/SDL/Events.hsc" #-}-         xrel <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr-{-# LINE 306 "Graphics/UI/SDL/Events.hsc" #-}-         yrel <- (\hsc_ptr -> peekByteOff hsc_ptr 6) ptr-{-# LINE 307 "Graphics/UI/SDL/Events.hsc" #-}-         return $! JoyBallMotion which ball xrel yrel--peekJoyHatMotion :: Ptr Event -> IO Event-peekJoyHatMotion ptr-    = do which <- (\hsc_ptr -> peekByteOff hsc_ptr 1) ptr-{-# LINE 312 "Graphics/UI/SDL/Events.hsc" #-}-         hat <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr-{-# LINE 313 "Graphics/UI/SDL/Events.hsc" #-}-         value <- (\hsc_ptr -> peekByteOff hsc_ptr 3) ptr-{-# LINE 314 "Graphics/UI/SDL/Events.hsc" #-}-         return $! JoyHatMotion which hat value--peekJoyButton :: (Word8 -> Word8 -> Event) -> Ptr Event -> IO Event-peekJoyButton mkEvent ptr-    = do which <- (\hsc_ptr -> peekByteOff hsc_ptr 1) ptr-{-# LINE 319 "Graphics/UI/SDL/Events.hsc" #-}-         button <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr-{-# LINE 320 "Graphics/UI/SDL/Events.hsc" #-}-         return $! mkEvent which button--peekResize :: Ptr Event -> IO Event-peekResize ptr-    = do w <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr-{-# LINE 325 "Graphics/UI/SDL/Events.hsc" #-}-         h <- (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr-{-# LINE 326 "Graphics/UI/SDL/Events.hsc" #-}-         return $! VideoResize w h--peekUserEvent :: Ptr Event -> Word8 -> IO Event-peekUserEvent ptr n-    = do code <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr-{-# LINE 331 "Graphics/UI/SDL/Events.hsc" #-}-         data1 <- (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr-{-# LINE 332 "Graphics/UI/SDL/Events.hsc" #-}-         data2 <- (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr-{-# LINE 333 "Graphics/UI/SDL/Events.hsc" #-}-         return $ User (fromEventType n) code data1 data2--getEventType :: Event -> Word8-getEventType = fromSDLEvent . eventToSDLEvent--eventToSDLEvent :: Event -> SDLEvent-eventToSDLEvent NoEvent = SDLNoEvent-eventToSDLEvent (GotFocus _) = SDLActiveEvent-eventToSDLEvent (LostFocus _) = SDLActiveEvent-eventToSDLEvent (KeyDown _) = SDLKeyDown-eventToSDLEvent (KeyUp _) = SDLKeyUp-eventToSDLEvent (MouseMotion _ _ _ _) = SDLMouseMotion-eventToSDLEvent (MouseButtonDown _ _ _) = SDLMouseButtonDown-eventToSDLEvent (MouseButtonUp _ _ _) = SDLMouseButtonUp-eventToSDLEvent (JoyAxisMotion _ _ _) = SDLJoyAxisMotion-eventToSDLEvent (JoyBallMotion _ _ _ _) = SDLJoyBallMotion-eventToSDLEvent (JoyHatMotion _ _ _) = SDLJoyHatMotion-eventToSDLEvent (JoyButtonDown _ _) = SDLJoyButtonDown-eventToSDLEvent (JoyButtonUp _ _) = SDLJoyButtonUp-eventToSDLEvent Quit = SDLQuit-eventToSDLEvent (VideoResize _ _) = SDLVideoResize-eventToSDLEvent VideoExpose = SDLVideoExpose-eventToSDLEvent (User uid _ _ _) = SDLUserEvent (toEventType uid)-eventToSDLEvent _ = error "Graphics.UI.SDL.Events.eventToSDLEvent: bad argument"--pokeActiveEvent :: Ptr Event -> Word8 -> [Focus] -> IO ()-pokeActiveEvent ptr gain focus-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 1) ptr gain-{-# LINE 361 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr (toBitmask focus)-{-# LINE 362 "Graphics/UI/SDL/Events.hsc" #-}--pokeKey :: Ptr Event -> Word8 -> Keysym -> IO ()-pokeKey ptr state keysym-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr state-{-# LINE 366 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr keysym-{-# LINE 367 "Graphics/UI/SDL/Events.hsc" #-}--pokeMouseMotion :: Ptr Event -> Word16 -> Word16 -> Int16 -> Int16 -> IO ()-pokeMouseMotion ptr x y xrel yrel-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr x-{-# LINE 371 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 6) ptr y-{-# LINE 372 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr xrel-{-# LINE 373 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 10) ptr yrel-{-# LINE 374 "Graphics/UI/SDL/Events.hsc" #-}--pokeMouseButton :: Ptr Event -> Word8 -> Word16 -> Word16 -> MouseButton -> IO ()-pokeMouseButton ptr state x y b-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr x-{-# LINE 378 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 6) ptr y-{-# LINE 379 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 3) ptr state-{-# LINE 380 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr (fromEnum b)-{-# LINE 381 "Graphics/UI/SDL/Events.hsc" #-}--pokeJoyAxisMotion :: Ptr Event -> Word8 -> Word8 -> Int16 -> IO ()-pokeJoyAxisMotion ptr which axis value-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 1) ptr which-{-# LINE 385 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr axis-{-# LINE 386 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr value-{-# LINE 387 "Graphics/UI/SDL/Events.hsc" #-}--pokeJoyBallMotion :: Ptr Event -> Word8 -> Word8 -> Int16 -> Int16 -> IO ()-pokeJoyBallMotion ptr which ball xrel yrel-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 1) ptr which-{-# LINE 391 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr ball-{-# LINE 392 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr xrel-{-# LINE 393 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 6) ptr yrel-{-# LINE 394 "Graphics/UI/SDL/Events.hsc" #-}--pokeJoyHatMotion :: Ptr Event -> Word8 -> Word8 -> Word8 -> IO ()-pokeJoyHatMotion ptr which hat value-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 1) ptr which-{-# LINE 398 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr hat-{-# LINE 399 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 3) ptr value-{-# LINE 400 "Graphics/UI/SDL/Events.hsc" #-}--pokeJoyButton :: Ptr Event -> Word8 -> Word8 -> Word8 -> IO ()-pokeJoyButton ptr which button state-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 1) ptr which-{-# LINE 404 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr button-{-# LINE 405 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 3) ptr state-{-# LINE 406 "Graphics/UI/SDL/Events.hsc" #-}--pokeResize :: Ptr Event -> Int -> Int -> IO ()-pokeResize ptr w h-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr w-{-# LINE 410 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr h-{-# LINE 411 "Graphics/UI/SDL/Events.hsc" #-}--pokeUserEvent :: Ptr Event -> UserEventID -> Int -> Ptr () -> Ptr () -> IO ()-pokeUserEvent ptr _eventId code data1 data2-    = do (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr code-{-# LINE 415 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr data1-{-# LINE 416 "Graphics/UI/SDL/Events.hsc" #-}-         (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr data2-{-# LINE 417 "Graphics/UI/SDL/Events.hsc" #-}--instance Storable Event where-    sizeOf = const ((24))-{-# LINE 420 "Graphics/UI/SDL/Events.hsc" #-}-    alignment = const 4-    poke ptr event-        = do pokeByteOff ptr 0 (getEventType event)-             case event of-               NoEvent               -> return ()-               GotFocus focus        -> pokeActiveEvent ptr 1 focus-               LostFocus focus       -> pokeActiveEvent ptr 0 focus-               KeyDown keysym        -> pokeKey ptr 1 keysym-{-# LINE 428 "Graphics/UI/SDL/Events.hsc" #-}-               KeyUp keysym          -> pokeKey ptr 0 keysym-{-# LINE 429 "Graphics/UI/SDL/Events.hsc" #-}-               MouseMotion x y xrel yrel -> pokeMouseMotion ptr x y xrel yrel-               MouseButtonDown x y b -> pokeMouseButton ptr 1 x y b-{-# LINE 431 "Graphics/UI/SDL/Events.hsc" #-}-               MouseButtonUp x y b   -> pokeMouseButton ptr 0 x y b-{-# LINE 432 "Graphics/UI/SDL/Events.hsc" #-}-               JoyAxisMotion w a v   -> pokeJoyAxisMotion ptr w a v-               JoyBallMotion w b x y -> pokeJoyBallMotion ptr w b x y-               JoyHatMotion w h v    -> pokeJoyHatMotion ptr w h v-               JoyButtonDown w b     -> pokeJoyButton ptr w b 1-{-# LINE 436 "Graphics/UI/SDL/Events.hsc" #-}-               JoyButtonUp w b       -> pokeJoyButton ptr w b 0-{-# LINE 437 "Graphics/UI/SDL/Events.hsc" #-}-               Quit                  -> return ()-               VideoResize w h       -> pokeResize ptr w h-               VideoExpose           -> return ()-               User eventId c d1 d2  -> pokeUserEvent ptr eventId c d1 d2-               e                     -> failWithError $ "Unhandled eventtype: " ++ show e-    peek ptr-        = do eventType <- peekByteOff ptr 0-             case toSDLEvent eventType of-               SDLNoEvent         -> return NoEvent-               SDLActiveEvent     -> peekActiveEvent ptr-               SDLKeyDown         -> peekKey KeyDown ptr-               SDLKeyUp           -> peekKey KeyUp ptr-               SDLMouseMotion     -> peekMouseMotion ptr-               SDLMouseButtonDown -> peekMouse MouseButtonDown ptr-               SDLMouseButtonUp   -> peekMouse MouseButtonUp ptr-               SDLJoyAxisMotion   -> peekJoyAxisMotion ptr-               SDLJoyBallMotion   -> peekJoyBallMotion ptr-               SDLJoyHatMotion    -> peekJoyHatMotion ptr-               SDLJoyButtonDown   -> peekJoyButton JoyButtonDown ptr-               SDLJoyButtonUp     -> peekJoyButton JoyButtonUp ptr-               SDLQuit            -> return Quit---           SDLSysWMEvent-               SDLVideoResize     -> peekResize ptr-               SDLVideoExpose     -> return VideoExpose-               SDLUserEvent n     -> peekUserEvent ptr n---           SDLNumEvents           -               e                  -> failWithError $ "Unhandled eventtype: " ++ show e---- int SDL_EnableKeyRepeat(int delay, int interval);-foreign import ccall unsafe "SDL_EnableKeyRepeat" sdlEnableKeyRepeat :: Int -> Int -> IO Int---- | Sets keyboard repeat rate. Returns @False@ on error.-enableKeyRepeat :: Int -- ^ Initial delay. @0@ to disable.-                -> Int -- ^ Interval.-                -> IO Bool-enableKeyRepeat delay interval-    = intToBool (-1) (sdlEnableKeyRepeat delay interval)---- int SDL_EnableUNICODE(int enable);-foreign import ccall unsafe "SDL_EnableUNICODE" sdlEnableUnicode :: Int -> IO Int---- | Enables or disables unicode translation.-enableUnicode :: Bool -> IO ()-enableUnicode enable = sdlEnableUnicode (fromToggle toggle) >>-                       return ()-    where toggle = case enable of-                     True -> Enable-                     False -> Disable---- | Returns the current state of unicode translation. See also 'enableUnicode'.-queryUnicodeState :: IO Bool-queryUnicodeState = fmap toBool (sdlEnableUnicode (fromToggle Query))---- char *SDL_GetKeyName(SDLKey key);-foreign import ccall unsafe "SDL_GetKeyName" sdlGetKeyName :: Word32 -> IO CString-{-# LINE 492 "Graphics/UI/SDL/Events.hsc" #-}---- | Gets the name of an SDL virtual keysym.-getKeyName :: SDLKey -> String-getKeyName key = unsafePerformIO $-                 sdlGetKeyName (fromEnum key) >>= peekCString---- SDLMod SDL_GetModState(void);-foreign import ccall unsafe "SDL_GetModState" sdlGetModState :: IO Word32-{-# LINE 500 "Graphics/UI/SDL/Events.hsc" #-}---- | Gets the state of modifier keys.-getModState :: IO [Modifier]-getModState = fmap fromBitmask sdlGetModState---- void SDL_SetModState(SDLMod modstate);-foreign import ccall unsafe "SDL_SetModState" sdlSetModState :: Word32 -> IO ()-{-# LINE 507 "Graphics/UI/SDL/Events.hsc" #-}---- | Sets the internal state of modifier keys.-setModState :: [Modifier] -> IO ()-setModState = sdlSetModState . toBitmask--mousePressed :: Word8 -> MouseButton -> Bool-mousePressed mask b-    = mask .&. (1 `shiftL` num) /= 0-    where num = fromIntegral (fromEnum b)-                  ---- Uint8 SDL_GetMouseState(int *x, int *y);-foreign import ccall "SDL_GetMouseState" sdlGetMouseState :: Ptr Int -> Ptr Int -> IO Word8-foreign import ccall "SDL_GetRelativeMouseState" sdlGetRelativeMouseState :: Ptr Int -> Ptr Int -> IO Word8---- | Retrieves the current state of the mouse. Returns (X position, Y position, pressed buttons).-getMouseState :: IO (Int, Int, [MouseButton])-getMouseState = mouseStateGetter sdlGetMouseState---- | Retrieve the current state of the mouse. Like 'getMouseState' except that X and Y are---   set to the change since last call to getRelativeMouseState.-getRelativeMouseState :: IO (Int, Int, [MouseButton])-getRelativeMouseState = mouseStateGetter sdlGetRelativeMouseState--mouseStateGetter :: (Ptr Int -> Ptr Int -> IO Word8) -> IO  (Int, Int, [MouseButton])-mouseStateGetter getter-    = alloca $ \xPtr ->-      alloca $ \yPtr ->-      do ret <- getter xPtr yPtr-         [x,y] <- mapM peek [xPtr,yPtr]-         return (x,y,filter (mousePressed ret) [ButtonLeft-                                               ,ButtonMiddle-                                               ,ButtonRight-                                               ,ButtonWheelUp-                                               ,ButtonWheelDown])------ int SDL_PollEvent(SDL_Event *event);-foreign import ccall "SDL_PollEvent" sdlPollEvent :: Ptr Event -> IO Int---- | Polls for currently pending events.-pollEvent :: IO Event-pollEvent -    = alloca poll-    where poll ptr-              = do ret <- sdlPollEvent ptr-                   case ret of-                     0 -> return NoEvent-                     _ -> do event <- peek ptr-                             case event of-                               NoEvent -> poll ptr-                               _ -> return event---- void SDL_PumpEvents(void);--- | Pumps the event loop, gathering events from the input devices.-foreign import ccall unsafe "SDL_PumpEvents" pumpEvents :: IO ()---- int SDL_PushEvent(SDL_Event *event);-foreign import ccall unsafe "SDL_PushEvent" sdlPushEvent :: Ptr Event -> IO Int---- | Pushes an event onto the event queue. Returns @False@ on error.-tryPushEvent :: Event -> IO Bool-tryPushEvent event-    = new event >>= (fmap (0==) . sdlPushEvent)---- | Pushes an event onto the event queue. Throws an exception on error.-pushEvent :: Event -> IO ()-pushEvent = unwrapBool "SDL_PushEvent" . tryPushEvent---- int SDL_WaitEvent(SDL_Event *event);-foreign import ccall unsafe "SDL_WaitEvent" sdlWaitEvent :: Ptr Event -> IO Int---- | Waits indefinitely for the next available event.-waitEvent :: IO Event-waitEvent-    = loop-    where loop = do pumpEvents-                    event <- pollEvent-                    case event of-                      NoEvent -> threadDelay 10 >> loop-                      _ -> return event---- | Waits indefinitely for the next available event. Blocks Haskell threads.-waitEventBlocking :: IO Event-waitEventBlocking-    = alloca wait-    where wait ptr-              = do ret <- sdlWaitEvent ptr-                   case ret of-                     0 -> failWithError "SDL_WaitEvent"-                     _ -> do event <- peek ptr-                             case event of-                               NoEvent -> wait ptr-                               _ -> return event---- Uint8 SDL_EventState(Uint8 type, int state);-foreign import ccall unsafe "SDL_EventState" sdlEventState :: Word8 -> Int -> IO Word8---- |Enable or disable events from being processed.-enableEvent :: SDLEvent -> Bool -> IO ()-enableEvent event on-    = sdlEventState (fromSDLEvent event) (fromToggle state) >> return ()-    where state-              | on = Enable-              | otherwise = Disable---- |Checks current state of a event. See also 'enableEvent'.-queryEventState :: SDLEvent -> IO Bool-queryEventState event-    = fmap (==1) (sdlEventState (fromSDLEvent event) (fromToggle Query))---- Uint8 SDL_GetAppState(void);-foreign import ccall unsafe "SDL_GetAppState" sdlGetAppState :: IO Word8---- | Gets the state of the application.-getAppState :: IO [Focus]-getAppState = fmap fromBitmask sdlGetAppState-
− Graphics/UI/SDL/General.hs
@@ -1,182 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE "SDL.h" #-}-{-# LINE 1 "Graphics/UI/SDL/General.hsc" #-}--{-# LINE 2 "Graphics/UI/SDL/General.hsc" #-}--------------------------------------------------------------------------------- |--- Module      :  Graphics.UI.SDL.General--- Copyright   :  (c) David Himmelstrup 2005--- License     :  BSD-like------ Maintainer  :  lemmih@gmail.com--- Stability   :  provisional--- Portability :  portable----------------------------------------------------------------------------------module Graphics.UI.SDL.General-    ( init-    , withInit-    , initSubSystem-    , quitSubSystem-    , quit-    , wasInit-    , getError-    , failWithError-    , unwrapBool-    , unwrapMaybe-    , unwrapInt-    , InitFlag(..)-    ) where--import Foreign.C (peekCString,CString)-import Data.Maybe (fromMaybe)-import Control.Monad (when)-import Data.Word (Word32)--import Control.Exception (bracket_)--import Prelude hiding (init,Enum(..))--import Graphics.UI.SDL.Utilities (Enum(..), toBitmask, fromBitmask)---data InitFlag = InitTimer-              | InitAudio-              | InitVideo-              | InitCDROM-              | InitJoystick-              | InitNoParachute-              | InitEventthread-              | InitEverything-    deriving (Eq, Ord, Show, Read)-instance Bounded InitFlag where-      minBound = InitTimer-      maxBound = InitEventthread--instance Enum InitFlag Word32 where-      fromEnum InitTimer = 1-{-# LINE 55 "Graphics/UI/SDL/General.hsc" #-}-      fromEnum InitAudio = 16-{-# LINE 56 "Graphics/UI/SDL/General.hsc" #-}-      fromEnum InitVideo = 32-{-# LINE 57 "Graphics/UI/SDL/General.hsc" #-}-      fromEnum InitCDROM = 256-{-# LINE 58 "Graphics/UI/SDL/General.hsc" #-}-      fromEnum InitJoystick = 512-{-# LINE 59 "Graphics/UI/SDL/General.hsc" #-}-      fromEnum InitNoParachute = 1048576-{-# LINE 60 "Graphics/UI/SDL/General.hsc" #-}-      fromEnum InitEventthread = 16777216-{-# LINE 61 "Graphics/UI/SDL/General.hsc" #-}-      fromEnum InitEverything = 65535-{-# LINE 62 "Graphics/UI/SDL/General.hsc" #-}-      toEnum 1 = InitTimer-{-# LINE 63 "Graphics/UI/SDL/General.hsc" #-}-      toEnum 16 = InitAudio-{-# LINE 64 "Graphics/UI/SDL/General.hsc" #-}-      toEnum 32= InitVideo-{-# LINE 65 "Graphics/UI/SDL/General.hsc" #-}-      toEnum 256 = InitCDROM-{-# LINE 66 "Graphics/UI/SDL/General.hsc" #-}-      toEnum 512 = InitJoystick-{-# LINE 67 "Graphics/UI/SDL/General.hsc" #-}-      toEnum 1048576 = InitNoParachute-{-# LINE 68 "Graphics/UI/SDL/General.hsc" #-}-      toEnum 16777216 = InitEventthread-{-# LINE 69 "Graphics/UI/SDL/General.hsc" #-}-      toEnum 65535 = InitEverything-{-# LINE 70 "Graphics/UI/SDL/General.hsc" #-}-      toEnum _ = error "Graphics.UI.SDL.General.toEnum: bad argument"-      succ InitTimer = InitAudio-      succ InitAudio = InitVideo-      succ InitVideo = InitCDROM-      succ InitCDROM = InitJoystick-      succ InitJoystick = InitNoParachute-      succ InitNoParachute = InitEventthread-      succ InitEventthread = InitEverything-      succ _ = error "Graphics.UI.SDL.General.succ: bad argument"-      pred InitAudio = InitTimer-      pred InitVideo = InitAudio-      pred InitCDROM = InitVideo-      pred InitJoystick = InitCDROM-      pred InitNoParachute = InitJoystick-      pred InitEventthread = InitNoParachute-      pred InitEverything = InitEventthread-      pred _ = error "Graphics.UI.SDL.General.pred: bad argument"-      enumFromTo x y | x > y = []-                     | x == y = [y]-                     | True = x : enumFromTo (succ x) y--unwrapMaybe :: String -> IO (Maybe a) -> IO a-unwrapMaybe errMsg action-    = do val <- action-         case val of-           Just a -> return a-           Nothing -> failWithError errMsg--unwrapInt :: (Int -> Bool) -> String -> IO Int -> IO Int-unwrapInt fn errMsg action-    = do val <- action-         if fn val-            then return val-            else failWithError errMsg--unwrapBool :: String -> IO Bool -> IO ()-unwrapBool errMsg action-    = do val <- action-         case val of-           True -> return ()-           False -> failWithError errMsg--foreign import ccall unsafe "SDL_Init" sdlInit :: Word32 -> IO Int--- | Initializes SDL. This should be called before all other SDL functions.-init :: [InitFlag] -> IO ()-init flags-    = do ret <- sdlInit (fromIntegral (toBitmask flags))-         when (ret == (-1)) (failWithError "SDL_Init")--withInit :: [InitFlag] -> IO a -> IO a-withInit flags action-    = bracket_ (init flags) quit action--foreign import ccall unsafe "SDL_InitSubSystem" sdlInitSubSystem :: Word32 -> IO Int--- | After SDL has been initialized with SDL_Init you may initialize--- uninitialized subsystems with SDL_InitSubSystem.-initSubSystem :: [InitFlag] -> IO ()-initSubSystem flags-    = do ret <- sdlInitSubSystem (fromIntegral (toBitmask flags))-         when (ret == (-1)) (failWithError "SDL_InitSubSystem")--foreign import ccall unsafe "SDL_QuitSubSystem" sdlQuitSubSystem :: Word32 -> IO ()-quitSubSystem :: [InitFlag] -> IO ()-quitSubSystem = sdlQuitSubSystem . fromIntegral . toBitmask--foreign import ccall unsafe "SDL_Quit" sdlQuit :: IO ()-quit :: IO ()-quit = sdlQuit--foreign import ccall unsafe "SDL_WasInit" sdlWasInit :: Word32 -> IO Word32--- | wasInit allows you to see which SDL subsytems have been initialized-wasInit :: [InitFlag] -> IO [InitFlag]-wasInit flags-    = do ret <- sdlWasInit (fromIntegral (toBitmask flags))-         return (fromBitmask (fromIntegral ret))---foreign import ccall unsafe "SDL_GetError" sdlGetError :: IO CString--- | Returns a string containing the last error. Nothing if no error.-getError :: IO (Maybe String)-getError-    = do str <- peekCString =<< sdlGetError -         if null str-            then return Nothing-            else return (Just str)--failWithError :: String -> IO a-failWithError msg-    = do err <- fmap (fromMaybe "No SDL error") getError-         ioError $ userError $ msg ++ "\nSDL message: " ++ err-
− Graphics/UI/SDL/Joystick.hs
@@ -1,182 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE "SDL.h" #-}-{-# LINE 1 "Graphics/UI/SDL/Joystick.hsc" #-}--{-# LINE 2 "Graphics/UI/SDL/Joystick.hsc" #-}--------------------------------------------------------------------------------- |--- Module      :  Graphics.UI.SDL.Joystick--- Copyright   :  (c) David Himmelstrup 2005--- License     :  BSD-like------ Maintainer  :  lemmih@gmail.com--- Stability   :  provisional--- Portability :  portable----------------------------------------------------------------------------------module Graphics.UI.SDL.Joystick-    ( countAvailable-    , tryName-    , name-    , tryOpen-    , open-    , opened-    , index-    , axesAvailable-    , ballsAvailable-    , hatsAvailable-    , buttonsAvailable-    , update-    , getAxis-    , getHat-    , getButton-    , getBall-    , close-    ) where--import Foreign (Int16, Word8, Ptr, FunPtr, Storable(peek), unsafePerformIO,-                finalizeForeignPtr, toBool, maybePeek, alloca, withForeignPtr, newForeignPtr)-import Foreign.C (peekCString, CString)--import Graphics.UI.SDL.General (unwrapMaybe)-import Graphics.UI.SDL.Utilities (fromBitmask)-import Graphics.UI.SDL.Types (Hat, Joystick, JoystickStruct)--type JoystickIndex = Int----int SDL_NumJoysticks(void);--- | Counts the number of joysticks attached to the system.-foreign import ccall unsafe "SDL_NumJoysticks" countAvailable :: IO Int---- const char *SDL_JoystickName(int index);-foreign import ccall unsafe "SDL_JoystickName" sdlJoystickName :: JoystickIndex -> IO CString--- | Gets joystick name. Returns @Nothing@ on error.-tryName :: JoystickIndex -> IO (Maybe String)-tryName idx = sdlJoystickName idx >>= maybePeek peekCString---- | Gets joystick name. Throws an exception on error.-name :: JoystickIndex -> IO String-name = unwrapMaybe "SDL_JoystickName" . tryName---- SDL_Joystick *SDL_JoystickOpen(int index);-foreign import ccall unsafe "SDL_JoystickOpen" sdlJoystickOpen :: JoystickIndex -> IO (Ptr JoystickStruct)--- | Opens a joystick for use. Returns @Nothing@ on error.-tryOpen :: JoystickIndex -> IO (Maybe Joystick)-tryOpen idx = sdlJoystickOpen idx >>= maybePeek mkFinalizedJoystick---- | Opens a joystick for use. Throws an exception on error.-open :: JoystickIndex -> IO Joystick-open = unwrapMaybe "SDL_JoystickOpen" . tryOpen---- int SDL_JoystickOpened(int index);-foreign import ccall unsafe "SDL_JoystickOpened" sdlJoystickOpened :: JoystickIndex -> IO Int---- | Determines if a joystick has been opened.-opened :: JoystickIndex -> IO Bool-opened = fmap toBool . sdlJoystickOpened---- int SDL_JoystickIndex(SDL_Joystick *joystick);-foreign import ccall unsafe "SDL_JoystickIndex" sdlJoystickIndex :: Ptr JoystickStruct -> JoystickIndex--- | Gets the index of an @Joystick@.-index :: Joystick -> JoystickIndex-index joystick-    = unsafePerformIO $-      withForeignPtr joystick $-      return . sdlJoystickIndex---- int SDL_JoystickNumAxes(SDL_Joystick *joystick);-foreign import ccall unsafe "SDL_JoystickNumAxes" sdlJoystickNumAxes :: Ptr JoystickStruct -> Int--- | Gets the number of joystick axes.-axesAvailable :: Joystick -> Int-axesAvailable joystick-    = unsafePerformIO $-      withForeignPtr joystick $-      return . sdlJoystickNumAxes---- int SDL_JoystickNumBalls(SDL_Joystick *joystick);-foreign import ccall unsafe "SDL_JoystickNumBalls" sdlJoystickNumBalls :: Ptr JoystickStruct -> Int--- | Gets the number of joystick trackballs.-ballsAvailable :: Joystick -> Int-ballsAvailable joystick-    = unsafePerformIO $-      withForeignPtr joystick $-      return . sdlJoystickNumBalls---- int SDL_JoystickNumHats(SDL_Joystick *joystick);-foreign import ccall unsafe "SDL_JoystickNumHats" sdlJoystickNumHats :: Ptr JoystickStruct -> Int--- | Gets the number of joystick hats.-hatsAvailable :: Joystick -> Int-hatsAvailable joystick-    = unsafePerformIO $-      withForeignPtr joystick $-      return . sdlJoystickNumHats---- int SDL_JoystickNumButtons(SDL_Joystick *joystick);-foreign import ccall unsafe "SDL_JoystickNumButtons" sdlJoystickNumButtons :: Ptr JoystickStruct -> Int--- | Gets the number of joystick buttons.-buttonsAvailable :: Joystick -> Int-buttonsAvailable joystick-    = unsafePerformIO $-      withForeignPtr joystick $-      return . sdlJoystickNumButtons---- void SDL_JoystickUpdate(void);--- | Updates the state of all joysticks.-foreign import ccall unsafe "SDL_JoystickUpdate" update :: IO ()---- Sint16 SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis);-foreign import ccall unsafe "SDL_JoystickGetAxis" joystickGetAxis :: Ptr JoystickStruct -> Int -> IO Int16--- | Gets the current state of an axis.-getAxis :: Joystick -> Word8 -> IO Int16-getAxis joystick axis-    = withForeignPtr joystick $ \ptr ->-      joystickGetAxis ptr (fromIntegral axis)---- Uint8 SDL_JoystickGetHat(SDL_Joystick *joystick, int hat);-foreign import ccall unsafe "SDL_JoystickGetHat" joystickGetHat :: Ptr JoystickStruct -> Int -> IO Word8--- | Gets the current state of a joystick hat.-getHat :: Joystick -> Word8 -> IO [Hat]-getHat joystick axis-    = withForeignPtr joystick $ \ptr ->-      fmap (fromBitmask.fromIntegral) (joystickGetHat ptr (fromIntegral axis))---- Uint8 SDL_JoystickGetButton(SDL_Joystick *joystick, int button);-foreign import ccall unsafe "SDL_JoystickGetButton" joystickGetButton :: Ptr JoystickStruct -> Int -> IO Word8--- | Gets the current state of a given button on a given joystick.-getButton :: Joystick -> Word8 -> IO Bool-getButton joystick button-    = withForeignPtr joystick $ \ptr ->-      fmap toBool (joystickGetButton ptr (fromIntegral button))---- int SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy);-foreign import ccall unsafe "SDL_JoystickGetBall" joystickGetBall-    :: Ptr JoystickStruct -> Int -> Ptr Int -> Ptr Int -> IO Int--- | Gets relative trackball motion.-getBall :: Joystick -> Word8 -> IO (Maybe (Int16,Int16))-getBall joystick ball-    = withForeignPtr joystick $ \ptr ->-      alloca $ \xrelPtr ->-      alloca $ \yrelPtr ->-      do ret <- joystickGetBall ptr (fromIntegral ball) xrelPtr yrelPtr-         case ret of-           0 -> do [xrel,yrel] <- mapM (fmap fromIntegral . peek) [xrelPtr,yrelPtr]-                   return $! Just (xrel,yrel)-           _ -> return Nothing---- | Force finalization of a previous opened @Joystick@. Only supported with GHC.-close :: Joystick -> IO ()-close =--{-# LINE 166 "Graphics/UI/SDL/Joystick.hsc" #-}-  finalizeForeignPtr--{-# LINE 170 "Graphics/UI/SDL/Joystick.hsc" #-}---- void SDL_JoystickClose(SDL_Joystick *joystick);-foreign import ccall unsafe "&SDL_JoystickClose" sdlCloseJoystickFinal :: FunPtr (Ptr JoystickStruct -> IO ())--mkFinalizedJoystick :: Ptr JoystickStruct -> IO Joystick-mkFinalizedJoystick = newForeignPtr sdlCloseJoystickFinal-
− Graphics/UI/SDL/Keysym.hs
@@ -1,1325 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE "SDL.h" #-}-{-# LINE 1 "Graphics/UI/SDL/Keysym.hsc" #-}--{-# LINE 2 "Graphics/UI/SDL/Keysym.hsc" #-}--------------------------------------------------------------------------------- |--- Module      :  Graphics.UI.SDL.Keysym--- Copyright   :  (c) David Himmelstrup 2005--- License     :  BSD-like------ Maintainer  :  lemmih@gmail.com--- Stability   :  provisional--- Portability :  portable----------------------------------------------------------------------------------module Graphics.UI.SDL.Keysym where--import Foreign (Word16, Word32,-               Storable(poke, sizeOf, alignment, peekByteOff, pokeByteOff, peek))-import Data.Char (chr, ord)-import Prelude hiding (Enum(..))--import Graphics.UI.SDL.Utilities (Enum(..), toBitmask, fromBitmask)--data Keysym-  = Keysym-    { symKey :: SDLKey,-      symModifiers :: [Modifier],-      symUnicode :: Char}-    deriving (Show,Eq)--instance Storable Keysym where-    sizeOf = const (16)-{-# LINE 31 "Graphics/UI/SDL/Keysym.hsc" #-}-    alignment = const 4-    poke ptr (Keysym key mods unicode)-        = do (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr (fromEnum key)-{-# LINE 34 "Graphics/UI/SDL/Keysym.hsc" #-}-             (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr (toBitmask mods)-{-# LINE 35 "Graphics/UI/SDL/Keysym.hsc" #-}-             (\hsc_ptr -> pokeByteOff hsc_ptr 12) ptr (fromIntegral (ord unicode) :: Word16)-{-# LINE 36 "Graphics/UI/SDL/Keysym.hsc" #-}-    peek ptr-        = do sym <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr-{-# LINE 38 "Graphics/UI/SDL/Keysym.hsc" #-}-             mods <- (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr-{-# LINE 39 "Graphics/UI/SDL/Keysym.hsc" #-}-             uni <- (\hsc_ptr -> peekByteOff hsc_ptr 12) ptr-{-# LINE 40 "Graphics/UI/SDL/Keysym.hsc" #-}-             return $! Keysym (toEnum sym) (fromBitmask mods) (chr $ fromIntegral (uni::Word16))---data Modifier = KeyModNone-                 | KeyModLeftShift-                 | KeyModRightShift-                 | KeyModLeftCtrl-                 | KeyModRightCtrl-                 | KeyModLeftAlt-                 | KeyModRightAlt-                 | KeyModLeftMeta-                 | KeyModRightMeta-                 | KeyModNum-                 | KeyModCaps-                 | KeyModMode-                 | KeyModCtrl-                 | KeyModShift-                 | KeyModAlt-                 | KeyModMeta-    deriving (Eq, Ord, Show)-instance Bounded Modifier where-    minBound = KeyModNone-    maxBound = KeyModMode-instance Enum Modifier Word32 where-{-# LINE 64 "Graphics/UI/SDL/Keysym.hsc" #-}-      fromEnum KeyModNone = 0-      fromEnum KeyModLeftShift = 1-      fromEnum KeyModRightShift = 2-      fromEnum KeyModLeftCtrl = 64-      fromEnum KeyModRightCtrl = 128-      fromEnum KeyModLeftAlt = 256-      fromEnum KeyModRightAlt = 512-      fromEnum KeyModLeftMeta = 1024-      fromEnum KeyModRightMeta = 2048-      fromEnum KeyModNum = 4096-      fromEnum KeyModCaps = 8192-      fromEnum KeyModMode = 16384-      fromEnum KeyModCtrl = 192-      fromEnum KeyModShift = 3-      fromEnum KeyModAlt = 768-      fromEnum KeyModMeta = 3072-      toEnum 0 = KeyModNone-      toEnum 1 = KeyModLeftShift-      toEnum 2 = KeyModRightShift-      toEnum 64 = KeyModLeftCtrl-      toEnum 128 = KeyModRightCtrl-      toEnum 256 = KeyModLeftAlt-      toEnum 512 = KeyModRightAlt-      toEnum 1024 = KeyModLeftMeta-      toEnum 2048 = KeyModRightMeta-      toEnum 4096 = KeyModNum-      toEnum 8192 = KeyModCaps-      toEnum 16384 = KeyModMode-      toEnum 192 = KeyModCtrl-      toEnum 3 = KeyModShift-      toEnum 768 = KeyModAlt-      toEnum 3072 = KeyModMeta-      toEnum _ = error "Graphics.UI.SDL.Keysym.toEnum: bad argument"-      succ KeyModNone = KeyModLeftShift-      succ KeyModLeftShift = KeyModRightShift-      succ KeyModRightShift = KeyModLeftCtrl-      succ KeyModLeftCtrl = KeyModRightCtrl-      succ KeyModRightCtrl = KeyModLeftAlt-      succ KeyModLeftAlt = KeyModRightAlt-      succ KeyModRightAlt = KeyModLeftMeta-      succ KeyModLeftMeta = KeyModRightMeta-      succ KeyModRightMeta = KeyModNum-      succ KeyModNum = KeyModCaps-      succ KeyModCaps = KeyModMode-      succ KeyModMode = KeyModCtrl-      succ KeyModCtrl = KeyModShift-      succ KeyModShift = KeyModAlt-      succ KeyModAlt = KeyModMeta-      succ _ = error "Graphics.UI.SDL.Keysym.succ: bad argument"-      pred KeyModLeftShift = KeyModNone-      pred KeyModRightShift = KeyModLeftShift-      pred KeyModLeftCtrl = KeyModRightShift-      pred KeyModRightCtrl = KeyModLeftCtrl-      pred KeyModLeftAlt = KeyModRightCtrl-      pred KeyModRightAlt = KeyModLeftAlt-      pred KeyModLeftMeta = KeyModRightAlt-      pred KeyModRightMeta = KeyModLeftMeta-      pred KeyModNum = KeyModRightMeta-      pred KeyModCaps = KeyModNum-      pred KeyModMode = KeyModCaps-      pred KeyModCtrl = KeyModMode-      pred KeyModShift = KeyModCtrl-      pred KeyModAlt = KeyModShift-      pred KeyModMeta = KeyModAlt-      pred _ = error "Graphics.UI.SDL.Keysym.pred: bad argument"-      enumFromTo x y | x > y = []-                     | x == y = [y]-                     | True = x : enumFromTo (succ x) y--data SDLKey = SDLK_UNKNOWN-            | SDLK_FIRST-            | SDLK_BACKSPACE-            | SDLK_TAB-            | SDLK_CLEAR-            | SDLK_RETURN-            | SDLK_PAUSE-            | SDLK_ESCAPE-            | SDLK_SPACE-            | SDLK_EXCLAIM-            | SDLK_QUOTEDBL-            | SDLK_HASH-            | SDLK_DOLLAR-            | SDLK_AMPERSAND-            | SDLK_QUOTE-            | SDLK_LEFTPAREN-            | SDLK_RIGHTPAREN-            | SDLK_ASTERISK-            | SDLK_PLUS-            | SDLK_COMMA-            | SDLK_MINUS-            | SDLK_PERIOD-            | SDLK_SLASH-            | SDLK_0-            | SDLK_1-            | SDLK_2-            | SDLK_3-            | SDLK_4-            | SDLK_5-            | SDLK_6-            | SDLK_7-            | SDLK_8-            | SDLK_9-            | SDLK_COLON-            | SDLK_SEMICOLON-            | SDLK_LESS-            | SDLK_EQUALS-            | SDLK_GREATER-            | SDLK_QUESTION-            | SDLK_AT-            | SDLK_LEFTBRACKET-            | SDLK_BACKSLASH-            | SDLK_RIGHTBRACKET-            | SDLK_CARET-            | SDLK_UNDERSCORE-            | SDLK_BACKQUOTE-            | SDLK_a-            | SDLK_b-            | SDLK_c-            | SDLK_d-            | SDLK_e-            | SDLK_f-            | SDLK_g-            | SDLK_h-            | SDLK_i-            | SDLK_j-            | SDLK_k-            | SDLK_l-            | SDLK_m-            | SDLK_n-            | SDLK_o-            | SDLK_p-            | SDLK_q-            | SDLK_r-            | SDLK_s-            | SDLK_t-            | SDLK_u-            | SDLK_v-            | SDLK_w-            | SDLK_x-            | SDLK_y-            | SDLK_z-            | SDLK_DELETE-            | SDLK_WORLD_0-            | SDLK_WORLD_1-            | SDLK_WORLD_2-            | SDLK_WORLD_3-            | SDLK_WORLD_4-            | SDLK_WORLD_5-            | SDLK_WORLD_6-            | SDLK_WORLD_7-            | SDLK_WORLD_8-            | SDLK_WORLD_9-            | SDLK_WORLD_10-            | SDLK_WORLD_11-            | SDLK_WORLD_12-            | SDLK_WORLD_13-            | SDLK_WORLD_14-            | SDLK_WORLD_15-            | SDLK_WORLD_16-            | SDLK_WORLD_17-            | SDLK_WORLD_18-            | SDLK_WORLD_19-            | SDLK_WORLD_20-            | SDLK_WORLD_21-            | SDLK_WORLD_22-            | SDLK_WORLD_23-            | SDLK_WORLD_24-            | SDLK_WORLD_25-            | SDLK_WORLD_26-            | SDLK_WORLD_27-            | SDLK_WORLD_28-            | SDLK_WORLD_29-            | SDLK_WORLD_30-            | SDLK_WORLD_31-            | SDLK_WORLD_32-            | SDLK_WORLD_33-            | SDLK_WORLD_34-            | SDLK_WORLD_35-            | SDLK_WORLD_36-            | SDLK_WORLD_37-            | SDLK_WORLD_38-            | SDLK_WORLD_39-            | SDLK_WORLD_40-            | SDLK_WORLD_41-            | SDLK_WORLD_42-            | SDLK_WORLD_43-            | SDLK_WORLD_44-            | SDLK_WORLD_45-            | SDLK_WORLD_46-            | SDLK_WORLD_47-            | SDLK_WORLD_48-            | SDLK_WORLD_49-            | SDLK_WORLD_50-            | SDLK_WORLD_51-            | SDLK_WORLD_52-            | SDLK_WORLD_53-            | SDLK_WORLD_54-            | SDLK_WORLD_55-            | SDLK_WORLD_56-            | SDLK_WORLD_57-            | SDLK_WORLD_58-            | SDLK_WORLD_59-            | SDLK_WORLD_60-            | SDLK_WORLD_61-            | SDLK_WORLD_62-            | SDLK_WORLD_63-            | SDLK_WORLD_64-            | SDLK_WORLD_65-            | SDLK_WORLD_66-            | SDLK_WORLD_67-            | SDLK_WORLD_68-            | SDLK_WORLD_69-            | SDLK_WORLD_70-            | SDLK_WORLD_71-            | SDLK_WORLD_72-            | SDLK_WORLD_73-            | SDLK_WORLD_74-            | SDLK_WORLD_75-            | SDLK_WORLD_76-            | SDLK_WORLD_77-            | SDLK_WORLD_78-            | SDLK_WORLD_79-            | SDLK_WORLD_80-            | SDLK_WORLD_81-            | SDLK_WORLD_82-            | SDLK_WORLD_83-            | SDLK_WORLD_84-            | SDLK_WORLD_85-            | SDLK_WORLD_86-            | SDLK_WORLD_87-            | SDLK_WORLD_88-            | SDLK_WORLD_89-            | SDLK_WORLD_90-            | SDLK_WORLD_91-            | SDLK_WORLD_92-            | SDLK_WORLD_93-            | SDLK_WORLD_94-            | SDLK_WORLD_95-            | SDLK_KP0-            | SDLK_KP1-            | SDLK_KP2-            | SDLK_KP3-            | SDLK_KP4-            | SDLK_KP5-            | SDLK_KP6-            | SDLK_KP7-            | SDLK_KP8-            | SDLK_KP9-            | SDLK_KP_PERIOD-            | SDLK_KP_DIVIDE-            | SDLK_KP_MULTIPLY-            | SDLK_KP_MINUS-            | SDLK_KP_PLUS-            | SDLK_KP_ENTER-            | SDLK_KP_EQUALS-            | SDLK_UP-            | SDLK_DOWN-            | SDLK_RIGHT-            | SDLK_LEFT-            | SDLK_INSERT-            | SDLK_HOME-            | SDLK_END-            | SDLK_PAGEUP-            | SDLK_PAGEDOWN-            | SDLK_F1-            | SDLK_F2-            | SDLK_F3-            | SDLK_F4-            | SDLK_F5-            | SDLK_F6-            | SDLK_F7-            | SDLK_F8-            | SDLK_F9-            | SDLK_F10-            | SDLK_F11-            | SDLK_F12-            | SDLK_F13-            | SDLK_F14-            | SDLK_F15-            | SDLK_NUMLOCK-            | SDLK_CAPSLOCK-            | SDLK_SCROLLOCK-            | SDLK_RSHIFT-            | SDLK_LSHIFT-            | SDLK_RCTRL-            | SDLK_LCTRL-            | SDLK_RALT-            | SDLK_LALT-            | SDLK_RMETA-            | SDLK_LMETA-            | SDLK_LSUPER-            | SDLK_RSUPER-            | SDLK_MODE-            | SDLK_COMPOSE-            | SDLK_HELP-            | SDLK_PRINT-            | SDLK_SYSREQ-            | SDLK_BREAK-            | SDLK_MENU-            | SDLK_POWER-            | SDLK_EURO-            | SDLK_UNDO-            | SDLK_LAST-    deriving (Eq, Ord, Show)-instance Bounded SDLKey where-    minBound = SDLK_UNKNOWN-    maxBound = SDLK_LAST-instance Enum SDLKey Word32 where-{-# LINE 372 "Graphics/UI/SDL/Keysym.hsc" #-}-      fromEnum SDLK_UNKNOWN = 0-      fromEnum SDLK_FIRST = 0-      fromEnum SDLK_BACKSPACE = 8-      fromEnum SDLK_TAB = 9-      fromEnum SDLK_CLEAR = 12-      fromEnum SDLK_RETURN = 13-      fromEnum SDLK_PAUSE = 19-      fromEnum SDLK_ESCAPE = 27-      fromEnum SDLK_SPACE = 32-      fromEnum SDLK_EXCLAIM = 33-      fromEnum SDLK_QUOTEDBL = 34-      fromEnum SDLK_HASH = 35-      fromEnum SDLK_DOLLAR = 36-      fromEnum SDLK_AMPERSAND = 38-      fromEnum SDLK_QUOTE = 39-      fromEnum SDLK_LEFTPAREN = 40-      fromEnum SDLK_RIGHTPAREN = 41-      fromEnum SDLK_ASTERISK = 42-      fromEnum SDLK_PLUS = 43-      fromEnum SDLK_COMMA = 44-      fromEnum SDLK_MINUS = 45-      fromEnum SDLK_PERIOD = 46-      fromEnum SDLK_SLASH = 47-      fromEnum SDLK_0 = 48-      fromEnum SDLK_1 = 49-      fromEnum SDLK_2 = 50-      fromEnum SDLK_3 = 51-      fromEnum SDLK_4 = 52-      fromEnum SDLK_5 = 53-      fromEnum SDLK_6 = 54-      fromEnum SDLK_7 = 55-      fromEnum SDLK_8 = 56-      fromEnum SDLK_9 = 57-      fromEnum SDLK_COLON = 58-      fromEnum SDLK_SEMICOLON = 59-      fromEnum SDLK_LESS = 60-      fromEnum SDLK_EQUALS = 61-      fromEnum SDLK_GREATER = 62-      fromEnum SDLK_QUESTION = 63-      fromEnum SDLK_AT = 64-      fromEnum SDLK_LEFTBRACKET = 91-      fromEnum SDLK_BACKSLASH = 92-      fromEnum SDLK_RIGHTBRACKET = 93-      fromEnum SDLK_CARET = 94-      fromEnum SDLK_UNDERSCORE = 95-      fromEnum SDLK_BACKQUOTE = 96-      fromEnum SDLK_a = 97-      fromEnum SDLK_b = 98-      fromEnum SDLK_c = 99-      fromEnum SDLK_d = 100-      fromEnum SDLK_e = 101-      fromEnum SDLK_f = 102-      fromEnum SDLK_g = 103-      fromEnum SDLK_h = 104-      fromEnum SDLK_i = 105-      fromEnum SDLK_j = 106-      fromEnum SDLK_k = 107-      fromEnum SDLK_l = 108-      fromEnum SDLK_m = 109-      fromEnum SDLK_n = 110-      fromEnum SDLK_o = 111-      fromEnum SDLK_p = 112-      fromEnum SDLK_q = 113-      fromEnum SDLK_r = 114-      fromEnum SDLK_s = 115-      fromEnum SDLK_t = 116-      fromEnum SDLK_u = 117-      fromEnum SDLK_v = 118-      fromEnum SDLK_w = 119-      fromEnum SDLK_x = 120-      fromEnum SDLK_y = 121-      fromEnum SDLK_z = 122-      fromEnum SDLK_DELETE = 127-      fromEnum SDLK_WORLD_0 = 160-      fromEnum SDLK_WORLD_1 = 161-      fromEnum SDLK_WORLD_2 = 162-      fromEnum SDLK_WORLD_3 = 163-      fromEnum SDLK_WORLD_4 = 164-      fromEnum SDLK_WORLD_5 = 165-      fromEnum SDLK_WORLD_6 = 166-      fromEnum SDLK_WORLD_7 = 167-      fromEnum SDLK_WORLD_8 = 168-      fromEnum SDLK_WORLD_9 = 169-      fromEnum SDLK_WORLD_10 = 170-      fromEnum SDLK_WORLD_11 = 171-      fromEnum SDLK_WORLD_12 = 172-      fromEnum SDLK_WORLD_13 = 173-      fromEnum SDLK_WORLD_14 = 174-      fromEnum SDLK_WORLD_15 = 175-      fromEnum SDLK_WORLD_16 = 176-      fromEnum SDLK_WORLD_17 = 177-      fromEnum SDLK_WORLD_18 = 178-      fromEnum SDLK_WORLD_19 = 179-      fromEnum SDLK_WORLD_20 = 180-      fromEnum SDLK_WORLD_21 = 181-      fromEnum SDLK_WORLD_22 = 182-      fromEnum SDLK_WORLD_23 = 183-      fromEnum SDLK_WORLD_24 = 184-      fromEnum SDLK_WORLD_25 = 185-      fromEnum SDLK_WORLD_26 = 186-      fromEnum SDLK_WORLD_27 = 187-      fromEnum SDLK_WORLD_28 = 188-      fromEnum SDLK_WORLD_29 = 189-      fromEnum SDLK_WORLD_30 = 190-      fromEnum SDLK_WORLD_31 = 191-      fromEnum SDLK_WORLD_32 = 192-      fromEnum SDLK_WORLD_33 = 193-      fromEnum SDLK_WORLD_34 = 194-      fromEnum SDLK_WORLD_35 = 195-      fromEnum SDLK_WORLD_36 = 196-      fromEnum SDLK_WORLD_37 = 197-      fromEnum SDLK_WORLD_38 = 198-      fromEnum SDLK_WORLD_39 = 199-      fromEnum SDLK_WORLD_40 = 200-      fromEnum SDLK_WORLD_41 = 201-      fromEnum SDLK_WORLD_42 = 202-      fromEnum SDLK_WORLD_43 = 203-      fromEnum SDLK_WORLD_44 = 204-      fromEnum SDLK_WORLD_45 = 205-      fromEnum SDLK_WORLD_46 = 206-      fromEnum SDLK_WORLD_47 = 207-      fromEnum SDLK_WORLD_48 = 208-      fromEnum SDLK_WORLD_49 = 209-      fromEnum SDLK_WORLD_50 = 210-      fromEnum SDLK_WORLD_51 = 211-      fromEnum SDLK_WORLD_52 = 212-      fromEnum SDLK_WORLD_53 = 213-      fromEnum SDLK_WORLD_54 = 214-      fromEnum SDLK_WORLD_55 = 215-      fromEnum SDLK_WORLD_56 = 216-      fromEnum SDLK_WORLD_57 = 217-      fromEnum SDLK_WORLD_58 = 218-      fromEnum SDLK_WORLD_59 = 219-      fromEnum SDLK_WORLD_60 = 220-      fromEnum SDLK_WORLD_61 = 221-      fromEnum SDLK_WORLD_62 = 222-      fromEnum SDLK_WORLD_63 = 223-      fromEnum SDLK_WORLD_64 = 224-      fromEnum SDLK_WORLD_65 = 225-      fromEnum SDLK_WORLD_66 = 226-      fromEnum SDLK_WORLD_67 = 227-      fromEnum SDLK_WORLD_68 = 228-      fromEnum SDLK_WORLD_69 = 229-      fromEnum SDLK_WORLD_70 = 230-      fromEnum SDLK_WORLD_71 = 231-      fromEnum SDLK_WORLD_72 = 232-      fromEnum SDLK_WORLD_73 = 233-      fromEnum SDLK_WORLD_74 = 234-      fromEnum SDLK_WORLD_75 = 235-      fromEnum SDLK_WORLD_76 = 236-      fromEnum SDLK_WORLD_77 = 237-      fromEnum SDLK_WORLD_78 = 238-      fromEnum SDLK_WORLD_79 = 239-      fromEnum SDLK_WORLD_80 = 240-      fromEnum SDLK_WORLD_81 = 241-      fromEnum SDLK_WORLD_82 = 242-      fromEnum SDLK_WORLD_83 = 243-      fromEnum SDLK_WORLD_84 = 244-      fromEnum SDLK_WORLD_85 = 245-      fromEnum SDLK_WORLD_86 = 246-      fromEnum SDLK_WORLD_87 = 247-      fromEnum SDLK_WORLD_88 = 248-      fromEnum SDLK_WORLD_89 = 249-      fromEnum SDLK_WORLD_90 = 250-      fromEnum SDLK_WORLD_91 = 251-      fromEnum SDLK_WORLD_92 = 252-      fromEnum SDLK_WORLD_93 = 253-      fromEnum SDLK_WORLD_94 = 254-      fromEnum SDLK_WORLD_95 = 255-      fromEnum SDLK_KP0 = 256-      fromEnum SDLK_KP1 = 257-      fromEnum SDLK_KP2 = 258-      fromEnum SDLK_KP3 = 259-      fromEnum SDLK_KP4 = 260-      fromEnum SDLK_KP5 = 261-      fromEnum SDLK_KP6 = 262-      fromEnum SDLK_KP7 = 263-      fromEnum SDLK_KP8 = 264-      fromEnum SDLK_KP9 = 265-      fromEnum SDLK_KP_PERIOD = 266-      fromEnum SDLK_KP_DIVIDE = 267-      fromEnum SDLK_KP_MULTIPLY = 268-      fromEnum SDLK_KP_MINUS = 269-      fromEnum SDLK_KP_PLUS = 270-      fromEnum SDLK_KP_ENTER = 271-      fromEnum SDLK_KP_EQUALS = 272-      fromEnum SDLK_UP = 273-      fromEnum SDLK_DOWN = 274-      fromEnum SDLK_RIGHT = 275-      fromEnum SDLK_LEFT = 276-      fromEnum SDLK_INSERT = 277-      fromEnum SDLK_HOME = 278-      fromEnum SDLK_END = 279-      fromEnum SDLK_PAGEUP = 280-      fromEnum SDLK_PAGEDOWN = 281-      fromEnum SDLK_F1 = 282-      fromEnum SDLK_F2 = 283-      fromEnum SDLK_F3 = 284-      fromEnum SDLK_F4 = 285-      fromEnum SDLK_F5 = 286-      fromEnum SDLK_F6 = 287-      fromEnum SDLK_F7 = 288-      fromEnum SDLK_F8 = 289-      fromEnum SDLK_F9 = 290-      fromEnum SDLK_F10 = 291-      fromEnum SDLK_F11 = 292-      fromEnum SDLK_F12 = 293-      fromEnum SDLK_F13 = 294-      fromEnum SDLK_F14 = 295-      fromEnum SDLK_F15 = 296-      fromEnum SDLK_NUMLOCK = 300-      fromEnum SDLK_CAPSLOCK = 301-      fromEnum SDLK_SCROLLOCK = 302-      fromEnum SDLK_RSHIFT = 303-      fromEnum SDLK_LSHIFT = 304-      fromEnum SDLK_RCTRL = 305-      fromEnum SDLK_LCTRL = 306-      fromEnum SDLK_RALT = 307-      fromEnum SDLK_LALT = 308-      fromEnum SDLK_RMETA = 309-      fromEnum SDLK_LMETA = 310-      fromEnum SDLK_LSUPER = 311-      fromEnum SDLK_RSUPER = 312-      fromEnum SDLK_MODE = 313-      fromEnum SDLK_COMPOSE = 314-      fromEnum SDLK_HELP = 315-      fromEnum SDLK_PRINT = 316-      fromEnum SDLK_SYSREQ = 317-      fromEnum SDLK_BREAK = 318-      fromEnum SDLK_MENU = 319-      fromEnum SDLK_POWER = 320-      fromEnum SDLK_EURO = 321-      fromEnum SDLK_UNDO = 322-      fromEnum SDLK_LAST = 323-      toEnum 0 = SDLK_UNKNOWN-      toEnum 8 = SDLK_BACKSPACE-      toEnum 9 = SDLK_TAB-      toEnum 12 = SDLK_CLEAR-      toEnum 13 = SDLK_RETURN-      toEnum 19 = SDLK_PAUSE-      toEnum 27 = SDLK_ESCAPE-      toEnum 32 = SDLK_SPACE-      toEnum 33 = SDLK_EXCLAIM-      toEnum 34 = SDLK_QUOTEDBL-      toEnum 35 = SDLK_HASH-      toEnum 36 = SDLK_DOLLAR-      toEnum 38 = SDLK_AMPERSAND-      toEnum 39 = SDLK_QUOTE-      toEnum 40 = SDLK_LEFTPAREN-      toEnum 41 = SDLK_RIGHTPAREN-      toEnum 42 = SDLK_ASTERISK-      toEnum 43 = SDLK_PLUS-      toEnum 44 = SDLK_COMMA-      toEnum 45 = SDLK_MINUS-      toEnum 46 = SDLK_PERIOD-      toEnum 47 = SDLK_SLASH-      toEnum 48 = SDLK_0-      toEnum 49 = SDLK_1-      toEnum 50 = SDLK_2-      toEnum 51 = SDLK_3-      toEnum 52 = SDLK_4-      toEnum 53 = SDLK_5-      toEnum 54 = SDLK_6-      toEnum 55 = SDLK_7-      toEnum 56 = SDLK_8-      toEnum 57 = SDLK_9-      toEnum 58 = SDLK_COLON-      toEnum 59 = SDLK_SEMICOLON-      toEnum 60 = SDLK_LESS-      toEnum 61 = SDLK_EQUALS-      toEnum 62 = SDLK_GREATER-      toEnum 63 = SDLK_QUESTION-      toEnum 64 = SDLK_AT-      toEnum 91 = SDLK_LEFTBRACKET-      toEnum 92 = SDLK_BACKSLASH-      toEnum 93 = SDLK_RIGHTBRACKET-      toEnum 94 = SDLK_CARET-      toEnum 95 = SDLK_UNDERSCORE-      toEnum 96 = SDLK_BACKQUOTE-      toEnum 97 = SDLK_a-      toEnum 98 = SDLK_b-      toEnum 99 = SDLK_c-      toEnum 100 = SDLK_d-      toEnum 101 = SDLK_e-      toEnum 102 = SDLK_f-      toEnum 103 = SDLK_g-      toEnum 104 = SDLK_h-      toEnum 105 = SDLK_i-      toEnum 106 = SDLK_j-      toEnum 107 = SDLK_k-      toEnum 108 = SDLK_l-      toEnum 109 = SDLK_m-      toEnum 110 = SDLK_n-      toEnum 111 = SDLK_o-      toEnum 112 = SDLK_p-      toEnum 113 = SDLK_q-      toEnum 114 = SDLK_r-      toEnum 115 = SDLK_s-      toEnum 116 = SDLK_t-      toEnum 117 = SDLK_u-      toEnum 118 = SDLK_v-      toEnum 119 = SDLK_w-      toEnum 120 = SDLK_x-      toEnum 121 = SDLK_y-      toEnum 122 = SDLK_z-      toEnum 127 = SDLK_DELETE-      toEnum 160 = SDLK_WORLD_0-      toEnum 161 = SDLK_WORLD_1-      toEnum 162 = SDLK_WORLD_2-      toEnum 163 = SDLK_WORLD_3-      toEnum 164 = SDLK_WORLD_4-      toEnum 165 = SDLK_WORLD_5-      toEnum 166 = SDLK_WORLD_6-      toEnum 167 = SDLK_WORLD_7-      toEnum 168 = SDLK_WORLD_8-      toEnum 169 = SDLK_WORLD_9-      toEnum 170 = SDLK_WORLD_10-      toEnum 171 = SDLK_WORLD_11-      toEnum 172 = SDLK_WORLD_12-      toEnum 173 = SDLK_WORLD_13-      toEnum 174 = SDLK_WORLD_14-      toEnum 175 = SDLK_WORLD_15-      toEnum 176 = SDLK_WORLD_16-      toEnum 177 = SDLK_WORLD_17-      toEnum 178 = SDLK_WORLD_18-      toEnum 179 = SDLK_WORLD_19-      toEnum 180 = SDLK_WORLD_20-      toEnum 181 = SDLK_WORLD_21-      toEnum 182 = SDLK_WORLD_22-      toEnum 183 = SDLK_WORLD_23-      toEnum 184 = SDLK_WORLD_24-      toEnum 185 = SDLK_WORLD_25-      toEnum 186 = SDLK_WORLD_26-      toEnum 187 = SDLK_WORLD_27-      toEnum 188 = SDLK_WORLD_28-      toEnum 189 = SDLK_WORLD_29-      toEnum 190 = SDLK_WORLD_30-      toEnum 191 = SDLK_WORLD_31-      toEnum 192 = SDLK_WORLD_32-      toEnum 193 = SDLK_WORLD_33-      toEnum 194 = SDLK_WORLD_34-      toEnum 195 = SDLK_WORLD_35-      toEnum 196 = SDLK_WORLD_36-      toEnum 197 = SDLK_WORLD_37-      toEnum 198 = SDLK_WORLD_38-      toEnum 199 = SDLK_WORLD_39-      toEnum 200 = SDLK_WORLD_40-      toEnum 201 = SDLK_WORLD_41-      toEnum 202 = SDLK_WORLD_42-      toEnum 203 = SDLK_WORLD_43-      toEnum 204 = SDLK_WORLD_44-      toEnum 205 = SDLK_WORLD_45-      toEnum 206 = SDLK_WORLD_46-      toEnum 207 = SDLK_WORLD_47-      toEnum 208 = SDLK_WORLD_48-      toEnum 209 = SDLK_WORLD_49-      toEnum 210 = SDLK_WORLD_50-      toEnum 211 = SDLK_WORLD_51-      toEnum 212 = SDLK_WORLD_52-      toEnum 213 = SDLK_WORLD_53-      toEnum 214 = SDLK_WORLD_54-      toEnum 215 = SDLK_WORLD_55-      toEnum 216 = SDLK_WORLD_56-      toEnum 217 = SDLK_WORLD_57-      toEnum 218 = SDLK_WORLD_58-      toEnum 219 = SDLK_WORLD_59-      toEnum 220 = SDLK_WORLD_60-      toEnum 221 = SDLK_WORLD_61-      toEnum 222 = SDLK_WORLD_62-      toEnum 223 = SDLK_WORLD_63-      toEnum 224 = SDLK_WORLD_64-      toEnum 225 = SDLK_WORLD_65-      toEnum 226 = SDLK_WORLD_66-      toEnum 227 = SDLK_WORLD_67-      toEnum 228 = SDLK_WORLD_68-      toEnum 229 = SDLK_WORLD_69-      toEnum 230 = SDLK_WORLD_70-      toEnum 231 = SDLK_WORLD_71-      toEnum 232 = SDLK_WORLD_72-      toEnum 233 = SDLK_WORLD_73-      toEnum 234 = SDLK_WORLD_74-      toEnum 235 = SDLK_WORLD_75-      toEnum 236 = SDLK_WORLD_76-      toEnum 237 = SDLK_WORLD_77-      toEnum 238 = SDLK_WORLD_78-      toEnum 239 = SDLK_WORLD_79-      toEnum 240 = SDLK_WORLD_80-      toEnum 241 = SDLK_WORLD_81-      toEnum 242 = SDLK_WORLD_82-      toEnum 243 = SDLK_WORLD_83-      toEnum 244 = SDLK_WORLD_84-      toEnum 245 = SDLK_WORLD_85-      toEnum 246 = SDLK_WORLD_86-      toEnum 247 = SDLK_WORLD_87-      toEnum 248 = SDLK_WORLD_88-      toEnum 249 = SDLK_WORLD_89-      toEnum 250 = SDLK_WORLD_90-      toEnum 251 = SDLK_WORLD_91-      toEnum 252 = SDLK_WORLD_92-      toEnum 253 = SDLK_WORLD_93-      toEnum 254 = SDLK_WORLD_94-      toEnum 255 = SDLK_WORLD_95-      toEnum 256 = SDLK_KP0-      toEnum 257 = SDLK_KP1-      toEnum 258 = SDLK_KP2-      toEnum 259 = SDLK_KP3-      toEnum 260 = SDLK_KP4-      toEnum 261 = SDLK_KP5-      toEnum 262 = SDLK_KP6-      toEnum 263 = SDLK_KP7-      toEnum 264 = SDLK_KP8-      toEnum 265 = SDLK_KP9-      toEnum 266 = SDLK_KP_PERIOD-      toEnum 267 = SDLK_KP_DIVIDE-      toEnum 268 = SDLK_KP_MULTIPLY-      toEnum 269 = SDLK_KP_MINUS-      toEnum 270 = SDLK_KP_PLUS-      toEnum 271 = SDLK_KP_ENTER-      toEnum 272 = SDLK_KP_EQUALS-      toEnum 273 = SDLK_UP-      toEnum 274 = SDLK_DOWN-      toEnum 275 = SDLK_RIGHT-      toEnum 276 = SDLK_LEFT-      toEnum 277 = SDLK_INSERT-      toEnum 278 = SDLK_HOME-      toEnum 279 = SDLK_END-      toEnum 280 = SDLK_PAGEUP-      toEnum 281 = SDLK_PAGEDOWN-      toEnum 282 = SDLK_F1-      toEnum 283 = SDLK_F2-      toEnum 284 = SDLK_F3-      toEnum 285 = SDLK_F4-      toEnum 286 = SDLK_F5-      toEnum 287 = SDLK_F6-      toEnum 288 = SDLK_F7-      toEnum 289 = SDLK_F8-      toEnum 290 = SDLK_F9-      toEnum 291 = SDLK_F10-      toEnum 292 = SDLK_F11-      toEnum 293 = SDLK_F12-      toEnum 294 = SDLK_F13-      toEnum 295 = SDLK_F14-      toEnum 296 = SDLK_F15-      toEnum 300 = SDLK_NUMLOCK-      toEnum 301 = SDLK_CAPSLOCK-      toEnum 302 = SDLK_SCROLLOCK-      toEnum 303 = SDLK_RSHIFT-      toEnum 304 = SDLK_LSHIFT-      toEnum 305 = SDLK_RCTRL-      toEnum 306 = SDLK_LCTRL-      toEnum 307 = SDLK_RALT-      toEnum 308 = SDLK_LALT-      toEnum 309 = SDLK_RMETA-      toEnum 310 = SDLK_LMETA-      toEnum 311 = SDLK_LSUPER-      toEnum 312 = SDLK_RSUPER-      toEnum 313 = SDLK_MODE-      toEnum 314 = SDLK_COMPOSE-      toEnum 315 = SDLK_HELP-      toEnum 316 = SDLK_PRINT-      toEnum 317 = SDLK_SYSREQ-      toEnum 318 = SDLK_BREAK-      toEnum 319 = SDLK_MENU-      toEnum 320 = SDLK_POWER-      toEnum 321 = SDLK_EURO-      toEnum 322 = SDLK_UNDO-      toEnum 323 = SDLK_LAST-      toEnum _ = error "Graphics.UI.SDL.Keysym.toEnum: bad argument"-      succ SDLK_UNKNOWN = SDLK_FIRST-      succ SDLK_FIRST = SDLK_BACKSPACE-      succ SDLK_BACKSPACE = SDLK_TAB-      succ SDLK_TAB = SDLK_CLEAR-      succ SDLK_CLEAR = SDLK_RETURN-      succ SDLK_RETURN = SDLK_PAUSE-      succ SDLK_PAUSE = SDLK_ESCAPE-      succ SDLK_ESCAPE = SDLK_SPACE-      succ SDLK_SPACE = SDLK_EXCLAIM-      succ SDLK_EXCLAIM = SDLK_QUOTEDBL-      succ SDLK_QUOTEDBL = SDLK_HASH-      succ SDLK_HASH = SDLK_DOLLAR-      succ SDLK_DOLLAR = SDLK_AMPERSAND-      succ SDLK_AMPERSAND = SDLK_QUOTE-      succ SDLK_QUOTE = SDLK_LEFTPAREN-      succ SDLK_LEFTPAREN = SDLK_RIGHTPAREN-      succ SDLK_RIGHTPAREN = SDLK_ASTERISK-      succ SDLK_ASTERISK = SDLK_PLUS-      succ SDLK_PLUS = SDLK_COMMA-      succ SDLK_COMMA = SDLK_MINUS-      succ SDLK_MINUS = SDLK_PERIOD-      succ SDLK_PERIOD = SDLK_SLASH-      succ SDLK_SLASH = SDLK_0-      succ SDLK_0 = SDLK_1-      succ SDLK_1 = SDLK_2-      succ SDLK_2 = SDLK_3-      succ SDLK_3 = SDLK_4-      succ SDLK_4 = SDLK_5-      succ SDLK_5 = SDLK_6-      succ SDLK_6 = SDLK_7-      succ SDLK_7 = SDLK_8-      succ SDLK_8 = SDLK_9-      succ SDLK_9 = SDLK_COLON-      succ SDLK_COLON = SDLK_SEMICOLON-      succ SDLK_SEMICOLON = SDLK_LESS-      succ SDLK_LESS = SDLK_EQUALS-      succ SDLK_EQUALS = SDLK_GREATER-      succ SDLK_GREATER = SDLK_QUESTION-      succ SDLK_QUESTION = SDLK_AT-      succ SDLK_AT = SDLK_LEFTBRACKET-      succ SDLK_LEFTBRACKET = SDLK_BACKSLASH-      succ SDLK_BACKSLASH = SDLK_RIGHTBRACKET-      succ SDLK_RIGHTBRACKET = SDLK_CARET-      succ SDLK_CARET = SDLK_UNDERSCORE-      succ SDLK_UNDERSCORE = SDLK_BACKQUOTE-      succ SDLK_BACKQUOTE = SDLK_a-      succ SDLK_a = SDLK_b-      succ SDLK_b = SDLK_c-      succ SDLK_c = SDLK_d-      succ SDLK_d = SDLK_e-      succ SDLK_e = SDLK_f-      succ SDLK_f = SDLK_g-      succ SDLK_g = SDLK_h-      succ SDLK_h = SDLK_i-      succ SDLK_i = SDLK_j-      succ SDLK_j = SDLK_k-      succ SDLK_k = SDLK_l-      succ SDLK_l = SDLK_m-      succ SDLK_m = SDLK_n-      succ SDLK_n = SDLK_o-      succ SDLK_o = SDLK_p-      succ SDLK_p = SDLK_q-      succ SDLK_q = SDLK_r-      succ SDLK_r = SDLK_s-      succ SDLK_s = SDLK_t-      succ SDLK_t = SDLK_u-      succ SDLK_u = SDLK_v-      succ SDLK_v = SDLK_w-      succ SDLK_w = SDLK_x-      succ SDLK_x = SDLK_y-      succ SDLK_y = SDLK_z-      succ SDLK_z = SDLK_DELETE-      succ SDLK_DELETE = SDLK_WORLD_0-      succ SDLK_WORLD_0 = SDLK_WORLD_1-      succ SDLK_WORLD_1 = SDLK_WORLD_2-      succ SDLK_WORLD_2 = SDLK_WORLD_3-      succ SDLK_WORLD_3 = SDLK_WORLD_4-      succ SDLK_WORLD_4 = SDLK_WORLD_5-      succ SDLK_WORLD_5 = SDLK_WORLD_6-      succ SDLK_WORLD_6 = SDLK_WORLD_7-      succ SDLK_WORLD_7 = SDLK_WORLD_8-      succ SDLK_WORLD_8 = SDLK_WORLD_9-      succ SDLK_WORLD_9 = SDLK_WORLD_10-      succ SDLK_WORLD_10 = SDLK_WORLD_11-      succ SDLK_WORLD_11 = SDLK_WORLD_12-      succ SDLK_WORLD_12 = SDLK_WORLD_13-      succ SDLK_WORLD_13 = SDLK_WORLD_14-      succ SDLK_WORLD_14 = SDLK_WORLD_15-      succ SDLK_WORLD_15 = SDLK_WORLD_16-      succ SDLK_WORLD_16 = SDLK_WORLD_17-      succ SDLK_WORLD_17 = SDLK_WORLD_18-      succ SDLK_WORLD_18 = SDLK_WORLD_19-      succ SDLK_WORLD_19 = SDLK_WORLD_20-      succ SDLK_WORLD_20 = SDLK_WORLD_21-      succ SDLK_WORLD_21 = SDLK_WORLD_22-      succ SDLK_WORLD_22 = SDLK_WORLD_23-      succ SDLK_WORLD_23 = SDLK_WORLD_24-      succ SDLK_WORLD_24 = SDLK_WORLD_25-      succ SDLK_WORLD_25 = SDLK_WORLD_26-      succ SDLK_WORLD_26 = SDLK_WORLD_27-      succ SDLK_WORLD_27 = SDLK_WORLD_28-      succ SDLK_WORLD_28 = SDLK_WORLD_29-      succ SDLK_WORLD_29 = SDLK_WORLD_30-      succ SDLK_WORLD_30 = SDLK_WORLD_31-      succ SDLK_WORLD_31 = SDLK_WORLD_32-      succ SDLK_WORLD_32 = SDLK_WORLD_33-      succ SDLK_WORLD_33 = SDLK_WORLD_34-      succ SDLK_WORLD_34 = SDLK_WORLD_35-      succ SDLK_WORLD_35 = SDLK_WORLD_36-      succ SDLK_WORLD_36 = SDLK_WORLD_37-      succ SDLK_WORLD_37 = SDLK_WORLD_38-      succ SDLK_WORLD_38 = SDLK_WORLD_39-      succ SDLK_WORLD_39 = SDLK_WORLD_40-      succ SDLK_WORLD_40 = SDLK_WORLD_41-      succ SDLK_WORLD_41 = SDLK_WORLD_42-      succ SDLK_WORLD_42 = SDLK_WORLD_43-      succ SDLK_WORLD_43 = SDLK_WORLD_44-      succ SDLK_WORLD_44 = SDLK_WORLD_45-      succ SDLK_WORLD_45 = SDLK_WORLD_46-      succ SDLK_WORLD_46 = SDLK_WORLD_47-      succ SDLK_WORLD_47 = SDLK_WORLD_48-      succ SDLK_WORLD_48 = SDLK_WORLD_49-      succ SDLK_WORLD_49 = SDLK_WORLD_50-      succ SDLK_WORLD_50 = SDLK_WORLD_51-      succ SDLK_WORLD_51 = SDLK_WORLD_52-      succ SDLK_WORLD_52 = SDLK_WORLD_53-      succ SDLK_WORLD_53 = SDLK_WORLD_54-      succ SDLK_WORLD_54 = SDLK_WORLD_55-      succ SDLK_WORLD_55 = SDLK_WORLD_56-      succ SDLK_WORLD_56 = SDLK_WORLD_57-      succ SDLK_WORLD_57 = SDLK_WORLD_58-      succ SDLK_WORLD_58 = SDLK_WORLD_59-      succ SDLK_WORLD_59 = SDLK_WORLD_60-      succ SDLK_WORLD_60 = SDLK_WORLD_61-      succ SDLK_WORLD_61 = SDLK_WORLD_62-      succ SDLK_WORLD_62 = SDLK_WORLD_63-      succ SDLK_WORLD_63 = SDLK_WORLD_64-      succ SDLK_WORLD_64 = SDLK_WORLD_65-      succ SDLK_WORLD_65 = SDLK_WORLD_66-      succ SDLK_WORLD_66 = SDLK_WORLD_67-      succ SDLK_WORLD_67 = SDLK_WORLD_68-      succ SDLK_WORLD_68 = SDLK_WORLD_69-      succ SDLK_WORLD_69 = SDLK_WORLD_70-      succ SDLK_WORLD_70 = SDLK_WORLD_71-      succ SDLK_WORLD_71 = SDLK_WORLD_72-      succ SDLK_WORLD_72 = SDLK_WORLD_73-      succ SDLK_WORLD_73 = SDLK_WORLD_74-      succ SDLK_WORLD_74 = SDLK_WORLD_75-      succ SDLK_WORLD_75 = SDLK_WORLD_76-      succ SDLK_WORLD_76 = SDLK_WORLD_77-      succ SDLK_WORLD_77 = SDLK_WORLD_78-      succ SDLK_WORLD_78 = SDLK_WORLD_79-      succ SDLK_WORLD_79 = SDLK_WORLD_80-      succ SDLK_WORLD_80 = SDLK_WORLD_81-      succ SDLK_WORLD_81 = SDLK_WORLD_82-      succ SDLK_WORLD_82 = SDLK_WORLD_83-      succ SDLK_WORLD_83 = SDLK_WORLD_84-      succ SDLK_WORLD_84 = SDLK_WORLD_85-      succ SDLK_WORLD_85 = SDLK_WORLD_86-      succ SDLK_WORLD_86 = SDLK_WORLD_87-      succ SDLK_WORLD_87 = SDLK_WORLD_88-      succ SDLK_WORLD_88 = SDLK_WORLD_89-      succ SDLK_WORLD_89 = SDLK_WORLD_90-      succ SDLK_WORLD_90 = SDLK_WORLD_91-      succ SDLK_WORLD_91 = SDLK_WORLD_92-      succ SDLK_WORLD_92 = SDLK_WORLD_93-      succ SDLK_WORLD_93 = SDLK_WORLD_94-      succ SDLK_WORLD_94 = SDLK_WORLD_95-      succ SDLK_WORLD_95 = SDLK_KP0-      succ SDLK_KP0 = SDLK_KP1-      succ SDLK_KP1 = SDLK_KP2-      succ SDLK_KP2 = SDLK_KP3-      succ SDLK_KP3 = SDLK_KP4-      succ SDLK_KP4 = SDLK_KP5-      succ SDLK_KP5 = SDLK_KP6-      succ SDLK_KP6 = SDLK_KP7-      succ SDLK_KP7 = SDLK_KP8-      succ SDLK_KP8 = SDLK_KP9-      succ SDLK_KP9 = SDLK_KP_PERIOD-      succ SDLK_KP_PERIOD = SDLK_KP_DIVIDE-      succ SDLK_KP_DIVIDE = SDLK_KP_MULTIPLY-      succ SDLK_KP_MULTIPLY = SDLK_KP_MINUS-      succ SDLK_KP_MINUS = SDLK_KP_PLUS-      succ SDLK_KP_PLUS = SDLK_KP_ENTER-      succ SDLK_KP_ENTER = SDLK_KP_EQUALS-      succ SDLK_KP_EQUALS = SDLK_UP-      succ SDLK_UP = SDLK_DOWN-      succ SDLK_DOWN = SDLK_RIGHT-      succ SDLK_RIGHT = SDLK_LEFT-      succ SDLK_LEFT = SDLK_INSERT-      succ SDLK_INSERT = SDLK_HOME-      succ SDLK_HOME = SDLK_END-      succ SDLK_END = SDLK_PAGEUP-      succ SDLK_PAGEUP = SDLK_PAGEDOWN-      succ SDLK_PAGEDOWN = SDLK_F1-      succ SDLK_F1 = SDLK_F2-      succ SDLK_F2 = SDLK_F3-      succ SDLK_F3 = SDLK_F4-      succ SDLK_F4 = SDLK_F5-      succ SDLK_F5 = SDLK_F6-      succ SDLK_F6 = SDLK_F7-      succ SDLK_F7 = SDLK_F8-      succ SDLK_F8 = SDLK_F9-      succ SDLK_F9 = SDLK_F10-      succ SDLK_F10 = SDLK_F11-      succ SDLK_F11 = SDLK_F12-      succ SDLK_F12 = SDLK_F13-      succ SDLK_F13 = SDLK_F14-      succ SDLK_F14 = SDLK_F15-      succ SDLK_F15 = SDLK_NUMLOCK-      succ SDLK_NUMLOCK = SDLK_CAPSLOCK-      succ SDLK_CAPSLOCK = SDLK_SCROLLOCK-      succ SDLK_SCROLLOCK = SDLK_RSHIFT-      succ SDLK_RSHIFT = SDLK_LSHIFT-      succ SDLK_LSHIFT = SDLK_RCTRL-      succ SDLK_RCTRL = SDLK_LCTRL-      succ SDLK_LCTRL = SDLK_RALT-      succ SDLK_RALT = SDLK_LALT-      succ SDLK_LALT = SDLK_RMETA-      succ SDLK_RMETA = SDLK_LMETA-      succ SDLK_LMETA = SDLK_LSUPER-      succ SDLK_LSUPER = SDLK_RSUPER-      succ SDLK_RSUPER = SDLK_MODE-      succ SDLK_MODE = SDLK_COMPOSE-      succ SDLK_COMPOSE = SDLK_HELP-      succ SDLK_HELP = SDLK_PRINT-      succ SDLK_PRINT = SDLK_SYSREQ-      succ SDLK_SYSREQ = SDLK_BREAK-      succ SDLK_BREAK = SDLK_MENU-      succ SDLK_MENU = SDLK_POWER-      succ SDLK_POWER = SDLK_EURO-      succ SDLK_EURO = SDLK_UNDO-      succ SDLK_UNDO = SDLK_LAST-      succ _ = error "Graphics.UI.SDL.Keysym.succ: bad argument"-      pred SDLK_FIRST = SDLK_UNKNOWN-      pred SDLK_BACKSPACE = SDLK_FIRST-      pred SDLK_TAB = SDLK_BACKSPACE-      pred SDLK_CLEAR = SDLK_TAB-      pred SDLK_RETURN = SDLK_CLEAR-      pred SDLK_PAUSE = SDLK_RETURN-      pred SDLK_ESCAPE = SDLK_PAUSE-      pred SDLK_SPACE = SDLK_ESCAPE-      pred SDLK_EXCLAIM = SDLK_SPACE-      pred SDLK_QUOTEDBL = SDLK_EXCLAIM-      pred SDLK_HASH = SDLK_QUOTEDBL-      pred SDLK_DOLLAR = SDLK_HASH-      pred SDLK_AMPERSAND = SDLK_DOLLAR-      pred SDLK_QUOTE = SDLK_AMPERSAND-      pred SDLK_LEFTPAREN = SDLK_QUOTE-      pred SDLK_RIGHTPAREN = SDLK_LEFTPAREN-      pred SDLK_ASTERISK = SDLK_RIGHTPAREN-      pred SDLK_PLUS = SDLK_ASTERISK-      pred SDLK_COMMA = SDLK_PLUS-      pred SDLK_MINUS = SDLK_COMMA-      pred SDLK_PERIOD = SDLK_MINUS-      pred SDLK_SLASH = SDLK_PERIOD-      pred SDLK_0 = SDLK_SLASH-      pred SDLK_1 = SDLK_0-      pred SDLK_2 = SDLK_1-      pred SDLK_3 = SDLK_2-      pred SDLK_4 = SDLK_3-      pred SDLK_5 = SDLK_4-      pred SDLK_6 = SDLK_5-      pred SDLK_7 = SDLK_6-      pred SDLK_8 = SDLK_7-      pred SDLK_9 = SDLK_8-      pred SDLK_COLON = SDLK_9-      pred SDLK_SEMICOLON = SDLK_COLON-      pred SDLK_LESS = SDLK_SEMICOLON-      pred SDLK_EQUALS = SDLK_LESS-      pred SDLK_GREATER = SDLK_EQUALS-      pred SDLK_QUESTION = SDLK_GREATER-      pred SDLK_AT = SDLK_QUESTION-      pred SDLK_LEFTBRACKET = SDLK_AT-      pred SDLK_BACKSLASH = SDLK_LEFTBRACKET-      pred SDLK_RIGHTBRACKET = SDLK_BACKSLASH-      pred SDLK_CARET = SDLK_RIGHTBRACKET-      pred SDLK_UNDERSCORE = SDLK_CARET-      pred SDLK_BACKQUOTE = SDLK_UNDERSCORE-      pred SDLK_a = SDLK_BACKQUOTE-      pred SDLK_b = SDLK_a-      pred SDLK_c = SDLK_b-      pred SDLK_d = SDLK_c-      pred SDLK_e = SDLK_d-      pred SDLK_f = SDLK_e-      pred SDLK_g = SDLK_f-      pred SDLK_h = SDLK_g-      pred SDLK_i = SDLK_h-      pred SDLK_j = SDLK_i-      pred SDLK_k = SDLK_j-      pred SDLK_l = SDLK_k-      pred SDLK_m = SDLK_l-      pred SDLK_n = SDLK_m-      pred SDLK_o = SDLK_n-      pred SDLK_p = SDLK_o-      pred SDLK_q = SDLK_p-      pred SDLK_r = SDLK_q-      pred SDLK_s = SDLK_r-      pred SDLK_t = SDLK_s-      pred SDLK_u = SDLK_t-      pred SDLK_v = SDLK_u-      pred SDLK_w = SDLK_v-      pred SDLK_x = SDLK_w-      pred SDLK_y = SDLK_x-      pred SDLK_z = SDLK_y-      pred SDLK_DELETE = SDLK_z-      pred SDLK_WORLD_0 = SDLK_DELETE-      pred SDLK_WORLD_1 = SDLK_WORLD_0-      pred SDLK_WORLD_2 = SDLK_WORLD_1-      pred SDLK_WORLD_3 = SDLK_WORLD_2-      pred SDLK_WORLD_4 = SDLK_WORLD_3-      pred SDLK_WORLD_5 = SDLK_WORLD_4-      pred SDLK_WORLD_6 = SDLK_WORLD_5-      pred SDLK_WORLD_7 = SDLK_WORLD_6-      pred SDLK_WORLD_8 = SDLK_WORLD_7-      pred SDLK_WORLD_9 = SDLK_WORLD_8-      pred SDLK_WORLD_10 = SDLK_WORLD_9-      pred SDLK_WORLD_11 = SDLK_WORLD_10-      pred SDLK_WORLD_12 = SDLK_WORLD_11-      pred SDLK_WORLD_13 = SDLK_WORLD_12-      pred SDLK_WORLD_14 = SDLK_WORLD_13-      pred SDLK_WORLD_15 = SDLK_WORLD_14-      pred SDLK_WORLD_16 = SDLK_WORLD_15-      pred SDLK_WORLD_17 = SDLK_WORLD_16-      pred SDLK_WORLD_18 = SDLK_WORLD_17-      pred SDLK_WORLD_19 = SDLK_WORLD_18-      pred SDLK_WORLD_20 = SDLK_WORLD_19-      pred SDLK_WORLD_21 = SDLK_WORLD_20-      pred SDLK_WORLD_22 = SDLK_WORLD_21-      pred SDLK_WORLD_23 = SDLK_WORLD_22-      pred SDLK_WORLD_24 = SDLK_WORLD_23-      pred SDLK_WORLD_25 = SDLK_WORLD_24-      pred SDLK_WORLD_26 = SDLK_WORLD_25-      pred SDLK_WORLD_27 = SDLK_WORLD_26-      pred SDLK_WORLD_28 = SDLK_WORLD_27-      pred SDLK_WORLD_29 = SDLK_WORLD_28-      pred SDLK_WORLD_30 = SDLK_WORLD_29-      pred SDLK_WORLD_31 = SDLK_WORLD_30-      pred SDLK_WORLD_32 = SDLK_WORLD_31-      pred SDLK_WORLD_33 = SDLK_WORLD_32-      pred SDLK_WORLD_34 = SDLK_WORLD_33-      pred SDLK_WORLD_35 = SDLK_WORLD_34-      pred SDLK_WORLD_36 = SDLK_WORLD_35-      pred SDLK_WORLD_37 = SDLK_WORLD_36-      pred SDLK_WORLD_38 = SDLK_WORLD_37-      pred SDLK_WORLD_39 = SDLK_WORLD_38-      pred SDLK_WORLD_40 = SDLK_WORLD_39-      pred SDLK_WORLD_41 = SDLK_WORLD_40-      pred SDLK_WORLD_42 = SDLK_WORLD_41-      pred SDLK_WORLD_43 = SDLK_WORLD_42-      pred SDLK_WORLD_44 = SDLK_WORLD_43-      pred SDLK_WORLD_45 = SDLK_WORLD_44-      pred SDLK_WORLD_46 = SDLK_WORLD_45-      pred SDLK_WORLD_47 = SDLK_WORLD_46-      pred SDLK_WORLD_48 = SDLK_WORLD_47-      pred SDLK_WORLD_49 = SDLK_WORLD_48-      pred SDLK_WORLD_50 = SDLK_WORLD_49-      pred SDLK_WORLD_51 = SDLK_WORLD_50-      pred SDLK_WORLD_52 = SDLK_WORLD_51-      pred SDLK_WORLD_53 = SDLK_WORLD_52-      pred SDLK_WORLD_54 = SDLK_WORLD_53-      pred SDLK_WORLD_55 = SDLK_WORLD_54-      pred SDLK_WORLD_56 = SDLK_WORLD_55-      pred SDLK_WORLD_57 = SDLK_WORLD_56-      pred SDLK_WORLD_58 = SDLK_WORLD_57-      pred SDLK_WORLD_59 = SDLK_WORLD_58-      pred SDLK_WORLD_60 = SDLK_WORLD_59-      pred SDLK_WORLD_61 = SDLK_WORLD_60-      pred SDLK_WORLD_62 = SDLK_WORLD_61-      pred SDLK_WORLD_63 = SDLK_WORLD_62-      pred SDLK_WORLD_64 = SDLK_WORLD_63-      pred SDLK_WORLD_65 = SDLK_WORLD_64-      pred SDLK_WORLD_66 = SDLK_WORLD_65-      pred SDLK_WORLD_67 = SDLK_WORLD_66-      pred SDLK_WORLD_68 = SDLK_WORLD_67-      pred SDLK_WORLD_69 = SDLK_WORLD_68-      pred SDLK_WORLD_70 = SDLK_WORLD_69-      pred SDLK_WORLD_71 = SDLK_WORLD_70-      pred SDLK_WORLD_72 = SDLK_WORLD_71-      pred SDLK_WORLD_73 = SDLK_WORLD_72-      pred SDLK_WORLD_74 = SDLK_WORLD_73-      pred SDLK_WORLD_75 = SDLK_WORLD_74-      pred SDLK_WORLD_76 = SDLK_WORLD_75-      pred SDLK_WORLD_77 = SDLK_WORLD_76-      pred SDLK_WORLD_78 = SDLK_WORLD_77-      pred SDLK_WORLD_79 = SDLK_WORLD_78-      pred SDLK_WORLD_80 = SDLK_WORLD_79-      pred SDLK_WORLD_81 = SDLK_WORLD_80-      pred SDLK_WORLD_82 = SDLK_WORLD_81-      pred SDLK_WORLD_83 = SDLK_WORLD_82-      pred SDLK_WORLD_84 = SDLK_WORLD_83-      pred SDLK_WORLD_85 = SDLK_WORLD_84-      pred SDLK_WORLD_86 = SDLK_WORLD_85-      pred SDLK_WORLD_87 = SDLK_WORLD_86-      pred SDLK_WORLD_88 = SDLK_WORLD_87-      pred SDLK_WORLD_89 = SDLK_WORLD_88-      pred SDLK_WORLD_90 = SDLK_WORLD_89-      pred SDLK_WORLD_91 = SDLK_WORLD_90-      pred SDLK_WORLD_92 = SDLK_WORLD_91-      pred SDLK_WORLD_93 = SDLK_WORLD_92-      pred SDLK_WORLD_94 = SDLK_WORLD_93-      pred SDLK_WORLD_95 = SDLK_WORLD_94-      pred SDLK_KP0 = SDLK_WORLD_95-      pred SDLK_KP1 = SDLK_KP0-      pred SDLK_KP2 = SDLK_KP1-      pred SDLK_KP3 = SDLK_KP2-      pred SDLK_KP4 = SDLK_KP3-      pred SDLK_KP5 = SDLK_KP4-      pred SDLK_KP6 = SDLK_KP5-      pred SDLK_KP7 = SDLK_KP6-      pred SDLK_KP8 = SDLK_KP7-      pred SDLK_KP9 = SDLK_KP8-      pred SDLK_KP_PERIOD = SDLK_KP9-      pred SDLK_KP_DIVIDE = SDLK_KP_PERIOD-      pred SDLK_KP_MULTIPLY = SDLK_KP_DIVIDE-      pred SDLK_KP_MINUS = SDLK_KP_MULTIPLY-      pred SDLK_KP_PLUS = SDLK_KP_MINUS-      pred SDLK_KP_ENTER = SDLK_KP_PLUS-      pred SDLK_KP_EQUALS = SDLK_KP_ENTER-      pred SDLK_UP = SDLK_KP_EQUALS-      pred SDLK_DOWN = SDLK_UP-      pred SDLK_RIGHT = SDLK_DOWN-      pred SDLK_LEFT = SDLK_RIGHT-      pred SDLK_INSERT = SDLK_LEFT-      pred SDLK_HOME = SDLK_INSERT-      pred SDLK_END = SDLK_HOME-      pred SDLK_PAGEUP = SDLK_END-      pred SDLK_PAGEDOWN = SDLK_PAGEUP-      pred SDLK_F1 = SDLK_PAGEDOWN-      pred SDLK_F2 = SDLK_F1-      pred SDLK_F3 = SDLK_F2-      pred SDLK_F4 = SDLK_F3-      pred SDLK_F5 = SDLK_F4-      pred SDLK_F6 = SDLK_F5-      pred SDLK_F7 = SDLK_F6-      pred SDLK_F8 = SDLK_F7-      pred SDLK_F9 = SDLK_F8-      pred SDLK_F10 = SDLK_F9-      pred SDLK_F11 = SDLK_F10-      pred SDLK_F12 = SDLK_F11-      pred SDLK_F13 = SDLK_F12-      pred SDLK_F14 = SDLK_F13-      pred SDLK_F15 = SDLK_F14-      pred SDLK_NUMLOCK = SDLK_F15-      pred SDLK_CAPSLOCK = SDLK_NUMLOCK-      pred SDLK_SCROLLOCK = SDLK_CAPSLOCK-      pred SDLK_RSHIFT = SDLK_SCROLLOCK-      pred SDLK_LSHIFT = SDLK_RSHIFT-      pred SDLK_RCTRL = SDLK_LSHIFT-      pred SDLK_LCTRL = SDLK_RCTRL-      pred SDLK_RALT = SDLK_LCTRL-      pred SDLK_LALT = SDLK_RALT-      pred SDLK_RMETA = SDLK_LALT-      pred SDLK_LMETA = SDLK_RMETA-      pred SDLK_LSUPER = SDLK_LMETA-      pred SDLK_RSUPER = SDLK_LSUPER-      pred SDLK_MODE = SDLK_RSUPER-      pred SDLK_COMPOSE = SDLK_MODE-      pred SDLK_HELP = SDLK_COMPOSE-      pred SDLK_PRINT = SDLK_HELP-      pred SDLK_SYSREQ = SDLK_PRINT-      pred SDLK_BREAK = SDLK_SYSREQ-      pred SDLK_MENU = SDLK_BREAK-      pred SDLK_POWER = SDLK_MENU-      pred SDLK_EURO = SDLK_POWER-      pred SDLK_UNDO = SDLK_EURO-      pred SDLK_LAST = SDLK_UNDO-      pred _ = error "Graphics.UI.SDL.Keysym.pred: bad argument"-      enumFromTo x y | x > y = []-                     | x == y = [y]-                     | True = x : enumFromTo (succ x) y
− Graphics/UI/SDL/Rect.hs
@@ -1,55 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE "SDL.h" #-}-{-# LINE 1 "Graphics/UI/SDL/Rect.hsc" #-}--{-# LINE 2 "Graphics/UI/SDL/Rect.hsc" #-}--------------------------------------------------------------------------------- |--- Module      :  Graphics.UI.SDL.Video--- Copyright   :  (c) David Himmelstrup 2005--- License     :  BSD-like------ Maintainer  :  lemmih@gmail.com--- Stability   :  provisional--- Portability :  portable----------------------------------------------------------------------------------module Graphics.UI.SDL.Rect where--import Foreign (Storable(poke, sizeOf, alignment, peekByteOff, pokeByteOff,-                         peek))-import Data.Word (Word16)-import Data.Int (Int16)--data Rect-    = Rect-    { rectX, rectY :: Int,  -- Actually Int16-      rectW, rectH :: Int } -- Actually Word16-    deriving (Show,Eq,Ord)--instance Storable Rect where-    sizeOf = const (8)-{-# LINE 28 "Graphics/UI/SDL/Rect.hsc" #-}-    alignment = const 2-    peek ptr-        = do x <- (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr :: IO Int16-{-# LINE 31 "Graphics/UI/SDL/Rect.hsc" #-}-             y <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr :: IO Int16-{-# LINE 32 "Graphics/UI/SDL/Rect.hsc" #-}-             w <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr :: IO Word16-{-# LINE 33 "Graphics/UI/SDL/Rect.hsc" #-}-             h <- (\hsc_ptr -> peekByteOff hsc_ptr 6) ptr :: IO Word16-{-# LINE 34 "Graphics/UI/SDL/Rect.hsc" #-}-             return $! Rect (fromIntegral x) (fromIntegral y) (fromIntegral w) (fromIntegral h)-    poke ptr (Rect x y w h)-        = do (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr (fromIntegral x :: Int16)-{-# LINE 37 "Graphics/UI/SDL/Rect.hsc" #-}-             (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr (fromIntegral y :: Int16)-{-# LINE 38 "Graphics/UI/SDL/Rect.hsc" #-}-             (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr (fromIntegral w :: Word16)-{-# LINE 39 "Graphics/UI/SDL/Rect.hsc" #-}-             (\hsc_ptr -> pokeByteOff hsc_ptr 6) ptr (fromIntegral h :: Word16)-{-# LINE 40 "Graphics/UI/SDL/Rect.hsc" #-}-
− Graphics/UI/SDL/Types.hs
@@ -1,324 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE "SDL.h" #-}-{-# LINE 1 "Graphics/UI/SDL/Types.hsc" #-}--{-# LINE 2 "Graphics/UI/SDL/Types.hsc" #-}--------------------------------------------------------------------------------- |--- Module      :  Graphics.UI.SDL.Types--- Copyright   :  (c) David Himmelstrup 2005--- License     :  BSD-like------ Maintainer  :  lemmih@gmail.com--- Stability   :  provisional--- Portability :  portable----------------------------------------------------------------------------------module Graphics.UI.SDL.Types-    ( SurfaceStruct-    , Surface-    , VideoInfoStruct-    , VideoInfo-    , RWopsStruct-    , RWops-    , PixelFormatStruct-    , PixelFormat-    , JoystickStruct-    , Joystick-    , Hat(..)-    , TimerIDStruct-    , SurfaceFlag (..)-    , surfaceGetPixelFormat-    , surfaceGetWidth-    , surfaceGetHeight-    , surfaceGetFlags-    , surfaceGetPitch-    , surfaceGetPixels-    , pixelFormatGetAlpha-    , pixelFormatGetColorKey-    , pixelFormatGetBitsPerPixel-    , pixelFormatGetBytesPerPixel-    , videoInfoWidth-    , videoInfoHeight-    ) where--import Foreign (Word8, Word16, Word32, Ptr, Storable(peekByteOff),-               unsafePerformIO, newForeignPtr_, ForeignPtr, withForeignPtr)--import Graphics.UI.SDL.Utilities (Enum(..), fromBitmask)-import Graphics.UI.SDL.Color (Pixel(..))--import Prelude hiding (Enum(..))--data SurfaceStruct-type Surface = ForeignPtr SurfaceStruct--data VideoInfoStruct-type VideoInfo = ForeignPtr VideoInfoStruct--data RWopsStruct-type RWops = ForeignPtr RWopsStruct--data PixelFormatStruct-type PixelFormat = ForeignPtr PixelFormatStruct--data TimerIDStruct--data PixelsData-type Pixels = Ptr PixelsData--data JoystickStruct-type Joystick = ForeignPtr JoystickStruct--data Hat-    = HatCentered-    | HatUp-    | HatRight-    | HatDown-    | HatLeft-    | HatRightUp-    | HatRightDown-    | HatLeftUp-    | HatLeftDown-      deriving (Show,Eq,Ord)--instance Bounded Hat where-    minBound = HatCentered-    maxBound = HatLeftDown--instance Enum Hat Word8 where-    fromEnum HatCentered = 0-{-# LINE 87 "Graphics/UI/SDL/Types.hsc" #-}-    fromEnum HatUp = 1-{-# LINE 88 "Graphics/UI/SDL/Types.hsc" #-}-    fromEnum HatRight = 2-{-# LINE 89 "Graphics/UI/SDL/Types.hsc" #-}-    fromEnum HatDown = 4-{-# LINE 90 "Graphics/UI/SDL/Types.hsc" #-}-    fromEnum HatLeft = 8-{-# LINE 91 "Graphics/UI/SDL/Types.hsc" #-}-    fromEnum HatRightUp = 3-{-# LINE 92 "Graphics/UI/SDL/Types.hsc" #-}-    fromEnum HatRightDown = 6-{-# LINE 93 "Graphics/UI/SDL/Types.hsc" #-}-    fromEnum HatLeftUp = 9-{-# LINE 94 "Graphics/UI/SDL/Types.hsc" #-}-    fromEnum HatLeftDown = 12-{-# LINE 95 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum 0 = HatCentered-{-# LINE 96 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum 1 = HatUp-{-# LINE 97 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum 2 = HatRight-{-# LINE 98 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum 4 = HatDown-{-# LINE 99 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum 8 = HatLeft-{-# LINE 100 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum 3 = HatRightUp-{-# LINE 101 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum 6 = HatRightDown-{-# LINE 102 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum 9 = HatLeftUp-{-# LINE 103 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum 12 = HatLeftDown-{-# LINE 104 "Graphics/UI/SDL/Types.hsc" #-}-    toEnum _ = error "Graphics.UI.SDL.Types.toEnum: bad argument"-    succ HatCentered = HatUp-    succ HatUp = HatRight-    succ HatRight = HatDown-    succ HatDown = HatLeft-    succ HatLeft = HatRightUp-    succ HatRightUp = HatRightDown-    succ HatRightDown = HatLeftUp-    succ HatLeftUp = HatLeftDown-    succ _ = error "Graphics.UI.SDL.Types.succ: bad argument"-    pred HatUp = HatCentered-    pred HatRight = HatUp-    pred HatDown = HatRight-    pred HatLeft = HatDown-    pred HatRightUp = HatLeft-    pred HatRightDown = HatRightUp-    pred HatLeftUp = HatRightDown-    pred HatLeftDown = HatLeftUp-    pred _ = error "Graphics.UI.SDL.Types.pred: bad argument"-    enumFromTo x y | x > y = []-                   | x == y = [y]-                   | True = x : enumFromTo (succ x) y-    --data SurfaceFlag-    = SWSurface-    | HWSurface-    | OpenGL-    | ASyncBlit-    | OpenGLBlit-    | Resizable-    | NoFrame-    | HWAccel-    | SrcColorKey-    | RLEAccel-    | SrcAlpha-    | PreAlloc-    | AnyFormat-    | HWPalette-    | DoubleBuf-    | Fullscreen-    deriving (Eq, Ord, Show, Read)-instance Bounded SurfaceFlag where-      minBound = SWSurface-      maxBound = Fullscreen-instance Enum SurfaceFlag Word32 where-      fromEnum SWSurface = 0-      fromEnum HWSurface = 1-      fromEnum OpenGL    = 2-      fromEnum ASyncBlit = 4-      fromEnum OpenGLBlit = 10-      fromEnum Resizable = 16-      fromEnum NoFrame = 32-      fromEnum HWAccel = 256-      fromEnum SrcColorKey = 4096-      fromEnum RLEAccel = 16384-      fromEnum SrcAlpha = 65536-      fromEnum PreAlloc = 16777216-      fromEnum AnyFormat = 268435456-      fromEnum HWPalette = 536870912-      fromEnum DoubleBuf = 1073741824-      fromEnum Fullscreen = 2147483648-      toEnum 0 = SWSurface-      toEnum 1 = HWSurface-      toEnum 4 = ASyncBlit-      toEnum 2 = OpenGL-      toEnum 10 = OpenGLBlit-      toEnum 16 = Resizable-      toEnum 32 = NoFrame-      toEnum 256 = HWAccel-      toEnum 4096 = SrcColorKey-      toEnum 16384 = RLEAccel-      toEnum 65536 = SrcAlpha-      toEnum 16777216 = PreAlloc-      toEnum 268435456 = AnyFormat-      toEnum 536870912 = HWPalette-      toEnum 1073741824 = DoubleBuf-      toEnum 2147483648 = Fullscreen-      toEnum _ = error "Graphics.UI.SDL.Types.fromEnum: bad argument"-      succ SWSurface = HWSurface-      succ HWSurface = OpenGL-      succ OpenGL = ASyncBlit-      succ ASyncBlit = OpenGLBlit-      succ OpenGLBlit = Resizable-      succ Resizable = NoFrame-      succ NoFrame = HWAccel-      succ HWAccel = SrcColorKey-      succ SrcColorKey = RLEAccel-      succ RLEAccel = SrcAlpha-      succ SrcAlpha = PreAlloc-      succ PreAlloc = AnyFormat-      succ AnyFormat = HWPalette-      succ HWPalette = DoubleBuf-      succ DoubleBuf = Fullscreen-      succ _ = error "Graphics.UI.SDL.Types.succ: bad argument"--      pred HWSurface = SWSurface-      pred OpenGL = HWSurface-      pred ASyncBlit = OpenGL-      pred OpenGLBlit = ASyncBlit-      pred Resizable = OpenGLBlit-      pred NoFrame = Resizable-      pred HWAccel = NoFrame-      pred SrcColorKey = HWAccel-      pred RLEAccel = SrcColorKey-      pred SrcAlpha = RLEAccel-      pred PreAlloc = SrcAlpha-      pred AnyFormat = PreAlloc-      pred HWPalette = AnyFormat-      pred DoubleBuf = HWPalette-      pred Fullscreen = DoubleBuf-      pred _ = error "Graphics.UI.SDL.Types.pred: bad argument"--      enumFromTo x y | x > y = []-                     | x == y = [y]-                     | True = x : enumFromTo (succ x) y---surfaceGetPixelFormat :: Surface -> PixelFormat-surfaceGetPixelFormat surface-    = unsafePerformIO $-      withForeignPtr surface $ \ptr ->-      newForeignPtr_ =<< (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr-{-# LINE 227 "Graphics/UI/SDL/Types.hsc" #-}--pixelFormatGetAlpha :: PixelFormat -> IO Word8-pixelFormatGetAlpha format =-    withForeignPtr format $-    (\hsc_ptr -> peekByteOff hsc_ptr 40)-{-# LINE 232 "Graphics/UI/SDL/Types.hsc" #-}--pixelFormatGetColorKey :: PixelFormat -> IO Pixel-pixelFormatGetColorKey format =-    fmap Pixel $-    withForeignPtr format $-    (\hsc_ptr -> peekByteOff hsc_ptr 36)-{-# LINE 238 "Graphics/UI/SDL/Types.hsc" #-}--pixelFormatGetBitsPerPixel :: PixelFormat -> IO Word8-pixelFormatGetBitsPerPixel format-    = withForeignPtr format $-      (\hsc_ptr -> peekByteOff hsc_ptr 8)-{-# LINE 243 "Graphics/UI/SDL/Types.hsc" #-}--pixelFormatGetBytesPerPixel :: PixelFormat -> IO Word8-pixelFormatGetBytesPerPixel format-    = withForeignPtr format $-      (\hsc_ptr -> peekByteOff hsc_ptr 9)-{-# LINE 248 "Graphics/UI/SDL/Types.hsc" #-}--surfaceGetWidth :: Surface -> Int-surfaceGetWidth surface-    = unsafePerformIO $-      withForeignPtr surface $-      (\hsc_ptr -> peekByteOff hsc_ptr 16)-{-# LINE 254 "Graphics/UI/SDL/Types.hsc" #-}--surfaceGetHeight :: Surface -> Int-surfaceGetHeight surface-    = unsafePerformIO $-      withForeignPtr surface $-      (\hsc_ptr -> peekByteOff hsc_ptr 20)-{-# LINE 260 "Graphics/UI/SDL/Types.hsc" #-}--surfaceGetFlags :: Surface -> IO [SurfaceFlag]-surfaceGetFlags surface-    = withForeignPtr surface $-      fmap fromBitmask . (\hsc_ptr -> peekByteOff hsc_ptr 0)-{-# LINE 265 "Graphics/UI/SDL/Types.hsc" #-}--surfaceGetPitch :: Surface -> Word16-surfaceGetPitch surface-    = unsafePerformIO $-      withForeignPtr surface $-      (\hsc_ptr -> peekByteOff hsc_ptr 24)-{-# LINE 271 "Graphics/UI/SDL/Types.hsc" #-}--surfaceGetPixels :: Surface -> IO Pixels-surfaceGetPixels surface-    = withForeignPtr surface $-      (\hsc_ptr -> peekByteOff hsc_ptr 32)-{-# LINE 276 "Graphics/UI/SDL/Types.hsc" #-}--videoInfoWidth :: VideoInfo -> Int-videoInfoWidth vi-    = unsafePerformIO $-      withForeignPtr vi $-      (\hsc_ptr -> peekByteOff hsc_ptr 16)-{-# LINE 282 "Graphics/UI/SDL/Types.hsc" #-}--videoInfoHeight :: VideoInfo -> Int-videoInfoHeight vi-    = unsafePerformIO $-      withForeignPtr vi $-      (\hsc_ptr -> peekByteOff hsc_ptr 20)-{-# LINE 288 "Graphics/UI/SDL/Types.hsc" #-}-
Graphics/UI/SDL/Types.hsc view
@@ -41,6 +41,7 @@     , videoInfoHeight     ) where +import Foreign.C (CInt) import Foreign (Word8, Word16, Word32, Ptr, Storable(peekByteOff),                unsafePerformIO, newForeignPtr_, ForeignPtr, withForeignPtr) @@ -249,15 +250,18 @@     = withForeignPtr format $       #{peek SDL_PixelFormat, BytesPerPixel} +cintToInt :: CInt -> Int+cintToInt = fromIntegral+ surfaceGetWidth :: Surface -> Int surfaceGetWidth surface-    = unsafePerformIO $+    = cintToInt $ unsafePerformIO $       withForeignPtr surface $       #{peek SDL_Surface, w}  surfaceGetHeight :: Surface -> Int surfaceGetHeight surface-    = unsafePerformIO $+    = cintToInt $ unsafePerformIO $       withForeignPtr surface $       #{peek SDL_Surface, h} @@ -279,13 +283,13 @@  videoInfoWidth :: VideoInfo -> Int videoInfoWidth vi-    = unsafePerformIO $+    = cintToInt $ unsafePerformIO $       withForeignPtr vi $       #peek SDL_VideoInfo, current_w  videoInfoHeight :: VideoInfo -> Int videoInfoHeight vi-    = unsafePerformIO $+    = cintToInt $ unsafePerformIO $       withForeignPtr vi $       #peek SDL_VideoInfo, current_h 
− Graphics/UI/SDL/Version.hs
@@ -1,46 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE "SDL.h" #-}-{-# LINE 1 "Graphics/UI/SDL/Version.hsc" #-}--{-# LINE 2 "Graphics/UI/SDL/Version.hsc" #-}-module Graphics.UI.SDL.Version-    ( compiledFor-    , linkedWith-    ) where--import Data.Version (Version(Version))--import Foreign (Word8, Ptr, Storable(sizeOf, alignment, peekByteOff, peek))--data SDLVersion-    = SDLVersion Word8 Word8 Word8--instance Storable SDLVersion where-    sizeOf _ = (3)-{-# LINE 16 "Graphics/UI/SDL/Version.hsc" #-}-    alignment _ = 1-    peek ptr = do major <- (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr-{-# LINE 18 "Graphics/UI/SDL/Version.hsc" #-}-                  minor <- (\hsc_ptr -> peekByteOff hsc_ptr 1) ptr-{-# LINE 19 "Graphics/UI/SDL/Version.hsc" #-}-                  patch <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr-{-# LINE 20 "Graphics/UI/SDL/Version.hsc" #-}-                  return (SDLVersion major minor patch)--compiledFor :: Version-compiledFor = Version [ 1-{-# LINE 24 "Graphics/UI/SDL/Version.hsc" #-}-                      , 2-{-# LINE 25 "Graphics/UI/SDL/Version.hsc" #-}-                      , 10-{-# LINE 26 "Graphics/UI/SDL/Version.hsc" #-}-                      ] []---- const SDL_version * SDL_Linked_Version(void);-foreign import ccall unsafe "SDL_Linked_Version" sdlLinkedVersion :: IO (Ptr SDLVersion)-linkedWith :: IO Version-linkedWith = do versionPtr <- sdlLinkedVersion-                SDLVersion major minor patch <- peek versionPtr-                return (Version (map fromIntegral [major,minor,patch]) [])
− Graphics/UI/SDL/Video.hs
@@ -1,729 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE <SDL.h> #-}-{-# LINE 1 "Graphics/UI/SDL/Video.hsc" #-}-------------------------------------------------------------------------------{-# LINE 2 "Graphics/UI/SDL/Video.hsc" #-}--- |--- Module      :  Graphics.UI.SDL.Video--- Copyright   :  (c) David Himmelstrup 2005--- License     :  BSD-like------ Maintainer  :  lemmih@gmail.com--- Stability   :  provisional--- Portability :  portable----------------------------------------------------------------------------------module Graphics.UI.SDL.Video-    ( Palette-    , Toggle (..)-    , fromToggle-    , toToggle-    , tryGetVideoSurface-    , getVideoSurface-    , tryVideoDriverName-    , videoDriverName-    , getVideoInfo-    , ListModes(..)-    , listModes-    , videoModeOK-    , trySetVideoMode-    , setVideoMode-    , updateRect-    , updateRects-    , tryFlip-    , flip-    , setColors-    , setPalette-    , setGamma-    , tryGetGammaRamp-    , getGammaRamp-    , trySetGammaRamp-    , setGammaRamp-    , mapRGB-    , mapRGBA-    , getRGB-    , getRGBA-    , tryCreateRGBSurface-    , createRGBSurface-    , tryCreateRGBSurfaceEndian-    , createRGBSurfaceEndian-    , tryCreateRGBSurfaceFrom-    , createRGBSurfaceFrom-    , freeSurface-    , lockSurface-    , unlockSurface-    , loadBMP-    , saveBMP-    , setColorKey-    , setAlpha-    , setClipRect-    , getClipRect-    , withClipRect-    , tryConvertSurface-    , convertSurface-    , blitSurface-    , fillRect-    , tryDisplayFormat-    , displayFormat-    , tryDisplayFormatAlpha-    , displayFormatAlpha-    , warpMouse-    , showCursor-    , queryCursorState-    , GLAttr, GLValue-    , glRedSize, glGreenSize, glBlueSize, glAlphaSize, glBufferSize, glDoubleBuffer-    , glDepthSize, glStencilSize, glAccumRedSize, glAccumGreenSize, glAccumBlueSize-    , glAccumAlphaSize, glStereo, glMultiSampleBuffers, glMultiSampleSamples-    , tryGLGetAttribute, glGetAttribute-    , tryGLSetAttribute, glSetAttribute-    , glSwapBuffers-    , mkFinalizedSurface-    ) where---{-# LINE 80 "Graphics/UI/SDL/Video.hsc" #-}--import Foreign (Ptr, FunPtr, Storable(peek), castPtr, plusPtr, nullPtr, newForeignPtr_,-               finalizeForeignPtr, alloca, withForeignPtr, newForeignPtr)-import Foreign.C (peekCString, CString)-import Foreign.Marshal.Array (withArrayLen, peekArray0, peekArray, allocaArray)-import Foreign.Marshal.Utils (with, toBool, maybeWith, maybePeek, fromBool)-import Control.Exception (bracket)-import Data.Word (Word8, Word16, Word32)-import Data.Int (Int32)--import Graphics.UI.SDL.Utilities (Enum(..), intToBool, toBitmask)-import Graphics.UI.SDL.General (unwrapMaybe, unwrapBool)-import Graphics.UI.SDL.Rect (Rect(rectY, rectX, rectW, rectH))-import Graphics.UI.SDL.Color (Pixel(..), Color)-import Graphics.UI.SDL.Types (SurfaceFlag, PixelFormat, PixelFormatStruct, RWops,-                              RWopsStruct, VideoInfo, VideoInfoStruct, Surface, SurfaceStruct)-import qualified Graphics.UI.SDL.RWOps as RW--import Prelude hiding (flip,Enum(..))----import Foreign.HacanonLight.Generate---import Foreign.HacanonLight.DIS (foreignPtr,mkOut,word8)--data Palette-    = Logical-    | Physical-      deriving (Show,Eq,Ord)--instance Bounded Palette where-    minBound = Logical-    maxBound = Physical--instance Enum Palette Int where-    fromEnum Logical = 1-{-# LINE 114 "Graphics/UI/SDL/Video.hsc" #-}-    fromEnum Physical = 2-{-# LINE 115 "Graphics/UI/SDL/Video.hsc" #-}-    toEnum 1 = Logical-{-# LINE 116 "Graphics/UI/SDL/Video.hsc" #-}-    toEnum 2 = Physical-{-# LINE 117 "Graphics/UI/SDL/Video.hsc" #-}-    toEnum _ = error "Graphics.UI.SDL.Video.toEnum: bad argument"-    succ Logical = Physical-    succ _ = error "Graphics.UI.SDL.Video.succ: bad argument"-    pred Physical = Logical-    pred _ = error "Graphics.UI.SDL.Video.pred: bad argument"-    enumFromTo x y | x > y = []-                   | x == y = [y]-                   | True = x : enumFromTo (succ x) y---data Toggle = Disable | Enable | Query-    deriving (Eq, Ord, Show)--toToggle :: (Num a) => a -> Toggle-toToggle (0) = Disable-{-# LINE 132 "Graphics/UI/SDL/Video.hsc" #-}-toToggle (1) = Enable-{-# LINE 133 "Graphics/UI/SDL/Video.hsc" #-}-toToggle (-1) = Query-{-# LINE 134 "Graphics/UI/SDL/Video.hsc" #-}-toToggle _ = error "Graphics.UI.SDL.Video.toToggle: bad argument"--fromToggle :: (Num a) => Toggle -> a-fromToggle Disable = 0-fromToggle Enable = 1-fromToggle Query = (-1)---foreign import ccall unsafe "SDL_GetVideoSurface" sdlGetVideoSurface :: IO (Ptr SurfaceStruct)---- | Returns the video surface or @Nothing@ on error.-tryGetVideoSurface :: IO (Maybe Surface)-tryGetVideoSurface =-    sdlGetVideoSurface >>= maybePeek newForeignPtr_---- | Returns the video surface, throwing an exception on error.-getVideoSurface :: IO Surface-getVideoSurface = unwrapMaybe "SDL_GetVideoSurface" tryGetVideoSurface--foreign import ccall unsafe "SDL_VideoDriverName" sdlVideoDriverName :: CString -> Int -> IO CString---- | Returns the video driver name or @Nothing@ on error. Notice, the driver name is limited to 256 chars.-tryVideoDriverName :: IO (Maybe String)-tryVideoDriverName -    = allocaArray size (\ptr -> sdlVideoDriverName ptr size >>= maybePeek peekCString)-    where size = 256---- | Returns the video driver name, throwing an exception on error. See also 'tryVideoDriverName'.-videoDriverName :: IO String-videoDriverName = unwrapMaybe "SDL_VideoDriverName" tryVideoDriverName--foreign import ccall unsafe "SDL_GetVideoInfo" sdlGetVideoInfo :: IO (Ptr VideoInfoStruct)-getVideoInfo :: IO VideoInfo-getVideoInfo = sdlGetVideoInfo >>= newForeignPtr_--data ListModes-    = Modes [Rect] -- ^ List of available resolutions.-    | NonAvailable -- ^ No modes available!-    | AnyOK -- ^ All resolutions available.-      deriving (Show,Eq,Ord)--foreign import ccall unsafe "SDL_ListModes" sdlListModes :: Ptr PixelFormatStruct -> Word32 -> IO (Ptr (Ptr Rect))---- | Returns the available screen resolutions for the given format and video flags.-listModes :: Maybe PixelFormat -- ^ Will use SDL_GetVideoInfo()->vfmt when @Nothing@.-          -> [SurfaceFlag]-          -> IO ListModes-listModes mbFormat flags-    = do ret <- getFormat (\ptr -> sdlListModes ptr (toBitmask flags))-         if ret == nullPtr `plusPtr` (-1)-            then return AnyOK-            else if ret == nullPtr-                    then return NonAvailable-                    else do array <- peekArray0 nullPtr ret-                            fmap Modes (mapM peek array)-    where getFormat = maybe (\action -> action nullPtr) withForeignPtr mbFormat---- int SDL_VideoModeOK(int width, int height, int bpp, Uint32 flags);-foreign import ccall unsafe "SDL_VideoModeOK" sdlVideoModeOK :: Int -> Int -> Int -> Word32 -> IO Int---- | Check to see if a particular video mode is supported.---   Returns the bits-per-pixel of the closest available mode with the given width,---   height and requested surface flags, or @Nothing@ on error.-videoModeOK :: Int -- ^ Width.-            -> Int -- ^ Height.-            -> Int -- ^ Bits-per-pixel.-            -> [SurfaceFlag] -- ^ Flags.-            -> IO (Maybe Int)-videoModeOK width height bpp flags-    = do ret <- sdlVideoModeOK width height bpp (toBitmask flags)-         case ret of-           0 -> return Nothing-           x -> return (Just x)---- SDL_Surface *SDL_SetVideoMode(int width, int height, int bpp, Uint32 flags);-foreign import ccall unsafe "SDL_SetVideoMode" sdlSetVideoMode :: Int -> Int -> Int -> Word32 -> IO (Ptr SurfaceStruct)---- | Set up a video mode with the specified width, height and bits-per-pixel.---   Returns @Nothing@ on error.-trySetVideoMode :: Int -- ^ Width.-                -> Int -- ^ Height.-                -> Int -- ^ Bits-per-pixel.-                -> [SurfaceFlag] -- ^ Flags.-                -> IO (Maybe Surface)-trySetVideoMode width height bpp flags-    = sdlSetVideoMode width height bpp (toBitmask flags) >>= maybePeek newForeignPtr_---- | Same as 'trySetVideoMode' except it throws an exception on error.-setVideoMode :: Int -> Int -> Int -> [SurfaceFlag] -> IO Surface-setVideoMode width height bpp flags-    = unwrapMaybe "SDL_SetVideoMode" (trySetVideoMode width height bpp flags)---- void SDL_UpdateRect(SDL_Surface *screen, Sint32 x, Sint32 y, Sint32 w, Sint32 h);-foreign import ccall unsafe "SDL_UpdateRect" sdlUpdateRect :: Ptr SurfaceStruct-                                                           -> Int32 -> Int32 -> Word32 -> Word32 -> IO ()---- | Makes sure the given area is updated on the given screen.-updateRect :: Surface -> Rect -> IO ()-updateRect surface rect-    = withForeignPtr surface (\ptr -> sdlUpdateRect ptr x y w h)-    where x = fromIntegral (rectX rect)-          y = fromIntegral (rectY rect)-          w = fromIntegral (rectW rect)-          h = fromIntegral (rectH rect)----- void SDL_UpdateRects(SDL_Surface *screen, int numrects, SDL_Rect *rects);-foreign import ccall unsafe "SDL_UpdateRects" sdlUpdateRects :: Ptr SurfaceStruct -> Int -> Ptr Rect -> IO ()---- | Makes sure the given list of rectangles is updated on the given screen.---   The rectangles are not automatically merged or checked for overlap.---   In general, the programmer can use his knowledge about his particular---   rectangles to merge them in an efficient way, to avoid overdraw.-updateRects :: Surface -> [Rect] -> IO ()-updateRects surface rects-    = withForeignPtr surface $ \ptr ->-      withArrayLen rects $ \len array ->-      sdlUpdateRects ptr len array---- int SDL_Flip(SDL_Surface *screen);-foreign import ccall unsafe "SDL_Flip" sdlFlip :: Ptr SurfaceStruct -> IO Int---- | Swaps screen buffers.-tryFlip :: Surface -> IO Bool-tryFlip surface-    = withForeignPtr surface $ \ptr ->-      do ret <- sdlFlip ptr-         case ret of-           (-1) -> return False-           _    -> return True---- | Same as 'tryFlip' but throws an exception on error.-flip :: Surface -> IO ()-flip = unwrapBool "SDL_Flip" . tryFlip---- int SDL_SetColors(SDL_Surface *surface, SDL_Color *colors, int firstcolor, int ncolors);-foreign import ccall unsafe "SDL_SetColors" sdlSetColors :: Ptr SurfaceStruct -> Ptr Color -> Int -> Int -> IO Int---- | Sets a portion of the colormap for the given 8-bit surface.-setColors :: Surface -> [Color] -> Int -> IO Bool-setColors surface colors start-    = withForeignPtr surface $ \ptr ->-      withArrayLen colors $ \len array ->-      fmap toBool (sdlSetColors ptr array start len)---- int SDL_SetPalette(SDL_Surface *surface, int flags, SDL_Color *colors, int firstcolor, int ncolors);-foreign import ccall unsafe "SDL_SetPalette" sdlSetPalette-    :: Ptr SurfaceStruct -> Int -> Ptr Color -> Int -> Int -> IO Int---- | Sets the colors in the palette of an 8-bit surface.-setPalette :: Surface -> [Palette] -> [Color] -> Int -> IO Bool-setPalette surface flags colors start-    = withForeignPtr surface $ \ptr ->-      withArrayLen colors $ \len array ->-      fmap toBool (sdlSetPalette ptr (toBitmask flags) array start len)----int SDL_SetGamma(float redgamma, float greengamma, float bluegamma);-foreign import ccall unsafe "SDL_SetGamma" sdlSetGamma :: Float -> Float -> Float -> IO Int-setGamma :: Float -> Float -> Float -> IO Bool-setGamma red green blue-    = intToBool (-1) (sdlSetGamma red green blue)---- int SDL_GetGammaRamp(Uint16 *redtable, Uint16 *greentable, Uint16 *bluetable);-foreign import ccall unsafe "SDL_GetGammaRamp" sdlGetGammaRamp :: Ptr Word16 -> Ptr Word16 -> Ptr Word16 -> IO Int-tryGetGammaRamp :: IO (Maybe ([Word16],[Word16],[Word16]))-tryGetGammaRamp-    = allocaArray size $ \red ->-      allocaArray size $ \green ->-      allocaArray size $ \blue ->-      do ret <- sdlGetGammaRamp red green blue-         case ret of-           (-1) -> return Nothing-           _ -> do [r,g,b] <- mapM (peekArray size) [red,green,blue]-                   return (Just (r,g,b))-    where size = 256--getGammaRamp :: IO ([Word16],[Word16],[Word16])-getGammaRamp = unwrapMaybe "SDL_GetGammaRamp" tryGetGammaRamp---- int SDL_SetGammaRamp(Uint16 *redtable, Uint16 *greentable, Uint16 *bluetable);-foreign import ccall unsafe "SDL_SetGammaRamp" sdlSetGammaRamp :: Ptr Word16 -> Ptr Word16 -> Ptr Word16 -> IO Int-trySetGammaRamp :: [Word16] -> [Word16] -> [Word16] -> IO Bool-trySetGammaRamp red green blue-    = withArrayLen red $ check $ \ptrRed ->-      withArrayLen green $ check $ \ptrGreen ->-      withArrayLen blue $ check $ \ptrBlue ->-      intToBool (-1) (sdlSetGammaRamp ptrRed ptrGreen ptrBlue)-    where check action 256 ptr = action ptr-          check _ _ _ = return False--setGammaRamp :: [Word16] -> [Word16] -> [Word16] -> IO ()-setGammaRamp red green blue = unwrapBool "setGammaRamp_" (trySetGammaRamp red green blue)---- Uint32 SDL_MapRGB(SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b);-foreign import ccall unsafe "SDL_MapRGB" sdlMapRGB :: Ptr PixelFormatStruct -> Word8 -> Word8 -> Word8 -> IO Word32---- | Map a RGB color value to a pixel format.-mapRGB :: PixelFormat-       -> Word8 -- ^ Red value.-       -> Word8 -- ^ Green value.-       -> Word8 -- ^ Blue value.-       -> IO Pixel-mapRGB format r g b-    = withForeignPtr format $ \ptr ->-      fmap Pixel (sdlMapRGB ptr r g b)---- Uint32 SDL_MapRGBA(SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b, Uint8 a);--foreign import ccall unsafe "SDL_MapRGBA" sdlMapRGBA-    :: Ptr PixelFormatStruct -> Word8 -> Word8 -> Word8 -> Word8 -> IO Word32---- | Map a RGBA color value to a pixel format.-mapRGBA :: PixelFormat-        -> Word8 -- ^ Red value.-        -> Word8 -- ^ Green value.-        -> Word8 -- ^ Blue value.-        -> Word8 -- ^ Alpha value.-        -> IO Pixel-mapRGBA format r g b a-    = withForeignPtr format $ \ptr ->-      fmap Pixel (sdlMapRGBA ptr r g b a)---- void SDL_GetRGB(Uint32 pixel, SDL_PixelFormat *fmt, Uint8 *r, Uint8 *g, Uint8 *b);-foreign import ccall unsafe "SDL_GetRGB" sdlGetRGB-    :: Word32 -> Ptr PixelFormatStruct -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO ()---- | Get RGB values from a pixel in the specified pixel format.-getRGB :: Pixel -> PixelFormat -> IO (Word8,Word8,Word8)-getRGB (Pixel p) format-    = alloca $ \red ->-      alloca $ \green ->-      alloca $ \blue ->-      withForeignPtr format $ \ptr ->-      do sdlGetRGB p ptr red green blue-         [r,g,b] <- mapM peek [red,green,blue]-         return (r,g,b)---- void SDL_GetRGBA(Uint32 pixel, SDL_PixelFormat *fmt, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a);-foreign import ccall unsafe "SDL_GetRGBA" sdlGetRGBA-    :: Word32 -> Ptr PixelFormatStruct -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> IO ()---- | Gets RGBA values from a pixel in the specified pixel format.-getRGBA :: Pixel -> PixelFormat -> IO (Word8,Word8,Word8,Word8)-getRGBA (Pixel p) format-    = alloca $ \red ->-      alloca $ \green ->-      alloca $ \blue ->-      alloca $ \alpha -> -      withForeignPtr format $ \ptr ->-      do sdlGetRGBA p ptr red green blue alpha-         [r,g,b,a] <- mapM peek [red,green,blue,alpha]-         return (r,g,b,a)---- SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);-foreign import ccall unsafe "SDL_CreateRGBSurface" sdlCreateRGBSurface-    :: Word32 -> Int -> Int -> Int -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Ptr SurfaceStruct)---- | Creates an empty @Surface@. Returns @Nothing@ on error.-tryCreateRGBSurface :: [SurfaceFlag] -> Int -> Int -> Int-                  -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Maybe Surface)-tryCreateRGBSurface flags width height bpp rmask gmask bmask amask-    = sdlCreateRGBSurface (toBitmask flags) width height bpp rmask gmask bmask amask >>=-      maybePeek mkFinalizedSurface---- | Creates an empty @Surface@. Throws an exception on error.-createRGBSurface :: [SurfaceFlag] -> Int -> Int -> Int-                 -> Word32 -> Word32 -> Word32 -> Word32 -> IO Surface-createRGBSurface flags width height bpp rmask gmask bmask amask-    = unwrapMaybe "SDL_CreateRGBSurface" (tryCreateRGBSurface flags width height bpp rmask gmask bmask amask)---- | Creates an empty @Surface@ with (r\/g\/b\/a)mask determined from the local endian.---   Returns @Nothing@ on error.-tryCreateRGBSurfaceEndian :: [SurfaceFlag] -> Int -> Int -> Int -> IO (Maybe Surface)-tryCreateRGBSurfaceEndian flags width height bpp-    = tryCreateRGBSurface flags width height bpp--{-# LINE 410 "Graphics/UI/SDL/Video.hsc" #-}-        0x000000FF 0x0000FF00 0x00FF0000 0xFF000000--{-# LINE 414 "Graphics/UI/SDL/Video.hsc" #-}---- | Creates an empty @Surface@ with (r\/g\/b\/a)mask determined from the local endian.---   Throws an exception on error.-createRGBSurfaceEndian :: [SurfaceFlag] -> Int -> Int -> Int -> IO Surface-createRGBSurfaceEndian flags width height bpp-    = unwrapMaybe "SDL_CreateRGBSurface" (tryCreateRGBSurfaceEndian flags width height bpp)---- SDL_Surface *SDL_CreateRGBSurfaceFrom(void *pixels, int width, int height, int depth, int pitch, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);-foreign import ccall unsafe "SDL_CreateRGBSurfaceFrom" sdlCreateRGBSurfaceFrom-    :: Ptr Word8 -> Int -> Int -> Int -> Int -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Ptr SurfaceStruct)-tryCreateRGBSurfaceFrom :: Ptr a -> Int -> Int -> Int -> Int-                        -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Maybe Surface)-tryCreateRGBSurfaceFrom pixels width height depth pitch rmask gmask bmask amask-    = sdlCreateRGBSurfaceFrom (castPtr pixels) width height depth pitch rmask gmask bmask amask >>=-      maybePeek mkFinalizedSurface--createRGBSurfaceFrom :: Ptr a -> Int -> Int -> Int -> Int-                     -> Word32 -> Word32 -> Word32 -> Word32 -> IO Surface-createRGBSurfaceFrom pixels width height depth pitch rmask gmask bmask amask-    = unwrapMaybe "SDL_CreateRGBSurfaceFrom"-                  (tryCreateRGBSurfaceFrom pixels width height depth pitch rmask gmask bmask amask)--{---- void SDL_FreeSurface(SDL_Surface *surface);-foreign import ccall unsafe "SDL_FreeSurface" sdlFreeSurface :: Ptr SurfaceStruct -> IO ()--- | Frees (deletes) a @Surface@. Don\'t use it unless you really know what you're doing. All surfaces---   are automatically deleted when they're out of scope or forced with @finalizeForeignPtr@.-freeSurface :: Surface -> IO ()-freeSurface surface-    = withForeignPtr surface sdlFreeSurface--}---- | Forces the finalization of a @Surface@. Only supported with GHC.-freeSurface :: Surface -> IO ()-freeSurface =--{-# LINE 450 "Graphics/UI/SDL/Video.hsc" #-}-  finalizeForeignPtr--{-# LINE 454 "Graphics/UI/SDL/Video.hsc" #-}---- int SDL_LockSurface(SDL_Surface *surface);-foreign import ccall unsafe "SDL_LockSurface" sdlLockSurface :: Ptr SurfaceStruct -> IO Int---- | Locks a surface for direct access.-lockSurface :: Surface -> IO Bool-lockSurface surface-    = withForeignPtr surface $ \ptr ->-      intToBool (-1) (sdlLockSurface ptr)---- void SDL_UnlockSurface(SDL_Surface *surface);-foreign import ccall unsafe "SDL_UnlockSurface" sdlUnlockSurface :: Ptr SurfaceStruct -> IO ()---- | Unlocks a previously locked surface.-unlockSurface :: Surface -> IO ()-unlockSurface surface = withForeignPtr surface sdlUnlockSurface---- extern DECLSPEC SDL_Surface * SDLCALL SDL_LoadBMP_RW(SDL_RWops *src, int freesrc);--- define SDL_LoadBMP(file)       SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1)-foreign import ccall unsafe "SDL_LoadBMP_RW" sdlLoadBMP_RW :: Ptr RWopsStruct -> Int -> IO (Ptr SurfaceStruct)--tryLoadBMPRW :: RWops -> Bool -> IO (Maybe Surface)-tryLoadBMPRW rw freesrc-    = withForeignPtr rw $ \rwPtr ->-      sdlLoadBMP_RW rwPtr (fromBool freesrc) >>= maybePeek mkFinalizedSurface--loadBMPRW :: RWops -> Bool -> IO Surface-loadBMPRW rw freesrc = unwrapMaybe "SDL_LoadBMP_RW" (tryLoadBMPRW rw freesrc)--loadBMP :: FilePath -> IO Surface-loadBMP filepath-    = RW.with filepath "rb" $ \rw ->-      loadBMPRW rw False---- extern DECLSPEC int SDLCALL SDL_SaveBMP_RW---                (SDL_Surface *surface, SDL_RWops *dst, int freedst);-foreign import ccall unsafe "SDL_SaveBMP_RW" sdlSaveBMP_RW :: Ptr SurfaceStruct -> Ptr RWopsStruct -> Int -> IO Int--saveBMPRW :: Surface -> RWops -> Bool -> IO Bool-saveBMPRW surface rw freedst-    = withForeignPtr surface $ \ptr ->-      withForeignPtr rw $ \rwPtr ->-      intToBool (-1) (sdlSaveBMP_RW ptr rwPtr (fromBool freedst))--saveBMP :: Surface -> FilePath -> IO Bool-saveBMP surface filepath-    = RW.with filepath "wb" $ \rw ->-      saveBMPRW surface rw False----- int SDL_SetColorKey(SDL_Surface *surface, Uint32 flag, Uint32 key);-foreign import ccall unsafe "SDL_SetColorKey" sdlSetColorKey :: Ptr SurfaceStruct -> Word32 -> Word32 -> IO Int-setColorKey :: Surface -> [SurfaceFlag] -> Pixel -> IO Bool-setColorKey surface flags (Pixel w)-    = withForeignPtr surface $ \ptr ->-      intToBool (-1) (sdlSetColorKey ptr (toBitmask flags) w)---- int SDL_SetAlpha(SDL_Surface *surface, Uint32 flag, Uint8 alpha);-foreign import ccall unsafe "SDL_SetAlpha" sdlSetAlpha :: Ptr SurfaceStruct -> Word32 -> Word8 -> IO Int---- | Adjusts the alpha properties of a surface.-setAlpha :: Surface -> [SurfaceFlag] -> Word8 -> IO Bool-setAlpha surface flags alpha-    = withForeignPtr surface $ \ptr ->-      intToBool (-1) (sdlSetAlpha ptr (toBitmask flags) alpha)---- void SDL_SetClipRect(SDL_Surface *surface, SDL_Rect *rect);-foreign import ccall unsafe "SDL_SetClipRect" sdlSetClipRect :: Ptr SurfaceStruct -> Ptr Rect -> IO ()---- | Sets the clipping rectangle for a surface.-setClipRect :: Surface -> Maybe Rect -> IO ()-setClipRect surface mbRect-    = withForeignPtr surface $ \ptr ->-      maybeWith with mbRect $ \rect ->-      sdlSetClipRect ptr rect---- void SDL_GetClipRect(SDL_Surface *surface, SDL_Rect *rect);-foreign import ccall unsafe "SDL_GetClipRect" sdlGetClipRect :: Ptr SurfaceStruct -> Ptr Rect -> IO ()---- | Gets the clipping rectangle for a surface.-getClipRect :: Surface -> IO Rect-getClipRect surface-    = withForeignPtr surface $ \ptr ->-      alloca $ \rectPtr ->-      do sdlGetClipRect ptr rectPtr-         peek rectPtr---- | Run an action with a given clipping rect applied.---   If an exception is raised, then withClipRect will re-raise the exception (after resetting the original clipping rect).-withClipRect :: Surface -> Maybe Rect -> IO a -> IO a-withClipRect surface rect action-    = bracket (getClipRect surface) -- Get the current cliprect-              (setClipRect surface . Just) -- Reset to old cliprect when done.-              (const (setClipRect surface rect >> action)) -- Set new cliprect.---- SDL_Surface *SDL_ConvertSurface(SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags);-foreign import ccall unsafe "SDL_ConvertSurface" sdlConvertSurface-    :: Ptr SurfaceStruct -> Ptr PixelFormatStruct -> Word32 -> IO (Ptr SurfaceStruct)---- | Converts a surface to the same format as another surface. Returns @Nothing@ on error.-tryConvertSurface :: Surface -> PixelFormat -> [SurfaceFlag] -> IO (Maybe Surface)-tryConvertSurface surface format flags-    = withForeignPtr surface $ \ptr ->-      withForeignPtr format $ \formatPtr ->-      sdlConvertSurface ptr formatPtr (toBitmask flags) >>= maybePeek mkFinalizedSurface---- | Converts a surface to the same format as another surface. Throws an exception on error.-convertSurface :: Surface -> PixelFormat -> [SurfaceFlag] -> IO Surface-convertSurface surface format flags-    = unwrapMaybe "SDL_ConvertSurface"-                  (tryConvertSurface surface format flags)----- int SDL_UpperBlit(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);-foreign import ccall unsafe "SDL_UpperBlit" sdlBlitSurface-    :: Ptr SurfaceStruct -> Ptr Rect -> Ptr SurfaceStruct -> Ptr Rect -> IO Int---- | This function performs a fast blit from the source surface to the destination surface.-blitSurface :: Surface -> Maybe Rect -> Surface -> Maybe Rect -> IO Bool-blitSurface src srcRect dst dstRect-    = withForeignPtr src $ \srcPtr ->-      withForeignPtr dst $ \dstPtr ->-      maybeWith with srcRect $ \srcRectPtr ->-      maybeWith with dstRect $ \dstRectPtr ->-      intToBool (-1) (sdlBlitSurface srcPtr srcRectPtr dstPtr dstRectPtr)----- int SDL_FillRect(SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color);-foreign import ccall unsafe "SDL_FillRect" sdlFillRect :: Ptr SurfaceStruct -> Ptr Rect -> Word32 -> IO Int---- | This function performs a fast fill of the given rectangle with some color.-fillRect :: Surface -> Maybe Rect -> Pixel -> IO Bool-fillRect surface mbRect (Pixel w)-    = withForeignPtr surface $ \ptr ->-      maybeWith with mbRect $ \rect ->-      intToBool (-1) (sdlFillRect ptr rect w)---- SDL_Surface *SDL_DisplayFormat(SDL_Surface *surface);-foreign import ccall unsafe "SDL_DisplayFormat" sdlDisplayFormat :: Ptr SurfaceStruct -> IO (Ptr SurfaceStruct)---- | Converts a surface to the display format. Returns @Nothing@ on error.-tryDisplayFormat :: Surface -> IO (Maybe Surface)-tryDisplayFormat surface-    = withForeignPtr surface $ \ptr ->-      sdlDisplayFormat ptr >>= maybePeek mkFinalizedSurface---- | Converts a surface to the display format. Throws an exception on error.-displayFormat :: Surface -> IO Surface-displayFormat = unwrapMaybe "SDL_DisplayFormat" . tryDisplayFormat---- SDL_Surface *SDL_DisplayFormatAlpha(SDL_Surface *surface);-foreign import ccall unsafe "SDL_DisplayFormatAlpha" sdlDisplayFormatAlpha :: Ptr SurfaceStruct -> IO (Ptr SurfaceStruct)---- | Converts a surface to the display format. Returns @Nothing@ on error.-tryDisplayFormatAlpha :: Surface -> IO (Maybe Surface)-tryDisplayFormatAlpha surface-    = withForeignPtr surface $ \ptr ->-      sdlDisplayFormatAlpha ptr >>= maybePeek mkFinalizedSurface---- | Converts a surface to the display format. Throws an exception on error.-displayFormatAlpha :: Surface -> IO Surface-displayFormatAlpha = unwrapMaybe "SDL_DisplayFormatAlpha" . tryDisplayFormatAlpha---- void SDL_WarpMouse(Uint16 x, Uint16 y);-foreign import ccall unsafe "SDL_WarpMouse" sdlWarpMouse :: Word16 -> Word16 -> IO ()---- | Sets the position of the mouse cursor.-warpMouse :: Word16 -- ^ Mouse X position.-          -> Word16 -- ^ Mouse Y position.-          -> IO ()-warpMouse = sdlWarpMouse---- int SDL_ShowCursor(int toggle);-foreign import ccall unsafe "SDL_ShowCursor" sdlShowCursor :: Int -> IO Int---- | Toggle whether or not the cursor is shown on the screen.-showCursor :: Bool -> IO ()-showCursor enable-    = sdlShowCursor (fromToggle toggle) >>-      return ()-    where toggle = case enable of-                     True -> Enable-                     False -> Disable---- | Returns @True@ when the cursor is set to visible. See also 'showCursor'.-queryCursorState :: IO Bool-queryCursorState = fmap toBool (sdlShowCursor (fromToggle Query))---type GLAttr = Int-type GLValue = Int--glRedSize, glGreenSize, glBlueSize, glAlphaSize, glBufferSize, glDoubleBuffer :: GLAttr-glDepthSize, glStencilSize, glAccumRedSize, glAccumGreenSize, glAccumBlueSize :: GLAttr-glAccumAlphaSize, glStereo, glMultiSampleBuffers, glMultiSampleSamples :: GLAttr--glRedSize = 0-{-# LINE 651 "Graphics/UI/SDL/Video.hsc" #-}-glGreenSize = 1-{-# LINE 652 "Graphics/UI/SDL/Video.hsc" #-}-glBlueSize = 2-{-# LINE 653 "Graphics/UI/SDL/Video.hsc" #-}-glAlphaSize = 3-{-# LINE 654 "Graphics/UI/SDL/Video.hsc" #-}-glBufferSize = 4-{-# LINE 655 "Graphics/UI/SDL/Video.hsc" #-}-glDoubleBuffer = 5-{-# LINE 656 "Graphics/UI/SDL/Video.hsc" #-}-glDepthSize  = 6-{-# LINE 657 "Graphics/UI/SDL/Video.hsc" #-}-glStencilSize = 7-{-# LINE 658 "Graphics/UI/SDL/Video.hsc" #-}-glAccumRedSize = 8-{-# LINE 659 "Graphics/UI/SDL/Video.hsc" #-}-glAccumGreenSize = 9-{-# LINE 660 "Graphics/UI/SDL/Video.hsc" #-}-glAccumBlueSize = 10-{-# LINE 661 "Graphics/UI/SDL/Video.hsc" #-}-glAccumAlphaSize = 11-{-# LINE 662 "Graphics/UI/SDL/Video.hsc" #-}-glStereo = 12-{-# LINE 663 "Graphics/UI/SDL/Video.hsc" #-}-glMultiSampleBuffers = 13-{-# LINE 664 "Graphics/UI/SDL/Video.hsc" #-}-glMultiSampleSamples = 14-{-# LINE 665 "Graphics/UI/SDL/Video.hsc" #-}----int SDL_GL_SetAttribute(SDL_GLattr attr, int value);-foreign import ccall unsafe "SDL_GL_SetAttribute" sdlGLSetAttribute :: Int -> Int -> IO Int--- | Sets a special SDL\/OpenGL attribute. Returns @False@ on error.-tryGLSetAttribute :: GLAttr -> GLValue -> IO Bool-tryGLSetAttribute attr value = fmap (==0) (sdlGLSetAttribute attr value)---- | Sets a special SDL\/OpenGL attribute. Throws an exception on error.-glSetAttribute :: GLAttr -> GLValue -> IO ()-glSetAttribute attr value = unwrapBool "SDL_GL_SetAttribute" (tryGLSetAttribute attr value)---- int SDL_GL_GetAttribute(SDLGLattr attr, int *value);-foreign import ccall unsafe "SDL_GL_GetAttribute" sdlGLGetAttribute :: Int -> Ptr Int -> IO Int---- | Gets the value of a special SDL\/OpenGL attribute. Returns @Nothing@ on error.-tryGLGetAttribute :: GLAttr -> IO (Maybe GLValue)-tryGLGetAttribute attr-    = alloca $ \valuePtr ->-      do ret <- sdlGLGetAttribute attr valuePtr-         case ret of-           0 -> fmap Just (peek valuePtr)-           _ -> return Nothing---- | Gets the value of a special SDL\/OpenGL attribute. Throws an exception on error.-glGetAttribute :: GLAttr -> IO GLValue-glGetAttribute = unwrapMaybe "SDL_GL_GetAttribute" . tryGLGetAttribute----void SDLCALL SDL_GL_SwapBuffers(void);--- | Swaps OpenGL framebuffers\/Update Display.-foreign import ccall unsafe "SDL_GL_SwapBuffers" glSwapBuffers :: IO ()--foreign import ccall unsafe "&SDL_FreeSurface" sdlFreeSurfaceFinal :: FunPtr (Ptr SurfaceStruct -> IO ())--mkFinalizedSurface :: Ptr SurfaceStruct -> IO Surface-mkFinalizedSurface = newForeignPtr sdlFreeSurfaceFinal-
− Graphics/UI/SDL/WindowManagement.hs
@@ -1,125 +0,0 @@-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}-{-# OPTIONS_GHC -optc-D_REENTRANT #-}-{-# INCLUDE "SDL.h" #-}-{-# LINE 1 "Graphics/UI/SDL/WindowManagement.hsc" #-}--{-# LINE 2 "Graphics/UI/SDL/WindowManagement.hsc" #-}--------------------------------------------------------------------------------- |--- Module      :  Graphics.UI.SDL.WindowManagement--- Copyright   :  (c) David Himmelstrup 2005--- License     :  BSD-like------ Maintainer  :  lemmih@gmail.com--- Stability   :  provisional--- Portability :  portable----------------------------------------------------------------------------------module Graphics.UI.SDL.WindowManagement-    ( GrabMode (..)-    , setCaption-    , rawSetCaption-    , getCaption-    , iconifyWindow-    , tryToggleFullscreen-    , toggleFullscreen-    , grabInput-    , queryGrabMode-    ) where--import Foreign (Int32, Ptr, Storable(peek), nullPtr, toBool, maybePeek,-                void, alloca, withForeignPtr)-import Foreign.C (withCString, peekCString, CString)--import Graphics.UI.SDL.Types (Surface, SurfaceStruct)-import Graphics.UI.SDL.General (unwrapBool)---data GrabMode-    = GrabQuery-    | GrabOff-    | GrabOn-      deriving (Show,Eq)--toGrabMode :: Int32 -> GrabMode-{-# LINE 40 "Graphics/UI/SDL/WindowManagement.hsc" #-}-toGrabMode (-1) = GrabQuery-{-# LINE 41 "Graphics/UI/SDL/WindowManagement.hsc" #-}-toGrabMode (0) = GrabOff-{-# LINE 42 "Graphics/UI/SDL/WindowManagement.hsc" #-}-toGrabMode (1) = GrabOn-{-# LINE 43 "Graphics/UI/SDL/WindowManagement.hsc" #-}-toGrabMode _ = error "Graphics.UI.SDL.WindowManagement.toGrabMode: bad argument"--fromGrabMode :: GrabMode -> Int32-{-# LINE 46 "Graphics/UI/SDL/WindowManagement.hsc" #-}-fromGrabMode GrabQuery = (-1)-{-# LINE 47 "Graphics/UI/SDL/WindowManagement.hsc" #-}-fromGrabMode GrabOff = (0)-{-# LINE 48 "Graphics/UI/SDL/WindowManagement.hsc" #-}-fromGrabMode GrabOn = (1)-{-# LINE 49 "Graphics/UI/SDL/WindowManagement.hsc" #-}---- void SDL_WM_SetCaption(const char *title, const char *icon);-foreign import ccall unsafe "SDL_WM_SetCaption" sdlSetCaption :: CString -> CString -> IO ()--- | Sets the window title and icon name.-setCaption :: String -> String -> IO ()-setCaption title icon-    = withCString title $ \titlePtr ->-      withCString icon $ \iconPtr ->-      sdlSetCaption titlePtr iconPtr---- | Sets the window title and icon name. Use @Nothing@ to unset.-rawSetCaption :: Maybe String -> Maybe String -> IO ()-rawSetCaption title icon-    = maybeStr title $ \titlePtr ->-      maybeStr icon $ \iconPtr ->-      sdlSetCaption titlePtr iconPtr-    where maybeStr Nothing action = action nullPtr-          maybeStr (Just s) action = withCString s action--- void SDL_WM_GetCaption(char **title, char **icon);-foreign import ccall unsafe "SDL_WM_GetCaption" sdlGetCaption :: Ptr CString -> Ptr CString -> IO ()--- | Gets the window title and icon name.-getCaption :: IO (Maybe String,Maybe String)-getCaption-    = alloca $ \cTitle ->-      alloca $ \cIcon ->-      do sdlGetCaption cTitle cIcon-         title <- maybePeek ((peekCString =<<).peek) cTitle-         icon <- maybePeek ((peekCString =<<).peek) cIcon-         return (title,icon)---- int SDL_WM_IconifyWindow(void);-foreign import ccall unsafe "SDL_WM_IconifyWindow" sdlIconifyWindow :: IO Int--- | Iconify\/Minimise the window.-iconifyWindow :: IO Bool-iconifyWindow = fmap toBool sdlIconifyWindow---- int SDL_WM_ToggleFullScreen(SDL_Surface *surface);-foreign import ccall unsafe "SDL_WM_ToggleFullScreen" sdlToggleFullScreen :: Ptr SurfaceStruct -> IO Int--- |Toggles fullscreen mode. Returns @False@ on error.-tryToggleFullscreen :: Surface -> IO Bool-tryToggleFullscreen surface-    = withForeignPtr surface $ fmap toBool . sdlToggleFullScreen---- | Toggles fullscreen mode. Throws an exception on error.-toggleFullscreen :: Surface -> IO ()-toggleFullscreen = unwrapBool "SDL_WM_ToggleFullScreen" . tryToggleFullscreen---- SDL_GrabMode SDL_WM_GrabInput(SDL_GrabMode mode);-foreign import ccall unsafe "SDL_WM_GrabInput" sdlGrabInput :: Int32 -> IO Int32-{-# LINE 98 "Graphics/UI/SDL/WindowManagement.hsc" #-}--- | Grabbing means that the mouse is confined to the application---   window, and nearly all keyboard input is passed directly to---   the application, and not interpreted by a window manager, if any.-grabInput :: Bool -> IO ()-grabInput = void . sdlGrabInput . fromGrabMode . mkGrabMode-    where mkGrabMode True = GrabOn-          mkGrabMode False = GrabOff---- | Returns the current grabbing mode.-queryGrabMode :: IO GrabMode-queryGrabMode = fmap toGrabMode . sdlGrabInput . fromGrabMode $ GrabQuery--
SDL.cabal view
@@ -1,8 +1,8 @@ Name: SDL-Version: 0.5.2+Version: 0.5.3 Maintainer: Lemmih (lemmih@gmail.com) Author: Lemmih (lemmih@gmail.com)-Copyright: 2004-2007, Lemmih+Copyright: 2004-2008, Lemmih License-File: LICENSE License: BSD3 Build-Depends: base
configure.ac view
@@ -1,4 +1,4 @@-AC_INIT([Haskell SDL package], [0.5.2], [lemmih@gmail.com], [SDL])+AC_INIT([Haskell SDL package], [0.5.3], [lemmih@gmail.com], [SDL])  # Safety check: Ensure that we are in the correct source directory. AC_CONFIG_SRCDIR([includes/HsSDLConfig.h.in])