{-# LINE 1 "Graphics/UI/SDL/Rect.hsc" #-}
{-# LINE 5 "Graphics/UI/SDL/Rect.hsc" #-}
module Graphics.UI.SDL.Rect where
import Foreign (Storable(poke, sizeOf, alignment, peekByteOff, pokeByteOff,
peek))
import Data.Word (Word16)
import Data.Int (Int16)
data Rect
= Rect
{ Rect -> Int
rectX, Rect -> Int
rectY :: Int,
Rect -> Int
rectW, Rect -> Int
rectH :: Int }
deriving (Int -> Rect -> ShowS
[Rect] -> ShowS
Rect -> String
(Int -> Rect -> ShowS)
-> (Rect -> String) -> ([Rect] -> ShowS) -> Show Rect
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Rect -> ShowS
showsPrec :: Int -> Rect -> ShowS
$cshow :: Rect -> String
show :: Rect -> String
$cshowList :: [Rect] -> ShowS
showList :: [Rect] -> ShowS
Show,Rect -> Rect -> Bool
(Rect -> Rect -> Bool) -> (Rect -> Rect -> Bool) -> Eq Rect
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Rect -> Rect -> Bool
== :: Rect -> Rect -> Bool
$c/= :: Rect -> Rect -> Bool
/= :: Rect -> Rect -> Bool
Eq,Eq Rect
Eq Rect
-> (Rect -> Rect -> Ordering)
-> (Rect -> Rect -> Bool)
-> (Rect -> Rect -> Bool)
-> (Rect -> Rect -> Bool)
-> (Rect -> Rect -> Bool)
-> (Rect -> Rect -> Rect)
-> (Rect -> Rect -> Rect)
-> Ord Rect
Rect -> Rect -> Bool
Rect -> Rect -> Ordering
Rect -> Rect -> Rect
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 :: Rect -> Rect -> Ordering
compare :: Rect -> Rect -> Ordering
$c< :: Rect -> Rect -> Bool
< :: Rect -> Rect -> Bool
$c<= :: Rect -> Rect -> Bool
<= :: Rect -> Rect -> Bool
$c> :: Rect -> Rect -> Bool
> :: Rect -> Rect -> Bool
$c>= :: Rect -> Rect -> Bool
>= :: Rect -> Rect -> Bool
$cmax :: Rect -> Rect -> Rect
max :: Rect -> Rect -> Rect
$cmin :: Rect -> Rect -> Rect
min :: Rect -> Rect -> Rect
Ord)
instance Storable Rect where
sizeOf :: Rect -> Int
sizeOf = Int -> Rect -> Int
forall a b. a -> b -> a
const (Int
8)
{-# LINE 31 "Graphics/UI/SDL/Rect.hsc" #-}
alignment = const 2
peek :: Ptr Rect -> IO Rect
peek Ptr Rect
ptr
= do Int16
x <- (\Ptr Rect
hsc_ptr -> Ptr Rect -> Int -> IO Int16
forall b. Ptr b -> Int -> IO Int16
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Rect
hsc_ptr Int
0) Ptr Rect
ptr :: IO Int16
{-# LINE 34 "Graphics/UI/SDL/Rect.hsc" #-}
Int16
y <- (\Ptr Rect
hsc_ptr -> Ptr Rect -> Int -> IO Int16
forall b. Ptr b -> Int -> IO Int16
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Rect
hsc_ptr Int
2) Ptr Rect
ptr :: IO Int16
{-# LINE 35 "Graphics/UI/SDL/Rect.hsc" #-}
Word16
w <- (\Ptr Rect
hsc_ptr -> Ptr Rect -> Int -> IO Word16
forall b. Ptr b -> Int -> IO Word16
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Rect
hsc_ptr Int
4) Ptr Rect
ptr :: IO Word16
{-# LINE 36 "Graphics/UI/SDL/Rect.hsc" #-}
Word16
h <- (\Ptr Rect
hsc_ptr -> Ptr Rect -> Int -> IO Word16
forall b. Ptr b -> Int -> IO Word16
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr Rect
hsc_ptr Int
6) Ptr Rect
ptr :: IO Word16
{-# LINE 37 "Graphics/UI/SDL/Rect.hsc" #-}
Rect -> IO Rect
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Rect -> IO Rect) -> Rect -> IO Rect
forall a b. (a -> b) -> a -> b
$! Int -> Int -> Int -> Int -> Rect
Rect (Int16 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
x) (Int16 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int16
y) (Word16 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word16
w) (Word16 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word16
h)
poke :: Ptr Rect -> Rect -> IO ()
poke Ptr Rect
ptr (Rect Int
x Int
y Int
w Int
h)
= do (\Ptr Rect
hsc_ptr -> Ptr Rect -> Int -> Int16 -> IO ()
forall b. Ptr b -> Int -> Int16 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Rect
hsc_ptr Int
0) Ptr Rect
ptr (Int -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
x :: Int16)
{-# LINE 40 "Graphics/UI/SDL/Rect.hsc" #-}
(\Ptr Rect
hsc_ptr -> Ptr Rect -> Int -> Int16 -> IO ()
forall b. Ptr b -> Int -> Int16 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Rect
hsc_ptr Int
2) Ptr Rect
ptr (Int -> Int16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
y :: Int16)
{-# LINE 41 "Graphics/UI/SDL/Rect.hsc" #-}
(\Ptr Rect
hsc_ptr -> Ptr Rect -> Int -> Word16 -> IO ()
forall b. Ptr b -> Int -> Word16 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Rect
hsc_ptr Int
4) Ptr Rect
ptr (Int -> Word16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
w :: Word16)
{-# LINE 42 "Graphics/UI/SDL/Rect.hsc" #-}
(\Ptr Rect
hsc_ptr -> Ptr Rect -> Int -> Word16 -> IO ()
forall b. Ptr b -> Int -> Word16 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr Rect
hsc_ptr Int
6) Ptr Rect
ptr (Int -> Word16
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
h :: Word16)
{-# LINE 43 "Graphics/UI/SDL/Rect.hsc" #-}