module Graphics.Rendering.FreeType.Internal.Outline
( FT_Outline(..)
, FT_Outline_MoveToFunc
, FT_Outline_LineToFunc
, FT_Outline_ConicToFunc
, FT_Outline_CubicToFunc
, FT_Outline_Funcs(..)
) where
import Foreign hiding (shift)
import Foreign.C.Types
import Foreign.C.String
import Foreign.Storable
import Graphics.Rendering.FreeType.Internal.Vector
import Graphics.Rendering.FreeType.Internal.PrimitiveTypes
data FT_Outline = FT_Outline
{ n_contours :: CShort
, n_points :: CShort
, points :: Ptr FT_Vector
, tags :: CString
, contours :: Ptr CShort
, flags :: FT_OUTLINE_FLAGS
}
instance Storable FT_Outline where
sizeOf _ = (20)
alignment _ = 4
peek ptr = do
n_contours' <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
n_points' <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
points' <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
tags' <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
contours' <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
flags' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
return $ FT_Outline
{ n_contours = n_contours'
, n_points = n_points'
, points = points'
, tags = tags'
, contours = contours'
, flags = flags'
}
poke ptr val = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr (n_contours val)
((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr (n_points val)
((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr (points val)
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr (tags val)
((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr (contours val)
((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr (flags val)
type FT_Outline_MoveToFunc = FunPtr
(Ptr FT_Vector -> Ptr () -> IO CInt)
type FT_Outline_LineToFunc = FunPtr
(Ptr FT_Vector -> Ptr () -> IO CInt)
type FT_Outline_ConicToFunc = FunPtr
(Ptr FT_Vector -> Ptr FT_Vector -> Ptr () -> IO CInt)
type FT_Outline_CubicToFunc = FunPtr
(Ptr FT_Vector -> Ptr FT_Vector -> Ptr FT_Vector -> Ptr () -> IO CInt)
data FT_Outline_Funcs = FT_Outline_Funcs
{ move_to :: FT_Outline_MoveToFunc
, line_to :: FT_Outline_LineToFunc
, conic_to :: FT_Outline_ConicToFunc
, cubic_to :: FT_Outline_CubicToFunc
, shift :: CInt
, delta :: FT_Pos
}
instance Storable FT_Outline_Funcs where
sizeOf _ = (24)
alignment _ = 4
peek ptr = do
move_to' <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
line_to' <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
conic_to' <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
cubic_to' <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) ptr
shift' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
delta' <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) ptr
return $ FT_Outline_Funcs
{ move_to = move_to'
, line_to = line_to'
, conic_to = conic_to'
, cubic_to = cubic_to'
, shift = shift'
, delta = delta'
}
poke ptr val = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr (move_to val)
((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr (line_to val)
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr (conic_to val)
((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr (cubic_to val)
((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr (shift val)
((\hsc_ptr -> pokeByteOff hsc_ptr 20)) ptr (delta val)