{-# LINE 1 "FreeType/Support/Scanline/Types.hsc" #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE ForeignFunctionInterface #-}

module FreeType.Support.Scanline.Types where

import           FreeType.Core.Types.Types

import           Data.Int
import           Data.Function ((&))
import           Data.Word
import           Foreign.C.Types
import           Foreign.Ptr
import           Foreign.Storable




data FT_RasterRec
type FT_Raster = Ptr FT_RasterRec



data FT_Span = FT_Span
                 { sX        :: CShort
                 , sLen      :: CUShort
                 , sCoverage :: CUChar
                 }
instance Storable FT_Span where
  sizeOf    _ = (6)
{-# LINE 30 "FreeType/Support/Scanline/Types.hsc" #-}
  alignment _ = 2
{-# LINE 31 "FreeType/Support/Scanline/Types.hsc" #-}

  peek ptr =
    FT_Span
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 35 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr
{-# LINE 36 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr
{-# LINE 37 "FreeType/Support/Scanline/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & sX
{-# LINE 40 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr $ val & sLen
{-# LINE 41 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr $ val & sCoverage
{-# LINE 42 "FreeType/Support/Scanline/Types.hsc" #-}



type FT_SpanFunc = Int32 -- ^ y
{-# LINE 46 "FreeType/Support/Scanline/Types.hsc" #-}
                -> Int32 -- ^ count
{-# LINE 47 "FreeType/Support/Scanline/Types.hsc" #-}
                -> Ptr FT_Span -- ^ spans
                -> Ptr ()      -- ^ user
                -> IO ()

foreign import ccall "wrapper"
  ft_SpanFunc :: FT_SpanFunc -> IO (FunPtr FT_SpanFunc)

foreign import ccall "dynamic"
  ft_SpanFunc' :: FunPtr FT_SpanFunc -> FT_SpanFunc



data FT_Raster_Params = FT_Raster_Params
                          { rpTarget      :: Ptr FT_Bitmap
                          , rpSource      :: Ptr ()
                          , rpFlags       :: Int32
{-# LINE 63 "FreeType/Support/Scanline/Types.hsc" #-}
                          , rpGray_spans  :: FunPtr FT_SpanFunc
                          , rpBlack_spans :: FunPtr FT_SpanFunc
                          , rpBit_test    :: FunPtr FT_Raster_BitTest_Func
                          , rpBit_set     :: FunPtr FT_Raster_BitSet_Func
                          , rpUser        :: Ptr ()
                          , rpClip_box    :: FT_BBox
                          }

instance Storable FT_Raster_Params where
  sizeOf    _ = (96)
{-# LINE 73 "FreeType/Support/Scanline/Types.hsc" #-}
  alignment _ = 8
{-# LINE 74 "FreeType/Support/Scanline/Types.hsc" #-}

  peek ptr =
    FT_Raster_Params
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 78 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 79 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 80 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 81 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 82 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr
{-# LINE 83 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 84 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 56) ptr
{-# LINE 85 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr
{-# LINE 86 "FreeType/Support/Scanline/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & rpTarget
{-# LINE 89 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & rpSource
{-# LINE 90 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & rpFlags
{-# LINE 91 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & rpGray_spans
{-# LINE 92 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & rpBlack_spans
{-# LINE 93 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 40) ptr $ val & rpBit_test
{-# LINE 94 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 48) ptr $ val & rpBit_set
{-# LINE 95 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 56) ptr $ val & rpUser
{-# LINE 96 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 64) ptr $ val & rpClip_box
{-# LINE 97 "FreeType/Support/Scanline/Types.hsc" #-}



type FT_Raster_NewFunc = Ptr ()        -- ^ raster
                      -> Ptr FT_Raster -- ^ memory
                      -> IO Int32
{-# LINE 103 "FreeType/Support/Scanline/Types.hsc" #-}

foreign import ccall "wrapper"
  ft_Raster_NewFunc :: FT_Raster_NewFunc -> IO (FunPtr FT_Raster_NewFunc)

foreign import ccall "dynamic"
  ft_Raster_NewFunc' :: FunPtr FT_Raster_NewFunc -> FT_Raster_NewFunc



type FT_Raster_DoneFunc = FT_Raster -- ^ raster
                       -> IO ()

foreign import ccall "wrapper"
  ft_Raster_DoneFunc :: FT_Raster_DoneFunc -> IO (FunPtr FT_Raster_DoneFunc)

foreign import ccall "dynamic"
  ft_Raster_DoneFunc' :: FunPtr FT_Raster_DoneFunc -> FT_Raster_DoneFunc



type FT_Raster_ResetFunc = FT_Raster                 -- ^ raster
                        -> Ptr Word8 -- ^ pool_base
{-# LINE 125 "FreeType/Support/Scanline/Types.hsc" #-}
                        -> Ptr Word64 -- ^ pool_size
{-# LINE 126 "FreeType/Support/Scanline/Types.hsc" #-}
                        -> IO ()

foreign import ccall "wrapper"
  ft_Raster_ResetFunc :: FT_Raster_ResetFunc -> IO (FunPtr FT_Raster_ResetFunc)

foreign import ccall "dynamic"
  ft_Raster_ResetFunc' :: FunPtr FT_Raster_ResetFunc -> FT_Raster_ResetFunc



type FT_Raster_SetModeFunc = FT_Raster             -- ^ raster
                          -> Word64 -- ^ mode
{-# LINE 138 "FreeType/Support/Scanline/Types.hsc" #-}
                          -> Ptr ()                -- ^ args
                          -> IO Int32
{-# LINE 140 "FreeType/Support/Scanline/Types.hsc" #-}

foreign import ccall "wrapper"
  ft_Raster_SetModeFunc :: FT_Raster_SetModeFunc -> IO (FunPtr FT_Raster_SetModeFunc)

foreign import ccall "dynamic"
  ft_Raster_SetModeFunc' :: FunPtr FT_Raster_SetModeFunc -> FT_Raster_SetModeFunc



type FT_Raster_RenderFunc = FT_Raster            -- ^ raster
                         -> Ptr FT_Raster_Params -- ^ params
                         -> IO Int32
{-# LINE 152 "FreeType/Support/Scanline/Types.hsc" #-}

foreign import ccall "wrapper"
  ft_Raster_RenderFunc :: FT_Raster_RenderFunc -> IO (FunPtr FT_Raster_RenderFunc)

foreign import ccall "dynamic"
  ft_Raster_RenderFunc' :: FunPtr FT_Raster_RenderFunc -> FT_Raster_RenderFunc



data FT_Raster_Funcs = FT_Raster_Funcs
                         { rfGlyph_format    :: FT_Glyph_Format
                         , rfRaster_new      :: FunPtr FT_Raster_NewFunc
                         , rfRaster_reset    :: FunPtr FT_Raster_ResetFunc
                         , rfRaster_set_mode :: FunPtr FT_Raster_SetModeFunc
                         , rfRaster_render   :: FunPtr FT_Raster_RenderFunc
                         , rfRaster_done     :: FunPtr FT_Raster_DoneFunc
                         }

instance Storable FT_Raster_Funcs where
  sizeOf    _ = (48)
{-# LINE 172 "FreeType/Support/Scanline/Types.hsc" #-}
  alignment _ = 8
{-# LINE 173 "FreeType/Support/Scanline/Types.hsc" #-}

  peek ptr =
    FT_Raster_Funcs
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 177 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 178 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 179 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 180 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 181 "FreeType/Support/Scanline/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr
{-# LINE 182 "FreeType/Support/Scanline/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & rfGlyph_format
{-# LINE 185 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & rfRaster_new
{-# LINE 186 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & rfRaster_reset
{-# LINE 187 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & rfRaster_set_mode
{-# LINE 188 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & rfRaster_render
{-# LINE 189 "FreeType/Support/Scanline/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 40) ptr $ val & rfRaster_done
{-# LINE 190 "FreeType/Support/Scanline/Types.hsc" #-}



type FT_Raster_BitTest_Func = Int32 -- ^ y
{-# LINE 194 "FreeType/Support/Scanline/Types.hsc" #-}
                           -> Int32 -- ^ x
{-# LINE 195 "FreeType/Support/Scanline/Types.hsc" #-}
                           -> Ptr ()      -- ^ user
                           -> IO Int32
{-# LINE 197 "FreeType/Support/Scanline/Types.hsc" #-}

foreign import ccall "wrapper"
  ft_Raster_BitTest_Func :: FT_Raster_BitTest_Func -> IO (FunPtr FT_Raster_BitTest_Func)

foreign import ccall "dynamic"
  ft_Raster_BitTest_Func' :: FunPtr FT_Raster_BitTest_Func -> FT_Raster_BitTest_Func



type FT_Raster_BitSet_Func = Int32 -- ^ y
{-# LINE 207 "FreeType/Support/Scanline/Types.hsc" #-}
                          -> Int32 -- ^ x
{-# LINE 208 "FreeType/Support/Scanline/Types.hsc" #-}
                          -> Ptr ()      -- ^ user
                          -> IO ()

foreign import ccall "wrapper"
  ft_Raster_BitSet_Func :: FT_Raster_BitSet_Func -> IO (FunPtr FT_Raster_BitSet_Func)

foreign import ccall "dynamic"
  ft_Raster_BitSet_Func' :: FunPtr FT_Raster_BitSet_Func -> FT_Raster_BitSet_Func