{-# LINE 1 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE PatternSynonyms #-}

{- | Please refer to the
     [Miscellaneous > TrueTypeGX/AAT Validation](https://www.freetype.org/freetype2/docs/reference/ft2-gx_validation.html)
     chapter of the reference.

     Internal: "FreeType.Miscellaneous.TrueTypeGX.Internal".
 -}

module FreeType.Miscellaneous.TrueTypeGX
  ( -- ** FT_TrueTypeGX_Validate
    ft_TrueTypeGX_Validate
    -- ** FT_TrueTypeGX_Free
  , ft_TrueTypeGX_Free
    -- ** FT_ClassicKern_Validate
  , ft_ClassicKern_Validate
    -- ** FT_ClassicKern_Free
  , ft_ClassicKern_Free
    -- ** FT_VALIDATE_GX_LENGTH
  , pattern FT_VALIDATE_GX_LENGTH
    -- ** FT_VALIDATE_GXXXX
  , pattern FT_VALIDATE_feat
  , pattern FT_VALIDATE_mort
  , pattern FT_VALIDATE_morx
  , pattern FT_VALIDATE_bsln
  , pattern FT_VALIDATE_just
  , pattern FT_VALIDATE_kern
  , pattern FT_VALIDATE_opbd
  , pattern FT_VALIDATE_trak
  , pattern FT_VALIDATE_prop
  , pattern FT_VALIDATE_lcar
  , pattern FT_VALIDATE_GX
    -- ** FT_VALIDATE_CKERNXXX
  , pattern FT_VALIDATE_MS
  , pattern FT_VALIDATE_APPLE
  , pattern FT_VALIDATE_CKERN
  ) where

import           FreeType.Core.Base.Types
import           FreeType.Core.Types.Types
import           FreeType.Exception.Internal
import           FreeType.Miscellaneous.TrueTypeGX.Internal

import           Foreign.Ptr




ft_TrueTypeGX_Validate
  :: FT_Face      -- ^ face
  -> FT_UInt      -- ^ validation_flags
  -> Ptr FT_Bytes -- ^ tables
  -> FT_UInt      -- ^ table_length
  -> IO ()
ft_TrueTypeGX_Validate =
  autoError "ft_TrueTypeGX_Validate" ft_TrueTypeGX_Validate'



foreign import ccall "FT_TrueTypeGX_Free"
  ft_TrueTypeGX_Free
    :: FT_Face  -- ^ face
    -> FT_Bytes -- ^ table
    -> IO ()



ft_ClassicKern_Validate
  :: FT_Face      -- ^ face
  -> FT_UInt      -- ^ validation_flags
  -> Ptr FT_Bytes -- ^ ckern_table
  -> IO ()
ft_ClassicKern_Validate =
  autoError "ft_ClassicKern_Validate" ft_ClassicKern_Validate'



foreign import ccall "FT_ClassicKern_Free"
  ft_ClassicKern_Free
    :: FT_Face  -- ^ face
    -> FT_Bytes -- ^ table
    -> IO ()



pattern FT_VALIDATE_GX_LENGTH
     :: (Eq a, Num a) => a
pattern FT_VALIDATE_GX_LENGTH = 10
{-# LINE 90 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}



pattern FT_VALIDATE_feat
      , FT_VALIDATE_mort
      , FT_VALIDATE_morx
      , FT_VALIDATE_bsln
      , FT_VALIDATE_just
      , FT_VALIDATE_kern
      , FT_VALIDATE_opbd
      , FT_VALIDATE_trak
      , FT_VALIDATE_prop
      , FT_VALIDATE_lcar
      , FT_VALIDATE_GX
     :: (Eq a, Num a) => a
pattern FT_VALIDATE_feat = 16384
{-# LINE 106 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_mort = 32768
{-# LINE 107 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_morx = 65536
{-# LINE 108 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_bsln = 131072
{-# LINE 109 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_just = 262144
{-# LINE 110 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_kern = 524288
{-# LINE 111 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_opbd = 1048576
{-# LINE 112 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_trak = 2097152
{-# LINE 113 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_prop = 4194304
{-# LINE 114 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_lcar = 8388608
{-# LINE 115 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_GX   = 16760832
{-# LINE 116 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}



pattern FT_VALIDATE_MS
      , FT_VALIDATE_APPLE
      , FT_VALIDATE_CKERN
     :: (Eq a, Num a) => a
pattern FT_VALIDATE_MS    = 16384
{-# LINE 124 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_APPLE = 32768
{-# LINE 125 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}
pattern FT_VALIDATE_CKERN = 49152
{-# LINE 126 "FreeType/Miscellaneous/TrueTypeGX.hsc" #-}