{-# LANGUAGE DeriveAnyClass #-}
{-# OPTIONS -Wall #-}
module Raylib.Types.Core.Textures
(
PixelFormat (..),
TextureFilter (..),
TextureWrap (..),
CubemapLayout (..),
NPatchLayout (..),
Image (..),
Texture (..),
RenderTexture (..),
NPatchInfo (..),
Texture2D,
TextureCubemap,
RenderTexture2D,
p'image'data,
p'image'width,
p'image'height,
p'image'mipmaps,
p'image'format,
p'texture'id,
p'texture'width,
p'texture'height,
p'texture'mipmaps,
p'texture'format,
p'renderTexture'id,
p'renderTexture'texture,
p'renderTexture'depth,
p'nPatchInfo'source,
p'nPatchInfo'left,
p'nPatchInfo'top,
p'nPatchInfo'right,
p'nPatchInfo'bottom,
p'nPatchInfo'layout,
)
where
import Foreign
( Ptr,
Storable (alignment, peek, poke, sizeOf),
Word8,
castPtr,
newArray,
peekArray,
plusPtr,
)
import Foreign.C
( CInt (..),
CUChar,
CUInt,
)
import Raylib.Internal (getPixelDataSize)
import Raylib.Internal.Foreign (Freeable (rlFreeDependents), c'free)
import Raylib.Types.Core (Rectangle)
data PixelFormat
= PixelFormatUnset
| PixelFormatUncompressedGrayscale
| PixelFormatUncompressedGrayAlpha
| PixelFormatUncompressedR5G6B5
| PixelFormatUncompressedR8G8B8
| PixelFormatUncompressedR5G5B5A1
| PixelFormatUncompressedR4G4B4A4
| PixelFormatUncompressedR8G8B8A8
| PixelFormatUncompressedR32
| PixelFormatUncompressedR32G32B32
| PixelFormatUncompressedR32G32B32A32
| PixelFormatUncompressedR16
| PixelFormatUncompressedR16G16B16
| PixelFormatUncompressedR16G16B16A16
| PixelFormatCompressedDxt1Rgb
| PixelFormatCompressedDxt1Rgba
| PixelFormatCompressedDxt3Rgba
| PixelFormatCompressedDxt5Rgba
| PixelFormatCompressedEtc1Rgb
| PixelFormatCompressedEtc2Rgb
| PixelFormatCompressedEtc2EacRgba
| PixelFormatCompressedPvrtRgb
| PixelFormatCompressedPvrtRgba
| PixelFormatCompressedAstc4x4Rgba
| PixelFormatCompressedAstc8x8Rgba
deriving (PixelFormat -> PixelFormat -> Bool
(PixelFormat -> PixelFormat -> Bool)
-> (PixelFormat -> PixelFormat -> Bool) -> Eq PixelFormat
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PixelFormat -> PixelFormat -> Bool
== :: PixelFormat -> PixelFormat -> Bool
$c/= :: PixelFormat -> PixelFormat -> Bool
/= :: PixelFormat -> PixelFormat -> Bool
Eq, Int -> PixelFormat -> ShowS
[PixelFormat] -> ShowS
PixelFormat -> String
(Int -> PixelFormat -> ShowS)
-> (PixelFormat -> String)
-> ([PixelFormat] -> ShowS)
-> Show PixelFormat
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PixelFormat -> ShowS
showsPrec :: Int -> PixelFormat -> ShowS
$cshow :: PixelFormat -> String
show :: PixelFormat -> String
$cshowList :: [PixelFormat] -> ShowS
showList :: [PixelFormat] -> ShowS
Show)
instance Storable PixelFormat where
sizeOf :: PixelFormat -> Int
sizeOf PixelFormat
_ = Int
4
alignment :: PixelFormat -> Int
alignment PixelFormat
_ = Int
4
peek :: Ptr PixelFormat -> IO PixelFormat
peek Ptr PixelFormat
ptr = do
CInt
val <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr PixelFormat -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr PixelFormat
ptr :: Ptr CInt)
PixelFormat -> IO PixelFormat
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int -> PixelFormat
forall a. Enum a => Int -> a
toEnum (Int -> PixelFormat) -> Int -> PixelFormat
forall a b. (a -> b) -> a -> b
$ CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
val)
poke :: Ptr PixelFormat -> PixelFormat -> IO ()
poke Ptr PixelFormat
ptr PixelFormat
v = do
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr PixelFormat -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr PixelFormat
ptr) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (PixelFormat -> Int
forall a. Enum a => a -> Int
fromEnum PixelFormat
v) :: CInt)
instance Enum PixelFormat where
fromEnum :: PixelFormat -> Int
fromEnum PixelFormat
n = case PixelFormat
n of
PixelFormat
PixelFormatUnset -> Int
0
PixelFormat
PixelFormatUncompressedGrayscale -> Int
1
PixelFormat
PixelFormatUncompressedGrayAlpha -> Int
2
PixelFormat
PixelFormatUncompressedR5G6B5 -> Int
3
PixelFormat
PixelFormatUncompressedR8G8B8 -> Int
4
PixelFormat
PixelFormatUncompressedR5G5B5A1 -> Int
5
PixelFormat
PixelFormatUncompressedR4G4B4A4 -> Int
6
PixelFormat
PixelFormatUncompressedR8G8B8A8 -> Int
7
PixelFormat
PixelFormatUncompressedR32 -> Int
8
PixelFormat
PixelFormatUncompressedR32G32B32 -> Int
9
PixelFormat
PixelFormatUncompressedR32G32B32A32 -> Int
10
PixelFormat
PixelFormatUncompressedR16 -> Int
11
PixelFormat
PixelFormatUncompressedR16G16B16 -> Int
12
PixelFormat
PixelFormatUncompressedR16G16B16A16 -> Int
13
PixelFormat
PixelFormatCompressedDxt1Rgb -> Int
14
PixelFormat
PixelFormatCompressedDxt1Rgba -> Int
15
PixelFormat
PixelFormatCompressedDxt3Rgba -> Int
16
PixelFormat
PixelFormatCompressedDxt5Rgba -> Int
17
PixelFormat
PixelFormatCompressedEtc1Rgb -> Int
18
PixelFormat
PixelFormatCompressedEtc2Rgb -> Int
19
PixelFormat
PixelFormatCompressedEtc2EacRgba -> Int
20
PixelFormat
PixelFormatCompressedPvrtRgb -> Int
21
PixelFormat
PixelFormatCompressedPvrtRgba -> Int
22
PixelFormat
PixelFormatCompressedAstc4x4Rgba -> Int
23
PixelFormat
PixelFormatCompressedAstc8x8Rgba -> Int
24
toEnum :: Int -> PixelFormat
toEnum Int
n = case Int
n of
Int
0 -> PixelFormat
PixelFormatUnset
Int
1 -> PixelFormat
PixelFormatUncompressedGrayscale
Int
2 -> PixelFormat
PixelFormatUncompressedGrayAlpha
Int
3 -> PixelFormat
PixelFormatUncompressedR5G6B5
Int
4 -> PixelFormat
PixelFormatUncompressedR8G8B8
Int
5 -> PixelFormat
PixelFormatUncompressedR5G5B5A1
Int
6 -> PixelFormat
PixelFormatUncompressedR4G4B4A4
Int
7 -> PixelFormat
PixelFormatUncompressedR8G8B8A8
Int
8 -> PixelFormat
PixelFormatUncompressedR32
Int
9 -> PixelFormat
PixelFormatUncompressedR32G32B32
Int
10 -> PixelFormat
PixelFormatUncompressedR32G32B32A32
Int
11 -> PixelFormat
PixelFormatUncompressedR16
Int
12 -> PixelFormat
PixelFormatUncompressedR16G16B16
Int
13 -> PixelFormat
PixelFormatUncompressedR16G16B16A16
Int
14 -> PixelFormat
PixelFormatCompressedDxt1Rgb
Int
15 -> PixelFormat
PixelFormatCompressedDxt1Rgba
Int
16 -> PixelFormat
PixelFormatCompressedDxt3Rgba
Int
17 -> PixelFormat
PixelFormatCompressedDxt5Rgba
Int
18 -> PixelFormat
PixelFormatCompressedEtc1Rgb
Int
19 -> PixelFormat
PixelFormatCompressedEtc2Rgb
Int
20 -> PixelFormat
PixelFormatCompressedEtc2EacRgba
Int
21 -> PixelFormat
PixelFormatCompressedPvrtRgb
Int
22 -> PixelFormat
PixelFormatCompressedPvrtRgba
Int
23 -> PixelFormat
PixelFormatCompressedAstc4x4Rgba
Int
24 -> PixelFormat
PixelFormatCompressedAstc8x8Rgba
Int
_ -> String -> PixelFormat
forall a. HasCallStack => String -> a
error (String -> PixelFormat) -> String -> PixelFormat
forall a b. (a -> b) -> a -> b
$ String
"(PixelFormat.toEnum) Invalid value: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
n
data TextureFilter
= TextureFilterPoint
| TextureFilterBilinear
| TextureFilterTrilinear
| TextureFilterAnisotropic4x
| TextureFilterAnisotropic8x
| TextureFilterAnisotropic16x
deriving (Int -> TextureFilter
TextureFilter -> Int
TextureFilter -> [TextureFilter]
TextureFilter -> TextureFilter
TextureFilter -> TextureFilter -> [TextureFilter]
TextureFilter -> TextureFilter -> TextureFilter -> [TextureFilter]
(TextureFilter -> TextureFilter)
-> (TextureFilter -> TextureFilter)
-> (Int -> TextureFilter)
-> (TextureFilter -> Int)
-> (TextureFilter -> [TextureFilter])
-> (TextureFilter -> TextureFilter -> [TextureFilter])
-> (TextureFilter -> TextureFilter -> [TextureFilter])
-> (TextureFilter
-> TextureFilter -> TextureFilter -> [TextureFilter])
-> Enum TextureFilter
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: TextureFilter -> TextureFilter
succ :: TextureFilter -> TextureFilter
$cpred :: TextureFilter -> TextureFilter
pred :: TextureFilter -> TextureFilter
$ctoEnum :: Int -> TextureFilter
toEnum :: Int -> TextureFilter
$cfromEnum :: TextureFilter -> Int
fromEnum :: TextureFilter -> Int
$cenumFrom :: TextureFilter -> [TextureFilter]
enumFrom :: TextureFilter -> [TextureFilter]
$cenumFromThen :: TextureFilter -> TextureFilter -> [TextureFilter]
enumFromThen :: TextureFilter -> TextureFilter -> [TextureFilter]
$cenumFromTo :: TextureFilter -> TextureFilter -> [TextureFilter]
enumFromTo :: TextureFilter -> TextureFilter -> [TextureFilter]
$cenumFromThenTo :: TextureFilter -> TextureFilter -> TextureFilter -> [TextureFilter]
enumFromThenTo :: TextureFilter -> TextureFilter -> TextureFilter -> [TextureFilter]
Enum)
data TextureWrap
= TextureWrapRepeat
| TextureWrapClamp
| TextureWrapMirrorRepeat
| TextureWrapMirrorClamp
deriving (Int -> TextureWrap
TextureWrap -> Int
TextureWrap -> [TextureWrap]
TextureWrap -> TextureWrap
TextureWrap -> TextureWrap -> [TextureWrap]
TextureWrap -> TextureWrap -> TextureWrap -> [TextureWrap]
(TextureWrap -> TextureWrap)
-> (TextureWrap -> TextureWrap)
-> (Int -> TextureWrap)
-> (TextureWrap -> Int)
-> (TextureWrap -> [TextureWrap])
-> (TextureWrap -> TextureWrap -> [TextureWrap])
-> (TextureWrap -> TextureWrap -> [TextureWrap])
-> (TextureWrap -> TextureWrap -> TextureWrap -> [TextureWrap])
-> Enum TextureWrap
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: TextureWrap -> TextureWrap
succ :: TextureWrap -> TextureWrap
$cpred :: TextureWrap -> TextureWrap
pred :: TextureWrap -> TextureWrap
$ctoEnum :: Int -> TextureWrap
toEnum :: Int -> TextureWrap
$cfromEnum :: TextureWrap -> Int
fromEnum :: TextureWrap -> Int
$cenumFrom :: TextureWrap -> [TextureWrap]
enumFrom :: TextureWrap -> [TextureWrap]
$cenumFromThen :: TextureWrap -> TextureWrap -> [TextureWrap]
enumFromThen :: TextureWrap -> TextureWrap -> [TextureWrap]
$cenumFromTo :: TextureWrap -> TextureWrap -> [TextureWrap]
enumFromTo :: TextureWrap -> TextureWrap -> [TextureWrap]
$cenumFromThenTo :: TextureWrap -> TextureWrap -> TextureWrap -> [TextureWrap]
enumFromThenTo :: TextureWrap -> TextureWrap -> TextureWrap -> [TextureWrap]
Enum)
data CubemapLayout
= CubemapLayoutAutoDetect
| CubemapLayoutLineVertical
| CubemapLayoutLineHorizontal
| CubemapLayoutCrossThreeByFour
| CubemapLayoutCrossThreeByThree
| CubemapLayoutPanorama
deriving (Int -> CubemapLayout
CubemapLayout -> Int
CubemapLayout -> [CubemapLayout]
CubemapLayout -> CubemapLayout
CubemapLayout -> CubemapLayout -> [CubemapLayout]
CubemapLayout -> CubemapLayout -> CubemapLayout -> [CubemapLayout]
(CubemapLayout -> CubemapLayout)
-> (CubemapLayout -> CubemapLayout)
-> (Int -> CubemapLayout)
-> (CubemapLayout -> Int)
-> (CubemapLayout -> [CubemapLayout])
-> (CubemapLayout -> CubemapLayout -> [CubemapLayout])
-> (CubemapLayout -> CubemapLayout -> [CubemapLayout])
-> (CubemapLayout
-> CubemapLayout -> CubemapLayout -> [CubemapLayout])
-> Enum CubemapLayout
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: CubemapLayout -> CubemapLayout
succ :: CubemapLayout -> CubemapLayout
$cpred :: CubemapLayout -> CubemapLayout
pred :: CubemapLayout -> CubemapLayout
$ctoEnum :: Int -> CubemapLayout
toEnum :: Int -> CubemapLayout
$cfromEnum :: CubemapLayout -> Int
fromEnum :: CubemapLayout -> Int
$cenumFrom :: CubemapLayout -> [CubemapLayout]
enumFrom :: CubemapLayout -> [CubemapLayout]
$cenumFromThen :: CubemapLayout -> CubemapLayout -> [CubemapLayout]
enumFromThen :: CubemapLayout -> CubemapLayout -> [CubemapLayout]
$cenumFromTo :: CubemapLayout -> CubemapLayout -> [CubemapLayout]
enumFromTo :: CubemapLayout -> CubemapLayout -> [CubemapLayout]
$cenumFromThenTo :: CubemapLayout -> CubemapLayout -> CubemapLayout -> [CubemapLayout]
enumFromThenTo :: CubemapLayout -> CubemapLayout -> CubemapLayout -> [CubemapLayout]
Enum)
data NPatchLayout = NPatchNinePatch | NPatchThreePatchVertical | NPatchThreePatchHorizontal deriving (NPatchLayout -> NPatchLayout -> Bool
(NPatchLayout -> NPatchLayout -> Bool)
-> (NPatchLayout -> NPatchLayout -> Bool) -> Eq NPatchLayout
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NPatchLayout -> NPatchLayout -> Bool
== :: NPatchLayout -> NPatchLayout -> Bool
$c/= :: NPatchLayout -> NPatchLayout -> Bool
/= :: NPatchLayout -> NPatchLayout -> Bool
Eq, Int -> NPatchLayout -> ShowS
[NPatchLayout] -> ShowS
NPatchLayout -> String
(Int -> NPatchLayout -> ShowS)
-> (NPatchLayout -> String)
-> ([NPatchLayout] -> ShowS)
-> Show NPatchLayout
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> NPatchLayout -> ShowS
showsPrec :: Int -> NPatchLayout -> ShowS
$cshow :: NPatchLayout -> String
show :: NPatchLayout -> String
$cshowList :: [NPatchLayout] -> ShowS
showList :: [NPatchLayout] -> ShowS
Show, Int -> NPatchLayout
NPatchLayout -> Int
NPatchLayout -> [NPatchLayout]
NPatchLayout -> NPatchLayout
NPatchLayout -> NPatchLayout -> [NPatchLayout]
NPatchLayout -> NPatchLayout -> NPatchLayout -> [NPatchLayout]
(NPatchLayout -> NPatchLayout)
-> (NPatchLayout -> NPatchLayout)
-> (Int -> NPatchLayout)
-> (NPatchLayout -> Int)
-> (NPatchLayout -> [NPatchLayout])
-> (NPatchLayout -> NPatchLayout -> [NPatchLayout])
-> (NPatchLayout -> NPatchLayout -> [NPatchLayout])
-> (NPatchLayout -> NPatchLayout -> NPatchLayout -> [NPatchLayout])
-> Enum NPatchLayout
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: NPatchLayout -> NPatchLayout
succ :: NPatchLayout -> NPatchLayout
$cpred :: NPatchLayout -> NPatchLayout
pred :: NPatchLayout -> NPatchLayout
$ctoEnum :: Int -> NPatchLayout
toEnum :: Int -> NPatchLayout
$cfromEnum :: NPatchLayout -> Int
fromEnum :: NPatchLayout -> Int
$cenumFrom :: NPatchLayout -> [NPatchLayout]
enumFrom :: NPatchLayout -> [NPatchLayout]
$cenumFromThen :: NPatchLayout -> NPatchLayout -> [NPatchLayout]
enumFromThen :: NPatchLayout -> NPatchLayout -> [NPatchLayout]
$cenumFromTo :: NPatchLayout -> NPatchLayout -> [NPatchLayout]
enumFromTo :: NPatchLayout -> NPatchLayout -> [NPatchLayout]
$cenumFromThenTo :: NPatchLayout -> NPatchLayout -> NPatchLayout -> [NPatchLayout]
enumFromThenTo :: NPatchLayout -> NPatchLayout -> NPatchLayout -> [NPatchLayout]
Enum)
instance Storable NPatchLayout where
sizeOf :: NPatchLayout -> Int
sizeOf NPatchLayout
_ = Int
4
alignment :: NPatchLayout -> Int
alignment NPatchLayout
_ = Int
4
peek :: Ptr NPatchLayout -> IO NPatchLayout
peek Ptr NPatchLayout
ptr = do
CInt
val <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr NPatchLayout -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr NPatchLayout
ptr)
NPatchLayout -> IO NPatchLayout
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (NPatchLayout -> IO NPatchLayout)
-> NPatchLayout -> IO NPatchLayout
forall a b. (a -> b) -> a -> b
$ Int -> NPatchLayout
forall a. Enum a => Int -> a
toEnum (Int -> NPatchLayout) -> Int -> NPatchLayout
forall a b. (a -> b) -> a -> b
$ CInt -> Int
forall a. Enum a => a -> Int
fromEnum (CInt
val :: CInt)
poke :: Ptr NPatchLayout -> NPatchLayout -> IO ()
poke Ptr NPatchLayout
ptr NPatchLayout
v = Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr NPatchLayout -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr NPatchLayout
ptr) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (NPatchLayout -> Int
forall a. Enum a => a -> Int
fromEnum NPatchLayout
v) :: CInt)
data Image = Image
{ Image -> [Word8]
image'data :: [Word8],
Image -> Int
image'width :: Int,
Image -> Int
image'height :: Int,
Image -> Int
image'mipmaps :: Int,
Image -> PixelFormat
image'format :: PixelFormat
}
deriving (Image -> Image -> Bool
(Image -> Image -> Bool) -> (Image -> Image -> Bool) -> Eq Image
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Image -> Image -> Bool
== :: Image -> Image -> Bool
$c/= :: Image -> Image -> Bool
/= :: Image -> Image -> Bool
Eq, Int -> Image -> ShowS
[Image] -> ShowS
Image -> String
(Int -> Image -> ShowS)
-> (Image -> String) -> ([Image] -> ShowS) -> Show Image
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Image -> ShowS
showsPrec :: Int -> Image -> ShowS
$cshow :: Image -> String
show :: Image -> String
$cshowList :: [Image] -> ShowS
showList :: [Image] -> ShowS
Show)
instance Storable Image where
sizeOf :: Image -> Int
sizeOf Image
_ = Int
24
alignment :: Image -> Int
alignment Image
_ = Int
4
peek :: Ptr Image -> IO Image
peek Ptr Image
_p = do
Int
width <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr Image -> Ptr CInt
p'image'width Ptr Image
_p)
Int
height <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr Image -> Ptr CInt
p'image'height Ptr Image
_p)
Int
mipmaps <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr Image -> Ptr CInt
p'image'mipmaps Ptr Image
_p)
PixelFormat
format <- Ptr PixelFormat -> IO PixelFormat
forall a. Storable a => Ptr a -> IO a
peek (Ptr Image -> Ptr PixelFormat
p'image'format Ptr Image
_p)
[Word8]
iData <- (CUChar -> Word8) -> [CUChar] -> [Word8]
forall a b. (a -> b) -> [a] -> [b]
map CUChar -> Word8
forall a b. (Integral a, Num b) => a -> b
fromIntegral ([CUChar] -> [Word8]) -> IO [CUChar] -> IO [Word8]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Int -> Ptr CUChar -> IO [CUChar]
forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray (Int -> Int -> Int -> Int
getPixelDataSize Int
width Int
height (PixelFormat -> Int
forall a. Enum a => a -> Int
fromEnum PixelFormat
format)) (Ptr CUChar -> IO [CUChar]) -> IO (Ptr CUChar) -> IO [CUChar]
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (Ptr CUChar) -> IO (Ptr CUChar)
forall a. Storable a => Ptr a -> IO a
peek (Ptr Image -> Ptr (Ptr CUChar)
p'image'data Ptr Image
_p))
Image -> IO Image
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Image -> IO Image) -> Image -> IO Image
forall a b. (a -> b) -> a -> b
$ [Word8] -> Int -> Int -> Int -> PixelFormat -> Image
Image [Word8]
iData Int
width Int
height Int
mipmaps PixelFormat
format
poke :: Ptr Image -> Image -> IO ()
poke Ptr Image
_p (Image [Word8]
arr Int
width Int
height Int
mipmaps PixelFormat
format) = do
Ptr (Ptr CUChar) -> Ptr CUChar -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Image -> Ptr (Ptr CUChar)
p'image'data Ptr Image
_p) (Ptr CUChar -> IO ()) -> IO (Ptr CUChar) -> IO ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< [CUChar] -> IO (Ptr CUChar)
forall a. Storable a => [a] -> IO (Ptr a)
newArray ((Word8 -> CUChar) -> [Word8] -> [CUChar]
forall a b. (a -> b) -> [a] -> [b]
map Word8 -> CUChar
forall a b. (Integral a, Num b) => a -> b
fromIntegral [Word8]
arr)
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Image -> Ptr CInt
p'image'width Ptr Image
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
width)
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Image -> Ptr CInt
p'image'height Ptr Image
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
height)
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Image -> Ptr CInt
p'image'mipmaps Ptr Image
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
mipmaps)
Ptr PixelFormat -> PixelFormat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Image -> Ptr PixelFormat
p'image'format Ptr Image
_p) PixelFormat
format
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
p'image'data :: Ptr Image -> Ptr (Ptr CUChar)
p'image'data :: Ptr Image -> Ptr (Ptr CUChar)
p'image'data = (Ptr Image -> Int -> Ptr (Ptr CUChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0)
p'image'width :: Ptr Image -> Ptr CInt
p'image'width :: Ptr Image -> Ptr CInt
p'image'width = (Ptr Image -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8)
p'image'height :: Ptr Image -> Ptr CInt
p'image'height :: Ptr Image -> Ptr CInt
p'image'height = (Ptr Image -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12)
p'image'mipmaps :: Ptr Image -> Ptr CInt
p'image'mipmaps :: Ptr Image -> Ptr CInt
p'image'mipmaps = (Ptr Image -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16)
p'image'format :: Ptr Image -> Ptr PixelFormat
p'image'format :: Ptr Image -> Ptr PixelFormat
p'image'format = (Ptr Image -> Int -> Ptr PixelFormat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20)
instance Freeable Image where
rlFreeDependents :: Image -> Ptr Image -> IO ()
rlFreeDependents Image
_ Ptr Image
ptr = do
Ptr () -> IO ()
c'free (Ptr () -> IO ()) -> (Ptr CUChar -> Ptr ()) -> Ptr CUChar -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr CUChar -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (Ptr CUChar -> IO ()) -> IO (Ptr CUChar) -> IO ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (Ptr CUChar) -> IO (Ptr CUChar)
forall a. Storable a => Ptr a -> IO a
peek (Ptr Image -> Ptr (Ptr CUChar)
p'image'data Ptr Image
ptr)
data Texture = Texture
{ Texture -> Integer
texture'id :: Integer,
Texture -> Int
texture'width :: Int,
Texture -> Int
texture'height :: Int,
Texture -> Int
texture'mipmaps :: Int,
Texture -> PixelFormat
texture'format :: PixelFormat
}
deriving (Texture -> Texture -> Bool
(Texture -> Texture -> Bool)
-> (Texture -> Texture -> Bool) -> Eq Texture
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Texture -> Texture -> Bool
== :: Texture -> Texture -> Bool
$c/= :: Texture -> Texture -> Bool
/= :: Texture -> Texture -> Bool
Eq, Int -> Texture -> ShowS
[Texture] -> ShowS
Texture -> String
(Int -> Texture -> ShowS)
-> (Texture -> String) -> ([Texture] -> ShowS) -> Show Texture
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Texture -> ShowS
showsPrec :: Int -> Texture -> ShowS
$cshow :: Texture -> String
show :: Texture -> String
$cshowList :: [Texture] -> ShowS
showList :: [Texture] -> ShowS
Show, Texture -> Ptr Texture -> IO ()
(Texture -> Ptr Texture -> IO ())
-> (Texture -> Ptr Texture -> IO ()) -> Freeable Texture
forall a.
(a -> Ptr a -> IO ()) -> (a -> Ptr a -> IO ()) -> Freeable a
$crlFreeDependents :: Texture -> Ptr Texture -> IO ()
rlFreeDependents :: Texture -> Ptr Texture -> IO ()
$crlFree :: Texture -> Ptr Texture -> IO ()
rlFree :: Texture -> Ptr Texture -> IO ()
Freeable)
instance Storable Texture where
sizeOf :: Texture -> Int
sizeOf Texture
_ = Int
20
alignment :: Texture -> Int
alignment Texture
_ = Int
4
peek :: Ptr Texture -> IO Texture
peek Ptr Texture
_p = do
Integer
tId <- CUInt -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CUInt -> Integer) -> IO CUInt -> IO Integer
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CUInt -> IO CUInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr Texture -> Ptr CUInt
p'texture'id Ptr Texture
_p)
Int
width <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr Texture -> Ptr CInt
p'texture'width Ptr Texture
_p)
Int
height <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr Texture -> Ptr CInt
p'texture'height Ptr Texture
_p)
Int
mipmaps <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr Texture -> Ptr CInt
p'texture'mipmaps Ptr Texture
_p)
PixelFormat
format <- Ptr PixelFormat -> IO PixelFormat
forall a. Storable a => Ptr a -> IO a
peek (Ptr Texture -> Ptr PixelFormat
p'texture'format Ptr Texture
_p)
Texture -> IO Texture
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Texture -> IO Texture) -> Texture -> IO Texture
forall a b. (a -> b) -> a -> b
$ Integer -> Int -> Int -> Int -> PixelFormat -> Texture
Texture Integer
tId Int
width Int
height Int
mipmaps PixelFormat
format
poke :: Ptr Texture -> Texture -> IO ()
poke Ptr Texture
_p (Texture Integer
tId Int
width Int
height Int
mipmaps PixelFormat
format) = do
Ptr CUInt -> CUInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Texture -> Ptr CUInt
p'texture'id Ptr Texture
_p) (Integer -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
tId)
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Texture -> Ptr CInt
p'texture'width Ptr Texture
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
width)
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Texture -> Ptr CInt
p'texture'height Ptr Texture
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
height)
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Texture -> Ptr CInt
p'texture'mipmaps Ptr Texture
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
mipmaps)
Ptr PixelFormat -> PixelFormat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Texture -> Ptr PixelFormat
p'texture'format Ptr Texture
_p) PixelFormat
format
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
p'texture'id :: Ptr Texture -> Ptr CUInt
p'texture'id :: Ptr Texture -> Ptr CUInt
p'texture'id = (Ptr Texture -> Int -> Ptr CUInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0)
p'texture'width :: Ptr Texture -> Ptr CInt
p'texture'width :: Ptr Texture -> Ptr CInt
p'texture'width = (Ptr Texture -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4)
p'texture'height :: Ptr Texture -> Ptr CInt
p'texture'height :: Ptr Texture -> Ptr CInt
p'texture'height = (Ptr Texture -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8)
p'texture'mipmaps :: Ptr Texture -> Ptr CInt
p'texture'mipmaps :: Ptr Texture -> Ptr CInt
p'texture'mipmaps = (Ptr Texture -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12)
p'texture'format :: Ptr Texture -> Ptr PixelFormat
p'texture'format :: Ptr Texture -> Ptr PixelFormat
p'texture'format = (Ptr Texture -> Int -> Ptr PixelFormat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16)
type Texture2D = Texture
type TextureCubemap = Texture
data RenderTexture = RenderTexture
{ RenderTexture -> Integer
renderTexture'id :: Integer,
RenderTexture -> Texture
renderTexture'texture :: Texture,
RenderTexture -> Texture
renderTexture'depth :: Texture
}
deriving (RenderTexture -> RenderTexture -> Bool
(RenderTexture -> RenderTexture -> Bool)
-> (RenderTexture -> RenderTexture -> Bool) -> Eq RenderTexture
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: RenderTexture -> RenderTexture -> Bool
== :: RenderTexture -> RenderTexture -> Bool
$c/= :: RenderTexture -> RenderTexture -> Bool
/= :: RenderTexture -> RenderTexture -> Bool
Eq, Int -> RenderTexture -> ShowS
[RenderTexture] -> ShowS
RenderTexture -> String
(Int -> RenderTexture -> ShowS)
-> (RenderTexture -> String)
-> ([RenderTexture] -> ShowS)
-> Show RenderTexture
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> RenderTexture -> ShowS
showsPrec :: Int -> RenderTexture -> ShowS
$cshow :: RenderTexture -> String
show :: RenderTexture -> String
$cshowList :: [RenderTexture] -> ShowS
showList :: [RenderTexture] -> ShowS
Show, RenderTexture -> Ptr RenderTexture -> IO ()
(RenderTexture -> Ptr RenderTexture -> IO ())
-> (RenderTexture -> Ptr RenderTexture -> IO ())
-> Freeable RenderTexture
forall a.
(a -> Ptr a -> IO ()) -> (a -> Ptr a -> IO ()) -> Freeable a
$crlFreeDependents :: RenderTexture -> Ptr RenderTexture -> IO ()
rlFreeDependents :: RenderTexture -> Ptr RenderTexture -> IO ()
$crlFree :: RenderTexture -> Ptr RenderTexture -> IO ()
rlFree :: RenderTexture -> Ptr RenderTexture -> IO ()
Freeable)
instance Storable RenderTexture where
sizeOf :: RenderTexture -> Int
sizeOf RenderTexture
_ = Int
44
alignment :: RenderTexture -> Int
alignment RenderTexture
_ = Int
4
peek :: Ptr RenderTexture -> IO RenderTexture
peek Ptr RenderTexture
_p = do
Integer
rtId <- CUInt -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CUInt -> Integer) -> IO CUInt -> IO Integer
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CUInt -> IO CUInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr RenderTexture -> Ptr CUInt
p'renderTexture'id Ptr RenderTexture
_p)
Texture
texture <- Ptr Texture -> IO Texture
forall a. Storable a => Ptr a -> IO a
peek (Ptr RenderTexture -> Ptr Texture
p'renderTexture'texture Ptr RenderTexture
_p)
Texture
depth <- Ptr Texture -> IO Texture
forall a. Storable a => Ptr a -> IO a
peek (Ptr RenderTexture -> Ptr Texture
p'renderTexture'depth Ptr RenderTexture
_p)
RenderTexture -> IO RenderTexture
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (RenderTexture -> IO RenderTexture)
-> RenderTexture -> IO RenderTexture
forall a b. (a -> b) -> a -> b
$ Integer -> Texture -> Texture -> RenderTexture
RenderTexture Integer
rtId Texture
texture Texture
depth
poke :: Ptr RenderTexture -> RenderTexture -> IO ()
poke Ptr RenderTexture
_p (RenderTexture Integer
rtId Texture
texture Texture
depth) = do
Ptr CUInt -> CUInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr RenderTexture -> Ptr CUInt
p'renderTexture'id Ptr RenderTexture
_p) (Integer -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
rtId)
Ptr Texture -> Texture -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr RenderTexture -> Ptr Texture
p'renderTexture'texture Ptr RenderTexture
_p) Texture
texture
Ptr Texture -> Texture -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr RenderTexture -> Ptr Texture
p'renderTexture'depth Ptr RenderTexture
_p) Texture
depth
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
p'renderTexture'id :: Ptr RenderTexture -> Ptr CUInt
p'renderTexture'id :: Ptr RenderTexture -> Ptr CUInt
p'renderTexture'id = (Ptr RenderTexture -> Int -> Ptr CUInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0)
p'renderTexture'texture :: Ptr RenderTexture -> Ptr Texture
p'renderTexture'texture :: Ptr RenderTexture -> Ptr Texture
p'renderTexture'texture = (Ptr RenderTexture -> Int -> Ptr Texture
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4)
p'renderTexture'depth :: Ptr RenderTexture -> Ptr Texture
p'renderTexture'depth :: Ptr RenderTexture -> Ptr Texture
p'renderTexture'depth = (Ptr RenderTexture -> Int -> Ptr Texture
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24)
type RenderTexture2D = RenderTexture
data NPatchInfo = NPatchInfo
{ NPatchInfo -> Rectangle
nPatchInfo'source :: Rectangle,
NPatchInfo -> Int
nPatchInfo'left :: Int,
NPatchInfo -> Int
nPatchInfo'top :: Int,
NPatchInfo -> Int
nPatchInfo'right :: Int,
NPatchInfo -> Int
nPatchInfo'bottom :: Int,
NPatchInfo -> NPatchLayout
nPatchInfo'layout :: NPatchLayout
}
deriving (NPatchInfo -> NPatchInfo -> Bool
(NPatchInfo -> NPatchInfo -> Bool)
-> (NPatchInfo -> NPatchInfo -> Bool) -> Eq NPatchInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NPatchInfo -> NPatchInfo -> Bool
== :: NPatchInfo -> NPatchInfo -> Bool
$c/= :: NPatchInfo -> NPatchInfo -> Bool
/= :: NPatchInfo -> NPatchInfo -> Bool
Eq, Int -> NPatchInfo -> ShowS
[NPatchInfo] -> ShowS
NPatchInfo -> String
(Int -> NPatchInfo -> ShowS)
-> (NPatchInfo -> String)
-> ([NPatchInfo] -> ShowS)
-> Show NPatchInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> NPatchInfo -> ShowS
showsPrec :: Int -> NPatchInfo -> ShowS
$cshow :: NPatchInfo -> String
show :: NPatchInfo -> String
$cshowList :: [NPatchInfo] -> ShowS
showList :: [NPatchInfo] -> ShowS
Show, NPatchInfo -> Ptr NPatchInfo -> IO ()
(NPatchInfo -> Ptr NPatchInfo -> IO ())
-> (NPatchInfo -> Ptr NPatchInfo -> IO ()) -> Freeable NPatchInfo
forall a.
(a -> Ptr a -> IO ()) -> (a -> Ptr a -> IO ()) -> Freeable a
$crlFreeDependents :: NPatchInfo -> Ptr NPatchInfo -> IO ()
rlFreeDependents :: NPatchInfo -> Ptr NPatchInfo -> IO ()
$crlFree :: NPatchInfo -> Ptr NPatchInfo -> IO ()
rlFree :: NPatchInfo -> Ptr NPatchInfo -> IO ()
Freeable)
instance Storable NPatchInfo where
sizeOf :: NPatchInfo -> Int
sizeOf NPatchInfo
_ = Int
36
alignment :: NPatchInfo -> Int
alignment NPatchInfo
_ = Int
4
peek :: Ptr NPatchInfo -> IO NPatchInfo
peek Ptr NPatchInfo
_p = do
Rectangle
source <- Ptr Rectangle -> IO Rectangle
forall a. Storable a => Ptr a -> IO a
peek (Ptr NPatchInfo -> Ptr Rectangle
p'nPatchInfo'source Ptr NPatchInfo
_p)
Int
left <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'left Ptr NPatchInfo
_p)
Int
top <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'top Ptr NPatchInfo
_p)
Int
right <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'right Ptr NPatchInfo
_p)
Int
bottom <- CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'bottom Ptr NPatchInfo
_p)
NPatchLayout
layout <- Ptr NPatchLayout -> IO NPatchLayout
forall a. Storable a => Ptr a -> IO a
peek (Ptr NPatchInfo -> Ptr NPatchLayout
p'nPatchInfo'layout Ptr NPatchInfo
_p)
NPatchInfo -> IO NPatchInfo
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (NPatchInfo -> IO NPatchInfo) -> NPatchInfo -> IO NPatchInfo
forall a b. (a -> b) -> a -> b
$ Rectangle -> Int -> Int -> Int -> Int -> NPatchLayout -> NPatchInfo
NPatchInfo Rectangle
source Int
left Int
right Int
top Int
bottom NPatchLayout
layout
poke :: Ptr NPatchInfo -> NPatchInfo -> IO ()
poke Ptr NPatchInfo
_p (NPatchInfo Rectangle
source Int
left Int
right Int
top Int
bottom NPatchLayout
layout) = do
Ptr Rectangle -> Rectangle -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr NPatchInfo -> Ptr Rectangle
p'nPatchInfo'source Ptr NPatchInfo
_p) Rectangle
source
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'left Ptr NPatchInfo
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
left)
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'right Ptr NPatchInfo
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
right)
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'top Ptr NPatchInfo
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
top)
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'bottom Ptr NPatchInfo
_p) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
bottom)
Ptr NPatchLayout -> NPatchLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr NPatchInfo -> Ptr NPatchLayout
p'nPatchInfo'layout Ptr NPatchInfo
_p) NPatchLayout
layout
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
p'nPatchInfo'source :: Ptr NPatchInfo -> Ptr Rectangle
p'nPatchInfo'source :: Ptr NPatchInfo -> Ptr Rectangle
p'nPatchInfo'source = (Ptr NPatchInfo -> Int -> Ptr Rectangle
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0)
p'nPatchInfo'left :: Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'left :: Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'left = (Ptr NPatchInfo -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16)
p'nPatchInfo'top :: Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'top :: Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'top = (Ptr NPatchInfo -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20)
p'nPatchInfo'right :: Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'right :: Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'right = (Ptr NPatchInfo -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24)
p'nPatchInfo'bottom :: Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'bottom :: Ptr NPatchInfo -> Ptr CInt
p'nPatchInfo'bottom = (Ptr NPatchInfo -> Int -> Ptr CInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28)
p'nPatchInfo'layout :: Ptr NPatchInfo -> Ptr NPatchLayout
p'nPatchInfo'layout :: Ptr NPatchInfo -> Ptr NPatchLayout
p'nPatchInfo'layout = (Ptr NPatchInfo -> Int -> Ptr NPatchLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32)