freetype2-0.2.0: 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
#include "ft2build.h"
#include FT_FREETYPE_H
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 _ = #size struct FT_Span_
alignment _ = #alignment struct FT_Span_
peek ptr =
FT_Span
<$> #{peek struct FT_Span_, x } ptr
<*> #{peek struct FT_Span_, len } ptr
<*> #{peek struct FT_Span_, coverage} ptr
poke ptr val = do
#{poke struct FT_Span_, x } ptr $ val & sX
#{poke struct FT_Span_, len } ptr $ val & sLen
#{poke struct FT_Span_, coverage} ptr $ val & sCoverage
type FT_SpanFunc = #{type int} -- ^ y
-> #{type int} -- ^ count
-> 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 :: #type int
, 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 _ = #size struct FT_Raster_Params_
alignment _ = #alignment struct FT_Raster_Params_
peek ptr =
FT_Raster_Params
<$> #{peek struct FT_Raster_Params_, target } ptr
<*> #{peek struct FT_Raster_Params_, source } ptr
<*> #{peek struct FT_Raster_Params_, flags } ptr
<*> #{peek struct FT_Raster_Params_, gray_spans } ptr
<*> #{peek struct FT_Raster_Params_, black_spans} ptr
<*> #{peek struct FT_Raster_Params_, bit_test } ptr
<*> #{peek struct FT_Raster_Params_, bit_set } ptr
<*> #{peek struct FT_Raster_Params_, user } ptr
<*> #{peek struct FT_Raster_Params_, clip_box } ptr
poke ptr val = do
#{poke struct FT_Raster_Params_, target } ptr $ val & rpTarget
#{poke struct FT_Raster_Params_, source } ptr $ val & rpSource
#{poke struct FT_Raster_Params_, flags } ptr $ val & rpFlags
#{poke struct FT_Raster_Params_, gray_spans } ptr $ val & rpGray_spans
#{poke struct FT_Raster_Params_, black_spans} ptr $ val & rpBlack_spans
#{poke struct FT_Raster_Params_, bit_test } ptr $ val & rpBit_test
#{poke struct FT_Raster_Params_, bit_set } ptr $ val & rpBit_set
#{poke struct FT_Raster_Params_, user } ptr $ val & rpUser
#{poke struct FT_Raster_Params_, clip_box } ptr $ val & rpClip_box
type FT_Raster_NewFunc = Ptr () -- ^ raster
-> Ptr FT_Raster -- ^ memory
-> IO #type int
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 #{type unsigned char} -- ^ pool_base
-> Ptr #{type unsigned long} -- ^ pool_size
-> 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
-> #{type unsigned long} -- ^ mode
-> Ptr () -- ^ args
-> IO #type int
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 #type int
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 _ = #size struct FT_Raster_Funcs_
alignment _ = #alignment struct FT_Raster_Funcs_
peek ptr =
FT_Raster_Funcs
<$> #{peek struct FT_Raster_Funcs_, glyph_format } ptr
<*> #{peek struct FT_Raster_Funcs_, raster_new } ptr
<*> #{peek struct FT_Raster_Funcs_, raster_reset } ptr
<*> #{peek struct FT_Raster_Funcs_, raster_set_mode} ptr
<*> #{peek struct FT_Raster_Funcs_, raster_render } ptr
<*> #{peek struct FT_Raster_Funcs_, raster_done } ptr
poke ptr val = do
#{poke struct FT_Raster_Funcs_, glyph_format } ptr $ val & rfGlyph_format
#{poke struct FT_Raster_Funcs_, raster_new } ptr $ val & rfRaster_new
#{poke struct FT_Raster_Funcs_, raster_reset } ptr $ val & rfRaster_reset
#{poke struct FT_Raster_Funcs_, raster_set_mode} ptr $ val & rfRaster_set_mode
#{poke struct FT_Raster_Funcs_, raster_render } ptr $ val & rfRaster_render
#{poke struct FT_Raster_Funcs_, raster_done } ptr $ val & rfRaster_done
type FT_Raster_BitTest_Func = #{type int} -- ^ y
-> #{type int} -- ^ x
-> Ptr () -- ^ user
-> IO #type int
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 = #{type int} -- ^ y
-> #{type int} -- ^ x
-> 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