{-# LINE 1 "Graphics/UI/SDL/Types.hsc" #-}
module Graphics.UI.SDL.Types (
{-# LINE 2 "Graphics/UI/SDL/Types.hsc" #-}
	-- * Type Aliases
	AudioCallback,
	AudioDeviceID,
	AudioFormat,
	Cond,
	Cursor,
	EventFilter,
	FingerID,
	GameController,
	GestureID,
	GLContext,
	Haptic,
	HintCallback,
	Joystick,
	JoystickID,
	Keycode,
	LogOutputFunction,
	Mutex,
	Renderer,
	Sem,
	SpinLock,
	SysWMinfo,
	SysWMmsg,
	Texture,
	Thread,
	ThreadFunction,
	ThreadID,
	TimerCallback,
	TimerID,
	TLSID,
	TouchID,
	Window,

	-- * Data Structures
	Atomic(..),
	AudioCVT(..),
	AudioSpec(..),
	Color(..),
	DisplayMode(..),
	Event(..),
	Finger(..),
	GameControllerButtonBind(..),
	HapticDirection(..),
	HapticEffect(..),
	JoystickGUID(..),
	Keysym(..),
	MessageBoxButtonData(..),
	MessageBoxColor(..),
	MessageBoxColorScheme(..),
	MessageBoxData(..),
	Palette(..),
	PixelFormat(..),
	Point(..),
	Rect(..),
	RendererInfo(..),
	RWops(..),
	Surface(..),
	Version(..)
) where


{-# LINE 63 "Graphics/UI/SDL/Types.hsc" #-}

import Data.Int
import Data.Word
import Foreign.C.String
import Foreign.C.Types
import Foreign.Marshal.Array
import Foreign.Ptr
import Foreign.Storable
import Graphics.UI.SDL.Enum

type AudioCallback = FunPtr (Ptr () -> Ptr Word8 -> CInt -> IO ())
type AudioDeviceID = Word32
type AudioFormat = Word16
type Cond = Ptr ()
type Cursor = Ptr ()
type EventFilter = FunPtr (Ptr () -> Ptr Event -> IO CInt)
type FingerID = Int64
type GameController = Ptr ()
type GestureID = Int64
type GLContext = Ptr ()
type Haptic = Ptr ()
type HintCallback = FunPtr (Ptr () -> CString -> CString -> CString -> IO ())
type Joystick = Ptr ()
type JoystickID = Int32
type Keycode = Int32
type LogOutputFunction = FunPtr (Ptr () -> CInt -> LogPriority -> CString -> IO ())
type Mutex = Ptr ()
type Renderer = Ptr ()
type Sem = Ptr ()
type SpinLock = CInt
type SysWMinfo = Ptr ()
type SysWMmsg = Ptr ()
type Texture = Ptr ()
type Thread = Ptr ()
type ThreadFunction = FunPtr (Ptr () -> IO CInt)
type ThreadID = CULong
type TimerCallback = FunPtr (Word32 -> Ptr () -> IO Word32)
type TimerID = CInt
type TLSID = CUInt
type TouchID = Int64
type Window = Ptr ()

data Atomic = Atomic {
              atomicValue :: CInt
            } deriving (Eq, Show)

instance Storable Atomic where
	sizeOf _ = ((4))
{-# LINE 111 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		value <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 114 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Atomic value
	poke ptr (Atomic value) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr value
{-# LINE 117 "Graphics/UI/SDL/Types.hsc" #-}

data AudioCVT = AudioCVT {
                audioCVTNeeded :: CInt
              , audioCVTSrcFormat :: AudioFormat
              , audioCVTDstFormat :: AudioFormat
              , audioCVTRateIncr :: CDouble
              , audioCVTBuf :: Ptr Word8
              , audioCVTLen :: CInt
              , audioCVTLenCvt :: CInt
              , audioCVTLenMult :: CInt
              , audioCVTLenRatio :: CDouble
              } deriving (Eq, Show)

instance Storable AudioCVT where
	sizeOf _ = ((128))
{-# LINE 132 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		needed <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 135 "Graphics/UI/SDL/Types.hsc" #-}
		src_format <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 136 "Graphics/UI/SDL/Types.hsc" #-}
		dst_format <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 137 "Graphics/UI/SDL/Types.hsc" #-}
		rate_incr <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 138 "Graphics/UI/SDL/Types.hsc" #-}
		buf <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 139 "Graphics/UI/SDL/Types.hsc" #-}
		len <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 140 "Graphics/UI/SDL/Types.hsc" #-}
		len_cvt <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 141 "Graphics/UI/SDL/Types.hsc" #-}
		len_mult <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 142 "Graphics/UI/SDL/Types.hsc" #-}
		len_ratio <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 143 "Graphics/UI/SDL/Types.hsc" #-}
		return $! AudioCVT needed src_format dst_format rate_incr buf len len_cvt len_mult len_ratio
	poke ptr (AudioCVT needed src_format dst_format rate_incr buf len len_cvt len_mult len_ratio) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr needed
{-# LINE 146 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr src_format
{-# LINE 147 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr dst_format
{-# LINE 148 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr rate_incr
{-# LINE 149 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr buf
{-# LINE 150 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr len
{-# LINE 151 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr len_cvt
{-# LINE 152 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr len_mult
{-# LINE 153 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr len_ratio
{-# LINE 154 "Graphics/UI/SDL/Types.hsc" #-}

data AudioSpec = AudioSpec {
                 audioSpecFreq :: CInt
               , audioSpecFormat :: AudioFormat
               , audioSpecChannels :: Word8
               , audioSpecSilence :: Word8
               , audioSpecSamples :: Word16
               , audioSpecSize :: Word32
               , audioSpecCallback :: AudioCallback
               , audioSpecUserdata :: Ptr ()
               } deriving (Eq, Show)

instance Storable AudioSpec where
	sizeOf _ = ((32))
{-# LINE 168 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		freq <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 171 "Graphics/UI/SDL/Types.hsc" #-}
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 172 "Graphics/UI/SDL/Types.hsc" #-}
		channels <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 173 "Graphics/UI/SDL/Types.hsc" #-}
		silence <- ((\hsc_ptr -> peekByteOff hsc_ptr 7)) ptr
{-# LINE 174 "Graphics/UI/SDL/Types.hsc" #-}
		samples <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 175 "Graphics/UI/SDL/Types.hsc" #-}
		size <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 176 "Graphics/UI/SDL/Types.hsc" #-}
		callback <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 177 "Graphics/UI/SDL/Types.hsc" #-}
		userdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 178 "Graphics/UI/SDL/Types.hsc" #-}
		return $! AudioSpec freq format channels silence samples size callback userdata
	poke ptr (AudioSpec freq format channels silence samples size callback userdata) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr freq
{-# LINE 181 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr format
{-# LINE 182 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr channels
{-# LINE 183 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 7)) ptr silence
{-# LINE 184 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr samples
{-# LINE 185 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr size
{-# LINE 186 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr callback
{-# LINE 187 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr userdata
{-# LINE 188 "Graphics/UI/SDL/Types.hsc" #-}

data Color = Color {
             colorR :: Word8
           , colorG :: Word8
           , colorB :: Word8
           , colorA :: Word8
           } deriving (Eq, Show)

instance Storable Color where
	sizeOf _ = ((4))
{-# LINE 198 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		r <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 201 "Graphics/UI/SDL/Types.hsc" #-}
		g <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 202 "Graphics/UI/SDL/Types.hsc" #-}
		b <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 203 "Graphics/UI/SDL/Types.hsc" #-}
		a <- ((\hsc_ptr -> peekByteOff hsc_ptr 3)) ptr
{-# LINE 204 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Color r g b a
	poke ptr (Color r g b a) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr r
{-# LINE 207 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr g
{-# LINE 208 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr b
{-# LINE 209 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 3)) ptr a
{-# LINE 210 "Graphics/UI/SDL/Types.hsc" #-}

data DisplayMode = DisplayMode {
                   displayModeFormat :: Word32
                 , displayModeW :: CInt
                 , displayModeH :: CInt
                 , displayModeRefreshRate :: CInt
                 , displayModeDriverData :: Ptr ()
                 } deriving (Eq, Show)

instance Storable DisplayMode where
	sizeOf _ = ((24))
{-# LINE 221 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 224 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 225 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 226 "Graphics/UI/SDL/Types.hsc" #-}
		refresh_rate <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 227 "Graphics/UI/SDL/Types.hsc" #-}
		driverdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 228 "Graphics/UI/SDL/Types.hsc" #-}
		return $! DisplayMode format w h refresh_rate driverdata
	poke ptr (DisplayMode format w h refresh_rate driverdata) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr format
{-# LINE 231 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr w
{-# LINE 232 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr h
{-# LINE 233 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr refresh_rate
{-# LINE 234 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr driverdata
{-# LINE 235 "Graphics/UI/SDL/Types.hsc" #-}

data Event = WindowEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , windowEventWindowID :: Word32
           , windowEventEvent :: Word8
           , windowEventData1 :: Int32
           , windowEventData2 :: Int32
           }
           | KeyboardEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , keyboardEventWindowID :: Word32
           , keyboardEventState :: Word8
           , keyboardEventRepeat :: Word8
           , keyboardEventKeysym :: Keysym
           }
           | TextEditingEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , textEditingEventWindowID :: Word32
           , textEditingEventText :: [CChar]
           , textEditingEventStart :: Int32
           , textEditingEventLength :: Int32
           }
           | TextInputEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , textInputEventWindowID :: Word32
           , textInputEventText :: [CChar]
           }
           | MouseMotionEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , mouseMotionEventWindowID :: Word32
           , mouseMotionEventWhich :: Word32
           , mouseMotionEventState :: Word32
           , mouseMotionEventX :: Int32
           , mouseMotionEventY :: Int32
           , mouseMotionEventXRel :: Int32
           , mouseMotionEventYRel :: Int32
           }
           | MouseButtonEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , mouseButtonEventWindowID :: Word32
           , mouseButtonEventWhich :: Word32
           , mouseButtonEventButton :: Word8
           , mouseButtonEventState :: Word8
           , mouseButtonEventClicks :: Word8
           , mouseButtonEventX :: Int32
           , mouseButtonEventY :: Int32
           }
           | MouseWheelEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , mouseWheelEventWindowID :: Word32
           , mouseWheelEventWhich :: Word32
           , mouseWheelEventX :: Int32
           , mouseWheelEventY :: Int32
           }
           | JoyAxisEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , joyAxisEventWhich :: JoystickID
           , joyAxisEventAxis :: Word8
           , joyAxisEventValue :: Int16
           }
           | JoyBallEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , joyBallEventWhich :: JoystickID
           , joyBallEventBall :: Word8
           , joyBallEventXRel :: Int16
           , joyBallEventYRel :: Int16
           }
           | JoyHatEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , joyHatEventWhich :: JoystickID
           , joyHatEventHat :: Word8
           , joyHatEventValue :: Word8
           }
           | JoyButtonEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , joyButtonEventWhich :: JoystickID
           , joyButtonEventButton :: Word8
           , joyButtonEventState :: Word8
           }
           | JoyDeviceEvent{
             eventType :: Word32
           , eventTimestamp :: Word32
           , joyDeviceEventWhich :: Int32
           }
           | ControllerAxisEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , controllerAxisEventWhich :: JoystickID
           , controllerAxisEventAxis :: Word8
           , controllerAxisEventValue :: Int16
           }
           | ControllerButtonEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , controllerButtonEventWhich :: JoystickID
           , controllerButtonEventButton :: Word8
           , controllerButtonEventState :: Word8
           }
           | ControllerDeviceEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , controllerDeviceEventWhich :: Int32
           }
           | QuitEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           }
           | UserEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , userEventWindowID :: Word32
           , userEventCode :: Int32
           , userEventData1 :: Ptr ()
           , userEventData2 :: Ptr ()
           }
           | SysWMEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , sysWMEventMsg :: SysWMmsg
           }
           | TouchFingerEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , touchFingerEventTouchID :: TouchID
           , touchFingerEventFingerID :: FingerID
           , touchFingerEventX :: CFloat
           , touchFingerEventY :: CFloat
           , touchFingerEventDX :: CFloat
           , touchFingerEventDY :: CFloat
           , touchFingerEventPressure :: CFloat
           }
           | MultiGestureEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , multiGestureEventTouchID :: TouchID
           , multiGestureEventDTheta :: CFloat
           , multiGestureEventDDist :: CFloat
           , multiGestureEventX :: CFloat
           , multiGestureEventY :: CFloat
           , multiGestureEventNumFingers :: Word16
           }
           | DollarGestureEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , dollarGestureEventTouchID :: TouchID
           , dollarGestureEventGestureID :: GestureID
           , dollarGestureEventNumFingers :: Word32
           , dollarGestureEventError :: CFloat
           , dollarGestureEventX :: CFloat
           , dollarGestureEventY :: CFloat
           }
           | DropEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           , dropEventFile :: CString
           }
           deriving (Eq, Show)

instance Storable Event where
	sizeOf _ = ((56))
{-# LINE 406 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 409 "Graphics/UI/SDL/Types.hsc" #-}
		timestamp <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 410 "Graphics/UI/SDL/Types.hsc" #-}
		case typ of
			(256) ->
{-# LINE 412 "Graphics/UI/SDL/Types.hsc" #-}
				return $! QuitEvent typ timestamp
			(512) -> do
{-# LINE 414 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 415 "Graphics/UI/SDL/Types.hsc" #-}
				event <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 416 "Graphics/UI/SDL/Types.hsc" #-}
				data1 <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 417 "Graphics/UI/SDL/Types.hsc" #-}
				data2 <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 418 "Graphics/UI/SDL/Types.hsc" #-}
				return $! WindowEvent typ timestamp wid event data1 data2
			(513) -> do
{-# LINE 420 "Graphics/UI/SDL/Types.hsc" #-}
				msg <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 421 "Graphics/UI/SDL/Types.hsc" #-}
				return $! SysWMEvent typ timestamp msg
			(768) -> key $ KeyboardEvent typ timestamp
{-# LINE 423 "Graphics/UI/SDL/Types.hsc" #-}
			(769) -> key $ KeyboardEvent typ timestamp
{-# LINE 424 "Graphics/UI/SDL/Types.hsc" #-}
			(770) -> do
{-# LINE 425 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 426 "Graphics/UI/SDL/Types.hsc" #-}
				text <- peekArray (32) $ ((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr
{-# LINE 427 "Graphics/UI/SDL/Types.hsc" #-}
				start <- ((\hsc_ptr -> peekByteOff hsc_ptr 44)) ptr
{-# LINE 428 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 429 "Graphics/UI/SDL/Types.hsc" #-}
				return $! TextEditingEvent typ timestamp wid text start len
			(771) -> do
{-# LINE 431 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 432 "Graphics/UI/SDL/Types.hsc" #-}
				text <- peekArray (32) $ ((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr
{-# LINE 433 "Graphics/UI/SDL/Types.hsc" #-}
				return $! TextInputEvent typ timestamp wid text
			(1024) -> do
{-# LINE 435 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 436 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 437 "Graphics/UI/SDL/Types.hsc" #-}
				state <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 438 "Graphics/UI/SDL/Types.hsc" #-}
				x <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 439 "Graphics/UI/SDL/Types.hsc" #-}
				y <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 440 "Graphics/UI/SDL/Types.hsc" #-}
				xrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 441 "Graphics/UI/SDL/Types.hsc" #-}
				yrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 442 "Graphics/UI/SDL/Types.hsc" #-}
				return $! MouseMotionEvent typ timestamp wid which state x y xrel yrel
			(1025) -> mouse $ MouseButtonEvent typ timestamp
{-# LINE 444 "Graphics/UI/SDL/Types.hsc" #-}
			(1026) -> mouse $ MouseButtonEvent typ timestamp
{-# LINE 445 "Graphics/UI/SDL/Types.hsc" #-}
			(1027) -> do
{-# LINE 446 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 447 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 448 "Graphics/UI/SDL/Types.hsc" #-}
				x <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 449 "Graphics/UI/SDL/Types.hsc" #-}
				y <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 450 "Graphics/UI/SDL/Types.hsc" #-}
				return $! MouseWheelEvent typ timestamp wid which x y
			(1536) -> do
{-# LINE 452 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 453 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 454 "Graphics/UI/SDL/Types.hsc" #-}
				value <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 455 "Graphics/UI/SDL/Types.hsc" #-}
				return $! JoyAxisEvent typ timestamp which axis value
			(1537) -> do
{-# LINE 457 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 458 "Graphics/UI/SDL/Types.hsc" #-}
				ball <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 459 "Graphics/UI/SDL/Types.hsc" #-}
				xrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 460 "Graphics/UI/SDL/Types.hsc" #-}
				yrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 18)) ptr
{-# LINE 461 "Graphics/UI/SDL/Types.hsc" #-}
				return $! JoyBallEvent typ timestamp which ball xrel yrel
			(1538) -> do
{-# LINE 463 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 464 "Graphics/UI/SDL/Types.hsc" #-}
				hat <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 465 "Graphics/UI/SDL/Types.hsc" #-}
				value <- ((\hsc_ptr -> peekByteOff hsc_ptr 13)) ptr
{-# LINE 466 "Graphics/UI/SDL/Types.hsc" #-}
				return $! JoyHatEvent typ timestamp which hat value
			(1539) -> joybutton $ JoyButtonEvent typ timestamp
{-# LINE 468 "Graphics/UI/SDL/Types.hsc" #-}
			(1540) -> joybutton $ JoyButtonEvent typ timestamp
{-# LINE 469 "Graphics/UI/SDL/Types.hsc" #-}
			(1541) -> joydevice $ JoyDeviceEvent typ timestamp
{-# LINE 470 "Graphics/UI/SDL/Types.hsc" #-}
			(1542) -> joydevice $ JoyDeviceEvent typ timestamp
{-# LINE 471 "Graphics/UI/SDL/Types.hsc" #-}
			(1616) -> do
{-# LINE 472 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 473 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 474 "Graphics/UI/SDL/Types.hsc" #-}
				value <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 475 "Graphics/UI/SDL/Types.hsc" #-}
				return $! ControllerButtonEvent typ timestamp which axis value
			(1617) -> controllerbutton $ ControllerButtonEvent typ timestamp
{-# LINE 477 "Graphics/UI/SDL/Types.hsc" #-}
			(1618) -> controllerbutton $ ControllerButtonEvent typ timestamp
{-# LINE 478 "Graphics/UI/SDL/Types.hsc" #-}
			(1619) -> controllerdevice $ ControllerDeviceEvent typ timestamp
{-# LINE 479 "Graphics/UI/SDL/Types.hsc" #-}
			(1620) -> controllerdevice $ ControllerDeviceEvent typ timestamp
{-# LINE 480 "Graphics/UI/SDL/Types.hsc" #-}
			(1621) -> controllerdevice $ ControllerDeviceEvent typ timestamp
{-# LINE 481 "Graphics/UI/SDL/Types.hsc" #-}
			(1792) -> finger $ TouchFingerEvent typ timestamp
{-# LINE 482 "Graphics/UI/SDL/Types.hsc" #-}
			(1793) -> finger $ TouchFingerEvent typ timestamp
{-# LINE 483 "Graphics/UI/SDL/Types.hsc" #-}
			(1794) -> finger $ TouchFingerEvent typ timestamp
{-# LINE 484 "Graphics/UI/SDL/Types.hsc" #-}
			(2048) -> dollargesture $ DollarGestureEvent typ timestamp
{-# LINE 485 "Graphics/UI/SDL/Types.hsc" #-}
			(2049) -> dollargesture $ DollarGestureEvent typ timestamp
{-# LINE 486 "Graphics/UI/SDL/Types.hsc" #-}
			(2050) -> do
{-# LINE 487 "Graphics/UI/SDL/Types.hsc" #-}
				touchId <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 488 "Graphics/UI/SDL/Types.hsc" #-}
				dTheta <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 489 "Graphics/UI/SDL/Types.hsc" #-}
				dDist <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 490 "Graphics/UI/SDL/Types.hsc" #-}
				x <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 491 "Graphics/UI/SDL/Types.hsc" #-}
				y <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 492 "Graphics/UI/SDL/Types.hsc" #-}
				numFingers <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 493 "Graphics/UI/SDL/Types.hsc" #-}
				return $! MultiGestureEvent typ timestamp touchId dTheta dDist x y numFingers
			(4096) -> do
{-# LINE 495 "Graphics/UI/SDL/Types.hsc" #-}
				file <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 496 "Graphics/UI/SDL/Types.hsc" #-}
				return $! DropEvent typ timestamp file
			x | x >= (32768) -> do
{-# LINE 498 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 499 "Graphics/UI/SDL/Types.hsc" #-}
				code <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 500 "Graphics/UI/SDL/Types.hsc" #-}
				data1 <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 501 "Graphics/UI/SDL/Types.hsc" #-}
				data2 <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 502 "Graphics/UI/SDL/Types.hsc" #-}
				return $! UserEvent typ timestamp wid code data1 data2
			_ -> error $ "Unknown type " ++ show typ ++ " for SDL_Event"
		where
		key f = do
			wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 507 "Graphics/UI/SDL/Types.hsc" #-}
			state <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 508 "Graphics/UI/SDL/Types.hsc" #-}
			repeat' <- ((\hsc_ptr -> peekByteOff hsc_ptr 13)) ptr
{-# LINE 509 "Graphics/UI/SDL/Types.hsc" #-}
			keysym <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 510 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f wid state repeat' keysym

		mouse f = do
			wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 514 "Graphics/UI/SDL/Types.hsc" #-}
			which <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 515 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 516 "Graphics/UI/SDL/Types.hsc" #-}
			state <- ((\hsc_ptr -> peekByteOff hsc_ptr 17)) ptr
{-# LINE 517 "Graphics/UI/SDL/Types.hsc" #-}
			clicks <- ((\hsc_ptr -> peekByteOff hsc_ptr 18)) ptr
{-# LINE 518 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 519 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 520 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f wid which button state clicks x y

		joybutton f = do
			which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 524 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 525 "Graphics/UI/SDL/Types.hsc" #-}
			state <- ((\hsc_ptr -> peekByteOff hsc_ptr 13)) ptr
{-# LINE 526 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f which button state

		joydevice f = do
			which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 530 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f which

		controllerbutton f = do
			which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 534 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 535 "Graphics/UI/SDL/Types.hsc" #-}
			state <- ((\hsc_ptr -> peekByteOff hsc_ptr 13)) ptr
{-# LINE 536 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f which button state

		controllerdevice f = do
			which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 540 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f which

		finger f = do
			touchId <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 544 "Graphics/UI/SDL/Types.hsc" #-}
			fingerId <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 545 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 546 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 547 "Graphics/UI/SDL/Types.hsc" #-}
			dx <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 548 "Graphics/UI/SDL/Types.hsc" #-}
			dy <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 549 "Graphics/UI/SDL/Types.hsc" #-}
			pressure <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 550 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f touchId fingerId x y dx dy pressure

		dollargesture f = do
			touchId <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 554 "Graphics/UI/SDL/Types.hsc" #-}
			gestureId <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 555 "Graphics/UI/SDL/Types.hsc" #-}
			numFingers <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 556 "Graphics/UI/SDL/Types.hsc" #-}
			err <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 557 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 558 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 559 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f touchId gestureId numFingers err x y
	poke ptr ev = case ev of
		WindowEvent typ timestamp wid event data1 data2 -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 563 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 564 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 565 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr event
{-# LINE 566 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr data1
{-# LINE 567 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr data2
{-# LINE 568 "Graphics/UI/SDL/Types.hsc" #-}
		KeyboardEvent typ timestamp wid state repeat' keysym -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 570 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 571 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 572 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr state
{-# LINE 573 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr repeat'
{-# LINE 574 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr keysym
{-# LINE 575 "Graphics/UI/SDL/Types.hsc" #-}
		TextEditingEvent typ timestamp wid text start len -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 577 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 578 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 579 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr) text
{-# LINE 580 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 44)) ptr start
{-# LINE 581 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr len
{-# LINE 582 "Graphics/UI/SDL/Types.hsc" #-}
		TextInputEvent typ timestamp wid text -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 584 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 585 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 586 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr) text
{-# LINE 587 "Graphics/UI/SDL/Types.hsc" #-}
		MouseMotionEvent typ timestamp wid which state x y xrel yrel -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 589 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 590 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 591 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 592 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr state
{-# LINE 593 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr x
{-# LINE 594 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr y
{-# LINE 595 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr xrel
{-# LINE 596 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr yrel
{-# LINE 597 "Graphics/UI/SDL/Types.hsc" #-}
		MouseButtonEvent typ timestamp wid which button state clicks x y -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 599 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 600 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 601 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 602 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr button
{-# LINE 603 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 17)) ptr state
{-# LINE 604 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 18)) ptr clicks
{-# LINE 605 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr x
{-# LINE 606 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr y
{-# LINE 607 "Graphics/UI/SDL/Types.hsc" #-}
		MouseWheelEvent typ timestamp wid which x y -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 609 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 610 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 611 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 612 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr x
{-# LINE 613 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr y
{-# LINE 614 "Graphics/UI/SDL/Types.hsc" #-}
		JoyAxisEvent typ timestamp which axis value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 616 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 617 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 618 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr axis
{-# LINE 619 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr value
{-# LINE 620 "Graphics/UI/SDL/Types.hsc" #-}
		JoyBallEvent typ timestamp which ball xrel yrel -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 622 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 623 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 624 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr ball
{-# LINE 625 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr xrel
{-# LINE 626 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 18)) ptr yrel
{-# LINE 627 "Graphics/UI/SDL/Types.hsc" #-}
		JoyHatEvent typ timestamp which hat value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 629 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 630 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 631 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr hat
{-# LINE 632 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr value
{-# LINE 633 "Graphics/UI/SDL/Types.hsc" #-}
		JoyButtonEvent typ timestamp which button state -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 635 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 636 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 637 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button
{-# LINE 638 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr state
{-# LINE 639 "Graphics/UI/SDL/Types.hsc" #-}
		JoyDeviceEvent typ timestamp which -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 641 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 642 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 643 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerAxisEvent typ timestamp which axis value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 645 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 646 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 647 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr axis
{-# LINE 648 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr value
{-# LINE 649 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerButtonEvent typ timestamp which button state -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 651 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 652 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 653 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button
{-# LINE 654 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr state
{-# LINE 655 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerDeviceEvent typ timestamp which -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 657 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 658 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 659 "Graphics/UI/SDL/Types.hsc" #-}
		QuitEvent typ timestamp -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 661 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 662 "Graphics/UI/SDL/Types.hsc" #-}
		UserEvent typ timestamp wid code data1 data2 -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 664 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 665 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 666 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr code
{-# LINE 667 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr data1
{-# LINE 668 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr data2
{-# LINE 669 "Graphics/UI/SDL/Types.hsc" #-}
		SysWMEvent typ timestamp msg -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 671 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 672 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr msg
{-# LINE 673 "Graphics/UI/SDL/Types.hsc" #-}
		TouchFingerEvent typ timestamp touchid fingerid x y dx dy pressure -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 675 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 676 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 677 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr fingerid
{-# LINE 678 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr x
{-# LINE 679 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr y
{-# LINE 680 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr dx
{-# LINE 681 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr dy
{-# LINE 682 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr pressure
{-# LINE 683 "Graphics/UI/SDL/Types.hsc" #-}
		MultiGestureEvent typ timestamp touchid dtheta ddist x y numfingers -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 685 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 686 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 687 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr dtheta
{-# LINE 688 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr ddist
{-# LINE 689 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr x
{-# LINE 690 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr y
{-# LINE 691 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr numfingers
{-# LINE 692 "Graphics/UI/SDL/Types.hsc" #-}
		DollarGestureEvent typ timestamp touchid gestureid numfingers err x y -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 694 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 695 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 696 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr gestureid
{-# LINE 697 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr numfingers
{-# LINE 698 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr err
{-# LINE 699 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr x
{-# LINE 700 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr y
{-# LINE 701 "Graphics/UI/SDL/Types.hsc" #-}
		DropEvent typ timestamp file -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 703 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 704 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr file
{-# LINE 705 "Graphics/UI/SDL/Types.hsc" #-}

data Finger = Finger {
              fingerID :: FingerID
            , fingerX :: CFloat
            , fingerY :: CFloat
            , fingerPressure :: CFloat
            } deriving (Eq, Show)

instance Storable Finger where
	sizeOf _ = ((24))
{-# LINE 715 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		fingerId <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 718 "Graphics/UI/SDL/Types.hsc" #-}
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 719 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 720 "Graphics/UI/SDL/Types.hsc" #-}
		pressure <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 721 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Finger fingerId x y pressure
	poke ptr (Finger fingerId x y pressure) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr fingerId
{-# LINE 724 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr x
{-# LINE 725 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr y
{-# LINE 726 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr pressure
{-# LINE 727 "Graphics/UI/SDL/Types.hsc" #-}

data GameControllerButtonBind = GameControllerButtonBindNone
                              | GameControllerButtonBindButton {
                                gameControllerButtonBindButton :: CInt
                              }
                              | GameControllerButtonBindAxis {
                                gameControllerButtonBindAxis :: CInt
                              }
                              | GameControllerButtonBindHat {
                                gameControllerButtonBindHat :: CInt
                              , gameControllerButtonBindHatMask :: CInt
                              } deriving (Eq, Show)

instance Storable GameControllerButtonBind where
	sizeOf _ = ((12))
{-# LINE 742 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		bind_type <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 745 "Graphics/UI/SDL/Types.hsc" #-}
		case bind_type :: (Word32) of
{-# LINE 746 "Graphics/UI/SDL/Types.hsc" #-}
			(0) -> do
{-# LINE 747 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindNone
			(1) -> do
{-# LINE 749 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 750 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindButton button
			(2) -> do
{-# LINE 752 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 753 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindAxis axis
			(3) -> do
{-# LINE 755 "Graphics/UI/SDL/Types.hsc" #-}
				hat <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 756 "Graphics/UI/SDL/Types.hsc" #-}
				hat_mask <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 757 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindHat hat hat_mask
			_ -> error $ "Unknown type " ++ show bind_type ++ " for SDL_GameControllerButtonBind"
	poke ptr bind = case bind of
		GameControllerButtonBindNone -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((0) :: (Word32))
{-# LINE 762 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindButton button -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((1) :: (Word32))
{-# LINE 764 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr button
{-# LINE 765 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindAxis axis -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((2) :: (Word32))
{-# LINE 767 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr axis
{-# LINE 768 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindHat hat hat_mask -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((3) :: (Word32))
{-# LINE 770 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr hat
{-# LINE 771 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr hat_mask
{-# LINE 772 "Graphics/UI/SDL/Types.hsc" #-}

data HapticDirection = HapticDirection {
                       hapticDirectionType :: Word8
                     , hapticDirectionX :: Int32
                     , hapticDirectionY :: Int32
                     , hapticDirectionZ :: Int32
                     } deriving (Eq, Show)

instance Storable HapticDirection where
	sizeOf _ = ((16))
{-# LINE 782 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 785 "Graphics/UI/SDL/Types.hsc" #-}
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 786 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 787 "Graphics/UI/SDL/Types.hsc" #-}
		z <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 788 "Graphics/UI/SDL/Types.hsc" #-}
		return $! HapticDirection typ x y z
	poke ptr (HapticDirection typ x y z) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 791 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr x
{-# LINE 792 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr y
{-# LINE 793 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr z
{-# LINE 794 "Graphics/UI/SDL/Types.hsc" #-}

data HapticEffect = HapticConstant {
                    hapticEffectType :: Word16
                  , hapticConstantDirection :: HapticDirection
                  , hapticConstantLength :: Word32
                  , hapticConstantDelay :: Word16
                  , hapticConstantButton :: Word16
                  , hapticConstantInterval :: Word16
                  , hapticConstantLevel :: Int16
                  , hapticConstantAttackLength :: Word16
                  , hapticConstantAttackLevel :: Word16
                  , hapticConstantFadeLength :: Word16
                  , hapticConstantFadeLevel :: Word16
                  }
                  | HapticPeriodic {
                    hapticEffectType :: Word16
                  , hapticPeriodicDirection :: HapticDirection
                  , hapticPeriodicLength :: Word32
                  , hapticPeriodicDelay :: Word16
                  , hapticPeriodicButton :: Word16
                  , hapticPeriodicInterval :: Word16
                  , hapticPeriodicPeriod :: Word16
                  , hapticPeriodicMagnitude :: Int16
                  , hapticPeriodicOffset :: Int16
                  , hapticPeriodicPhase :: Word16
                  , hapticPeriodicAttackLength :: Word16
                  , hapticPeriodicAttackLevel :: Word16
                  , hapticPeriodicFadeLength :: Word16
                  , hapticPeriodicFadeLevel :: Word16
                  }
                  | HapticCondition {
                    hapticEffectType :: Word16
                  , hapticConditionLength :: Word32
                  , hapticConditionDelay :: Word16
                  , hapticConditionButton :: Word16
                  , hapticConditionInterval :: Word16
                  , hapticConditionRightSat :: [Word16]
                  , hapticConditionLeftSat :: [Word16]
                  , hapticConditionRightCoeff :: [Int16]
                  , hapticConditionLeftCoeff :: [Int16]
                  , hapticConditionDeadband :: [Word16]
                  , hapticConditionCenter :: [Int16]
                  }
                  | HapticRamp {
                    hapticEffectType :: Word16
                  , hapticRampDirection :: HapticDirection
                  , hapticRampLength :: Word32
                  , hapticRampDelay :: Word16
                  , hapticRampButton :: Word16
                  , hapticRampInterval :: Word16
                  , hapticRampStart :: Int16
                  , hapticRampEnd :: Int16
                  , hapticRampAttackLength :: Word16
                  , hapticRampAttackLevel :: Word16
                  , hapticRampFadeLength :: Word16
                  , hapticRampFadeLevel :: Word16
                  }
                  | HapticLeftRight {
                    hapticEffectType :: Word16
                  , hapticLeftRightLength :: Word32
                  , hapticLeftRightLargeMagnitude :: Word16
                  , hapticLeftRightSmallMagnitude :: Word16
                  }
                  | HapticCustom {
                    hapticEffectType :: Word16
                  , hapticCustomDirection :: HapticDirection
                  , hapticCustomLength :: Word32
                  , hapticCustomDelay :: Word16
                  , hapticCustomButton :: Word16
                  , hapticCustomInterval :: Word16
                  , hapticCustomChannels :: Word8
                  , hapticCustomPeriod :: Word16
                  , hapticCustomSamples :: Word16
                  , hapticCustomData :: Ptr Word16
                  , hapticCustomAttackLength :: Word16
                  , hapticCustomAttackLevel :: Word16
                  , hapticCustomFadeLength :: Word16
                  , hapticCustomFadeLevel :: Word16
                  } deriving (Eq, Show)

instance Storable HapticEffect where
	sizeOf _ = ((72))
{-# LINE 876 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 879 "Graphics/UI/SDL/Types.hsc" #-}
		case typ of
			(1) -> do
{-# LINE 881 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 882 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 883 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 884 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 885 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 886 "Graphics/UI/SDL/Types.hsc" #-}
				level <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 887 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 888 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 889 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 890 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 891 "Graphics/UI/SDL/Types.hsc" #-}
				return $! HapticConstant typ direction len delay button interval level attack_length attack_level fade_length fade_level

			(2) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 894 "Graphics/UI/SDL/Types.hsc" #-}
			(8) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 895 "Graphics/UI/SDL/Types.hsc" #-}
			(16) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 896 "Graphics/UI/SDL/Types.hsc" #-}
			(32) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 897 "Graphics/UI/SDL/Types.hsc" #-}

			(64) -> do
{-# LINE 899 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 900 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 901 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 902 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 903 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 904 "Graphics/UI/SDL/Types.hsc" #-}
				start <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 905 "Graphics/UI/SDL/Types.hsc" #-}
				end <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 906 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 907 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 908 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 909 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 910 "Graphics/UI/SDL/Types.hsc" #-}
				return $! HapticRamp typ direction len delay button interval start end attack_length attack_level fade_length fade_level

			(128) -> hapticcondition $ HapticCondition typ
{-# LINE 913 "Graphics/UI/SDL/Types.hsc" #-}
			(256) -> hapticcondition $ HapticCondition typ
{-# LINE 914 "Graphics/UI/SDL/Types.hsc" #-}
			(512) -> hapticcondition $ HapticCondition typ
{-# LINE 915 "Graphics/UI/SDL/Types.hsc" #-}
			(1024) -> hapticcondition $ HapticCondition typ
{-# LINE 916 "Graphics/UI/SDL/Types.hsc" #-}

			(4) -> do
{-# LINE 918 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 919 "Graphics/UI/SDL/Types.hsc" #-}
				large_magnitude <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 920 "Graphics/UI/SDL/Types.hsc" #-}
				small_magnitude <- ((\hsc_ptr -> peekByteOff hsc_ptr 10)) ptr
{-# LINE 921 "Graphics/UI/SDL/Types.hsc" #-}
				return $! HapticLeftRight typ len large_magnitude small_magnitude

			(2048) -> do
{-# LINE 924 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 925 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 926 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 927 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 928 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 929 "Graphics/UI/SDL/Types.hsc" #-}
				channels <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 930 "Graphics/UI/SDL/Types.hsc" #-}
				period <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 931 "Graphics/UI/SDL/Types.hsc" #-}
				samples <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 932 "Graphics/UI/SDL/Types.hsc" #-}
				datum <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 933 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 934 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 50)) ptr
{-# LINE 935 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 52)) ptr
{-# LINE 936 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 54)) ptr
{-# LINE 937 "Graphics/UI/SDL/Types.hsc" #-}
				return $! HapticCustom typ direction len delay button interval channels period samples datum attack_length attack_level fade_length fade_level
			_ -> error $ "Unknown type " ++ show typ ++ " for SDL_HapticEffect"
		where
		hapticperiodic f = do
			direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 942 "Graphics/UI/SDL/Types.hsc" #-}
			len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 943 "Graphics/UI/SDL/Types.hsc" #-}
			delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 944 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 945 "Graphics/UI/SDL/Types.hsc" #-}
			interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 946 "Graphics/UI/SDL/Types.hsc" #-}
			period <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 947 "Graphics/UI/SDL/Types.hsc" #-}
			magnitude <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 948 "Graphics/UI/SDL/Types.hsc" #-}
			offset <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 949 "Graphics/UI/SDL/Types.hsc" #-}
			phase <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 950 "Graphics/UI/SDL/Types.hsc" #-}
			attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 951 "Graphics/UI/SDL/Types.hsc" #-}
			attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 952 "Graphics/UI/SDL/Types.hsc" #-}
			fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 42)) ptr
{-# LINE 953 "Graphics/UI/SDL/Types.hsc" #-}
			fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 44)) ptr
{-# LINE 954 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f direction len delay button interval period magnitude offset phase attack_length attack_level fade_length fade_level

		hapticcondition f = do
			len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 958 "Graphics/UI/SDL/Types.hsc" #-}
			delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 959 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 960 "Graphics/UI/SDL/Types.hsc" #-}
			interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 961 "Graphics/UI/SDL/Types.hsc" #-}
			right_sat <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 30)) ptr
{-# LINE 962 "Graphics/UI/SDL/Types.hsc" #-}
			left_sat <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 36)) ptr
{-# LINE 963 "Graphics/UI/SDL/Types.hsc" #-}
			right_coeff <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 42)) ptr
{-# LINE 964 "Graphics/UI/SDL/Types.hsc" #-}
			left_coeff <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 48)) ptr
{-# LINE 965 "Graphics/UI/SDL/Types.hsc" #-}
			deadband <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 54)) ptr
{-# LINE 966 "Graphics/UI/SDL/Types.hsc" #-}
			center <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 60)) ptr
{-# LINE 967 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f len delay button interval right_sat left_sat right_coeff left_coeff deadband center
	poke ptr event = case event of
		HapticConstant typ direction len delay button interval level attack_length attack_level fade_length fade_level -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 971 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 972 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 973 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 974 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 975 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 976 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr level
{-# LINE 977 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr attack_length
{-# LINE 978 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr attack_level
{-# LINE 979 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr fade_length
{-# LINE 980 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 38)) ptr fade_level
{-# LINE 981 "Graphics/UI/SDL/Types.hsc" #-}
		HapticPeriodic typ direction len delay button interval period magnitude offset phase attack_length attack_level fade_length fade_level -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 983 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 984 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 985 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 986 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 987 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 988 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr period
{-# LINE 989 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr magnitude
{-# LINE 990 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr offset
{-# LINE 991 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr phase
{-# LINE 992 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 38)) ptr attack_length
{-# LINE 993 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr attack_level
{-# LINE 994 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 42)) ptr fade_length
{-# LINE 995 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 44)) ptr fade_level
{-# LINE 996 "Graphics/UI/SDL/Types.hsc" #-}
		HapticCondition typ len delay button interval right_sat left_sat right_coeff left_coeff deadband center -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 998 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 999 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 1000 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 1001 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 1002 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 30)) ptr) right_sat
{-# LINE 1003 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 36)) ptr) left_sat
{-# LINE 1004 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 42)) ptr) right_coeff
{-# LINE 1005 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 48)) ptr) left_coeff
{-# LINE 1006 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 54)) ptr) deadband
{-# LINE 1007 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 60)) ptr) center
{-# LINE 1008 "Graphics/UI/SDL/Types.hsc" #-}
		HapticRamp typ direction len delay button interval start end attack_length attack_level fade_length fade_level -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 1010 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 1011 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 1012 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 1013 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 1014 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 1015 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr start
{-# LINE 1016 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr end
{-# LINE 1017 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr attack_length
{-# LINE 1018 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr attack_level
{-# LINE 1019 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 38)) ptr fade_length
{-# LINE 1020 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr fade_level
{-# LINE 1021 "Graphics/UI/SDL/Types.hsc" #-}
		HapticLeftRight typ len large_magnitude small_magnitude -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 1023 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr len
{-# LINE 1024 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr large_magnitude
{-# LINE 1025 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 10)) ptr small_magnitude
{-# LINE 1026 "Graphics/UI/SDL/Types.hsc" #-}
		HapticCustom typ direction len delay button interval channels period samples datum attack_length attack_level fade_length fade_level -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 1028 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 1029 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 1030 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 1031 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 1032 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 1033 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr channels
{-# LINE 1034 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr period
{-# LINE 1035 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr samples
{-# LINE 1036 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr datum
{-# LINE 1037 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr attack_length
{-# LINE 1038 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 50)) ptr attack_level
{-# LINE 1039 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 52)) ptr fade_length
{-# LINE 1040 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 54)) ptr fade_level
{-# LINE 1041 "Graphics/UI/SDL/Types.hsc" #-}

data JoystickGUID = JoystickGUID {
                    joystickGUID :: [Word8]
                  } deriving (Eq, Show)

instance Storable JoystickGUID where
	sizeOf _ = ((16))
{-# LINE 1048 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		guid <- peekArray 16 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 0)) ptr
{-# LINE 1051 "Graphics/UI/SDL/Types.hsc" #-}
		return $! JoystickGUID guid
	poke ptr (JoystickGUID guid) =
		pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 0)) ptr) guid
{-# LINE 1054 "Graphics/UI/SDL/Types.hsc" #-}

data Keysym = Keysym {
              keysymScancode :: Scancode
            , keysymKeycode :: Keycode
            , keysymMod :: Word16
            } deriving (Eq, Show)

instance Storable Keysym where
	sizeOf _ = ((16))
{-# LINE 1063 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		scancode <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1066 "Graphics/UI/SDL/Types.hsc" #-}
		sym <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1067 "Graphics/UI/SDL/Types.hsc" #-}
		mod' <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1068 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Keysym scancode sym mod'
	poke ptr (Keysym scancode sym mod') = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr scancode
{-# LINE 1071 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr sym
{-# LINE 1072 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr mod'
{-# LINE 1073 "Graphics/UI/SDL/Types.hsc" #-}

data MessageBoxButtonData = MessageBoxButtonData {
                            messageBoxButtonDataFlags :: Word32
                          , messageBoxButtonButtonID :: CInt
                          , messageBoxButtonText :: CString
                          } deriving (Eq, Show)

instance Storable MessageBoxButtonData where
	sizeOf _ = ((16))
{-# LINE 1082 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		flags <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1085 "Graphics/UI/SDL/Types.hsc" #-}
		buttonid <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1086 "Graphics/UI/SDL/Types.hsc" #-}
		text <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1087 "Graphics/UI/SDL/Types.hsc" #-}
		return $! MessageBoxButtonData flags buttonid text
	poke ptr (MessageBoxButtonData flags buttonid text) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr flags
{-# LINE 1090 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr buttonid
{-# LINE 1091 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr text
{-# LINE 1092 "Graphics/UI/SDL/Types.hsc" #-}

data MessageBoxColor = MessageBoxColor {
                       messageBoxColorR :: Word8
                     , messageBoxColorG :: Word8
                     , messageBoxColorB :: Word8
                     } deriving (Eq, Show)

instance Storable MessageBoxColor where
	sizeOf _ = ((3))
{-# LINE 1101 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		r <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1104 "Graphics/UI/SDL/Types.hsc" #-}
		g <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 1105 "Graphics/UI/SDL/Types.hsc" #-}
		b <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 1106 "Graphics/UI/SDL/Types.hsc" #-}
		return $! MessageBoxColor r g b
	poke ptr (MessageBoxColor r g b) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr r
{-# LINE 1109 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr g
{-# LINE 1110 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr b
{-# LINE 1111 "Graphics/UI/SDL/Types.hsc" #-}

data MessageBoxColorScheme = MessageBoxColorScheme {
                             messageBoxColorSchemeColorBackground :: MessageBoxColor
                           , messageBoxColorSchemeColorText :: MessageBoxColor
                           , messageBoxColorSchemeColorButtonBorder :: MessageBoxColor
                           , messageBoxColorSchemeColorButtonBackground :: MessageBoxColor
                           , messageBoxColorSchemeColorButtonSelected :: MessageBoxColor
                           } deriving (Eq, Show)

instance Storable MessageBoxColorScheme where
	sizeOf _ = ((15))
{-# LINE 1122 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		background <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1125 "Graphics/UI/SDL/Types.hsc" #-}
		text <- ((\hsc_ptr -> peekByteOff hsc_ptr 3)) ptr
{-# LINE 1126 "Graphics/UI/SDL/Types.hsc" #-}
		button_border <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 1127 "Graphics/UI/SDL/Types.hsc" #-}
		button_background <- ((\hsc_ptr -> peekByteOff hsc_ptr 9)) ptr
{-# LINE 1128 "Graphics/UI/SDL/Types.hsc" #-}
		button_selected <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 1129 "Graphics/UI/SDL/Types.hsc" #-}
		return $! MessageBoxColorScheme background text button_border button_background button_selected
	poke ptr (MessageBoxColorScheme background text button_border button_background button_selected) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr background
{-# LINE 1132 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 3)) ptr text
{-# LINE 1133 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr button_border
{-# LINE 1134 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 9)) ptr button_background
{-# LINE 1135 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button_selected
{-# LINE 1136 "Graphics/UI/SDL/Types.hsc" #-}

data MessageBoxData = MessageBoxData {
                      messageBoxDataFlags :: Word32
                    , messageBoxDataWindow :: Window
                    , messageBoxDataTitle :: CString
                    , messageBoxDataMessage :: CString
                    , messageBoxDataNumButtons :: CInt
                    , messageBoxDataButtons :: Ptr MessageBoxButtonData
                    , messageBoxDataColorScheme :: Ptr MessageBoxColorScheme
                    } deriving (Eq, Show)

instance Storable MessageBoxData where
	sizeOf _ = ((56))
{-# LINE 1149 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		flags <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1152 "Graphics/UI/SDL/Types.hsc" #-}
		window <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1153 "Graphics/UI/SDL/Types.hsc" #-}
		title <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1154 "Graphics/UI/SDL/Types.hsc" #-}
		message <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 1155 "Graphics/UI/SDL/Types.hsc" #-}
		numbuttons <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1156 "Graphics/UI/SDL/Types.hsc" #-}
		buttons <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 1157 "Graphics/UI/SDL/Types.hsc" #-}
		color_scheme <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 1158 "Graphics/UI/SDL/Types.hsc" #-}
		return $! MessageBoxData flags window title message numbuttons buttons color_scheme
	poke ptr (MessageBoxData flags window title message numbuttons buttons color_scheme) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr flags
{-# LINE 1161 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr window
{-# LINE 1162 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr title
{-# LINE 1163 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr message
{-# LINE 1164 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr numbuttons
{-# LINE 1165 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr buttons
{-# LINE 1166 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr color_scheme
{-# LINE 1167 "Graphics/UI/SDL/Types.hsc" #-}

data Palette = Palette {
               paletteNColors :: CInt
             , paletteColors :: Ptr Color
             } deriving (Eq, Show)

instance Storable Palette where
	sizeOf _ = ((24))
{-# LINE 1175 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		ncolors <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1178 "Graphics/UI/SDL/Types.hsc" #-}
		colors <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1179 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Palette ncolors colors
	poke ptr (Palette ncolors colors) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ncolors
{-# LINE 1182 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr colors
{-# LINE 1183 "Graphics/UI/SDL/Types.hsc" #-}

data PixelFormat = PixelFormat {
                   pixelFormatFormat :: Word32
                 , pixelFormatPalette :: Ptr Palette
                 , pixelFormatBitsPerPixel :: Word8
                 , pixelFormatBytesPerPixel :: Word8
                 , pixelFormatRMask :: Word32
                 , pixelFormatGMask :: Word32
                 , pixelFormatBMask :: Word32
                 , pixelFormatAMask :: Word32
                 } deriving (Eq, Show)

instance Storable PixelFormat where
	sizeOf _ = ((56))
{-# LINE 1197 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1200 "Graphics/UI/SDL/Types.hsc" #-}
		palette <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1201 "Graphics/UI/SDL/Types.hsc" #-}
		bits_per_pixel <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1202 "Graphics/UI/SDL/Types.hsc" #-}
		bytes_per_pixel <- ((\hsc_ptr -> peekByteOff hsc_ptr 17)) ptr
{-# LINE 1203 "Graphics/UI/SDL/Types.hsc" #-}
		rmask <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 1204 "Graphics/UI/SDL/Types.hsc" #-}
		gmask <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 1205 "Graphics/UI/SDL/Types.hsc" #-}
		bmask <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 1206 "Graphics/UI/SDL/Types.hsc" #-}
		amask <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1207 "Graphics/UI/SDL/Types.hsc" #-}
		return $! PixelFormat format palette bits_per_pixel bytes_per_pixel rmask gmask bmask amask
	poke ptr (PixelFormat format palette bits_per_pixel bytes_per_pixel rmask gmask bmask amask) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr format
{-# LINE 1210 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr palette
{-# LINE 1211 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr bits_per_pixel
{-# LINE 1212 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 17)) ptr bytes_per_pixel
{-# LINE 1213 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr rmask
{-# LINE 1214 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr gmask
{-# LINE 1215 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr bmask
{-# LINE 1216 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr amask
{-# LINE 1217 "Graphics/UI/SDL/Types.hsc" #-}

data Point = Point {
             pointX :: CInt
           , pointY :: CInt
           } deriving (Eq, Show)

instance Storable Point where
	sizeOf _ = ((8))
{-# LINE 1225 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1228 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1229 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Point x y
	poke ptr (Point x y) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr x
{-# LINE 1232 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr y
{-# LINE 1233 "Graphics/UI/SDL/Types.hsc" #-}

data Rect = Rect {
            rectX :: CInt
          , rectY :: CInt
          , rectW :: CInt
          , rectH :: CInt
          } deriving (Eq, Show)

instance Storable Rect where
	sizeOf _ = ((16))
{-# LINE 1243 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1246 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1247 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1248 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 1249 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Rect x y w h
	poke ptr (Rect x y w h) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr x
{-# LINE 1252 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr y
{-# LINE 1253 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr w
{-# LINE 1254 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr h
{-# LINE 1255 "Graphics/UI/SDL/Types.hsc" #-}

data RendererInfo = RendererInfo {
                    rendererInfoName :: CString
                  , rendererInfoFlags :: Word32
                  , rendererInfoNumTextureFormats :: Word32
                  , rendererInfoTextureFormats :: [Word32]
                  , rendererInfoMaxTextureWidth :: CInt
                  , rendererInfoMaxTextureHeight :: CInt
                  } deriving (Eq, Show)

instance Storable RendererInfo where
	sizeOf _ = ((88))
{-# LINE 1267 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		name <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1270 "Graphics/UI/SDL/Types.hsc" #-}
		flags <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1271 "Graphics/UI/SDL/Types.hsc" #-}
		num_texture_formats <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 1272 "Graphics/UI/SDL/Types.hsc" #-}
		texture_formats <- peekArray 16 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 16)) ptr
{-# LINE 1273 "Graphics/UI/SDL/Types.hsc" #-}
		max_texture_width <- ((\hsc_ptr -> peekByteOff hsc_ptr 80)) ptr
{-# LINE 1274 "Graphics/UI/SDL/Types.hsc" #-}
		max_texture_height <- ((\hsc_ptr -> peekByteOff hsc_ptr 84)) ptr
{-# LINE 1275 "Graphics/UI/SDL/Types.hsc" #-}
		return $! RendererInfo name flags num_texture_formats texture_formats max_texture_width max_texture_height
	poke ptr (RendererInfo name flags num_texture_formats texture_formats max_texture_width max_texture_height) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr name
{-# LINE 1278 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr flags
{-# LINE 1279 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr num_texture_formats
{-# LINE 1280 "Graphics/UI/SDL/Types.hsc" #-}
		pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 16)) ptr) texture_formats
{-# LINE 1281 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 80)) ptr max_texture_width
{-# LINE 1282 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 84)) ptr max_texture_height
{-# LINE 1283 "Graphics/UI/SDL/Types.hsc" #-}

data RWops = RWops {
             rwopsSize :: FunPtr (Ptr RWops -> IO Int64)
           , rwopsSeek :: FunPtr (Ptr RWops -> Int64 -> CInt -> IO Int64)
           , rwopsRead :: FunPtr (Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize)
           , rwopsWrite :: FunPtr (Ptr RWops -> Ptr () -> CSize -> CSize -> IO CSize)
           , rwopsClose :: FunPtr (Ptr RWops -> IO CInt)
           , rwopsType :: Word32
           } deriving (Eq, Show)

instance Storable RWops where
	sizeOf _ = ((72))
{-# LINE 1295 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		size <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1298 "Graphics/UI/SDL/Types.hsc" #-}
		seek <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1299 "Graphics/UI/SDL/Types.hsc" #-}
		read' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1300 "Graphics/UI/SDL/Types.hsc" #-}
		write <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 1301 "Graphics/UI/SDL/Types.hsc" #-}
		close <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1302 "Graphics/UI/SDL/Types.hsc" #-}
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 1303 "Graphics/UI/SDL/Types.hsc" #-}
		return $! RWops size seek read' write close typ
	poke ptr (RWops size seek read' write close typ) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr size
{-# LINE 1306 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr seek
{-# LINE 1307 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr read'
{-# LINE 1308 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr write
{-# LINE 1309 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr close
{-# LINE 1310 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr typ
{-# LINE 1311 "Graphics/UI/SDL/Types.hsc" #-}

data Surface = Surface {
               surfaceFormat :: Ptr PixelFormat
             , surfaceW :: CInt
             , surfaceH :: CInt
             , surfacePixels :: Ptr ()
             , surfaceUserdata :: Ptr ()
             , surfaceClipRect :: Rect
             , surfaceRefcount :: CInt
             } deriving (Eq, Show)

instance Storable Surface where
	sizeOf _ = ((96))
{-# LINE 1324 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1327 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1328 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 1329 "Graphics/UI/SDL/Types.hsc" #-}
		pixels <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1330 "Graphics/UI/SDL/Types.hsc" #-}
		userdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 1331 "Graphics/UI/SDL/Types.hsc" #-}
		cliprect <- ((\hsc_ptr -> peekByteOff hsc_ptr 64)) ptr
{-# LINE 1332 "Graphics/UI/SDL/Types.hsc" #-}
		refcount <- ((\hsc_ptr -> peekByteOff hsc_ptr 88)) ptr
{-# LINE 1333 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Surface format w h pixels userdata cliprect refcount
	poke ptr (Surface format w h pixels userdata cliprect refcount) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr format
{-# LINE 1336 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr w
{-# LINE 1337 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr h
{-# LINE 1338 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr pixels
{-# LINE 1339 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr userdata
{-# LINE 1340 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 64)) ptr cliprect
{-# LINE 1341 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 88)) ptr refcount
{-# LINE 1342 "Graphics/UI/SDL/Types.hsc" #-}

data Version = Version {
               versionMajor :: Word8
             , versionMinor :: Word8
             , versionPatch :: Word8
             } deriving (Eq, Show)

instance Storable Version where
	sizeOf _ = ((3))
{-# LINE 1351 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		major <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1354 "Graphics/UI/SDL/Types.hsc" #-}
		minor <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 1355 "Graphics/UI/SDL/Types.hsc" #-}
		patch <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 1356 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Version major minor patch
	poke ptr (Version major minor patch) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr major
{-# LINE 1359 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr minor
{-# LINE 1360 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr patch
{-# LINE 1361 "Graphics/UI/SDL/Types.hsc" #-}