{-# 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,
	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 62 "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 109 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		value <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 112 "Graphics/UI/SDL/Types.hsc" #-}
		return $! Atomic value
	poke ptr (Atomic value) = do
		((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr value
{-# LINE 115 "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 130 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		needed <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 133 "Graphics/UI/SDL/Types.hsc" #-}
		src_format <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 134 "Graphics/UI/SDL/Types.hsc" #-}
		dst_format <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 135 "Graphics/UI/SDL/Types.hsc" #-}
		rate_incr <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 136 "Graphics/UI/SDL/Types.hsc" #-}
		buf <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 137 "Graphics/UI/SDL/Types.hsc" #-}
		len <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 138 "Graphics/UI/SDL/Types.hsc" #-}
		len_cvt <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 139 "Graphics/UI/SDL/Types.hsc" #-}
		len_mult <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 140 "Graphics/UI/SDL/Types.hsc" #-}
		len_ratio <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 141 "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 144 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr src_format
{-# LINE 145 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr dst_format
{-# LINE 146 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr rate_incr
{-# LINE 147 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr buf
{-# LINE 148 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr len
{-# LINE 149 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr len_cvt
{-# LINE 150 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr len_mult
{-# LINE 151 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr len_ratio
{-# LINE 152 "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 166 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		freq <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 169 "Graphics/UI/SDL/Types.hsc" #-}
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 170 "Graphics/UI/SDL/Types.hsc" #-}
		channels <- ((\hsc_ptr -> peekByteOff hsc_ptr 6)) ptr
{-# LINE 171 "Graphics/UI/SDL/Types.hsc" #-}
		silence <- ((\hsc_ptr -> peekByteOff hsc_ptr 7)) ptr
{-# LINE 172 "Graphics/UI/SDL/Types.hsc" #-}
		samples <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 173 "Graphics/UI/SDL/Types.hsc" #-}
		size <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 174 "Graphics/UI/SDL/Types.hsc" #-}
		callback <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 175 "Graphics/UI/SDL/Types.hsc" #-}
		userdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 176 "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 179 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr format
{-# LINE 180 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 6)) ptr channels
{-# LINE 181 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 7)) ptr silence
{-# LINE 182 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr samples
{-# LINE 183 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr size
{-# LINE 184 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr callback
{-# LINE 185 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr userdata
{-# LINE 186 "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 196 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		r <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 199 "Graphics/UI/SDL/Types.hsc" #-}
		g <- ((\hsc_ptr -> peekByteOff hsc_ptr 1)) ptr
{-# LINE 200 "Graphics/UI/SDL/Types.hsc" #-}
		b <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 201 "Graphics/UI/SDL/Types.hsc" #-}
		a <- ((\hsc_ptr -> peekByteOff hsc_ptr 3)) ptr
{-# LINE 202 "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 205 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 1)) ptr g
{-# LINE 206 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr b
{-# LINE 207 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 3)) ptr a
{-# LINE 208 "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 219 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		format <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 222 "Graphics/UI/SDL/Types.hsc" #-}
		w <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 223 "Graphics/UI/SDL/Types.hsc" #-}
		h <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 224 "Graphics/UI/SDL/Types.hsc" #-}
		refresh_rate <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 225 "Graphics/UI/SDL/Types.hsc" #-}
		driverdata <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 226 "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 229 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr w
{-# LINE 230 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr h
{-# LINE 231 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr refresh_rate
{-# LINE 232 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr driverdata
{-# LINE 233 "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 412 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 415 "Graphics/UI/SDL/Types.hsc" #-}
		timestamp <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 416 "Graphics/UI/SDL/Types.hsc" #-}
		case typ of
			(256) ->
{-# LINE 418 "Graphics/UI/SDL/Types.hsc" #-}
				return $! QuitEvent typ timestamp
			(512) -> do
{-# LINE 420 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 421 "Graphics/UI/SDL/Types.hsc" #-}
				event <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 422 "Graphics/UI/SDL/Types.hsc" #-}
				data1 <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 423 "Graphics/UI/SDL/Types.hsc" #-}
				data2 <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 424 "Graphics/UI/SDL/Types.hsc" #-}
				return $! WindowEvent typ timestamp wid event data1 data2
			(513) -> do
{-# LINE 426 "Graphics/UI/SDL/Types.hsc" #-}
				msg <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 427 "Graphics/UI/SDL/Types.hsc" #-}
				return $! SysWMEvent typ timestamp msg
			(768) -> key $ KeyboardEvent typ timestamp
{-# LINE 429 "Graphics/UI/SDL/Types.hsc" #-}
			(769) -> key $ KeyboardEvent typ timestamp
{-# LINE 430 "Graphics/UI/SDL/Types.hsc" #-}
			(770) -> do
{-# LINE 431 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 432 "Graphics/UI/SDL/Types.hsc" #-}
				text <- peekArray (32) $ ((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr
{-# LINE 433 "Graphics/UI/SDL/Types.hsc" #-}
				start <- ((\hsc_ptr -> peekByteOff hsc_ptr 44)) ptr
{-# LINE 434 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 435 "Graphics/UI/SDL/Types.hsc" #-}
				return $! TextEditingEvent typ timestamp wid text start len
			(771) -> do
{-# LINE 437 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 438 "Graphics/UI/SDL/Types.hsc" #-}
				text <- peekArray (32) $ ((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr
{-# LINE 439 "Graphics/UI/SDL/Types.hsc" #-}
				return $! TextInputEvent typ timestamp wid text
			(1024) -> do
{-# LINE 441 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 442 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 443 "Graphics/UI/SDL/Types.hsc" #-}
				state <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 444 "Graphics/UI/SDL/Types.hsc" #-}
				x <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 445 "Graphics/UI/SDL/Types.hsc" #-}
				y <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 446 "Graphics/UI/SDL/Types.hsc" #-}
				xrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 447 "Graphics/UI/SDL/Types.hsc" #-}
				yrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 448 "Graphics/UI/SDL/Types.hsc" #-}
				return $! MouseMotionEvent typ timestamp wid which state x y xrel yrel
			(1025) -> mouse $ MouseButtonEvent typ timestamp
{-# LINE 450 "Graphics/UI/SDL/Types.hsc" #-}
			(1026) -> mouse $ MouseButtonEvent typ timestamp
{-# LINE 451 "Graphics/UI/SDL/Types.hsc" #-}
			(1027) -> do
{-# LINE 452 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 453 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 454 "Graphics/UI/SDL/Types.hsc" #-}
				x <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 455 "Graphics/UI/SDL/Types.hsc" #-}
				y <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 456 "Graphics/UI/SDL/Types.hsc" #-}
				return $! MouseWheelEvent typ timestamp wid which x y
			(1536) -> do
{-# LINE 458 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 459 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 460 "Graphics/UI/SDL/Types.hsc" #-}
				value <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 461 "Graphics/UI/SDL/Types.hsc" #-}
				return $! JoyAxisEvent typ timestamp which axis value
			(1537) -> do
{-# LINE 463 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 464 "Graphics/UI/SDL/Types.hsc" #-}
				ball <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 465 "Graphics/UI/SDL/Types.hsc" #-}
				xrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 466 "Graphics/UI/SDL/Types.hsc" #-}
				yrel <- ((\hsc_ptr -> peekByteOff hsc_ptr 18)) ptr
{-# LINE 467 "Graphics/UI/SDL/Types.hsc" #-}
				return $! JoyBallEvent typ timestamp which ball xrel yrel
			(1538) -> do
{-# LINE 469 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 470 "Graphics/UI/SDL/Types.hsc" #-}
				hat <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 471 "Graphics/UI/SDL/Types.hsc" #-}
				value <- ((\hsc_ptr -> peekByteOff hsc_ptr 13)) ptr
{-# LINE 472 "Graphics/UI/SDL/Types.hsc" #-}
				return $! JoyHatEvent typ timestamp which hat value
			(1539) -> joybutton $ JoyButtonEvent typ timestamp
{-# LINE 474 "Graphics/UI/SDL/Types.hsc" #-}
			(1540) -> joybutton $ JoyButtonEvent typ timestamp
{-# LINE 475 "Graphics/UI/SDL/Types.hsc" #-}
			(1541) -> joydevice $ JoyDeviceEvent typ timestamp
{-# LINE 476 "Graphics/UI/SDL/Types.hsc" #-}
			(1542) -> joydevice $ JoyDeviceEvent typ timestamp
{-# LINE 477 "Graphics/UI/SDL/Types.hsc" #-}
			(1616) -> do
{-# LINE 478 "Graphics/UI/SDL/Types.hsc" #-}
				which <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 479 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 480 "Graphics/UI/SDL/Types.hsc" #-}
				value <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 481 "Graphics/UI/SDL/Types.hsc" #-}
				return $! ControllerButtonEvent typ timestamp which axis value
			(1617) -> controllerbutton $ ControllerButtonEvent typ timestamp
{-# LINE 483 "Graphics/UI/SDL/Types.hsc" #-}
			(1618) -> controllerbutton $ ControllerButtonEvent typ timestamp
{-# LINE 484 "Graphics/UI/SDL/Types.hsc" #-}
			(1619) -> controllerdevice $ ControllerDeviceEvent typ timestamp
{-# LINE 485 "Graphics/UI/SDL/Types.hsc" #-}
			(1620) -> controllerdevice $ ControllerDeviceEvent typ timestamp
{-# LINE 486 "Graphics/UI/SDL/Types.hsc" #-}
			(1621) -> controllerdevice $ ControllerDeviceEvent typ timestamp
{-# LINE 487 "Graphics/UI/SDL/Types.hsc" #-}
			(1792) -> finger $ TouchFingerEvent typ timestamp
{-# LINE 488 "Graphics/UI/SDL/Types.hsc" #-}
			(1793) -> finger $ TouchFingerEvent typ timestamp
{-# LINE 489 "Graphics/UI/SDL/Types.hsc" #-}
			(1794) -> finger $ TouchFingerEvent typ timestamp
{-# LINE 490 "Graphics/UI/SDL/Types.hsc" #-}
			(2048) -> dollargesture $ DollarGestureEvent typ timestamp
{-# LINE 491 "Graphics/UI/SDL/Types.hsc" #-}
			(2049) -> dollargesture $ DollarGestureEvent typ timestamp
{-# LINE 492 "Graphics/UI/SDL/Types.hsc" #-}
			(2050) -> do
{-# LINE 493 "Graphics/UI/SDL/Types.hsc" #-}
				touchId <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 494 "Graphics/UI/SDL/Types.hsc" #-}
				dTheta <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 495 "Graphics/UI/SDL/Types.hsc" #-}
				dDist <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 496 "Graphics/UI/SDL/Types.hsc" #-}
				x <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 497 "Graphics/UI/SDL/Types.hsc" #-}
				y <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 498 "Graphics/UI/SDL/Types.hsc" #-}
				numFingers <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 499 "Graphics/UI/SDL/Types.hsc" #-}
				return $! MultiGestureEvent typ timestamp touchId dTheta dDist x y numFingers
			(2304) ->
{-# LINE 501 "Graphics/UI/SDL/Types.hsc" #-}
				return $! ClipboardUpdateEvent typ timestamp
			(4096) -> do
{-# LINE 503 "Graphics/UI/SDL/Types.hsc" #-}
				file <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 504 "Graphics/UI/SDL/Types.hsc" #-}
				return $! DropEvent typ timestamp file
			x | x >= (32768) -> do
{-# LINE 506 "Graphics/UI/SDL/Types.hsc" #-}
				wid <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 507 "Graphics/UI/SDL/Types.hsc" #-}
				code <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 508 "Graphics/UI/SDL/Types.hsc" #-}
				data1 <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 509 "Graphics/UI/SDL/Types.hsc" #-}
				data2 <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 510 "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 515 "Graphics/UI/SDL/Types.hsc" #-}
			state <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 516 "Graphics/UI/SDL/Types.hsc" #-}
			repeat' <- ((\hsc_ptr -> peekByteOff hsc_ptr 13)) ptr
{-# LINE 517 "Graphics/UI/SDL/Types.hsc" #-}
			keysym <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 518 "Graphics/UI/SDL/Types.hsc" #-}
			return $! f wid state repeat' keysym

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

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

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

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

		finger f = do
			touchId <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 552 "Graphics/UI/SDL/Types.hsc" #-}
			fingerId <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 553 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 554 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 555 "Graphics/UI/SDL/Types.hsc" #-}
			dx <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 556 "Graphics/UI/SDL/Types.hsc" #-}
			dy <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 557 "Graphics/UI/SDL/Types.hsc" #-}
			pressure <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 558 "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 562 "Graphics/UI/SDL/Types.hsc" #-}
			gestureId <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 563 "Graphics/UI/SDL/Types.hsc" #-}
			numFingers <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 564 "Graphics/UI/SDL/Types.hsc" #-}
			err <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 565 "Graphics/UI/SDL/Types.hsc" #-}
			x <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 566 "Graphics/UI/SDL/Types.hsc" #-}
			y <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 567 "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 571 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 572 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 573 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr event
{-# LINE 574 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr data1
{-# LINE 575 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr data2
{-# LINE 576 "Graphics/UI/SDL/Types.hsc" #-}
		KeyboardEvent typ timestamp wid state repeat' keysym -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 578 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 579 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 580 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr state
{-# LINE 581 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr repeat'
{-# LINE 582 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr keysym
{-# LINE 583 "Graphics/UI/SDL/Types.hsc" #-}
		TextEditingEvent typ timestamp wid text start len -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 585 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 586 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 587 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr) text
{-# LINE 588 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 44)) ptr start
{-# LINE 589 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr len
{-# LINE 590 "Graphics/UI/SDL/Types.hsc" #-}
		TextInputEvent typ timestamp wid text -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 592 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 593 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 594 "Graphics/UI/SDL/Types.hsc" #-}
			pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 12)) ptr) text
{-# LINE 595 "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 597 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 598 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 599 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 600 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr state
{-# LINE 601 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr x
{-# LINE 602 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr y
{-# LINE 603 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr xrel
{-# LINE 604 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr yrel
{-# LINE 605 "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 607 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 608 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 609 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 610 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr button
{-# LINE 611 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 17)) ptr state
{-# LINE 612 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 18)) ptr clicks
{-# LINE 613 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr x
{-# LINE 614 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr y
{-# LINE 615 "Graphics/UI/SDL/Types.hsc" #-}
		MouseWheelEvent typ timestamp wid which x y -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 617 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 618 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 619 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr which
{-# LINE 620 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr x
{-# LINE 621 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr y
{-# LINE 622 "Graphics/UI/SDL/Types.hsc" #-}
		JoyAxisEvent typ timestamp which axis value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 624 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 625 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 626 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr axis
{-# LINE 627 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr value
{-# LINE 628 "Graphics/UI/SDL/Types.hsc" #-}
		JoyBallEvent typ timestamp which ball xrel yrel -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 630 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 631 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 632 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr ball
{-# LINE 633 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr xrel
{-# LINE 634 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 18)) ptr yrel
{-# LINE 635 "Graphics/UI/SDL/Types.hsc" #-}
		JoyHatEvent typ timestamp which hat value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 637 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 638 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 639 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr hat
{-# LINE 640 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr value
{-# LINE 641 "Graphics/UI/SDL/Types.hsc" #-}
		JoyButtonEvent typ timestamp which button state -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 643 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 644 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 645 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button
{-# LINE 646 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr state
{-# LINE 647 "Graphics/UI/SDL/Types.hsc" #-}
		JoyDeviceEvent typ timestamp which -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 649 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 650 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 651 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerAxisEvent typ timestamp which axis value -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 653 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 654 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 655 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr axis
{-# LINE 656 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr value
{-# LINE 657 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerButtonEvent typ timestamp which button state -> 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 which
{-# LINE 661 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr button
{-# LINE 662 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 13)) ptr state
{-# LINE 663 "Graphics/UI/SDL/Types.hsc" #-}
		ControllerDeviceEvent typ timestamp which -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 665 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 666 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr which
{-# LINE 667 "Graphics/UI/SDL/Types.hsc" #-}
		QuitEvent typ timestamp -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 669 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 670 "Graphics/UI/SDL/Types.hsc" #-}
		UserEvent typ timestamp wid code data1 data2 -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 672 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 673 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr wid
{-# LINE 674 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr code
{-# LINE 675 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr data1
{-# LINE 676 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr data2
{-# LINE 677 "Graphics/UI/SDL/Types.hsc" #-}
		SysWMEvent typ timestamp msg -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 679 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 680 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr msg
{-# LINE 681 "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 683 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 684 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 685 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr fingerid
{-# LINE 686 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr x
{-# LINE 687 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr y
{-# LINE 688 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr dx
{-# LINE 689 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr dy
{-# LINE 690 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr pressure
{-# LINE 691 "Graphics/UI/SDL/Types.hsc" #-}
		MultiGestureEvent typ timestamp touchid dtheta ddist x y numfingers -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 693 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 694 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 695 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr dtheta
{-# LINE 696 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr ddist
{-# LINE 697 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr x
{-# LINE 698 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr y
{-# LINE 699 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr numfingers
{-# LINE 700 "Graphics/UI/SDL/Types.hsc" #-}
		DollarGestureEvent typ timestamp touchid gestureid numfingers err x y -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 702 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 703 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr touchid
{-# LINE 704 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr gestureid
{-# LINE 705 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr numfingers
{-# LINE 706 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr err
{-# LINE 707 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr x
{-# LINE 708 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 36)) ptr y
{-# LINE 709 "Graphics/UI/SDL/Types.hsc" #-}
		ClipboardUpdateEvent typ timestamp -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 711 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 712 "Graphics/UI/SDL/Types.hsc" #-}
		DropEvent typ timestamp file -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 714 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 715 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr file
{-# LINE 716 "Graphics/UI/SDL/Types.hsc" #-}
		UnknownEvent typ timestamp -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr typ
{-# LINE 718 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr timestamp
{-# LINE 719 "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 729 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		fingerId <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 732 "Graphics/UI/SDL/Types.hsc" #-}
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 733 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 734 "Graphics/UI/SDL/Types.hsc" #-}
		pressure <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 735 "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 738 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr x
{-# LINE 739 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr y
{-# LINE 740 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr pressure
{-# LINE 741 "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 756 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		bind_type <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 759 "Graphics/UI/SDL/Types.hsc" #-}
		case bind_type :: (Word32) of
{-# LINE 760 "Graphics/UI/SDL/Types.hsc" #-}
			(0) -> do
{-# LINE 761 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindNone
			(1) -> do
{-# LINE 763 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 764 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindButton button
			(2) -> do
{-# LINE 766 "Graphics/UI/SDL/Types.hsc" #-}
				axis <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 767 "Graphics/UI/SDL/Types.hsc" #-}
				return $! GameControllerButtonBindAxis axis
			(3) -> do
{-# LINE 769 "Graphics/UI/SDL/Types.hsc" #-}
				hat <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 770 "Graphics/UI/SDL/Types.hsc" #-}
				hat_mask <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 771 "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 776 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindButton button -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((1) :: (Word32))
{-# LINE 778 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr button
{-# LINE 779 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindAxis axis -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((2) :: (Word32))
{-# LINE 781 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr axis
{-# LINE 782 "Graphics/UI/SDL/Types.hsc" #-}
		GameControllerButtonBindHat hat hat_mask -> do
			((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr ((3) :: (Word32))
{-# LINE 784 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr hat
{-# LINE 785 "Graphics/UI/SDL/Types.hsc" #-}
			((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr hat_mask
{-# LINE 786 "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 796 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 799 "Graphics/UI/SDL/Types.hsc" #-}
		x <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 800 "Graphics/UI/SDL/Types.hsc" #-}
		y <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 801 "Graphics/UI/SDL/Types.hsc" #-}
		z <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 802 "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 805 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr x
{-# LINE 806 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr y
{-# LINE 807 "Graphics/UI/SDL/Types.hsc" #-}
		((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr z
{-# LINE 808 "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 890 "Graphics/UI/SDL/Types.hsc" #-}
	alignment = sizeOf
	peek ptr = do
		typ <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 893 "Graphics/UI/SDL/Types.hsc" #-}
		case typ of
			(1) -> do
{-# LINE 895 "Graphics/UI/SDL/Types.hsc" #-}
				direction <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 896 "Graphics/UI/SDL/Types.hsc" #-}
				len <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 897 "Graphics/UI/SDL/Types.hsc" #-}
				delay <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 898 "Graphics/UI/SDL/Types.hsc" #-}
				button <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 899 "Graphics/UI/SDL/Types.hsc" #-}
				interval <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 900 "Graphics/UI/SDL/Types.hsc" #-}
				level <- ((\hsc_ptr -> peekByteOff hsc_ptr 30)) ptr
{-# LINE 901 "Graphics/UI/SDL/Types.hsc" #-}
				attack_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 902 "Graphics/UI/SDL/Types.hsc" #-}
				attack_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 34)) ptr
{-# LINE 903 "Graphics/UI/SDL/Types.hsc" #-}
				fade_length <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) ptr
{-# LINE 904 "Graphics/UI/SDL/Types.hsc" #-}
				fade_level <- ((\hsc_ptr -> peekByteOff hsc_ptr 38)) ptr
{-# LINE 905 "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 908 "Graphics/UI/SDL/Types.hsc" #-}
			(8) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 909 "Graphics/UI/SDL/Types.hsc" #-}
			(16) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 910 "Graphics/UI/SDL/Types.hsc" #-}
			(32) -> hapticperiodic $ HapticPeriodic typ
{-# LINE 911 "Graphics/UI/SDL/Types.hsc" #-}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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