packages feed

kb-text-shape-0.1.0.0: src/KB/Text/Shape/FFI/API/Other.hsc

module KB.Text.Shape.FFI.API.Other where

import Prelude hiding (id, error)

import Foreign
import Foreign.C

import KB.Text.Shape.FFI.Handles
import KB.Text.Shape.FFI.Enums
import KB.Text.Shape.FFI.Structs

#include "kb_text_shape.h"

-- ** Quick test for font support of a sequence of codepoints.

-- | @void kbts_FontCoverageTestBegin(kbts_font_coverage_test *Test, kbts_font *Font);@
foreign import ccall "kbts_FontCoverageTestBegin" kbts_FontCoverageTestBegin
  :: Ptr FontCoverageTest
  -> Font
  -> IO ()

-- | @void kbts_FontCoverageTestCodepoint(kbts_font_coverage_test *Test, int Codepoint);@
foreign import ccall "kbts_FontCoverageTestCodepoint" kbts_FontCoverageTestCodepoint
  :: Ptr FontCoverageTest
  -> CInt -- ^ Codepoint
  -> IO ()

-- | @int  kbts_FontCoverageTestEnd(kbts_font_coverage_test *Test);@
foreign import ccall "kbts_FontCoverageTestEnd" kbts_FontCoverageTestEnd
  :: Ptr FontCoverageTest
  -> IO Int

-- ** Misc.

-- | @kbts_decode kbts_DecodeUtf8(const char *Utf8, kbts_un Length);@

-- | @kbts_encode_utf8 kbts_EncodeUtf8(int Codepoint);@

foreign import ccall unsafe "kbts_ScriptDirection" kbts_ScriptDirection
  :: Script
  -> Direction

-- | @int kbts_ScriptIsComplex(kbts_script Script);@
foreign import ccall unsafe "kbts_ScriptIsComplex" kbts_ScriptIsComplex
  :: Script
  -> CInt

newtype ScriptTag = ScriptTag Word32
  deriving (Eq, Ord, Show)
  deriving newtype (Storable)

-- | @kbts_script kbts_ScriptTagToScript(kbts_script_tag Tag);@
foreign import ccall unsafe "kbts_ScriptTagToScript" kbts_ScriptTagToScript
  :: ScriptTag
  -> Script

--  define KBTS_FOURCC(A, B, C, D) ((A) | ((B) << 8) | ((C) << 16) | ((D) << 24))

foreign import ccall unsafe "hs_GetUnitsPerEm" hs_GetUnitsPerEm
  :: Font
  -> Word16

foreign import ccall unsafe "hs_GetCapHeight" hs_GetCapHeight
  :: Font
  -> Word16