{-# 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 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 110 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		value <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 113 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Atomic value
	poke ptr (Atomic value) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr value
{-# LINE 116 "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 131 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		needed <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 134 "Graphics/UI/SDL/Types.hsc" #-}
		src_format <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 135 "Graphics/UI/SDL/Types.hsc" #-}
		dst_format <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 136 "Graphics/UI/SDL/Types.hsc" #-}
		rate_incr <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 137 "Graphics/UI/SDL/Types.hsc" #-}
		buf <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 138 "Graphics/UI/SDL/Types.hsc" #-}
		len <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 139 "Graphics/UI/SDL/Types.hsc" #-}
		len_cvt <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 140 "Graphics/UI/SDL/Types.hsc" #-}
		len_mult <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 141 "Graphics/UI/SDL/Types.hsc" #-}
		len_ratio <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 142 "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 145 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr src_format
{-# LINE 146 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr dst_format
{-# LINE 147 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr rate_incr
{-# LINE 148 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr buf
{-# LINE 149 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr len
{-# LINE 150 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr len_cvt
{-# LINE 151 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr len_mult
{-# LINE 152 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr len_ratio
{-# LINE 153 "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 167 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		freq <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 170 "Graphics/UI/SDL/Types.hsc" #-}
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 171 "Graphics/UI/SDL/Types.hsc" #-}
		channels <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 172 "Graphics/UI/SDL/Types.hsc" #-}
		silence <- ((\hsc_ptr -> peekByteOff hsc_ptr 7)) ptr
{-# LINE 173 "Graphics/UI/SDL/Types.hsc" #-}
		samples <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 174 "Graphics/UI/SDL/Types.hsc" #-}
		size <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 175 "Graphics/UI/SDL/Types.hsc" #-}
		callback <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 176 "Graphics/UI/SDL/Types.hsc" #-}
		userdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 177 "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 180 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr format
{-# LINE 181 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr channels
{-# LINE 182 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 7)) ptr silence
{-# LINE 183 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr samples
{-# LINE 184 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr size
{-# LINE 185 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr callback
{-# LINE 186 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr userdata
{-# LINE 187 "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 197 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		r <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 200 "Graphics/UI/SDL/Types.hsc" #-}
		g <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 201 "Graphics/UI/SDL/Types.hsc" #-}
		b <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 202 "Graphics/UI/SDL/Types.hsc" #-}
		a <- ((\hsc_ptr -> peekByteOff hsc_ptr 3)) ptr
{-# LINE 203 "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 206 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr g
{-# LINE 207 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr b
{-# LINE 208 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 3)) ptr a
{-# LINE 209 "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 220 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 223 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 224 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 225 "Graphics/UI/SDL/Types.hsc" #-}
		refresh_rate <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 226 "Graphics/UI/SDL/Types.hsc" #-}
		driverdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 227 "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 230 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr w
{-# LINE 231 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr h
{-# LINE 232 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr refresh_rate
{-# LINE 233 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr driverdata
{-# LINE 234 "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
           }
           | ClipboardUpdateEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           }
           | UnknownEvent {
             eventType :: Word32
           , eventTimestamp :: Word32
           }
           deriving (Eq, Show)

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

		mouse f = do
			wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 523 "Graphics/UI/SDL/Types.hsc" #-}
			which <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 524 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 525 "Graphics/UI/SDL/Types.hsc" #-}
			state <- ((\hsc_ptr -> peekByteOff hsc_ptr 17)) ptr
{-# LINE 526 "Graphics/UI/SDL/Types.hsc" #-}
			clicks <- ((\hsc_ptr -> peekByteOff hsc_ptr 18)) ptr
{-# LINE 527 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 528 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 529 "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 533 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 534 "Graphics/UI/SDL/Types.hsc" #-}
			state <- ((\hsc_ptr -> peekByteOff hsc_ptr 13)) ptr
{-# LINE 535 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f which button state

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

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

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

		finger f = do
			touchId <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 553 "Graphics/UI/SDL/Types.hsc" #-}
			fingerId <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 554 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 555 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 556 "Graphics/UI/SDL/Types.hsc" #-}
			dx <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 557 "Graphics/UI/SDL/Types.hsc" #-}
			dy <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 558 "Graphics/UI/SDL/Types.hsc" #-}
			pressure <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 559 "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 563 "Graphics/UI/SDL/Types.hsc" #-}
			gestureId <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 564 "Graphics/UI/SDL/Types.hsc" #-}
			numFingers <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 565 "Graphics/UI/SDL/Types.hsc" #-}
			err <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 566 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 567 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 568 "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 572 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 573 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 574 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr event
{-# LINE 575 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr data1
{-# LINE 576 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr data2
{-# LINE 577 "Graphics/UI/SDL/Types.hsc" #-}
		KeyboardEvent typ timestamp wid state repeat' keysym -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 579 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 580 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 581 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr state
{-# LINE 582 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr repeat'
{-# LINE 583 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr keysym
{-# LINE 584 "Graphics/UI/SDL/Types.hsc" #-}
		TextEditingEvent typ timestamp wid text start len -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 586 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 587 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 588 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr) text
{-# LINE 589 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 44)) ptr start
{-# LINE 590 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr len
{-# LINE 591 "Graphics/UI/SDL/Types.hsc" #-}
		TextInputEvent typ timestamp wid text -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 593 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 594 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 595 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr) text
{-# LINE 596 "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 598 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 599 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 600 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 601 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr state
{-# LINE 602 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr x
{-# LINE 603 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr y
{-# LINE 604 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr xrel
{-# LINE 605 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr yrel
{-# LINE 606 "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 608 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 609 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 610 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 611 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr button
{-# LINE 612 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 17)) ptr state
{-# LINE 613 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 18)) ptr clicks
{-# LINE 614 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr x
{-# LINE 615 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr y
{-# LINE 616 "Graphics/UI/SDL/Types.hsc" #-}
		MouseWheelEvent typ timestamp wid which x y -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 618 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 619 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 620 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 621 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr x
{-# LINE 622 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr y
{-# LINE 623 "Graphics/UI/SDL/Types.hsc" #-}
		JoyAxisEvent typ timestamp which axis value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 625 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 626 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 627 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr axis
{-# LINE 628 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr value
{-# LINE 629 "Graphics/UI/SDL/Types.hsc" #-}
		JoyBallEvent typ timestamp which ball xrel yrel -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 631 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 632 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 633 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr ball
{-# LINE 634 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr xrel
{-# LINE 635 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 18)) ptr yrel
{-# LINE 636 "Graphics/UI/SDL/Types.hsc" #-}
		JoyHatEvent typ timestamp which hat value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 638 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 639 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 640 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr hat
{-# LINE 641 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr value
{-# LINE 642 "Graphics/UI/SDL/Types.hsc" #-}
		JoyButtonEvent typ timestamp which button state -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 644 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 645 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 646 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button
{-# LINE 647 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr state
{-# LINE 648 "Graphics/UI/SDL/Types.hsc" #-}
		JoyDeviceEvent typ timestamp which -> 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 which
{-# LINE 652 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerAxisEvent typ timestamp which axis value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 654 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 655 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 656 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr axis
{-# LINE 657 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr value
{-# LINE 658 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerButtonEvent typ timestamp which button state -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 660 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 661 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 662 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button
{-# LINE 663 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr state
{-# LINE 664 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerDeviceEvent typ timestamp which -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 666 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 667 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 668 "Graphics/UI/SDL/Types.hsc" #-}
		QuitEvent typ timestamp -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 670 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 671 "Graphics/UI/SDL/Types.hsc" #-}
		UserEvent typ timestamp wid code data1 data2 -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 673 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 674 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 675 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr code
{-# LINE 676 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr data1
{-# LINE 677 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr data2
{-# LINE 678 "Graphics/UI/SDL/Types.hsc" #-}
		SysWMEvent typ timestamp msg -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 680 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 681 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr msg
{-# LINE 682 "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 684 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 685 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 686 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr fingerid
{-# LINE 687 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr x
{-# LINE 688 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr y
{-# LINE 689 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr dx
{-# LINE 690 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr dy
{-# LINE 691 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr pressure
{-# LINE 692 "Graphics/UI/SDL/Types.hsc" #-}
		MultiGestureEvent typ timestamp touchid dtheta ddist x y numfingers -> 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 dtheta
{-# LINE 697 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr ddist
{-# LINE 698 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr x
{-# LINE 699 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr y
{-# LINE 700 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr numfingers
{-# LINE 701 "Graphics/UI/SDL/Types.hsc" #-}
		DollarGestureEvent typ timestamp touchid gestureid numfingers err x y -> 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 touchid
{-# LINE 705 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr gestureid
{-# LINE 706 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr numfingers
{-# LINE 707 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr err
{-# LINE 708 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr x
{-# LINE 709 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr y
{-# LINE 710 "Graphics/UI/SDL/Types.hsc" #-}
		ClipboardUpdateEvent typ timestamp -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 712 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 713 "Graphics/UI/SDL/Types.hsc" #-}
		DropEvent typ timestamp file -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 715 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 716 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr file
{-# LINE 717 "Graphics/UI/SDL/Types.hsc" #-}
		UnknownEvent typ timestamp -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 719 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 720 "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 730 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		fingerId <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 733 "Graphics/UI/SDL/Types.hsc" #-}
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 734 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 735 "Graphics/UI/SDL/Types.hsc" #-}
		pressure <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 736 "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 739 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr x
{-# LINE 740 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr y
{-# LINE 741 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr pressure
{-# LINE 742 "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 757 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		bind_type <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 760 "Graphics/UI/SDL/Types.hsc" #-}
		case bind_type :: (Word32) of
{-# LINE 761 "Graphics/UI/SDL/Types.hsc" #-}
			(0) -> do
{-# LINE 762 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindNone
			(1) -> do
{-# LINE 764 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 765 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindButton button
			(2) -> do
{-# LINE 767 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 768 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindAxis axis
			(3) -> do
{-# LINE 770 "Graphics/UI/SDL/Types.hsc" #-}
				hat <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 771 "Graphics/UI/SDL/Types.hsc" #-}
				hat_mask <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 772 "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 777 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindButton button -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((1) :: (Word32))
{-# LINE 779 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr button
{-# LINE 780 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindAxis axis -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((2) :: (Word32))
{-# LINE 782 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr axis
{-# LINE 783 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindHat hat hat_mask -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((3) :: (Word32))
{-# LINE 785 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr hat
{-# LINE 786 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr hat_mask
{-# LINE 787 "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 797 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 800 "Graphics/UI/SDL/Types.hsc" #-}
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 801 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 802 "Graphics/UI/SDL/Types.hsc" #-}
		z <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 803 "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 806 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr x
{-# LINE 807 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr y
{-# LINE 808 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr z
{-# LINE 809 "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 891 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 894 "Graphics/UI/SDL/Types.hsc" #-}
		case typ of
			(1) -> do
{-# LINE 896 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 897 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 898 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 899 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 900 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 901 "Graphics/UI/SDL/Types.hsc" #-}
				level <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 902 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 903 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 904 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 905 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 906 "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 909 "Graphics/UI/SDL/Types.hsc" #-}
			(8) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 910 "Graphics/UI/SDL/Types.hsc" #-}
			(16) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 911 "Graphics/UI/SDL/Types.hsc" #-}
			(32) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 912 "Graphics/UI/SDL/Types.hsc" #-}

			(64) -> do
{-# LINE 914 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 915 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 916 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 917 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 918 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 919 "Graphics/UI/SDL/Types.hsc" #-}
				start <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 920 "Graphics/UI/SDL/Types.hsc" #-}
				end <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 921 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 922 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 923 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 924 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 925 "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 928 "Graphics/UI/SDL/Types.hsc" #-}
			(256) -> hapticcondition $ HapticCondition typ
{-# LINE 929 "Graphics/UI/SDL/Types.hsc" #-}
			(512) -> hapticcondition $ HapticCondition typ
{-# LINE 930 "Graphics/UI/SDL/Types.hsc" #-}
			(1024) -> hapticcondition $ HapticCondition typ
{-# LINE 931 "Graphics/UI/SDL/Types.hsc" #-}

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

			(2048) -> do
{-# LINE 939 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 940 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 941 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 942 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 943 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 944 "Graphics/UI/SDL/Types.hsc" #-}
				channels <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 945 "Graphics/UI/SDL/Types.hsc" #-}
				period <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 946 "Graphics/UI/SDL/Types.hsc" #-}
				samples <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 947 "Graphics/UI/SDL/Types.hsc" #-}
				datum <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 948 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 949 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 50)) ptr
{-# LINE 950 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 52)) ptr
{-# LINE 951 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 54)) ptr
{-# LINE 952 "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 957 "Graphics/UI/SDL/Types.hsc" #-}
			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" #-}
			period <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 962 "Graphics/UI/SDL/Types.hsc" #-}
			magnitude <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 963 "Graphics/UI/SDL/Types.hsc" #-}
			offset <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 964 "Graphics/UI/SDL/Types.hsc" #-}
			phase <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 965 "Graphics/UI/SDL/Types.hsc" #-}
			attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 966 "Graphics/UI/SDL/Types.hsc" #-}
			attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 967 "Graphics/UI/SDL/Types.hsc" #-}
			fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 42)) ptr
{-# LINE 968 "Graphics/UI/SDL/Types.hsc" #-}
			fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 44)) ptr
{-# LINE 969 "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 973 "Graphics/UI/SDL/Types.hsc" #-}
			delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 974 "Graphics/UI/SDL/Types.hsc" #-}
			button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 975 "Graphics/UI/SDL/Types.hsc" #-}
			interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 976 "Graphics/UI/SDL/Types.hsc" #-}
			right_sat <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 30)) ptr
{-# LINE 977 "Graphics/UI/SDL/Types.hsc" #-}
			left_sat <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 36)) ptr
{-# LINE 978 "Graphics/UI/SDL/Types.hsc" #-}
			right_coeff <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 42)) ptr
{-# LINE 979 "Graphics/UI/SDL/Types.hsc" #-}
			left_coeff <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 48)) ptr
{-# LINE 980 "Graphics/UI/SDL/Types.hsc" #-}
			deadband <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 54)) ptr
{-# LINE 981 "Graphics/UI/SDL/Types.hsc" #-}
			center <- peekArray 3 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 60)) ptr
{-# LINE 982 "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 986 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 987 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 988 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 989 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 990 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 991 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr level
{-# LINE 992 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr attack_length
{-# LINE 993 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr attack_level
{-# LINE 994 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr fade_length
{-# LINE 995 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 38)) ptr fade_level
{-# LINE 996 "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 998 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 999 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 1000 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 1001 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 1002 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 1003 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr period
{-# LINE 1004 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr magnitude
{-# LINE 1005 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr offset
{-# LINE 1006 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr phase
{-# LINE 1007 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 38)) ptr attack_length
{-# LINE 1008 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr attack_level
{-# LINE 1009 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 42)) ptr fade_length
{-# LINE 1010 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 44)) ptr fade_level
{-# LINE 1011 "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 1013 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 1014 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 1015 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 1016 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 1017 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 30)) ptr) right_sat
{-# LINE 1018 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 36)) ptr) left_sat
{-# LINE 1019 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 42)) ptr) right_coeff
{-# LINE 1020 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 48)) ptr) left_coeff
{-# LINE 1021 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 54)) ptr) deadband
{-# LINE 1022 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 60)) ptr) center
{-# LINE 1023 "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 1025 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 1026 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 1027 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 1028 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 1029 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 1030 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr start
{-# LINE 1031 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr end
{-# LINE 1032 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr attack_length
{-# LINE 1033 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr attack_level
{-# LINE 1034 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 38)) ptr fade_length
{-# LINE 1035 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr fade_level
{-# LINE 1036 "Graphics/UI/SDL/Types.hsc" #-}
		HapticLeftRight typ len large_magnitude small_magnitude -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 1038 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr len
{-# LINE 1039 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr large_magnitude
{-# LINE 1040 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 10)) ptr small_magnitude
{-# LINE 1041 "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 1043 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr direction
{-# LINE 1044 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr len
{-# LINE 1045 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr delay
{-# LINE 1046 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr button
{-# LINE 1047 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr interval
{-# LINE 1048 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 30)) ptr channels
{-# LINE 1049 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr period
{-# LINE 1050 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 34)) ptr samples
{-# LINE 1051 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr datum
{-# LINE 1052 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr attack_length
{-# LINE 1053 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 50)) ptr attack_level
{-# LINE 1054 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 52)) ptr fade_length
{-# LINE 1055 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 54)) ptr fade_level
{-# LINE 1056 "Graphics/UI/SDL/Types.hsc" #-}

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

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

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

instance Storable Keysym where
	sizeOf _ = ((16))
{-# LINE 1078 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		scancode <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1081 "Graphics/UI/SDL/Types.hsc" #-}
		sym <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1082 "Graphics/UI/SDL/Types.hsc" #-}
		mod' <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1083 "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 1086 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr sym
{-# LINE 1087 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr mod'
{-# LINE 1088 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable MessageBoxButtonData where
	sizeOf _ = ((16))
{-# LINE 1097 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		flags <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1100 "Graphics/UI/SDL/Types.hsc" #-}
		buttonid <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1101 "Graphics/UI/SDL/Types.hsc" #-}
		text <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1102 "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 1105 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr buttonid
{-# LINE 1106 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr text
{-# LINE 1107 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable MessageBoxColor where
	sizeOf _ = ((3))
{-# LINE 1116 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		r <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1119 "Graphics/UI/SDL/Types.hsc" #-}
		g <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 1120 "Graphics/UI/SDL/Types.hsc" #-}
		b <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 1121 "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 1124 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr g
{-# LINE 1125 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr b
{-# LINE 1126 "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 1137 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		background <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1140 "Graphics/UI/SDL/Types.hsc" #-}
		text <- ((\hsc_ptr -> peekByteOff hsc_ptr 3)) ptr
{-# LINE 1141 "Graphics/UI/SDL/Types.hsc" #-}
		button_border <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 1142 "Graphics/UI/SDL/Types.hsc" #-}
		button_background <- ((\hsc_ptr -> peekByteOff hsc_ptr 9)) ptr
{-# LINE 1143 "Graphics/UI/SDL/Types.hsc" #-}
		button_selected <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 1144 "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 1147 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 3)) ptr text
{-# LINE 1148 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr button_border
{-# LINE 1149 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 9)) ptr button_background
{-# LINE 1150 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button_selected
{-# LINE 1151 "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 1164 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		flags <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1167 "Graphics/UI/SDL/Types.hsc" #-}
		window <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1168 "Graphics/UI/SDL/Types.hsc" #-}
		title <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1169 "Graphics/UI/SDL/Types.hsc" #-}
		message <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 1170 "Graphics/UI/SDL/Types.hsc" #-}
		numbuttons <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1171 "Graphics/UI/SDL/Types.hsc" #-}
		buttons <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 1172 "Graphics/UI/SDL/Types.hsc" #-}
		color_scheme <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 1173 "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 1176 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr window
{-# LINE 1177 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr title
{-# LINE 1178 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr message
{-# LINE 1179 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr numbuttons
{-# LINE 1180 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr buttons
{-# LINE 1181 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr color_scheme
{-# LINE 1182 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable Palette where
	sizeOf _ = ((24))
{-# LINE 1190 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		ncolors <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1193 "Graphics/UI/SDL/Types.hsc" #-}
		colors <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1194 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Palette ncolors colors
	poke ptr (Palette ncolors colors) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ncolors
{-# LINE 1197 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr colors
{-# LINE 1198 "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 1212 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1215 "Graphics/UI/SDL/Types.hsc" #-}
		palette <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1216 "Graphics/UI/SDL/Types.hsc" #-}
		bits_per_pixel <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1217 "Graphics/UI/SDL/Types.hsc" #-}
		bytes_per_pixel <- ((\hsc_ptr -> peekByteOff hsc_ptr 17)) ptr
{-# LINE 1218 "Graphics/UI/SDL/Types.hsc" #-}
		rmask <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 1219 "Graphics/UI/SDL/Types.hsc" #-}
		gmask <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 1220 "Graphics/UI/SDL/Types.hsc" #-}
		bmask <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 1221 "Graphics/UI/SDL/Types.hsc" #-}
		amask <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1222 "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 1225 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr palette
{-# LINE 1226 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr bits_per_pixel
{-# LINE 1227 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 17)) ptr bytes_per_pixel
{-# LINE 1228 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr rmask
{-# LINE 1229 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr gmask
{-# LINE 1230 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr bmask
{-# LINE 1231 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr amask
{-# LINE 1232 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable Point where
	sizeOf _ = ((8))
{-# LINE 1240 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1243 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1244 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Point x y
	poke ptr (Point x y) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr x
{-# LINE 1247 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr y
{-# LINE 1248 "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 1258 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1261 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 1262 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1263 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 1264 "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 1267 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr y
{-# LINE 1268 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr w
{-# LINE 1269 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr h
{-# LINE 1270 "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 1282 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		name <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1285 "Graphics/UI/SDL/Types.hsc" #-}
		flags <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1286 "Graphics/UI/SDL/Types.hsc" #-}
		num_texture_formats <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 1287 "Graphics/UI/SDL/Types.hsc" #-}
		texture_formats <- peekArray 16 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 16)) ptr
{-# LINE 1288 "Graphics/UI/SDL/Types.hsc" #-}
		max_texture_width <- ((\hsc_ptr -> peekByteOff hsc_ptr 80)) ptr
{-# LINE 1289 "Graphics/UI/SDL/Types.hsc" #-}
		max_texture_height <- ((\hsc_ptr -> peekByteOff hsc_ptr 84)) ptr
{-# LINE 1290 "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 1293 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr flags
{-# LINE 1294 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr num_texture_formats
{-# LINE 1295 "Graphics/UI/SDL/Types.hsc" #-}
		pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 16)) ptr) texture_formats
{-# LINE 1296 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 80)) ptr max_texture_width
{-# LINE 1297 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 84)) ptr max_texture_height
{-# LINE 1298 "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 1310 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		size <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1313 "Graphics/UI/SDL/Types.hsc" #-}
		seek <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1314 "Graphics/UI/SDL/Types.hsc" #-}
		read' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1315 "Graphics/UI/SDL/Types.hsc" #-}
		write <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 1316 "Graphics/UI/SDL/Types.hsc" #-}
		close <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1317 "Graphics/UI/SDL/Types.hsc" #-}
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 1318 "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 1321 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr seek
{-# LINE 1322 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr read'
{-# LINE 1323 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr write
{-# LINE 1324 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr close
{-# LINE 1325 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr typ
{-# LINE 1326 "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 1339 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 1342 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 1343 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 1344 "Graphics/UI/SDL/Types.hsc" #-}
		pixels <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 1345 "Graphics/UI/SDL/Types.hsc" #-}
		userdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 1346 "Graphics/UI/SDL/Types.hsc" #-}
		cliprect <- ((\hsc_ptr -> peekByteOff hsc_ptr 64)) ptr
{-# LINE 1347 "Graphics/UI/SDL/Types.hsc" #-}
		refcount <- ((\hsc_ptr -> peekByteOff hsc_ptr 88)) ptr
{-# LINE 1348 "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 1351 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr w
{-# LINE 1352 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr h
{-# LINE 1353 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr pixels
{-# LINE 1354 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr userdata
{-# LINE 1355 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 64)) ptr cliprect
{-# LINE 1356 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 88)) ptr refcount
{-# LINE 1357 "Graphics/UI/SDL/Types.hsc" #-}

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

instance Storable Version where
	sizeOf _ = ((3))
{-# LINE 1366 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		major <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 1369 "Graphics/UI/SDL/Types.hsc" #-}
		minor <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 1370 "Graphics/UI/SDL/Types.hsc" #-}
		patch <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 1371 "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 1374 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr minor
{-# LINE 1375 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr patch
{-# LINE 1376 "Graphics/UI/SDL/Types.hsc" #-}