{-# LANGUAGE CApiFFI #-} module OpenCascade.Geom.BSplineCurve ( toHandle , nbPoles , pole , isRational , segment ) where import Foreign.Ptr import Foreign.C (CInt (..), CBool (..), CDouble (..)) import Data.Acquire import OpenCascade.Geom.Types (BSplineCurve) import OpenCascade.Geom.Internal.Destructors (deleteHandleBSplineCurve) import OpenCascade.Handle (Handle) import OpenCascade.Internal.Bool (cBoolToBool) import OpenCascade.GP (Pnt) import OpenCascade.GP.Internal.Destructors (deletePnt) import Data.Coerce (coerce) foreign import capi unsafe "hs_Geom_BSplineCurve.h hs_Geom_BSplineCurve_toHandle" rawToHandle :: Ptr BSplineCurve -> IO (Ptr (Handle BSplineCurve)) toHandle :: Ptr BSplineCurve -> Acquire (Ptr (Handle BSplineCurve)) toHandle :: Ptr BSplineCurve -> Acquire (Ptr (Handle BSplineCurve)) toHandle Ptr BSplineCurve curve = IO (Ptr (Handle BSplineCurve)) -> (Ptr (Handle BSplineCurve) -> IO ()) -> Acquire (Ptr (Handle BSplineCurve)) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr BSplineCurve -> IO (Ptr (Handle BSplineCurve)) rawToHandle Ptr BSplineCurve curve) Ptr (Handle BSplineCurve) -> IO () deleteHandleBSplineCurve foreign import capi unsafe "hs_Geom_BSplineCurve.h hs_Geom_BSplineCurve_nbPoles" rawNbPoles :: Ptr (Handle BSplineCurve) -> IO (CInt) nbPoles :: Ptr (Handle (BSplineCurve)) -> IO Int nbPoles :: Ptr (Handle BSplineCurve) -> IO Int nbPoles Ptr (Handle BSplineCurve) h = CInt -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral (CInt -> Int) -> IO CInt -> IO Int forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (Handle BSplineCurve) -> IO CInt rawNbPoles Ptr (Handle BSplineCurve) h foreign import capi unsafe "hs_Geom_BSplineCurve.h hs_Geom_BSplineCurve_pole" rawPole :: Ptr (Handle BSplineCurve) -> CInt -> IO (Ptr Pnt) pole :: Ptr (Handle BSplineCurve) -> Int -> Acquire (Ptr Pnt) pole :: Ptr (Handle BSplineCurve) -> Int -> Acquire (Ptr Pnt) pole Ptr (Handle BSplineCurve) h Int n = IO (Ptr Pnt) -> (Ptr Pnt -> IO ()) -> Acquire (Ptr Pnt) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr (Handle BSplineCurve) -> CInt -> IO (Ptr Pnt) rawPole Ptr (Handle BSplineCurve) h (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int n)) Ptr Pnt -> IO () deletePnt foreign import capi unsafe "hs_Geom_BSplineCurve.h hs_Geom_BSplineCurve_isRational" rawIsRational :: Ptr (Handle BSplineCurve) -> IO (CBool) isRational :: Ptr (Handle (BSplineCurve)) -> IO Bool isRational :: Ptr (Handle BSplineCurve) -> IO Bool isRational Ptr (Handle BSplineCurve) h = CBool -> Bool cBoolToBool (CBool -> Bool) -> IO CBool -> IO Bool forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (Handle BSplineCurve) -> IO CBool rawIsRational Ptr (Handle BSplineCurve) h foreign import capi unsafe "hs_Geom_BSplineCurve.h hs_Geom_BSplineCurve_segment" rawSegment :: Ptr (Handle BSplineCurve) -> CDouble -> CDouble -> CDouble -> IO () segment :: Ptr (Handle BSplineCurve) -> Double -> Double -> Double -> IO () segment :: Ptr (Handle BSplineCurve) -> Double -> Double -> Double -> IO () segment = (Ptr (Handle BSplineCurve) -> CDouble -> CDouble -> CDouble -> IO ()) -> Ptr (Handle BSplineCurve) -> Double -> Double -> Double -> IO () forall a b. Coercible a b => a -> b coerce Ptr (Handle BSplineCurve) -> CDouble -> CDouble -> CDouble -> IO () rawSegment