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

	-- * Data Structures
	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 53 "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 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 Renderer = Ptr ()
type SysWMmsg = Ptr ()
type Texture = Ptr ()
type TimerCallback = FunPtr (Word32 -> Ptr () -> IO Word32)
type TimerID = CInt
type TouchID = Int64
type Window = Ptr ()

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 100 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		needed <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 103 "Graphics/UI/SDL/Types.hsc" #-}
		src_format <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 104 "Graphics/UI/SDL/Types.hsc" #-}
		dst_format <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 105 "Graphics/UI/SDL/Types.hsc" #-}
		rate_incr <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 106 "Graphics/UI/SDL/Types.hsc" #-}
		buf <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 107 "Graphics/UI/SDL/Types.hsc" #-}
		len <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 108 "Graphics/UI/SDL/Types.hsc" #-}
		len_cvt <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 109 "Graphics/UI/SDL/Types.hsc" #-}
		len_mult <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 110 "Graphics/UI/SDL/Types.hsc" #-}
		len_ratio <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 111 "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 114 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr src_format
{-# LINE 115 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr dst_format
{-# LINE 116 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr rate_incr
{-# LINE 117 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr buf
{-# LINE 118 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr len
{-# LINE 119 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr len_cvt
{-# LINE 120 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr len_mult
{-# LINE 121 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr len_ratio
{-# LINE 122 "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 136 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		freq <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 139 "Graphics/UI/SDL/Types.hsc" #-}
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 140 "Graphics/UI/SDL/Types.hsc" #-}
		channels <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 141 "Graphics/UI/SDL/Types.hsc" #-}
		silence <- ((\hsc_ptr -> peekByteOff hsc_ptr 7)) ptr
{-# LINE 142 "Graphics/UI/SDL/Types.hsc" #-}
		samples <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 143 "Graphics/UI/SDL/Types.hsc" #-}
		size <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 144 "Graphics/UI/SDL/Types.hsc" #-}
		callback <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 145 "Graphics/UI/SDL/Types.hsc" #-}
		userdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 146 "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 149 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr format
{-# LINE 150 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr channels
{-# LINE 151 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 7)) ptr silence
{-# LINE 152 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr samples
{-# LINE 153 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr size
{-# LINE 154 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr callback
{-# LINE 155 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr userdata
{-# LINE 156 "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 166 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		r <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 169 "Graphics/UI/SDL/Types.hsc" #-}
		g <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 170 "Graphics/UI/SDL/Types.hsc" #-}
		b <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 171 "Graphics/UI/SDL/Types.hsc" #-}
		a <- ((\hsc_ptr -> peekByteOff hsc_ptr 3)) ptr
{-# LINE 172 "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 175 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr g
{-# LINE 176 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr b
{-# LINE 177 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 3)) ptr a
{-# LINE 178 "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 189 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 192 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 193 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 194 "Graphics/UI/SDL/Types.hsc" #-}
		refresh_rate <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 195 "Graphics/UI/SDL/Types.hsc" #-}
		driverdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 196 "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 199 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr w
{-# LINE 200 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr h
{-# LINE 201 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr refresh_rate
{-# LINE 202 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr driverdata
{-# LINE 203 "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
           , 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 373 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 376 "Graphics/UI/SDL/Types.hsc" #-}
		timestamp <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 377 "Graphics/UI/SDL/Types.hsc" #-}
		case typ of
			(256) ->
{-# LINE 379 "Graphics/UI/SDL/Types.hsc" #-}
				return $! QuitEvent typ timestamp
			(512) -> do
{-# LINE 381 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 382 "Graphics/UI/SDL/Types.hsc" #-}
				event <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 383 "Graphics/UI/SDL/Types.hsc" #-}
				data1 <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 384 "Graphics/UI/SDL/Types.hsc" #-}
				data2 <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 385 "Graphics/UI/SDL/Types.hsc" #-}
				return $! WindowEvent typ timestamp wid event data1 data2
			(513) -> do
{-# LINE 387 "Graphics/UI/SDL/Types.hsc" #-}
				msg <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 388 "Graphics/UI/SDL/Types.hsc" #-}
				return $! SysWMEvent typ timestamp msg
			(768) -> key $ KeyboardEvent typ timestamp
{-# LINE 390 "Graphics/UI/SDL/Types.hsc" #-}
			(769) -> key $ KeyboardEvent typ timestamp
{-# LINE 391 "Graphics/UI/SDL/Types.hsc" #-}
			(770) -> do
{-# LINE 392 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 393 "Graphics/UI/SDL/Types.hsc" #-}
				text <- peekArray (32) $ ((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr
{-# LINE 394 "Graphics/UI/SDL/Types.hsc" #-}
				start <- ((\hsc_ptr -> peekByteOff hsc_ptr 44)) ptr
{-# LINE 395 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 396 "Graphics/UI/SDL/Types.hsc" #-}
				return $! TextEditingEvent typ timestamp wid text start len
			(771) -> do
{-# LINE 398 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 399 "Graphics/UI/SDL/Types.hsc" #-}
				text <- peekArray (32) $ ((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr
{-# LINE 400 "Graphics/UI/SDL/Types.hsc" #-}
				return $! TextInputEvent typ timestamp wid text
			(1024) -> do
{-# LINE 402 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 403 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 404 "Graphics/UI/SDL/Types.hsc" #-}
				state <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 405 "Graphics/UI/SDL/Types.hsc" #-}
				x <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 406 "Graphics/UI/SDL/Types.hsc" #-}
				y <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 407 "Graphics/UI/SDL/Types.hsc" #-}
				xrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 408 "Graphics/UI/SDL/Types.hsc" #-}
				yrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 409 "Graphics/UI/SDL/Types.hsc" #-}
				return $! MouseMotionEvent typ timestamp wid which state x y xrel yrel
			(1025) -> mouse $ MouseButtonEvent typ timestamp
{-# LINE 411 "Graphics/UI/SDL/Types.hsc" #-}
			(1026) -> mouse $ MouseButtonEvent typ timestamp
{-# LINE 412 "Graphics/UI/SDL/Types.hsc" #-}
			(1027) -> do
{-# LINE 413 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 414 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 415 "Graphics/UI/SDL/Types.hsc" #-}
				x <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 416 "Graphics/UI/SDL/Types.hsc" #-}
				y <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 417 "Graphics/UI/SDL/Types.hsc" #-}
				return $! MouseWheelEvent typ timestamp wid which x y
			(1536) -> do
{-# LINE 419 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 420 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 421 "Graphics/UI/SDL/Types.hsc" #-}
				value <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 422 "Graphics/UI/SDL/Types.hsc" #-}
				return $! JoyAxisEvent typ timestamp which axis value
			(1537) -> do
{-# LINE 424 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 425 "Graphics/UI/SDL/Types.hsc" #-}
				ball <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 426 "Graphics/UI/SDL/Types.hsc" #-}
				xrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 427 "Graphics/UI/SDL/Types.hsc" #-}
				yrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 18)) ptr
{-# LINE 428 "Graphics/UI/SDL/Types.hsc" #-}
				return $! JoyBallEvent typ timestamp which ball xrel yrel
			(1538) -> do
{-# LINE 430 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 431 "Graphics/UI/SDL/Types.hsc" #-}
				hat <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 432 "Graphics/UI/SDL/Types.hsc" #-}
				value <- ((\hsc_ptr -> peekByteOff hsc_ptr 13)) ptr
{-# LINE 433 "Graphics/UI/SDL/Types.hsc" #-}
				return $! JoyHatEvent typ timestamp which hat value
			(1539) -> joybutton $ JoyButtonEvent typ timestamp
{-# LINE 435 "Graphics/UI/SDL/Types.hsc" #-}
			(1540) -> joybutton $ JoyButtonEvent typ timestamp
{-# LINE 436 "Graphics/UI/SDL/Types.hsc" #-}
			(1541) -> joydevice $ JoyDeviceEvent typ timestamp
{-# LINE 437 "Graphics/UI/SDL/Types.hsc" #-}
			(1542) -> joydevice $ JoyDeviceEvent typ timestamp
{-# LINE 438 "Graphics/UI/SDL/Types.hsc" #-}
			(1616) -> do
{-# LINE 439 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 440 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 441 "Graphics/UI/SDL/Types.hsc" #-}
				value <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 442 "Graphics/UI/SDL/Types.hsc" #-}
				return $! ControllerButtonEvent typ timestamp which axis value
			(1617) -> controllerbutton $ ControllerButtonEvent typ timestamp
{-# LINE 444 "Graphics/UI/SDL/Types.hsc" #-}
			(1618) -> controllerbutton $ ControllerButtonEvent typ timestamp
{-# LINE 445 "Graphics/UI/SDL/Types.hsc" #-}
			(1619) -> controllerdevice $ ControllerDeviceEvent typ timestamp
{-# LINE 446 "Graphics/UI/SDL/Types.hsc" #-}
			(1620) -> controllerdevice $ ControllerDeviceEvent typ timestamp
{-# LINE 447 "Graphics/UI/SDL/Types.hsc" #-}
			(1621) -> controllerdevice $ ControllerDeviceEvent typ timestamp
{-# LINE 448 "Graphics/UI/SDL/Types.hsc" #-}
			(1792) -> finger $ TouchFingerEvent typ timestamp
{-# LINE 449 "Graphics/UI/SDL/Types.hsc" #-}
			(1793) -> finger $ TouchFingerEvent typ timestamp
{-# LINE 450 "Graphics/UI/SDL/Types.hsc" #-}
			(1794) -> finger $ TouchFingerEvent typ timestamp
{-# LINE 451 "Graphics/UI/SDL/Types.hsc" #-}
			(2048) -> dollargesture $ DollarGestureEvent typ timestamp
{-# LINE 452 "Graphics/UI/SDL/Types.hsc" #-}
			(2049) -> dollargesture $ DollarGestureEvent typ timestamp
{-# LINE 453 "Graphics/UI/SDL/Types.hsc" #-}
			(2050) -> do
{-# LINE 454 "Graphics/UI/SDL/Types.hsc" #-}
				touchId <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 455 "Graphics/UI/SDL/Types.hsc" #-}
				dTheta <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 456 "Graphics/UI/SDL/Types.hsc" #-}
				dDist <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 457 "Graphics/UI/SDL/Types.hsc" #-}
				x <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 458 "Graphics/UI/SDL/Types.hsc" #-}
				y <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 459 "Graphics/UI/SDL/Types.hsc" #-}
				numFingers <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 460 "Graphics/UI/SDL/Types.hsc" #-}
				return $! MultiGestureEvent typ timestamp touchId dTheta dDist x y numFingers
			(4096) -> do
{-# LINE 462 "Graphics/UI/SDL/Types.hsc" #-}
				file <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 463 "Graphics/UI/SDL/Types.hsc" #-}
				return $! DropEvent typ timestamp file
			x | x >= (32768) -> do
{-# LINE 465 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 466 "Graphics/UI/SDL/Types.hsc" #-}
				code <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 467 "Graphics/UI/SDL/Types.hsc" #-}
				data1 <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 468 "Graphics/UI/SDL/Types.hsc" #-}
				data2 <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 469 "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 474 "Graphics/UI/SDL/Types.hsc" #-}
			state <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 475 "Graphics/UI/SDL/Types.hsc" #-}
			repeat' <- ((\hsc_ptr -> peekByteOff hsc_ptr 13)) ptr
{-# LINE 476 "Graphics/UI/SDL/Types.hsc" #-}
			keysym <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 477 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f wid state repeat' keysym

		mouse f = do
			wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 481 "Graphics/UI/SDL/Types.hsc" #-}
			which <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 482 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 483 "Graphics/UI/SDL/Types.hsc" #-}
			state <- ((\hsc_ptr -> peekByteOff hsc_ptr 17)) ptr
{-# LINE 484 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 485 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 486 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f wid which button state x y

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

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

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

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

		finger f = do
			touchId <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 510 "Graphics/UI/SDL/Types.hsc" #-}
			fingerId <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 511 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 512 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 513 "Graphics/UI/SDL/Types.hsc" #-}
			dx <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 514 "Graphics/UI/SDL/Types.hsc" #-}
			dy <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 515 "Graphics/UI/SDL/Types.hsc" #-}
			pressure <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 516 "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 520 "Graphics/UI/SDL/Types.hsc" #-}
			gestureId <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 521 "Graphics/UI/SDL/Types.hsc" #-}
			numFingers <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 522 "Graphics/UI/SDL/Types.hsc" #-}
			err <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 523 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 524 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 525 "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 529 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 530 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 531 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr event
{-# LINE 532 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr data1
{-# LINE 533 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr data2
{-# LINE 534 "Graphics/UI/SDL/Types.hsc" #-}
		KeyboardEvent typ timestamp wid state repeat' keysym -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 536 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 537 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 538 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr state
{-# LINE 539 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr repeat'
{-# LINE 540 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr keysym
{-# LINE 541 "Graphics/UI/SDL/Types.hsc" #-}
		TextEditingEvent typ timestamp wid text start len -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 543 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 544 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 545 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr) text
{-# LINE 546 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 44)) ptr start
{-# LINE 547 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr len
{-# LINE 548 "Graphics/UI/SDL/Types.hsc" #-}
		TextInputEvent typ timestamp wid text -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 550 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 551 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 552 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr) text
{-# LINE 553 "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 555 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 556 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 557 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 558 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr state
{-# LINE 559 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr x
{-# LINE 560 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr y
{-# LINE 561 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr xrel
{-# LINE 562 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr yrel
{-# LINE 563 "Graphics/UI/SDL/Types.hsc" #-}
		MouseButtonEvent typ timestamp wid which button state x y -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 565 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 566 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 567 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 568 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr button
{-# LINE 569 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 17)) ptr state
{-# LINE 570 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr x
{-# LINE 571 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr y
{-# LINE 572 "Graphics/UI/SDL/Types.hsc" #-}
		MouseWheelEvent typ timestamp wid which x y -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 574 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 575 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 576 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 577 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr x
{-# LINE 578 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr y
{-# LINE 579 "Graphics/UI/SDL/Types.hsc" #-}
		JoyAxisEvent typ timestamp which axis value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 581 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 582 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 583 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr axis
{-# LINE 584 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr value
{-# LINE 585 "Graphics/UI/SDL/Types.hsc" #-}
		JoyBallEvent typ timestamp which ball xrel yrel -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 587 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 588 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 589 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr ball
{-# LINE 590 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr xrel
{-# LINE 591 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 18)) ptr yrel
{-# LINE 592 "Graphics/UI/SDL/Types.hsc" #-}
		JoyHatEvent typ timestamp which hat value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 594 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 595 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 596 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr hat
{-# LINE 597 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr value
{-# LINE 598 "Graphics/UI/SDL/Types.hsc" #-}
		JoyButtonEvent typ timestamp which button state -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 600 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 601 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 602 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button
{-# LINE 603 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr state
{-# LINE 604 "Graphics/UI/SDL/Types.hsc" #-}
		JoyDeviceEvent typ timestamp which -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 606 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 607 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 608 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerAxisEvent typ timestamp which axis value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 610 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 611 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 612 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr axis
{-# LINE 613 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr value
{-# LINE 614 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerButtonEvent typ timestamp which button state -> 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 button
{-# LINE 619 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr state
{-# LINE 620 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerDeviceEvent typ timestamp which -> 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" #-}
		QuitEvent typ timestamp -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 626 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 627 "Graphics/UI/SDL/Types.hsc" #-}
		UserEvent typ timestamp wid code data1 data2 -> 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 wid
{-# LINE 631 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr code
{-# LINE 632 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr data1
{-# LINE 633 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr data2
{-# LINE 634 "Graphics/UI/SDL/Types.hsc" #-}
		SysWMEvent typ timestamp msg -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 636 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 637 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr msg
{-# LINE 638 "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 640 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 641 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 642 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr fingerid
{-# LINE 643 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr x
{-# LINE 644 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr y
{-# LINE 645 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr dx
{-# LINE 646 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr dy
{-# LINE 647 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr pressure
{-# LINE 648 "Graphics/UI/SDL/Types.hsc" #-}
		MultiGestureEvent typ timestamp touchid dtheta ddist x y numfingers -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 650 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 651 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 652 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr dtheta
{-# LINE 653 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr ddist
{-# LINE 654 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr x
{-# LINE 655 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr y
{-# LINE 656 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr numfingers
{-# LINE 657 "Graphics/UI/SDL/Types.hsc" #-}
		DollarGestureEvent typ timestamp touchid gestureid numfingers err x y -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 659 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 660 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 661 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr gestureid
{-# LINE 662 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr numfingers
{-# LINE 663 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr err
{-# LINE 664 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr x
{-# LINE 665 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr y
{-# LINE 666 "Graphics/UI/SDL/Types.hsc" #-}
		DropEvent typ timestamp file -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 668 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 669 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr file
{-# LINE 670 "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 680 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		fingerId <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 683 "Graphics/UI/SDL/Types.hsc" #-}
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 684 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 685 "Graphics/UI/SDL/Types.hsc" #-}
		pressure <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 686 "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 689 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr x
{-# LINE 690 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr y
{-# LINE 691 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr pressure
{-# LINE 692 "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 707 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		bind_type <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 710 "Graphics/UI/SDL/Types.hsc" #-}
		case bind_type :: (Word32) of
{-# LINE 711 "Graphics/UI/SDL/Types.hsc" #-}
			(0) -> do
{-# LINE 712 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindNone
			(1) -> do
{-# LINE 714 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 715 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindButton button
			(2) -> do
{-# LINE 717 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 718 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindAxis axis
			(3) -> do
{-# LINE 720 "Graphics/UI/SDL/Types.hsc" #-}
				hat <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 721 "Graphics/UI/SDL/Types.hsc" #-}
				hat_mask <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 722 "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 727 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindButton button -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((1) :: (Word32))
{-# LINE 729 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr button
{-# LINE 730 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindAxis axis -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((2) :: (Word32))
{-# LINE 732 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr axis
{-# LINE 733 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindHat hat hat_mask -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((3) :: (Word32))
{-# LINE 735 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr hat
{-# LINE 736 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr hat_mask
{-# LINE 737 "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 747 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 750 "Graphics/UI/SDL/Types.hsc" #-}
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 751 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 752 "Graphics/UI/SDL/Types.hsc" #-}
		z <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 753 "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 756 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr x
{-# LINE 757 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr y
{-# LINE 758 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr z
{-# LINE 759 "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 841 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 844 "Graphics/UI/SDL/Types.hsc" #-}
		case typ of
			(1) -> do
{-# LINE 846 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 847 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 848 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 849 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 850 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 851 "Graphics/UI/SDL/Types.hsc" #-}
				level <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 852 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 853 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 854 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 855 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 856 "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 859 "Graphics/UI/SDL/Types.hsc" #-}
			(8) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 860 "Graphics/UI/SDL/Types.hsc" #-}
			(16) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 861 "Graphics/UI/SDL/Types.hsc" #-}
			(32) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 862 "Graphics/UI/SDL/Types.hsc" #-}

			(64) -> do
{-# LINE 864 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 865 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 866 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 867 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 868 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 869 "Graphics/UI/SDL/Types.hsc" #-}
				start <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 870 "Graphics/UI/SDL/Types.hsc" #-}
				end <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 871 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 872 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 873 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 874 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 875 "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 878 "Graphics/UI/SDL/Types.hsc" #-}
			(256) -> hapticcondition $ HapticCondition typ
{-# LINE 879 "Graphics/UI/SDL/Types.hsc" #-}
			(512) -> hapticcondition $ HapticCondition typ
{-# LINE 880 "Graphics/UI/SDL/Types.hsc" #-}
			(1024) -> hapticcondition $ HapticCondition typ
{-# LINE 881 "Graphics/UI/SDL/Types.hsc" #-}

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

			(2048) -> do
{-# LINE 889 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 890 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 891 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 892 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 893 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 894 "Graphics/UI/SDL/Types.hsc" #-}
				channels <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 895 "Graphics/UI/SDL/Types.hsc" #-}
				period <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 896 "Graphics/UI/SDL/Types.hsc" #-}
				samples <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 897 "Graphics/UI/SDL/Types.hsc" #-}
				datum <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 898 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 899 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 50)) ptr
{-# LINE 900 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 52)) ptr
{-# LINE 901 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 54)) ptr
{-# LINE 902 "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 907 "Graphics/UI/SDL/Types.hsc" #-}
			len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 908 "Graphics/UI/SDL/Types.hsc" #-}
			delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 909 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 910 "Graphics/UI/SDL/Types.hsc" #-}
			interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 911 "Graphics/UI/SDL/Types.hsc" #-}
			period <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 912 "Graphics/UI/SDL/Types.hsc" #-}
			magnitude <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 913 "Graphics/UI/SDL/Types.hsc" #-}
			offset <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 914 "Graphics/UI/SDL/Types.hsc" #-}
			phase <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 915 "Graphics/UI/SDL/Types.hsc" #-}
			attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 916 "Graphics/UI/SDL/Types.hsc" #-}
			attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 917 "Graphics/UI/SDL/Types.hsc" #-}
			fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 42)) ptr
{-# LINE 918 "Graphics/UI/SDL/Types.hsc" #-}
			fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 44)) ptr
{-# LINE 919 "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 923 "Graphics/UI/SDL/Types.hsc" #-}
			delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 924 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 925 "Graphics/UI/SDL/Types.hsc" #-}
			interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 926 "Graphics/UI/SDL/Types.hsc" #-}
			right_sat <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 30)) ptr
{-# LINE 927 "Graphics/UI/SDL/Types.hsc" #-}
			left_sat <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 36)) ptr
{-# LINE 928 "Graphics/UI/SDL/Types.hsc" #-}
			right_coeff <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 42)) ptr
{-# LINE 929 "Graphics/UI/SDL/Types.hsc" #-}
			left_coeff <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 48)) ptr
{-# LINE 930 "Graphics/UI/SDL/Types.hsc" #-}
			deadband <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 54)) ptr
{-# LINE 931 "Graphics/UI/SDL/Types.hsc" #-}
			center <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 60)) ptr
{-# LINE 932 "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 936 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 937 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 938 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 939 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 940 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 941 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr level
{-# LINE 942 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr attack_length
{-# LINE 943 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr attack_level
{-# LINE 944 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr fade_length
{-# LINE 945 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 38)) ptr fade_level
{-# LINE 946 "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 948 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 949 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 950 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 951 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 952 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 953 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr period
{-# LINE 954 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr magnitude
{-# LINE 955 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr offset
{-# LINE 956 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr phase
{-# LINE 957 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 38)) ptr attack_length
{-# LINE 958 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr attack_level
{-# LINE 959 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 42)) ptr fade_length
{-# LINE 960 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 44)) ptr fade_level
{-# LINE 961 "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 963 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 964 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 965 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 966 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 967 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 30)) ptr) right_sat
{-# LINE 968 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 36)) ptr) left_sat
{-# LINE 969 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 42)) ptr) right_coeff
{-# LINE 970 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 48)) ptr) left_coeff
{-# LINE 971 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 54)) ptr) deadband
{-# LINE 972 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 60)) ptr) center
{-# LINE 973 "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 975 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 976 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 977 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 978 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 979 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 980 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr start
{-# LINE 981 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr end
{-# LINE 982 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr attack_length
{-# LINE 983 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr attack_level
{-# LINE 984 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 38)) ptr fade_length
{-# LINE 985 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr fade_level
{-# LINE 986 "Graphics/UI/SDL/Types.hsc" #-}
		HapticLeftRight typ len large_magnitude small_magnitude -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 988 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr len
{-# LINE 989 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr large_magnitude
{-# LINE 990 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 10)) ptr small_magnitude
{-# LINE 991 "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 993 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 994 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 995 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 996 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 997 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 998 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr channels
{-# LINE 999 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr period
{-# LINE 1000 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr samples
{-# LINE 1001 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr datum
{-# LINE 1002 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr attack_length
{-# LINE 1003 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 50)) ptr attack_level
{-# LINE 1004 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 52)) ptr fade_length
{-# LINE 1005 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 54)) ptr fade_level
{-# LINE 1006 "Graphics/UI/SDL/Types.hsc" #-}

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

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

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

instance Storable Keysym where
	sizeOf _ = ((16))
{-# LINE 1028 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		scancode <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1031 "Graphics/UI/SDL/Types.hsc" #-}
		sym <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1032 "Graphics/UI/SDL/Types.hsc" #-}
		mod' <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1033 "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 1036 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr sym
{-# LINE 1037 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr mod'
{-# LINE 1038 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable MessageBoxButtonData where
	sizeOf _ = ((16))
{-# LINE 1047 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		flags <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1050 "Graphics/UI/SDL/Types.hsc" #-}
		buttonid <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1051 "Graphics/UI/SDL/Types.hsc" #-}
		text <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1052 "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 1055 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr buttonid
{-# LINE 1056 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr text
{-# LINE 1057 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable MessageBoxColor where
	sizeOf _ = ((3))
{-# LINE 1066 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		r <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1069 "Graphics/UI/SDL/Types.hsc" #-}
		g <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 1070 "Graphics/UI/SDL/Types.hsc" #-}
		b <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 1071 "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 1074 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr g
{-# LINE 1075 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr b
{-# LINE 1076 "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 1087 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		background <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1090 "Graphics/UI/SDL/Types.hsc" #-}
		text <- ((\hsc_ptr -> peekByteOff hsc_ptr 3)) ptr
{-# LINE 1091 "Graphics/UI/SDL/Types.hsc" #-}
		button_border <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 1092 "Graphics/UI/SDL/Types.hsc" #-}
		button_background <- ((\hsc_ptr -> peekByteOff hsc_ptr 9)) ptr
{-# LINE 1093 "Graphics/UI/SDL/Types.hsc" #-}
		button_selected <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 1094 "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 1097 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 3)) ptr text
{-# LINE 1098 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr button_border
{-# LINE 1099 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 9)) ptr button_background
{-# LINE 1100 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button_selected
{-# LINE 1101 "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 1114 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		flags <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1117 "Graphics/UI/SDL/Types.hsc" #-}
		window <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1118 "Graphics/UI/SDL/Types.hsc" #-}
		title <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1119 "Graphics/UI/SDL/Types.hsc" #-}
		message <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 1120 "Graphics/UI/SDL/Types.hsc" #-}
		numbuttons <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1121 "Graphics/UI/SDL/Types.hsc" #-}
		buttons <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 1122 "Graphics/UI/SDL/Types.hsc" #-}
		color_scheme <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 1123 "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 1126 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr window
{-# LINE 1127 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr title
{-# LINE 1128 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr message
{-# LINE 1129 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr numbuttons
{-# LINE 1130 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr buttons
{-# LINE 1131 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr color_scheme
{-# LINE 1132 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable Palette where
	sizeOf _ = ((24))
{-# LINE 1140 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		ncolors <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1143 "Graphics/UI/SDL/Types.hsc" #-}
		colors <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1144 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Palette ncolors colors
	poke ptr (Palette ncolors colors) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ncolors
{-# LINE 1147 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr colors
{-# LINE 1148 "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 1162 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1165 "Graphics/UI/SDL/Types.hsc" #-}
		palette <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1166 "Graphics/UI/SDL/Types.hsc" #-}
		bits_per_pixel <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1167 "Graphics/UI/SDL/Types.hsc" #-}
		bytes_per_pixel <- ((\hsc_ptr -> peekByteOff hsc_ptr 17)) ptr
{-# LINE 1168 "Graphics/UI/SDL/Types.hsc" #-}
		rmask <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 1169 "Graphics/UI/SDL/Types.hsc" #-}
		gmask <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 1170 "Graphics/UI/SDL/Types.hsc" #-}
		bmask <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 1171 "Graphics/UI/SDL/Types.hsc" #-}
		amask <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1172 "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 1175 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr palette
{-# LINE 1176 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr bits_per_pixel
{-# LINE 1177 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 17)) ptr bytes_per_pixel
{-# LINE 1178 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr rmask
{-# LINE 1179 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr gmask
{-# LINE 1180 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr bmask
{-# LINE 1181 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr amask
{-# LINE 1182 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable Point where
	sizeOf _ = ((8))
{-# LINE 1190 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1193 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1194 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Point x y
	poke ptr (Point x y) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr x
{-# LINE 1197 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr y
{-# LINE 1198 "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 1208 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1211 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1212 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1213 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 1214 "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 1217 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr y
{-# LINE 1218 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr w
{-# LINE 1219 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr h
{-# LINE 1220 "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 1232 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		name <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1235 "Graphics/UI/SDL/Types.hsc" #-}
		flags <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1236 "Graphics/UI/SDL/Types.hsc" #-}
		num_texture_formats <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 1237 "Graphics/UI/SDL/Types.hsc" #-}
		texture_formats <- peekArray 16 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 16)) ptr
{-# LINE 1238 "Graphics/UI/SDL/Types.hsc" #-}
		max_texture_width <- ((\hsc_ptr -> peekByteOff hsc_ptr 80)) ptr
{-# LINE 1239 "Graphics/UI/SDL/Types.hsc" #-}
		max_texture_height <- ((\hsc_ptr -> peekByteOff hsc_ptr 84)) ptr
{-# LINE 1240 "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 1243 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr flags
{-# LINE 1244 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr num_texture_formats
{-# LINE 1245 "Graphics/UI/SDL/Types.hsc" #-}
		pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 16)) ptr) texture_formats
{-# LINE 1246 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 80)) ptr max_texture_width
{-# LINE 1247 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 84)) ptr max_texture_height
{-# LINE 1248 "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 1260 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		size <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1263 "Graphics/UI/SDL/Types.hsc" #-}
		seek <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1264 "Graphics/UI/SDL/Types.hsc" #-}
		read' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1265 "Graphics/UI/SDL/Types.hsc" #-}
		write <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 1266 "Graphics/UI/SDL/Types.hsc" #-}
		close <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1267 "Graphics/UI/SDL/Types.hsc" #-}
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 1268 "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 1271 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr seek
{-# LINE 1272 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr read'
{-# LINE 1273 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr write
{-# LINE 1274 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr close
{-# LINE 1275 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr typ
{-# LINE 1276 "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 1289 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1292 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1293 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 1294 "Graphics/UI/SDL/Types.hsc" #-}
		pixels <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1295 "Graphics/UI/SDL/Types.hsc" #-}
		userdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 1296 "Graphics/UI/SDL/Types.hsc" #-}
		cliprect <- ((\hsc_ptr -> peekByteOff hsc_ptr 64)) ptr
{-# LINE 1297 "Graphics/UI/SDL/Types.hsc" #-}
		refcount <- ((\hsc_ptr -> peekByteOff hsc_ptr 88)) ptr
{-# LINE 1298 "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 1301 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr w
{-# LINE 1302 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr h
{-# LINE 1303 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr pixels
{-# LINE 1304 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr userdata
{-# LINE 1305 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 64)) ptr cliprect
{-# LINE 1306 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 88)) ptr refcount
{-# LINE 1307 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable Version where
	sizeOf _ = ((3))
{-# LINE 1316 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		major <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1319 "Graphics/UI/SDL/Types.hsc" #-}
		minor <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 1320 "Graphics/UI/SDL/Types.hsc" #-}
		patch <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 1321 "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 1324 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr minor
{-# LINE 1325 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr patch
{-# LINE 1326 "Graphics/UI/SDL/Types.hsc" #-}