packages feed

opencascade-hs-0.6.3.0: src/OpenCascade/Font/BRepFont.hs

{-# LANGUAGE  CApiFFI #-}
module OpenCascade.Font.BRepFont 
( BRepFont
, new
, fromPathAndSize
, initFromPathAndSize
, initFromNameAspectAndSize
, ascender
, descender
, lineSpacing
, pointSize
) where

import OpenCascade.Font.Types (BRepFont)
import Data.Acquire (Acquire, mkAcquire)
import Foreign.C
import Foreign.Ptr
import OpenCascade.Font.Internal.Destructors (deleteBRepFont)
import Data.Coerce
import OpenCascade.Internal.Bool (cBoolToBool)
import OpenCascade.Internal.Exception (wrapException)
import OpenCascade.Font.FontAspect (FontAspect)


foreign import capi unsafe "hs_Font_BRepFont.h hs_new_Font_BRepFont" rawNew :: IO (Ptr BRepFont)

new :: Acquire (Ptr BRepFont)
new  = mkAcquire rawNew deleteBRepFont

foreign import capi unsafe "hs_Font_BRepFont.h hs_new_Font_BRepFont_fromStringAndSize" rawFromPathAndSize
    :: CString
    -> CDouble
    -> Ptr CInt
    -> Ptr (Ptr ())
    -> IO (Ptr BRepFont)

fromPathAndSize :: FilePath -> Double -> Acquire (Ptr BRepFont)
fromPathAndSize path size = mkAcquire (withCString path $ \str -> wrapException $ rawFromPathAndSize str (coerce size)) deleteBRepFont

foreign import capi unsafe "hs_Font_BRepFont.h hs_Font_BRepFont_initPathAndSize" rawInitFromPathAndSize
    :: Ptr BRepFont
    -> CString
    -> CDouble
    -> Ptr CInt
    -> Ptr (Ptr ())
    -> IO CBool

initFromPathAndSize :: Ptr BRepFont -> FilePath -> Double -> IO Bool
initFromPathAndSize font fontPath size = withCString fontPath $ \str -> cBoolToBool <$> wrapException (rawInitFromPathAndSize font str (coerce size))

foreign import capi unsafe "hs_Font_BRepFont.h hs_Font_BRepFont_initNameAspectAndSize" rawInitFromNameAspectAndSize
    :: Ptr BRepFont
    -> CString
    -> CInt
    -> CDouble
    -> Ptr CInt
    -> Ptr (Ptr ())
    -> IO CBool

initFromNameAspectAndSize :: Ptr BRepFont -> String -> FontAspect -> Double -> IO Bool
initFromNameAspectAndSize font fontname aspect size =
    withCString fontname $ \str -> cBoolToBool <$> wrapException (rawInitFromNameAspectAndSize font str (fromIntegral . fromEnum $ aspect) (coerce size))


foreign import capi unsafe "hs_Font_BRepFont.h hs_Font_BRepFont_ascender" rawAscender :: Ptr BRepFont -> IO CDouble

ascender :: Ptr BRepFont -> IO Double
ascender = coerce rawAscender

foreign import capi unsafe "hs_Font_BRepFont.h hs_Font_BRepFont_descender" rawDescender :: Ptr BRepFont -> IO CDouble

descender :: Ptr BRepFont -> IO Double
descender = coerce rawDescender

foreign import capi unsafe "hs_Font_BRepFont.h hs_Font_BRepFont_lineSpacing" rawLineSpacing :: Ptr BRepFont -> IO CDouble

lineSpacing :: Ptr BRepFont -> IO Double
lineSpacing = coerce rawLineSpacing

foreign import capi unsafe "hs_Font_BRepFont.h hs_Font_BRepFont_pointSize" rawPointSize :: Ptr BRepFont -> IO CDouble

pointSize :: Ptr BRepFont -> IO Double
pointSize = coerce rawPointSize