{-# LINE 1 "Graphics/X11/Xrender.hsc" #-}
-----------------------------------------------------------------------------
-- Module      :  Graphics.X11.Xrender
-- Copyright   :  Clemens Fruhwirth <clemens@endorphin.org> 2007
--
-- Haskell bindings for the Xrender extension.
--
-----------------------------------------------------------------------------

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 a -> CInt -> IO Int
peekCUShort Ptr a
ptr CInt
off = do
	CUShort
v <- Ptr a -> Int -> IO CUShort
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr a
ptr (CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
off)
	Int -> IO Int
forall (m :: * -> *) a. Monad m => a -> m a
return (CUShort -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CUShort
v::CUShort))

pokeCUShort :: Ptr a -> CInt -> Int -> IO ()
pokeCUShort :: Ptr a -> CInt -> Int -> IO ()
pokeCUShort Ptr a
ptr CInt
off Int
v =
	Ptr a -> Int -> CUShort -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr a
ptr (CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
off) (Int -> CUShort
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
v::CUShort)


peekCShort :: Ptr a -> CInt -> IO Int
peekCShort :: Ptr a -> CInt -> IO Int
peekCShort Ptr a
ptr CInt
off = do
	CShort
v <- Ptr a -> Int -> IO CShort
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr a
ptr (CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
off)
	Int -> IO Int
forall (m :: * -> *) a. Monad m => a -> m a
return (CShort -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CShort
v::CShort))

pokeCShort :: Ptr a -> CInt -> Int -> IO ()
pokeCShort :: Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr a
ptr CInt
off Int
v =
	Ptr a -> Int -> CShort -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr a
ptr (CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
off) (Int -> CShort
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
v::CShort)

data XRenderColor = XRenderColor { 
      XRenderColor -> Int
xrendercolor_red   :: Int, 
      XRenderColor -> Int
xrendercolor_green :: Int, 
      XRenderColor -> Int
xrendercolor_blue  :: Int, 
      XRenderColor -> Int
xrendercolor_alpha :: Int 
}

instance Storable XRenderColor where
	sizeOf :: XRenderColor -> Int
