packages feed

freetype2-0.2.0: test/Dynamic.hs

{-# LANGUAGE TemplateHaskell #-}

module Main where

import           Dynamic.Report

import           FreeType
import           FreeType.Internal

import           Foreign.ForeignPtr
import           Foreign.Ptr
import           Foreign.Storable



-- | Tests whether all of the @foreign import ccall@s refer to correct function names.
--   You do not need to actually launch the test to know that the names are correctly
--   bound -- that is figured out at compilation time.
--   However it completing proves that all Internal functions are bound, as pretty
--   much any function that throws an exception __will__ throw one here.
main :: IO ()
main = do
  putStrLn "\n"

  putStrLn "FreeType.Core.Version"
  report "ft_Library_Version'"          ft_Library_Version'
  report "ft_Face_CheckTrueTypePatents" ft_Face_CheckTrueTypePatents
  report "ft_Face_SetUnpatentedHinting" ft_Face_SetUnpatentedHinting

  putStrLn "FreeType.Core.Base"
  flib <- mallocForeignPtr
  withForeignPtr flib $ \libPtr -> do
    report' "ft_Init_FreeType'" $ ft_Init_FreeType' libPtr
    report' "ft_Done_FreeType'" $ ft_Done_FreeType' =<< peek libPtr
  report "ft_New_Face'"            ft_New_Face'
  report "ft_Done_Face'"           ft_Done_Face'
  report "ft_Reference_Face'"      ft_Reference_Face'
  report "ft_New_Memory_Face'"     ft_New_Memory_Face'
  report "ft_Face_Properties'"     ft_Face_Properties'
  report "ft_Open_Face'"           ft_Open_Face'
  report "ft_Attach_File'"         ft_Attach_File'
  report "ft_Attach_Stream'"       ft_Attach_Stream'
  report "ft_Set_Char_Size'"       ft_Set_Char_Size'
  report "ft_Set_Pixel_Sizes'"     ft_Set_Pixel_Sizes'
  report "ft_Request_Size'"        ft_Request_Size'
  report "ft_Select_Size'"         ft_Select_Size'
  report "ft_Set_Transform'"       ft_Set_Transform'
  report "ft_Load_Glyph'"          ft_Load_Glyph'
  report "ft_Get_Char_Index"       ft_Get_Char_Index
  report "ft_Get_First_Char'"      ft_Get_First_Char'
  report "ft_Get_Next_Char'"       ft_Get_Next_Char'
  report "ft_Get_Name_Index"       ft_Get_Name_Index
  report "ft_Load_Char'"           ft_Load_Char'
  report "ft_Render_Glyph'"        ft_Render_Glyph'
  report "ft_Get_Kerning'"         ft_Get_Kerning'
  report "ft_Get_Track_Kerning'"   ft_Get_Track_Kerning'
  report "ft_Get_Glyph_Name'"      ft_Get_Glyph_Name'
  report "ft_Get_Postscript_Name'" ft_Get_Postscript_Name'
  report "ft_Select_Charmap'"      ft_Select_Charmap'
  report "ft_Set_Charmap'"         ft_Set_Charmap'
  report "ft_Get_Charmap_Index"    ft_Get_Charmap_Index

  putStrLn "FreeType.Core.Unicode"
  report "ft_Face_GetCharVariantIndex"     ft_Face_GetCharVariantIndex
  report "ft_Face_GetCharVariantIsDefault" ft_Face_GetCharVariantIsDefault
  report "ft_Face_GetVariantSelectors"     ft_Face_GetVariantSelectors
  report "ft_Face_GetVariantsOfChar"       ft_Face_GetVariantsOfChar
  report "ft_Face_GetCharsOfVariant"       ft_Face_GetCharsOfVariant

  putStrLn "FreeType.Core.Color"
  report "ft_Palette_Data_Get'"             ft_Palette_Data_Get'
  report "ft_Palette_Select"                ft_Palette_Select
  report "ft_Palette_Set_Foreground_Color'" ft_Palette_Set_Foreground_Color'

  putStrLn "FreeType.Core.Layer"
  report "ft_Get_Color_Glyph_Layer"  ft_Get_Color_Glyph_Layer

  putStrLn "FreeType.Core.Glyph"
  report "ft_New_Glyph'"       ft_New_Glyph'
  report "ft_Get_Glyph'"       ft_Get_Glyph'
  report "ft_Glyph_Copy'"      ft_Glyph_Copy'
  report "ft_Glyph_Transform'" ft_Glyph_Transform'
  report "ft_Glyph_Get_CBox'"  ft_Glyph_Get_CBox'
  report "ft_Glyph_To_Bitmap'" ft_Glyph_To_Bitmap'
  report "ft_Done_Glyph"       ft_Done_Glyph

  putStrLn "FreeType.Core.Mac"
{-
  report "ft_New_Face_From_FOND'"            ft_New_Face_From_FOND'
  report "ft_GetFile_From_Mac_Name'"         ft_GetFile_From_Mac_Name'
  report "ft_GetFile_From_Mac_ATS_Name'"     ft_GetFile_From_Mac_ATS_Name'
  report "ft_GetFilePath_From_Mac_ATS_Name'" ft_GetFilePath_From_Mac_ATS_Name'
  report "ft_New_Face_From_FSSpec'"          ft_New_Face_From_FSSpec'
  report "ft_New_Face_From_FSRef'"           ft_New_Face_From_FSRef'
-}
  putStrLn "FreeType.Core.Size"
  report "ft_New_Size'"      ft_New_Size'
  report "ft_Done_Size'"     ft_Done_Size'
  report "ft_Activate_Size'" ft_Activate_Size'

  putStrLn "FreeType.Format.Multiple"
  report "ft_Get_Multi_Master'"           ft_Get_Multi_Master'
  report "ft_Get_MM_Var'"                 ft_Get_MM_Var'
  report "ft_Done_MM_Var'"                ft_Done_MM_Var'
  report "ft_Set_MM_Design_Coordinates'"  ft_Set_MM_Design_Coordinates'
  report "ft_Set_Var_Design_Coordinates'" ft_Set_Var_Design_Coordinates'
  report "ft_Get_Var_Design_Coordinates'" ft_Get_Var_Design_Coordinates'
  report "ft_Set_MM_Blend_Coordinates'"   ft_Set_MM_Blend_Coordinates'
  report "ft_Get_MM_Blend_Coordinates'"   ft_Get_MM_Blend_Coordinates'
  report "ft_Set_Var_Blend_Coordinates'"  ft_Set_Var_Blend_Coordinates'
  report "ft_Get_Var_Blend_Coordinates'"  ft_Get_Var_Blend_Coordinates'
  report "ft_Set_MM_WeightVector'"        ft_Set_MM_WeightVector'
  report "ft_Get_MM_WeightVector'"        ft_Get_MM_WeightVector'
  report "ft_Get_Var_Axis_Flags'"         ft_Get_Var_Axis_Flags'
  report "ft_Set_Named_Instance'"         ft_Set_Named_Instance'

  putStrLn "FreeType.Format.TrueType"
  report "ft_Get_Sfnt_Table'"      ft_Get_Sfnt_Table'
  report "ft_Load_Sfnt_Table'"     ft_Load_Sfnt_Table'
  report "ft_Sfnt_Table_Info'"     ft_Sfnt_Table_Info'
  report "ft_Get_CMap_Language_ID" ft_Get_CMap_Language_ID
  report "ft_Get_CMap_Format"      ft_Get_CMap_Format

  putStrLn "FreeType.Format.Type1"
  report "ft_Has_PS_Glyph_Names"   ft_Has_PS_Glyph_Names
  report "ft_Get_PS_Font_Info'"    ft_Get_PS_Font_Info'
  report "ft_Get_PS_Font_Private'" ft_Get_PS_Font_Private'
  report "ft_Get_PS_Font_Value"    ft_Get_PS_Font_Value

  putStrLn "FreeType.Format.Sfnt"
  report "ft_Get_Sfnt_Name_Count" ft_Get_Sfnt_Name_Count
  report "ft_Get_Sfnt_Name'"      ft_Get_Sfnt_Name'
  report "ft_Get_Sfnt_LangTag'"   ft_Get_Sfnt_LangTag'

  putStrLn "FreeType.Format.BDF"
  report "ft_Get_BDF_Charset_ID'" ft_Get_BDF_Charset_ID'
  report "ft_Get_BDF_Property'"   ft_Get_BDF_Property'

  putStrLn "FreeType.Format.CID"
  report "ft_Get_CID_Registry_Ordering_Supplement'" ft_Get_CID_Registry_Ordering_Supplement'
  report "ft_Get_CID_Is_Internally_CID_Keyed'"      ft_Get_CID_Is_Internally_CID_Keyed'
  report "ft_Get_CID_From_Glyph_Index'"             ft_Get_CID_From_Glyph_Index'

  putStrLn "FreeType.Format.PFR" 
  report "ft_Get_PFR_Metrics'" ft_Get_PFR_Metrics'
  report "ft_Get_PFR_Kerning'" ft_Get_PFR_Kerning'
  report "ft_Get_PFR_Advance'" ft_Get_PFR_Advance'

  putStrLn "FreeType.Format.WinFNT"
  report "ft_Get_WinFNT_Header'" ft_Get_WinFNT_Header'

  putStrLn "FreeType.Format.Font"
  report "ft_Get_Font_Format'" ft_Get_Font_Format'

  putStrLn "FreeType.Format.Gasp"
  report "ft_Get_Gasp" ft_Get_Gasp

  putStrLn "FreeType.Control.Subpixel"
  report "ft_Library_SetLcdFilter'"        ft_Library_SetLcdFilter'
  report "ft_Library_SetLcdFilterWeights'" ft_Library_SetLcdFilterWeights'
  report "ft_Library_SetLcdGeometry'"      ft_Library_SetLcdGeometry'

  putStrLn "FreeType.Cache"
  report "ftc_Manager_New'"             ftc_Manager_New'
  report "ftc_Manager_Reset"            ftc_Manager_Reset
  report "ftc_Manager_Done"             ftc_Manager_Done
  report "ftc_Manager_LookupFace'"      ftc_Manager_LookupFace'
  report "ftc_Manager_LookupSize'"      ftc_Manager_LookupSize'
  report "ftc_Manager_RemoveFaceID"     ftc_Manager_RemoveFaceID
  report "ftc_Node_Unref"               ftc_Node_Unref
  report "ftc_ImageCache_New'"          ftc_ImageCache_New'
  report "ftc_ImageCache_Lookup'"       ftc_ImageCache_Lookup'
  report "ftc_SBitCache_New'"           ftc_SBitCache_New'
  report "ftc_SBitCache_Lookup'"        ftc_SBitCache_Lookup'
  report "ftc_CMapCache_New'"           ftc_CMapCache_New'
  report "ftc_CMapCache_Lookup"         ftc_CMapCache_Lookup
  report "ftc_ImageCache_LookupScaler'" ftc_ImageCache_LookupScaler'
  report "ftc_SBitCache_LookupScaler'"  ftc_SBitCache_LookupScaler'

  putStrLn "FreeType.Support.Computations"
  report3 "ft_MulDiv"             ft_MulDiv
  report2 "ft_MulFix"             ft_MulFix
  report2 "ft_DivFix"             ft_DivFix
  report1 "ft_RoundFix"           ft_RoundFix
  report1 "ft_CeilFix"            ft_CeilFix
  report1 "ft_FloorFix"           ft_FloorFix
  report2 "ft_Vector_Transform'"  ft_Vector_Transform'
  report2 "ft_Matrix_Multiply'"   ft_Matrix_Multiply'
  report1 "ft_Matrix_Invert'"     ft_Matrix_Invert'
  report1 "ft_Sin"                ft_Sin
  report1 "ft_Cos"                ft_Cos
  report1 "ft_Tan"                ft_Tan
  report2 "ft_Atan2"              ft_Atan2
  report2 "ft_Angle_Diff"         ft_Angle_Diff
  report2 "ft_Vector_Unit'"       ft_Vector_Unit'
  report2 "ft_Vector_Rotate'"     ft_Vector_Rotate'
  report1 "ft_Vector_Length'"     ft_Vector_Length'
  report3 "ft_Vector_Polarize'"   ft_Vector_Polarize'
  report3 "ft_Vector_From_Polar'" ft_Vector_From_Polar'

  putStrLn "FreeType.Support.List"
  report "ft_List_Add"       ft_List_Add
  report "ft_List_Insert"    ft_List_Insert
  report "ft_List_Find'"     ft_List_Find'
  report "ft_List_Remove"    ft_List_Remove
  report "ft_List_Up"        ft_List_Up
  report "ft_List_Iterate'"  ft_List_Iterate'
  report "ft_List_Finalize'" ft_List_Finalize'

  putStrLn "FreeType.Support.Outline"
  report "ft_Outline_New'"            ft_Outline_New'
  report "ft_Outline_Done'"           ft_Outline_Done'
  report "ft_Outline_Copy'"           ft_Outline_Copy'
  report "ft_Outline_Translate"       ft_Outline_Translate
  report "ft_Outline_Transform'"      ft_Outline_Transform'
  report "ft_Outline_Embolden'"       ft_Outline_Embolden'
  report "ft_Outline_EmboldenXY'"     ft_Outline_EmboldenXY'
  report "ft_Outline_Reverse"         ft_Outline_Reverse
  report "ft_Outline_Check'"          ft_Outline_Check'
  report "ft_Outline_Get_CBox'"       ft_Outline_Get_CBox'
  report "ft_Outline_Get_BBox'"       ft_Outline_Get_BBox'
  report "ft_Outline_Get_Bitmap'"     ft_Outline_Get_Bitmap'
  report "ft_Outline_Render'"         ft_Outline_Render'
  report "ft_Outline_Decompose'"      ft_Outline_Decompose'
  report "ft_Outline_Get_Orientation" ft_Outline_Get_Orientation

  putStrLn "FreeType.Support.Advance"
  report "ft_Get_Advance'"  ft_Get_Advance'
  report "ft_Get_Advances'" ft_Get_Advances'

  putStrLn "FreeType.Support.Bitmap"
  report "ft_Bitmap_Init'"          ft_Bitmap_Init'
  report "ft_Bitmap_Copy'"          ft_Bitmap_Copy'
  report "ft_Bitmap_Embolden'"      ft_Bitmap_Embolden'
  report "ft_Bitmap_Convert'"       ft_Bitmap_Convert'
  report "ft_Bitmap_Blend'"         ft_Bitmap_Blend'
  report "ft_GlyphSlot_Own_Bitmap'" ft_GlyphSlot_Own_Bitmap'
  report "ft_Bitmap_Done'"          ft_Bitmap_Done'

  putStrLn "FreeType.Support.Glyph"
  report "ft_Outline_GetInsideBorder"  ft_Outline_GetInsideBorder
  report "ft_Outline_GetOutsideBorder" ft_Outline_GetOutsideBorder
  report "ft_Glyph_Stroke'"            ft_Glyph_Stroke'
  report "ft_Glyph_StrokeBorder'"      ft_Glyph_StrokeBorder'
  report "ft_Stroker_New'"             ft_Stroker_New'
  report "ft_Stroker_Set"              ft_Stroker_Set
  report "ft_Stroker_Rewind"           ft_Stroker_Rewind
  report "ft_Stroker_ParseOutline'"    ft_Stroker_ParseOutline'
  report "ft_Stroker_Done"             ft_Stroker_Done
  report "ft_Stroker_BeginSubPath'"    ft_Stroker_BeginSubPath'
  report "ft_Stroker_EndSubPath'"      ft_Stroker_EndSubPath'
  report "ft_Stroker_LineTo'"          ft_Stroker_LineTo'
  report "ft_Stroker_ConicTo'"         ft_Stroker_ConicTo'
  report "ft_Stroker_CubicTo'"         ft_Stroker_CubicTo'
  report "ft_Stroker_GetBorderCounts'" ft_Stroker_GetBorderCounts'
  report "ft_Stroker_ExportBorder"     ft_Stroker_ExportBorder
  report "ft_Stroker_GetCounts'"       ft_Stroker_GetCounts'
  report "ft_Stroker_Export"           ft_Stroker_Export

  putStrLn "FreeType.Support.Module"
  report "ft_Add_Module'"            ft_Add_Module'
  report "ft_Get_Module'"            ft_Get_Module'
  report "ft_Remove_Module'"         ft_Remove_Module'
  report "ft_Add_Default_Modules"    ft_Add_Default_Modules
  report "ft_Property_Set'"          ft_Property_Set'
  report "ft_Property_Get'"          ft_Property_Get'
  report "ft_Set_Default_Properties" ft_Set_Default_Properties
  report "ft_New_Library'"           ft_New_Library'
  report "ft_Done_Library'"          ft_Done_Library'
  report "ft_Reference_Library'"     ft_Reference_Library'
  report "ft_Get_Renderer'"          ft_Get_Renderer'
  report "ft_Set_Renderer'"          ft_Set_Renderer'
  report "ft_Set_Debug_Hook'"        ft_Set_Debug_Hook'

  putStrLn "FreeType.Support.GZIP"
  report "ft_Stream_OpenGzip'" ft_Stream_OpenGzip'
  report "ft_Gzip_Uncompress'" ft_Gzip_Uncompress'

  putStrLn "FreeType.Support.LZW"
  report "ft_Stream_OpenLZW'" ft_Stream_OpenLZW'

  putStrLn "FreeType.Support.BZIP2"
  report "ft_Stream_OpenBzip2'" ft_Stream_OpenBzip2'

  putStrLn "FreeType.Error.Enumerations"
  report1 "ft_Error_String'" ft_Error_String'

  putStrLn "FreeType.Miscellaneous.OpenType"
  report "ft_OpenType_Validate'" ft_OpenType_Validate'
  report "ft_OpenType_Free"      ft_OpenType_Free

  putStrLn "FreeType.Miscellaneous.TrueType"
  report "ft_Get_TrueType_Engine_Type" ft_Get_TrueType_Engine_Type

  putStrLn "FreeType.Miscellaneous.TrueTypeGX"
  report "ft_TrueTypeGX_Validate'"  ft_TrueTypeGX_Validate'
  report "ft_TrueTypeGX_Free"       ft_TrueTypeGX_Free
  report "ft_ClassicKern_Validate'" ft_ClassicKern_Validate'
  report "ft_ClassicKern_Free"      ft_ClassicKern_Free

  putStrLn "✓ All clear ✓"