{-# LINE 1 "Graphics/UI/SDL/Types.hsc" #-}
{-# LINE 5 "Graphics/UI/SDL/Types.hsc" #-}
module Graphics.UI.SDL.Types
( SurfaceStruct
, Surface
, VideoInfoStruct
, VideoInfo
, RWopsStruct
, RWops
, PixelFormatStruct
, PixelFormat
, JoystickStruct
, Joystick
, Hat(..)
, TimerIDStruct
, SurfaceFlag (..)
, surfaceGetPixelFormat
, surfaceGetWidth
, surfaceGetHeight
, surfaceGetFlags
, surfaceGetPitch
, surfaceGetPixels
, pixelFormatGetAlpha
, pixelFormatGetColorKey
, pixelFormatGetBitsPerPixel
, pixelFormatGetBytesPerPixel
, videoInfoWidth
, videoInfoHeight
) where
import Foreign.C (CInt)
import Foreign (Word8, Word16, Word32, Ptr, Storable(peekByteOff),
newForeignPtr_, ForeignPtr, withForeignPtr)
import System.IO.Unsafe (unsafePerformIO)
import Graphics.UI.SDL.Utilities (Enum(..), fromBitmask)
import Graphics.UI.SDL.Color (Pixel(..))
import Prelude hiding (Enum(..))
data SurfaceStruct
type Surface = ForeignPtr SurfaceStruct
data VideoInfoStruct
type VideoInfo = ForeignPtr VideoInfoStruct
data RWopsStruct
type RWops = ForeignPtr RWopsStruct
data PixelFormatStruct
type PixelFormat = ForeignPtr PixelFormatStruct
data TimerIDStruct
data PixelsData
type Pixels = Ptr PixelsData
data JoystickStruct
type Joystick = ForeignPtr JoystickStruct
data Hat
= HatCentered
| HatUp
| HatRight
| HatDown
| HatLeft
| HatRightUp
| HatRightDown
| HatLeftUp
| HatLeftDown
deriving (Int -> Hat -> ShowS
[Hat] -> ShowS
Hat -> String
(Int -> Hat -> ShowS)
-> (Hat -> String) -> ([Hat] -> ShowS) -> Show Hat
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Hat -> ShowS
showsPrec :: Int -> Hat -> ShowS
$cshow :: Hat -> String
show :: Hat -> String
$cshowList :: [Hat] -> ShowS
showList :: [Hat] -> ShowS
Show,Hat -> Hat -> Bool
(Hat -> Hat -> Bool) -> (Hat -> Hat -> Bool) -> Eq Hat
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Hat -> Hat -> Bool
== :: Hat -> Hat -> Bool
$c/= :: Hat -> Hat -> Bool
/= :: Hat -> Hat -> Bool
Eq,Eq Hat
Eq Hat
-> (Hat -> Hat -> Ordering)
-> (Hat -> Hat -> Bool)
-> (Hat -> Hat -> Bool)
-> (Hat -> Hat -> Bool)
-> (Hat -> Hat -> Bool)
-> (Hat -> Hat -> Hat)
-> (Hat -> Hat -> Hat)
-> Ord Hat
Hat -> Hat -> Bool
Hat -> Hat -> Ordering
Hat -> Hat -> Hat
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Hat -> Hat -> Ordering
compare :: Hat -> Hat -> Ordering
$c< :: Hat -> Hat -> Bool
< :: Hat -> Hat -> Bool
$c<= :: Hat -> Hat -> Bool
<= :: Hat -> Hat -> Bool
$c> :: Hat -> Hat -> Bool
> :: Hat -> Hat -> Bool
$c>= :: Hat -> Hat -> Bool
>= :: Hat -> Hat -> Bool
$cmax :: Hat -> Hat -> Hat
max :: Hat -> Hat -> Hat
$cmin :: Hat -> Hat -> Hat
min :: Hat -> Hat -> Hat
Ord)
instance Bounded Hat where
minBound :: Hat
minBound = Hat
HatCentered
maxBound :: Hat
maxBound = Hat
HatLeftDown
instance Enum Hat Word8 where
fromEnum :: Hat -> Word8
fromEnum Hat
HatCentered = Word8
0
{-# LINE 92 "Graphics/UI/SDL/Types.hsc" #-}
fromEnum HatUp = 1
{-# LINE 93 "Graphics/UI/SDL/Types.hsc" #-}
fromEnum HatRight = 2
{-# LINE 94 "Graphics/UI/SDL/Types.hsc" #-}
fromEnum HatDown = 4
{-# LINE 95 "Graphics/UI/SDL/Types.hsc" #-}
fromEnum HatLeft = 8
{-# LINE 96 "Graphics/UI/SDL/Types.hsc" #-}
fromEnum HatRightUp = 3
{-# LINE 97 "Graphics/UI/SDL/Types.hsc" #-}
fromEnum HatRightDown = 6
{-# LINE 98 "Graphics/UI/SDL/Types.hsc" #-}
fromEnum HatLeftUp = 9
{-# LINE 99 "Graphics/UI/SDL/Types.hsc" #-}
fromEnum HatLeftDown = 12
{-# LINE 100 "Graphics/UI/SDL/Types.hsc" #-}
toEnum 0 = HatCentered
{-# LINE 101 "Graphics/UI/SDL/Types.hsc" #-}
toEnum 1 = HatUp
{-# LINE 102 "Graphics/UI/SDL/Types.hsc" #-}
toEnum 2 = HatRight
{-# LINE 103 "Graphics/UI/SDL/Types.hsc" #-}
toEnum 4 = HatDown
{-# LINE 104 "Graphics/UI/SDL/Types.hsc" #-}
toEnum 8 = HatLeft
{-# LINE 105 "Graphics/UI/SDL/Types.hsc" #-}
toEnum 3 = HatRightUp
{-# LINE 106 "Graphics/UI/SDL/Types.hsc" #-}
toEnum 6 = HatRightDown
{-# LINE 107 "Graphics/UI/SDL/Types.hsc" #-}
toEnum 9 = HatLeftUp
{-# LINE 108 "Graphics/UI/SDL/Types.hsc" #-}
toEnum 12 = HatLeftDown
{-# LINE 109 "Graphics/UI/SDL/Types.hsc" #-}
toEnum _ = error "Graphics.UI.SDL.Types.toEnum: bad argument"
succ :: Hat -> Hat
succ Hat
HatCentered = Hat
HatUp
succ Hat
HatUp = Hat
HatRight
succ Hat
HatRight = Hat
HatDown
succ Hat
HatDown = Hat
HatLeft
succ Hat
HatLeft = Hat
HatRightUp
succ Hat
HatRightUp = Hat
HatRightDown
succ Hat
HatRightDown = Hat
HatLeftUp
succ Hat
HatLeftUp = Hat
HatLeftDown
succ Hat
_ = String -> Hat
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Types.succ: bad argument"
pred :: Hat -> Hat
pred Hat
HatUp = Hat
HatCentered
pred Hat
HatRight = Hat
HatUp
pred Hat
HatDown = Hat
HatRight
pred Hat
HatLeft = Hat
HatDown
pred Hat
HatRightUp = Hat
HatLeft
pred Hat
HatRightDown = Hat
HatRightUp
pred Hat
HatLeftUp = Hat
HatRightDown
pred Hat
HatLeftDown = Hat
HatLeftUp
pred Hat
_ = String -> Hat
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Types.pred: bad argument"
enumFromTo :: Hat -> Hat -> [Hat]
enumFromTo Hat
x Hat
y | Hat
x Hat -> Hat -> Bool
forall a. Ord a => a -> a -> Bool
> Hat
y = []
| Hat
x Hat -> Hat -> Bool
forall a. Eq a => a -> a -> Bool
== Hat
y = [Hat
y]
| Bool
True = Hat
x Hat -> [Hat] -> [Hat]
forall a. a -> [a] -> [a]
: Hat -> Hat -> [Hat]
forall a b. Enum a b => a -> a -> [a]
enumFromTo (Hat -> Hat
forall a b. Enum a b => a -> a
succ Hat
x) Hat
y
data SurfaceFlag
= SWSurface
| HWSurface
| OpenGL
| ASyncBlit
| OpenGLBlit
| Resizable
| NoFrame
| HWAccel
| SrcColorKey
| RLEAccel
| SrcAlpha
| PreAlloc
| AnyFormat
| HWPalette
| DoubleBuf
| Fullscreen
deriving (SurfaceFlag -> SurfaceFlag -> Bool
(SurfaceFlag -> SurfaceFlag -> Bool)
-> (SurfaceFlag -> SurfaceFlag -> Bool) -> Eq SurfaceFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SurfaceFlag -> SurfaceFlag -> Bool
== :: SurfaceFlag -> SurfaceFlag -> Bool
$c/= :: SurfaceFlag -> SurfaceFlag -> Bool
/= :: SurfaceFlag -> SurfaceFlag -> Bool
Eq, Eq SurfaceFlag
Eq SurfaceFlag
-> (SurfaceFlag -> SurfaceFlag -> Ordering)
-> (SurfaceFlag -> SurfaceFlag -> Bool)
-> (SurfaceFlag -> SurfaceFlag -> Bool)
-> (SurfaceFlag -> SurfaceFlag -> Bool)
-> (SurfaceFlag -> SurfaceFlag -> Bool)
-> (SurfaceFlag -> SurfaceFlag -> SurfaceFlag)
-> (SurfaceFlag -> SurfaceFlag -> SurfaceFlag)
-> Ord SurfaceFlag
SurfaceFlag -> SurfaceFlag -> Bool
SurfaceFlag -> SurfaceFlag -> Ordering
SurfaceFlag -> SurfaceFlag -> SurfaceFlag
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: SurfaceFlag -> SurfaceFlag -> Ordering
compare :: SurfaceFlag -> SurfaceFlag -> Ordering
$c< :: SurfaceFlag -> SurfaceFlag -> Bool
< :: SurfaceFlag -> SurfaceFlag -> Bool
$c<= :: SurfaceFlag -> SurfaceFlag -> Bool
<= :: SurfaceFlag -> SurfaceFlag -> Bool
$c> :: SurfaceFlag -> SurfaceFlag -> Bool
> :: SurfaceFlag -> SurfaceFlag -> Bool
$c>= :: SurfaceFlag -> SurfaceFlag -> Bool
>= :: SurfaceFlag -> SurfaceFlag -> Bool
$cmax :: SurfaceFlag -> SurfaceFlag -> SurfaceFlag
max :: SurfaceFlag -> SurfaceFlag -> SurfaceFlag
$cmin :: SurfaceFlag -> SurfaceFlag -> SurfaceFlag
min :: SurfaceFlag -> SurfaceFlag -> SurfaceFlag
Ord, Int -> SurfaceFlag -> ShowS
[SurfaceFlag] -> ShowS
SurfaceFlag -> String
(Int -> SurfaceFlag -> ShowS)
-> (SurfaceFlag -> String)
-> ([SurfaceFlag] -> ShowS)
-> Show SurfaceFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SurfaceFlag -> ShowS
showsPrec :: Int -> SurfaceFlag -> ShowS
$cshow :: SurfaceFlag -> String
show :: SurfaceFlag -> String
$cshowList :: [SurfaceFlag] -> ShowS
showList :: [SurfaceFlag] -> ShowS
Show, ReadPrec [SurfaceFlag]
ReadPrec SurfaceFlag
Int -> ReadS SurfaceFlag
ReadS [SurfaceFlag]
(Int -> ReadS SurfaceFlag)
-> ReadS [SurfaceFlag]
-> ReadPrec SurfaceFlag
-> ReadPrec [SurfaceFlag]
-> Read SurfaceFlag
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS SurfaceFlag
readsPrec :: Int -> ReadS SurfaceFlag
$creadList :: ReadS [SurfaceFlag]
readList :: ReadS [SurfaceFlag]
$creadPrec :: ReadPrec SurfaceFlag
readPrec :: ReadPrec SurfaceFlag
$creadListPrec :: ReadPrec [SurfaceFlag]
readListPrec :: ReadPrec [SurfaceFlag]
Read)
instance Bounded SurfaceFlag where
minBound :: SurfaceFlag
minBound = SurfaceFlag
SWSurface
maxBound :: SurfaceFlag
maxBound = SurfaceFlag
Fullscreen
instance Enum SurfaceFlag Word32 where
fromEnum :: SurfaceFlag -> Word32
fromEnum SurfaceFlag
SWSurface = Word32
0
fromEnum SurfaceFlag
HWSurface = Word32
1
fromEnum SurfaceFlag
OpenGL = Word32
2
fromEnum SurfaceFlag
ASyncBlit = Word32
4
fromEnum SurfaceFlag
OpenGLBlit = Word32
10
fromEnum SurfaceFlag
Resizable = Word32
16
fromEnum SurfaceFlag
NoFrame = Word32
32
fromEnum SurfaceFlag
HWAccel = Word32
256
fromEnum SurfaceFlag
SrcColorKey = Word32
4096
fromEnum SurfaceFlag
RLEAccel = Word32
16384
fromEnum SurfaceFlag
SrcAlpha = Word32
65536
fromEnum SurfaceFlag
PreAlloc = Word32
16777216
fromEnum SurfaceFlag
AnyFormat = Word32
268435456
fromEnum SurfaceFlag
HWPalette = Word32
536870912
fromEnum SurfaceFlag
DoubleBuf = Word32
1073741824
fromEnum SurfaceFlag
Fullscreen = Word32
2147483648
toEnum :: Word32 -> SurfaceFlag
toEnum Word32
0 = SurfaceFlag
SWSurface
toEnum Word32
1 = SurfaceFlag
HWSurface
toEnum Word32
4 = SurfaceFlag
ASyncBlit
toEnum Word32
2 = SurfaceFlag
OpenGL
toEnum Word32
10 = SurfaceFlag
OpenGLBlit
toEnum Word32
16 = SurfaceFlag
Resizable
toEnum Word32
32 = SurfaceFlag
NoFrame
toEnum Word32
256 = SurfaceFlag
HWAccel
toEnum Word32
4096 = SurfaceFlag
SrcColorKey
toEnum Word32
16384 = SurfaceFlag
RLEAccel
toEnum Word32
65536 = SurfaceFlag
SrcAlpha
toEnum Word32
16777216 = SurfaceFlag
PreAlloc
toEnum Word32
268435456 = SurfaceFlag
AnyFormat
toEnum Word32
536870912 = SurfaceFlag
HWPalette
toEnum Word32
1073741824 = SurfaceFlag
DoubleBuf
toEnum Word32
2147483648 = SurfaceFlag
Fullscreen
toEnum Word32
_ = String -> SurfaceFlag
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Types.fromEnum: bad argument"
succ :: SurfaceFlag -> SurfaceFlag
succ SurfaceFlag
SWSurface = SurfaceFlag
HWSurface
succ SurfaceFlag
HWSurface = SurfaceFlag
OpenGL
succ SurfaceFlag
OpenGL = SurfaceFlag
ASyncBlit
succ SurfaceFlag
ASyncBlit = SurfaceFlag
OpenGLBlit
succ SurfaceFlag
OpenGLBlit = SurfaceFlag
Resizable
succ SurfaceFlag
Resizable = SurfaceFlag
NoFrame
succ SurfaceFlag
NoFrame = SurfaceFlag
HWAccel
succ SurfaceFlag
HWAccel = SurfaceFlag
SrcColorKey
succ SurfaceFlag
SrcColorKey = SurfaceFlag
RLEAccel
succ SurfaceFlag
RLEAccel = SurfaceFlag
SrcAlpha
succ SurfaceFlag
SrcAlpha = SurfaceFlag
PreAlloc
succ SurfaceFlag
PreAlloc = SurfaceFlag
AnyFormat
succ SurfaceFlag
AnyFormat = SurfaceFlag
HWPalette
succ SurfaceFlag
HWPalette = SurfaceFlag
DoubleBuf
succ SurfaceFlag
DoubleBuf = SurfaceFlag
Fullscreen
succ SurfaceFlag
_ = String -> SurfaceFlag
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Types.succ: bad argument"
pred :: SurfaceFlag -> SurfaceFlag
pred SurfaceFlag
HWSurface = SurfaceFlag
SWSurface
pred SurfaceFlag
OpenGL = SurfaceFlag
HWSurface
pred SurfaceFlag
ASyncBlit = SurfaceFlag
OpenGL
pred SurfaceFlag
OpenGLBlit = SurfaceFlag
ASyncBlit
pred SurfaceFlag
Resizable = SurfaceFlag
OpenGLBlit
pred SurfaceFlag
NoFrame = SurfaceFlag
Resizable
pred SurfaceFlag
HWAccel = SurfaceFlag
NoFrame
pred SurfaceFlag
SrcColorKey = SurfaceFlag
HWAccel
pred SurfaceFlag
RLEAccel = SurfaceFlag
SrcColorKey
pred SurfaceFlag
SrcAlpha = SurfaceFlag
RLEAccel
pred SurfaceFlag
PreAlloc = SurfaceFlag
SrcAlpha
pred SurfaceFlag
AnyFormat = SurfaceFlag
PreAlloc
pred SurfaceFlag
HWPalette = SurfaceFlag
AnyFormat
pred SurfaceFlag
DoubleBuf = SurfaceFlag
HWPalette
pred SurfaceFlag
Fullscreen = SurfaceFlag
DoubleBuf
pred SurfaceFlag
_ = String -> SurfaceFlag
forall a. HasCallStack => String -> a
error String
"Graphics.UI.SDL.Types.pred: bad argument"
enumFromTo :: SurfaceFlag -> SurfaceFlag -> [SurfaceFlag]
enumFromTo SurfaceFlag
x SurfaceFlag
y | SurfaceFlag
x SurfaceFlag -> SurfaceFlag -> Bool
forall a. Ord a => a -> a -> Bool
> SurfaceFlag
y = []
| SurfaceFlag
x SurfaceFlag -> SurfaceFlag -> Bool
forall a. Eq a => a -> a -> Bool
== SurfaceFlag
y = [SurfaceFlag
y]
| Bool
True = SurfaceFlag
x SurfaceFlag -> [SurfaceFlag] -> [SurfaceFlag]
forall a. a -> [a] -> [a]
: SurfaceFlag -> SurfaceFlag -> [SurfaceFlag]
forall a b. Enum a b => a -> a -> [a]
enumFromTo (SurfaceFlag -> SurfaceFlag
forall a b. Enum a b => a -> a
succ SurfaceFlag
x) SurfaceFlag
y
surfaceGetPixelFormat :: Surface -> PixelFormat
surfaceGetPixelFormat :: Surface -> PixelFormat
surfaceGetPixelFormat Surface
surface
= IO PixelFormat -> PixelFormat
forall a. IO a -> a
unsafePerformIO (IO PixelFormat -> PixelFormat) -> IO PixelFormat -> PixelFormat
forall a b. (a -> b) -> a -> b
$
Surface -> (Ptr SurfaceStruct -> IO PixelFormat) -> IO PixelFormat
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO PixelFormat) -> IO PixelFormat)
-> (Ptr SurfaceStruct -> IO PixelFormat) -> IO PixelFormat
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceStruct
ptr ->
Ptr PixelFormatStruct -> IO PixelFormat
forall a. Ptr a -> IO (ForeignPtr a)
newForeignPtr_ (Ptr PixelFormatStruct -> IO PixelFormat)
-> IO (Ptr PixelFormatStruct) -> IO PixelFormat
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (\Ptr SurfaceStruct
hsc_ptr -> Ptr SurfaceStruct -> Int -> IO (Ptr PixelFormatStruct)
forall b. Ptr b -> Int -> IO (Ptr PixelFormatStruct)
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr SurfaceStruct
hsc_ptr Int
8) Ptr SurfaceStruct
ptr
{-# LINE 232 "Graphics/UI/SDL/Types.hsc" #-}
pixelFormatGetAlpha :: PixelFormat -> IO Word8
pixelFormatGetAlpha :: PixelFormat -> IO Word8
pixelFormatGetAlpha PixelFormat
format =
PixelFormat -> (Ptr PixelFormatStruct -> IO Word8) -> IO Word8
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr PixelFormat
format ((Ptr PixelFormatStruct -> IO Word8) -> IO Word8)
-> (Ptr PixelFormatStruct -> IO Word8) -> IO Word8
forall a b. (a -> b) -> a -> b
$
(\Ptr PixelFormatStruct
hsc_ptr -> Ptr PixelFormatStruct -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr PixelFormatStruct
hsc_ptr Int
40)
{-# LINE 237 "Graphics/UI/SDL/Types.hsc" #-}
pixelFormatGetColorKey :: PixelFormat -> IO Pixel
pixelFormatGetColorKey :: PixelFormat -> IO Pixel
pixelFormatGetColorKey PixelFormat
format =
(Word32 -> Pixel) -> IO Word32 -> IO Pixel
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Word32 -> Pixel
Pixel (IO Word32 -> IO Pixel) -> IO Word32 -> IO Pixel
forall a b. (a -> b) -> a -> b
$
PixelFormat -> (Ptr PixelFormatStruct -> IO Word32) -> IO Word32
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr PixelFormat
format ((Ptr PixelFormatStruct -> IO Word32) -> IO Word32)
-> (Ptr PixelFormatStruct -> IO Word32) -> IO Word32
forall a b. (a -> b) -> a -> b
$
(\Ptr PixelFormatStruct
hsc_ptr -> Ptr PixelFormatStruct -> Int -> IO Word32
forall b. Ptr b -> Int -> IO Word32
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr PixelFormatStruct
hsc_ptr Int
36)
{-# LINE 243 "Graphics/UI/SDL/Types.hsc" #-}
pixelFormatGetBitsPerPixel :: PixelFormat -> IO Word8
pixelFormatGetBitsPerPixel :: PixelFormat -> IO Word8
pixelFormatGetBitsPerPixel PixelFormat
format
= PixelFormat -> (Ptr PixelFormatStruct -> IO Word8) -> IO Word8
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr PixelFormat
format ((Ptr PixelFormatStruct -> IO Word8) -> IO Word8)
-> (Ptr PixelFormatStruct -> IO Word8) -> IO Word8
forall a b. (a -> b) -> a -> b
$
(\Ptr PixelFormatStruct
hsc_ptr -> Ptr PixelFormatStruct -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr PixelFormatStruct
hsc_ptr Int
8)
{-# LINE 248 "Graphics/UI/SDL/Types.hsc" #-}
pixelFormatGetBytesPerPixel :: PixelFormat -> IO Word8
pixelFormatGetBytesPerPixel :: PixelFormat -> IO Word8
pixelFormatGetBytesPerPixel PixelFormat
format
= PixelFormat -> (Ptr PixelFormatStruct -> IO Word8) -> IO Word8
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr PixelFormat
format ((Ptr PixelFormatStruct -> IO Word8) -> IO Word8)
-> (Ptr PixelFormatStruct -> IO Word8) -> IO Word8
forall a b. (a -> b) -> a -> b
$
(\Ptr PixelFormatStruct
hsc_ptr -> Ptr PixelFormatStruct -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr PixelFormatStruct
hsc_ptr Int
9)
{-# LINE 253 "Graphics/UI/SDL/Types.hsc" #-}
cintToInt :: CInt -> Int
cintToInt :: CInt -> Int
cintToInt = CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral
surfaceGetWidth :: Surface -> Int
surfaceGetWidth :: Surface -> Int
surfaceGetWidth Surface
surface
= CInt -> Int
cintToInt (CInt -> Int) -> CInt -> Int
forall a b. (a -> b) -> a -> b
$ IO CInt -> CInt
forall a. IO a -> a
unsafePerformIO (IO CInt -> CInt) -> IO CInt -> CInt
forall a b. (a -> b) -> a -> b
$
Surface -> (Ptr SurfaceStruct -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO CInt) -> IO CInt)
-> (Ptr SurfaceStruct -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$
(\Ptr SurfaceStruct
hsc_ptr -> Ptr SurfaceStruct -> Int -> IO CInt
forall b. Ptr b -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr SurfaceStruct
hsc_ptr Int
16)
{-# LINE 262 "Graphics/UI/SDL/Types.hsc" #-}
surfaceGetHeight :: Surface -> Int
surfaceGetHeight :: Surface -> Int
surfaceGetHeight Surface
surface
= CInt -> Int
cintToInt (CInt -> Int) -> CInt -> Int
forall a b. (a -> b) -> a -> b
$ IO CInt -> CInt
forall a. IO a -> a
unsafePerformIO (IO CInt -> CInt) -> IO CInt -> CInt
forall a b. (a -> b) -> a -> b
$
Surface -> (Ptr SurfaceStruct -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO CInt) -> IO CInt)
-> (Ptr SurfaceStruct -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$
(\Ptr SurfaceStruct
hsc_ptr -> Ptr SurfaceStruct -> Int -> IO CInt
forall b. Ptr b -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr SurfaceStruct
hsc_ptr Int
20)
{-# LINE 268 "Graphics/UI/SDL/Types.hsc" #-}
surfaceGetFlags :: Surface -> IO [SurfaceFlag]
surfaceGetFlags :: Surface -> IO [SurfaceFlag]
surfaceGetFlags Surface
surface
= Surface
-> (Ptr SurfaceStruct -> IO [SurfaceFlag]) -> IO [SurfaceFlag]
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO [SurfaceFlag]) -> IO [SurfaceFlag])
-> (Ptr SurfaceStruct -> IO [SurfaceFlag]) -> IO [SurfaceFlag]
forall a b. (a -> b) -> a -> b
$
(Word32 -> [SurfaceFlag]) -> IO Word32 -> IO [SurfaceFlag]
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Word32 -> [SurfaceFlag]
forall a b. (Bounded a, Enum a b, Bits b, Num b) => b -> [a]
fromBitmask (IO Word32 -> IO [SurfaceFlag])
-> (Ptr SurfaceStruct -> IO Word32)
-> Ptr SurfaceStruct
-> IO [SurfaceFlag]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (\Ptr SurfaceStruct
hsc_ptr -> Ptr SurfaceStruct -> Int -> IO Word32
forall b. Ptr b -> Int -> IO Word32
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr SurfaceStruct
hsc_ptr Int
0)
{-# LINE 273 "Graphics/UI/SDL/Types.hsc" #-}
surfaceGetPitch :: Surface -> Word16
surfaceGetPitch :: Surface -> Word16
surfaceGetPitch Surface
surface
= IO Word16 -> Word16
forall a. IO a -> a
unsafePerformIO (IO Word16 -> Word16) -> IO Word16 -> Word16
forall a b. (a -> b) -> a -> b
$
Surface -> (Ptr SurfaceStruct -> IO Word16) -> IO Word16
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Word16) -> IO Word16)
-> (Ptr SurfaceStruct -> IO Word16) -> IO Word16
forall a b. (a -> b) -> a -> b
$
(\Ptr SurfaceStruct
hsc_ptr -> Ptr SurfaceStruct -> Int -> IO Word16
forall b. Ptr b -> Int -> IO Word16
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr SurfaceStruct
hsc_ptr Int
24)
{-# LINE 279 "Graphics/UI/SDL/Types.hsc" #-}
surfaceGetPixels :: Surface -> IO Pixels
surfaceGetPixels :: Surface -> IO Pixels
surfaceGetPixels Surface
surface
= Surface -> (Ptr SurfaceStruct -> IO Pixels) -> IO Pixels
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr Surface
surface ((Ptr SurfaceStruct -> IO Pixels) -> IO Pixels)
-> (Ptr SurfaceStruct -> IO Pixels) -> IO Pixels
forall a b. (a -> b) -> a -> b
$
(\Ptr SurfaceStruct
hsc_ptr -> Ptr SurfaceStruct -> Int -> IO Pixels
forall b. Ptr b -> Int -> IO Pixels
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr SurfaceStruct
hsc_ptr Int
32)
{-# LINE 284 "Graphics/UI/SDL/Types.hsc" #-}
videoInfoWidth :: VideoInfo -> Int
videoInfoWidth :: VideoInfo -> Int
videoInfoWidth VideoInfo
vi
= CInt -> Int
cintToInt (CInt -> Int) -> CInt -> Int
forall a b. (a -> b) -> a -> b
$ IO CInt -> CInt
forall a. IO a -> a
unsafePerformIO (IO CInt -> CInt) -> IO CInt -> CInt
forall a b. (a -> b) -> a -> b
$
VideoInfo -> (Ptr VideoInfoStruct -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr VideoInfo
vi ((Ptr VideoInfoStruct -> IO CInt) -> IO CInt)
-> (Ptr VideoInfoStruct -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$
(\Ptr VideoInfoStruct
hsc_ptr -> Ptr VideoInfoStruct -> Int -> IO CInt
forall b. Ptr b -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VideoInfoStruct
hsc_ptr Int
16)
{-# LINE 290 "Graphics/UI/SDL/Types.hsc" #-}
videoInfoHeight :: VideoInfo -> Int
videoInfoHeight :: VideoInfo -> Int
videoInfoHeight VideoInfo
vi
= CInt -> Int
cintToInt (CInt -> Int) -> CInt -> Int
forall a b. (a -> b) -> a -> b
$ IO CInt -> CInt
forall a. IO a -> a
unsafePerformIO (IO CInt -> CInt) -> IO CInt -> CInt
forall a b. (a -> b) -> a -> b
$
VideoInfo -> (Ptr VideoInfoStruct -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr VideoInfo
vi ((Ptr VideoInfoStruct -> IO CInt) -> IO CInt)
-> (Ptr VideoInfoStruct -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$
(\Ptr VideoInfoStruct
hsc_ptr -> Ptr VideoInfoStruct -> Int -> IO CInt
forall b. Ptr b -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr VideoInfoStruct
hsc_ptr Int
20)
{-# LINE 296 "Graphics/UI/SDL/Types.hsc" #-}