module Graphics.Rendering.FreeType.Internal.Face
( FT_FaceRec_
, FT_Face
, num_faces
, face_index
, face_flags
, style_flags
, num_glyphs
, family_name
, style_name
, num_fixed_sizes
, available_sizes
, num_charmaps
, charmaps
, generic
, bbox
, units_per_EM
, ascender
, descender
, height
, max_advance_width
, max_advance_height
, underline_position
, underline_thickness
, glyph
, size
, charmap
, ft_HAS_HORIZONTAL
, ft_HAS_VERTICAL
, ft_HAS_KERNING
, ft_IS_SCALABLE
, ft_IS_SFNT
, ft_IS_FIXED_WIDTH
, ft_HAS_FIXED_SIZES
, ft_HAS_FAST_GLYPHS
, ft_HAS_GLYPH_NAMES
, ft_HAS_MULTIPLE_MASTERS
, ft_IS_CID_KEYED
, ft_IS_TRICKY
, ft_STYLE_FLAG_ITALIC
, ft_STYLE_FLAG_BOLD
) where
import Foreign
import Foreign.C.String
import Graphics.Rendering.FreeType.Internal.FaceType
import Graphics.Rendering.FreeType.Internal.PrimitiveTypes
import qualified Graphics.Rendering.FreeType.Internal.Generic as G
import qualified Graphics.Rendering.FreeType.Internal.GlyphSlot as GS
import qualified Graphics.Rendering.FreeType.Internal.Size as S
import qualified Graphics.Rendering.FreeType.Internal.BitmapSize as BS
import qualified Graphics.Rendering.FreeType.Internal.CharMap as CM
import qualified Graphics.Rendering.FreeType.Internal.BBox as BB
num_faces :: FT_Face -> Ptr FT_Long
num_faces = (\hsc_ptr -> hsc_ptr `plusPtr` 0)
face_index :: FT_Face -> Ptr FT_Long
face_index = (\hsc_ptr -> hsc_ptr `plusPtr` 4)
face_flags :: FT_Face -> Ptr FT_Long
face_flags = (\hsc_ptr -> hsc_ptr `plusPtr` 8)
style_flags :: FT_Face -> Ptr FT_Long
style_flags = (\hsc_ptr -> hsc_ptr `plusPtr` 12)
num_glyphs :: FT_Face -> Ptr FT_Long
num_glyphs = (\hsc_ptr -> hsc_ptr `plusPtr` 16)
family_name :: FT_Face -> Ptr CString
family_name = (\hsc_ptr -> hsc_ptr `plusPtr` 20)
style_name :: FT_Face -> Ptr CString
style_name = (\hsc_ptr -> hsc_ptr `plusPtr` 24)
num_fixed_sizes :: FT_Face -> Ptr FT_Int
num_fixed_sizes = (\hsc_ptr -> hsc_ptr `plusPtr` 28)
available_sizes :: FT_Face -> Ptr (Ptr BS.FT_Bitmap_Size)
available_sizes = (\hsc_ptr -> hsc_ptr `plusPtr` 32)
num_charmaps :: FT_Face -> Ptr FT_Int
num_charmaps = (\hsc_ptr -> hsc_ptr `plusPtr` 36)
charmaps :: FT_Face -> Ptr (Ptr CM.FT_CharMap)
charmaps = (\hsc_ptr -> hsc_ptr `plusPtr` 40)
generic :: FT_Face -> Ptr G.FT_Generic
generic = (\hsc_ptr -> hsc_ptr `plusPtr` 44)
bbox :: FT_Face -> Ptr BB.FT_BBox
bbox = (\hsc_ptr -> hsc_ptr `plusPtr` 52)
units_per_EM :: FT_Face -> Ptr FT_UShort
units_per_EM = (\hsc_ptr -> hsc_ptr `plusPtr` 68)
ascender :: FT_Face -> Ptr FT_Short
ascender = (\hsc_ptr -> hsc_ptr `plusPtr` 70)
descender :: FT_Face -> Ptr FT_Short
descender = (\hsc_ptr -> hsc_ptr `plusPtr` 72)
height :: FT_Face -> Ptr FT_Short
height = (\hsc_ptr -> hsc_ptr `plusPtr` 74)
max_advance_width :: FT_Face -> Ptr FT_Short
max_advance_width = (\hsc_ptr -> hsc_ptr `plusPtr` 76)
max_advance_height :: FT_Face -> Ptr FT_Short
max_advance_height = (\hsc_ptr -> hsc_ptr `plusPtr` 78)
underline_position :: FT_Face -> Ptr FT_Short
underline_position = (\hsc_ptr -> hsc_ptr `plusPtr` 80)
underline_thickness :: FT_Face -> Ptr FT_Short
underline_thickness = (\hsc_ptr -> hsc_ptr `plusPtr` 82)
glyph :: FT_Face -> Ptr GS.FT_GlyphSlot
glyph = (\hsc_ptr -> hsc_ptr `plusPtr` 84)
size :: FT_Face -> Ptr S.FT_Size
size = (\hsc_ptr -> hsc_ptr `plusPtr` 88)
charmap :: FT_Face -> Ptr CM.FT_CharMap
charmap = (\hsc_ptr -> hsc_ptr `plusPtr` 92)
ft_HAS :: FT_FACE_FLAG -> FT_Face -> IO Bool
ft_HAS flag face = do
f <- peek $ face_flags face
return $ 0 /= (f .&. fromIntegral flag)
ft_HAS_HORIZONTAL :: FT_Face -> IO Bool
ft_HAS_HORIZONTAL = ft_HAS ft_FACE_FLAG_HORIZONTAL
ft_HAS_VERTICAL :: FT_Face -> IO Bool
ft_HAS_VERTICAL = ft_HAS ft_FACE_FLAG_VERTICAL
ft_HAS_KERNING :: FT_Face -> IO Bool
ft_HAS_KERNING = ft_HAS ft_FACE_FLAG_KERNING
ft_IS_SCALABLE :: FT_Face -> IO Bool
ft_IS_SCALABLE = ft_HAS ft_FACE_FLAG_SCALABLE
ft_IS_SFNT :: FT_Face -> IO Bool
ft_IS_SFNT = ft_HAS ft_FACE_FLAG_SFNT
ft_IS_FIXED_WIDTH :: FT_Face -> IO Bool
ft_IS_FIXED_WIDTH = ft_HAS ft_FACE_FLAG_FIXED_WIDTH
ft_HAS_FIXED_SIZES :: FT_Face -> IO Bool
ft_HAS_FIXED_SIZES = ft_HAS ft_FACE_FLAG_FIXED_SIZES
ft_HAS_FAST_GLYPHS :: FT_Face -> IO Bool
ft_HAS_FAST_GLYPHS = ft_HAS ft_FACE_FLAG_FAST_GLYPHS
ft_HAS_GLYPH_NAMES :: FT_Face -> IO Bool
ft_HAS_GLYPH_NAMES = ft_HAS ft_FACE_FLAG_GLYPH_NAMES
ft_HAS_MULTIPLE_MASTERS :: FT_Face -> IO Bool
ft_HAS_MULTIPLE_MASTERS = ft_HAS ft_FACE_FLAG_MULTIPLE_MASTERS
ft_IS_CID_KEYED :: FT_Face -> IO Bool
ft_IS_CID_KEYED = ft_HAS ft_FACE_FLAG_CID_KEYED
ft_IS_TRICKY :: FT_Face -> IO Bool
ft_IS_TRICKY = ft_HAS ft_FACE_FLAG_TRICKY
ft_STYLE_FLAG_ITALIC :: FT_Long
ft_STYLE_FLAG_ITALIC = 1
ft_STYLE_FLAG_BOLD :: FT_Long
ft_STYLE_FLAG_BOLD = 2