sizeOf XRenderColor
_ = (Int
8)
{-# LINE 49 "Graphics/X11/Xrender.hsc" #-}
	alignment :: XRenderColor -> Int
alignment XRenderColor
_ = CInt -> Int
forall a. Storable a => a -> Int
alignment (CInt
forall a. HasCallStack => a
undefined::CInt)
	peek :: Ptr XRenderColor -> IO XRenderColor
peek Ptr XRenderColor
p = do
		Int
red   <- Ptr XRenderColor -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCUShort Ptr XRenderColor
p (CInt
0)
{-# LINE 52 "Graphics/X11/Xrender.hsc" #-}
		Int
blue  <- Ptr XRenderColor -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCUShort Ptr XRenderColor
p (CInt
4)
{-# LINE 53 "Graphics/X11/Xrender.hsc" #-}
		Int
green <- Ptr XRenderColor -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCUShort Ptr XRenderColor
p (CInt
2)
{-# LINE 54 "Graphics/X11/Xrender.hsc" #-}
		Int
alpha <- Ptr XRenderColor -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCUShort Ptr XRenderColor
p (CInt
6)
{-# LINE 55 "Graphics/X11/Xrender.hsc" #-}
		XRenderColor -> IO XRenderColor
forall (m :: * -> *) a. Monad m => a -> m a
return (Int -> Int -> Int -> Int -> XRenderColor
XRenderColor Int
red Int
blue Int
green Int
alpha)
	poke :: Ptr XRenderColor -> XRenderColor -> IO ()
poke Ptr XRenderColor
p (XRenderColor Int
red Int
blue Int
green Int
alpha) = do
		Ptr XRenderColor -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCUShort Ptr XRenderColor
p (CInt
0) Int
red
{-# LINE 58 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderColor -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCUShort Ptr XRenderColor
p (CInt
4) Int
blue
{-# LINE 59 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderColor -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCUShort Ptr XRenderColor
p (CInt
2) Int
green
{-# LINE 60 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderColor -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCUShort Ptr XRenderColor
p (CInt
6) Int
alpha
{-# LINE 61 "Graphics/X11/Xrender.hsc" #-}

data XGlyphInfo = XGlyphInfo { 
      XGlyphInfo -> Int
xglyphinfo_width  :: Int, 
      XGlyphInfo -> Int
xglyphinfo_height :: Int, 
      XGlyphInfo -> Int
xglyphinfo_x      :: Int, 
      XGlyphInfo -> Int
xglyphinfo_y      :: Int, 
      XGlyphInfo -> Int
xglyphinfo_xOff   :: Int, 
      XGlyphInfo -> Int
xglyphinfo_yOff   :: Int
}

instance Storable XGlyphInfo where
	sizeOf :: XGlyphInfo -> Int
sizeOf XGlyphInfo
_ = (Int
12)
{-# LINE 73 "Graphics/X11/Xrender.hsc" #-}
	alignment :: XGlyphInfo -> Int
alignment XGlyphInfo
_ = CInt -> Int
forall a. Storable a => a -> Int
alignment (CInt
forall a. HasCallStack => a
undefined::CInt)
	peek :: Ptr XGlyphInfo -> IO XGlyphInfo
peek Ptr XGlyphInfo
p = do
		Int
width  <- Ptr XGlyphInfo -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCUShort Ptr XGlyphInfo
p (CInt
0)
{-# LINE 76 "Graphics/X11/Xrender.hsc" #-}
		Int
height <- Ptr XGlyphInfo -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCUShort Ptr XGlyphInfo
p (CInt
2)
{-# LINE 77 "Graphics/X11/Xrender.hsc" #-}
		Int
x <- Ptr XGlyphInfo -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XGlyphInfo
p (CInt
4)
{-# LINE 78 "Graphics/X11/Xrender.hsc" #-}
		Int
y <- Ptr XGlyphInfo -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XGlyphInfo
p (CInt
6)
{-# LINE 79 "Graphics/X11/Xrender.hsc" #-}
		Int
xOff <- Ptr XGlyphInfo -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XGlyphInfo
p (CInt
8)
{-# LINE 80 "Graphics/X11/Xrender.hsc" #-}
		Int
yOff <- Ptr XGlyphInfo -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XGlyphInfo
p (CInt
10)
{-# LINE 81 "Graphics/X11/Xrender.hsc" #-}
		XGlyphInfo -> IO XGlyphInfo
forall (m :: * -> *) a. Monad m => a -> m a
return (Int -> Int -> Int -> Int -> Int -> Int -> XGlyphInfo
XGlyphInfo Int
width Int
height Int
x Int
y Int
xOff Int
yOff)
	poke :: Ptr XGlyphInfo -> XGlyphInfo -> IO ()
poke Ptr XGlyphInfo
p (XGlyphInfo Int
width Int
height Int
x Int
y Int
xOff Int
yOff) = do
		Ptr XGlyphInfo -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCUShort Ptr XGlyphInfo
p (CInt
0) Int
width
{-# LINE 84 "Graphics/X11/Xrender.hsc" #-}
		Ptr XGlyphInfo -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCUShort Ptr XGlyphInfo
p (CInt
2) Int
height
{-# LINE 85 "Graphics/X11/Xrender.hsc" #-}
		Ptr XGlyphInfo -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XGlyphInfo
p (CInt
4) Int
x
{-# LINE 86 "Graphics/X11/Xrender.hsc" #-}
		Ptr XGlyphInfo -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XGlyphInfo
p (CInt
6) Int
y
{-# LINE 87 "Graphics/X11/Xrender.hsc" #-}
		Ptr XGlyphInfo -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XGlyphInfo
p (CInt
8) Int
xOff
{-# LINE 88 "Graphics/X11/Xrender.hsc" #-}
		Ptr XGlyphInfo -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XGlyphInfo
p (CInt
10) Int
yOff
{-# LINE 89 "Graphics/X11/Xrender.hsc" #-}


data XRenderDirectFormat = XRenderDirectFormat { 
     XRenderDirectFormat -> Int
xrenderdirectformat_red       :: Int,
     XRenderDirectFormat -> Int
xrenderdirectformat_redMask   :: Int,
     XRenderDirectFormat -> Int
xrenderdirectformat_green     :: Int,
     XRenderDirectFormat -> Int
xrenderdirectformat_greenMask :: Int,
     XRenderDirectFormat -> Int
xrenderdirectformat_blue      :: Int,
     XRenderDirectFormat -> Int
xrenderdirectformat_blueMask  :: Int,
     XRenderDirectFormat -> Int
xrenderdirectformat_alpha     :: Int,
     XRenderDirectFormat -> Int
xrenderdirectformat_alphaMask :: Int
}

instance Storable XRenderDirectFormat where
	sizeOf :: XRenderDirectFormat -> Int
sizeOf XRenderDirectFormat
_ = (Int
16)
{-# LINE 104 "Graphics/X11/Xrender.hsc" #-}
	alignment :: XRenderDirectFormat -> Int
alignment XRenderDirectFormat
_ = CInt -> Int
forall a. Storable a => a -> Int
alignment (CInt
forall a. HasCallStack => a
undefined::CInt)
	peek :: Ptr XRenderDirectFormat -> IO XRenderDirectFormat
peek Ptr XRenderDirectFormat
p = do
		Int
red  <- Ptr XRenderDirectFormat -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XRenderDirectFormat
p (CInt
0)
{-# LINE 107 "Graphics/X11/Xrender.hsc" #-}
		Int
redMask  <- Ptr XRenderDirectFormat -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XRenderDirectFormat
p (CInt
2)
{-# LINE 108 "Graphics/X11/Xrender.hsc" #-}
		Int
green  <- Ptr XRenderDirectFormat -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XRenderDirectFormat
p (CInt
4)
{-# LINE 109 "Graphics/X11/Xrender.hsc" #-}
		Int
greenMask  <- Ptr XRenderDirectFormat -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XRenderDirectFormat
p (CInt
6)
{-# LINE 110 "Graphics/X11/Xrender.hsc" #-}
		Int
blue  <- Ptr XRenderDirectFormat -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XRenderDirectFormat
p (CInt
8)
{-# LINE 111 "Graphics/X11/Xrender.hsc" #-}
		Int
blueMask  <- Ptr XRenderDirectFormat -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XRenderDirectFormat
p (CInt
10)
{-# LINE 112 "Graphics/X11/Xrender.hsc" #-}
		Int
alpha  <- Ptr XRenderDirectFormat -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XRenderDirectFormat
p (CInt
12)
{-# LINE 113 "Graphics/X11/Xrender.hsc" #-}
		Int
alphaMask  <- Ptr XRenderDirectFormat -> CInt -> IO Int
forall a. Ptr a -> CInt -> IO Int
peekCShort Ptr XRenderDirectFormat
p (CInt
14)
{-# LINE 114 "Graphics/X11/Xrender.hsc" #-}
		XRenderDirectFormat -> IO XRenderDirectFormat
forall (m :: * -> *) a. Monad m => a -> m a
return (Int
-> Int
-> Int
-> Int
-> Int
-> Int
-> Int
-> Int
-> XRenderDirectFormat
XRenderDirectFormat Int
red Int
redMask Int
green Int
greenMask Int
blue Int
blueMask Int
alpha Int
alphaMask)
	poke :: Ptr XRenderDirectFormat -> XRenderDirectFormat -> IO ()
poke Ptr XRenderDirectFormat
p (XRenderDirectFormat Int
red Int
redMask Int
green Int
greenMask Int
blue Int
blueMask Int
alpha Int
alphaMask) = do
		Ptr XRenderDirectFormat -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XRenderDirectFormat
p (CInt
0) Int
red
{-# LINE 117 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderDirectFormat -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XRenderDirectFormat
p (CInt
2) Int
redMask
{-# LINE 118 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderDirectFormat -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XRenderDirectFormat
p (CInt
8) Int
blue
{-# LINE 119 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderDirectFormat -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XRenderDirectFormat
p (CInt
10) Int
blueMask
{-# LINE 120 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderDirectFormat -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XRenderDirectFormat
p (CInt
4) Int
green
{-# LINE 121 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderDirectFormat -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XRenderDirectFormat
p (CInt
6) Int
greenMask
{-# LINE 122 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderDirectFormat -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XRenderDirectFormat
p (CInt
12) Int
alpha
{-# LINE 123 "Graphics/X11/Xrender.hsc" #-}
		Ptr XRenderDirectFormat -> CInt -> Int -> IO ()
forall a. Ptr a -> CInt -> Int -> IO ()
pokeCShort Ptr XRenderDirectFormat
p (CInt
14) Int
alphaMask
{-# LINE 124 "Graphics/X11/Xrender.hsc" #-}