module Graphics.X11.Xrender
where
import Graphics.X11
import Graphics.X11.Xlib.Types
import Foreign
import Foreign.C
import Foreign.C.Types
import Foreign.Ptr
import Foreign.Storable( Storable(..) )
peekCUShort :: Ptr a -> CInt -> IO Int
peekCUShort ptr off = do
v <- peekByteOff ptr (fromIntegral off)
return (fromIntegral (v::CUShort))
pokeCUShort :: Ptr a -> CInt -> Int -> IO ()
pokeCUShort ptr off v =
pokeByteOff ptr (fromIntegral off) (fromIntegral v::CUShort)
peekCShort :: Ptr a -> CInt -> IO Int
peekCShort ptr off = do
v <- peekByteOff ptr (fromIntegral off)
return (fromIntegral (v::CShort))
pokeCShort :: Ptr a -> CInt -> Int -> IO ()
pokeCShort ptr off v =
pokeByteOff ptr (fromIntegral off) (fromIntegral v::CShort)
data XRenderColor = XRenderColor {
xrc_red :: Int,
xrc_green :: Int,
xrc_blue :: Int,
xrc_alpha :: Int
}
instance Storable XRenderColor where
sizeOf _ = (8)
alignment _ = alignment (undefined::CInt)
peek p = do
red <- peekCUShort p (0)
blue <- peekCUShort p (4)
green <- peekCUShort p (2)
alpha <- peekCUShort p (6)
return (XRenderColor red blue green alpha)
poke p (XRenderColor red blue green alpha) = do
pokeCUShort p (0) red
pokeCUShort p (4) blue
pokeCUShort p (2) green
pokeCUShort p (6) alpha
data XGlyphInfo = XGlyphInfo {
gi_width :: Int,
gi_height :: Int,
gi_x :: Int,
gi_y :: Int,
gi_xOff :: Int,
gi_yOff :: Int
}
instance Storable XGlyphInfo where
sizeOf _ = (12)
alignment _ = alignment (undefined::CInt)
peek p = do
width <- peekCUShort p (0)
height <- peekCUShort p (2)
x <- peekCShort p (4)
y <- peekCShort p (6)
xOff <- peekCShort p (8)
yOff <- peekCShort p (10)
return (XGlyphInfo width height x y xOff yOff)
poke p (XGlyphInfo width height x y xOff yOff) = do
pokeCUShort p (0) width
pokeCUShort p (2) height
pokeCShort p (4) x
pokeCShort p (6) y
pokeCShort p (8) xOff
pokeCShort p (10) yOff