{-# LINE 1 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LINE 2 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
module Graphics.Rendering.FreeType.Internal.RasterParams
( FT_Raster_Params
, FT_SpanFunc
, FT_Raster_BitTest_Func
, FT_Raster_BitSet_Func
, target
, source
, flags
, gray_spans
, user
, clip_box
) where

import Foreign
import Foreign.C.Types
import Foreign.Storable

import Graphics.Rendering.FreeType.Internal.BBox
import Graphics.Rendering.FreeType.Internal.Bitmap
import Graphics.Rendering.FreeType.Internal.Span


{-# LINE 24 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}

{-# LINE 25 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}


{-# LINE 27 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}

{-# LINE 28 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}


{-# LINE 30 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}

data FT_Raster_Params = FT_Raster_Params
  { target      :: Ptr FT_Bitmap
  , source      :: Ptr ()
  , flags       :: CInt
  , gray_spans  :: FT_SpanFunc
  , black_spans :: FT_SpanFunc            -- doesn't work according to FT docs
  , bit_test    :: FT_Raster_BitTest_Func -- doesn't work according to FT docs
  , bit_set     :: FT_Raster_BitSet_Func  -- doesn't work according to FT docs
  , user        :: Ptr ()
  , clip_box    :: FT_BBox
  }

instance Storable FT_Raster_Params where
  sizeOf    _ = (48)
{-# LINE 45 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
  alignment _ = 4
{-# LINE 46 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
  peek ptr = do
    target'      <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 48 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    source'      <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 49 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    flags'       <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 50 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    gray_spans'  <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
{-# LINE 51 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    black_spans' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 52 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    bit_test'    <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
{-# LINE 53 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    bit_set'     <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 54 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    user'        <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) ptr
{-# LINE 55 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    clip_box'    <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 56 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    return $ FT_Raster_Params
      { target = target'
      , source = source'
      , flags = flags'
      , gray_spans = gray_spans'
      , black_spans = black_spans'
      , bit_test = bit_test'
      , bit_set = bit_set'
      , user = user'
      , clip_box = clip_box'
      }
  poke ptr val = do
    ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr (target val)
{-# LINE 69 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr (source val)
{-# LINE 70 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr (flags val)
{-# LINE 71 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr (gray_spans val)
{-# LINE 72 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr (black_spans val)
{-# LINE 73 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr (bit_test val)
{-# LINE 74 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr (bit_set val)
{-# LINE 75 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 28)) ptr (user val)
{-# LINE 76 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr (clip_box val)
{-# LINE 77 "Graphics/Rendering/FreeType/Internal/RasterParams.hsc" #-}

type FT_SpanFunc = FunPtr
  (CInt -> CInt -> Ptr FT_Span -> Ptr () -> IO ())

type FT_Raster_BitTest_Func = FunPtr
  (CInt -> CInt -> Ptr () -> IO CInt)

type FT_Raster_BitSet_Func = FunPtr
  (CInt -> CInt -> Ptr () -> IO ())